From 66a7ae1bc65d6fdbf09c2f3d02c30b422a90443e Mon Sep 17 00:00:00 2001 From: Ayan Poddar Date: Tue, 17 Jun 2025 17:34:03 +0530 Subject: [PATCH] first commit --- .editorconfig | 2 + .gitattributes | 1 + .gitignore | 274 + Acme.BookStore.abpmdl | 101 + Acme.BookStore.abpsln | 55 + Acme.BookStore.sln | 123 + Acme.BookStore.sln.DotSettings | 23 + NuGet.Config | 13 + README.md | 67 + angular/.editorconfig | 16 + angular/.eslintrc.json | 50 + angular/.gitignore | 47 + angular/.prettierrc | 5 + angular/.vscode/extensions.json | 15 + angular/Dockerfile | 15 + angular/Dockerfile.local | 5 + angular/README.md | 33 + angular/angular.json | 198 + angular/dynamic-env.json | 2 + angular/e2e/protractor.conf.js | 32 + angular/e2e/src/app.e2e-spec.ts | 28 + angular/e2e/src/app.po.ts | 11 + angular/e2e/tsconfig.json | 13 + angular/karma.conf.js | 44 + angular/nginx.conf | 30 + angular/package.json | 62 + angular/src/app/app-routing.module.ts | 35 + angular/src/app/app.component.ts | 11 + angular/src/app/app.module.ts | 49 + angular/src/app/home/home-routing.module.ts | 11 + angular/src/app/home/home.component.html | 321 + angular/src/app/home/home.component.scss | 27 + angular/src/app/home/home.component.ts | 20 + angular/src/app/home/home.module.ts | 11 + angular/src/app/route.provider.ts | 21 + angular/src/app/shared/shared.module.ts | 23 + angular/src/assets/.gitkeep | 0 .../images/getting-started/abp-blog-white.svg | 11 + .../images/getting-started/abp-blog.svg | 11 + .../getting-started/abp-community-white.svg | 11 + .../images/getting-started/abp-community.svg | 11 + .../getting-started/abp-support-white.svg | 11 + .../images/getting-started/abp-support.svg | 11 + .../assets/images/getting-started/bg-01.png | Bin 0 -> 27830 bytes .../assets/images/getting-started/book.png | Bin 0 -> 337312 bytes .../assets/images/getting-started/discord.svg | 7 + .../images/getting-started/img-blog.png | Bin 0 -> 42029 bytes .../images/getting-started/img-community.png | Bin 0 -> 65374 bytes .../images/getting-started/img-support.png | Bin 0 -> 33989 bytes .../images/getting-started/instagram.svg | 23 + .../images/getting-started/stack-overflow.svg | 4 + .../assets/images/getting-started/x-white.svg | 3 + .../src/assets/images/getting-started/x.svg | 3 + .../assets/images/getting-started/youtube.svg | 11 + .../assets/images/login/login-bg-img-dark.svg | 175 + .../assets/images/login/login-bg-img-dim.svg | 182 + .../images/login/login-bg-img-light.svg | 167 + angular/src/assets/images/logo/icon.svg | 15 + angular/src/assets/images/logo/logo-dark.png | Bin 0 -> 1386 bytes angular/src/assets/images/logo/logo-dark.svg | 16 + angular/src/assets/images/logo/logo-light.png | Bin 0 -> 1579 bytes angular/src/assets/images/logo/logo-light.svg | 16 + angular/src/environments/environment.prod.ts | 35 + angular/src/environments/environment.ts | 31 + angular/src/favicon.ico | Bin 0 -> 102968 bytes angular/src/index.html | 13 + angular/src/main.ts | 12 + angular/src/polyfills.ts | 54 + angular/src/styles.scss | 41 + angular/src/test.ts | 16 + angular/start.ps1 | 2 + angular/tsconfig.app.json | 15 + angular/tsconfig.json | 30 + angular/tsconfig.spec.json | 18 + angular/web.config | 21 + angular/yarn.lock | 7974 +++++++++++++++++ common.props | 19 + .../run-profiles/Default.abprun.json | 28 + ...cme.BookStore.Application.Contracts.abppkg | 3 + ....Application.Contracts.abppkg.analyze.json | 118 + ...cme.BookStore.Application.Contracts.csproj | 24 + .../BookStoreApplicationContractsModule.cs | 26 + .../BookStoreDtoExtensions.cs | 28 + .../BookStorePermissionDefinitionProvider.cs | 22 + .../Permissions/BookStorePermissions.cs | 11 + .../Acme.BookStore.Application.abppkg | 3 + ....BookStore.Application.abppkg.analyze.json | 123 + .../Acme.BookStore.Application.csproj | 25 + .../BookStoreAppService.cs | 14 + .../BookStoreApplicationAutoMapperProfile.cs | 13 + .../BookStoreApplicationModule.cs | 31 + .../Properties/AssemblyInfo.cs | 2 + .../Acme.BookStore.DbMigrator.abppkg | 1 + .../Acme.BookStore.DbMigrator.csproj | 46 + .../BookStoreDbMigratorModule.cs | 14 + .../DbMigratorHostedService.cs | 51 + src/Acme.BookStore.DbMigrator/Dockerfile | 5 + .../Dockerfile.local | 6 + src/Acme.BookStore.DbMigrator/Program.cs | 39 + .../appsettings.json | 16 + .../appsettings.secrets.json | 2 + .../Acme.BookStore.Domain.Shared.abppkg | 3 + ...ookStore.Domain.Shared.abppkg.analyze.json | 118 + .../Acme.BookStore.Domain.Shared.csproj | 37 + .../BookStoreDomainErrorCodes.cs | 6 + .../BookStoreDomainSharedModule.cs | 82 + .../BookStoreGlobalFeatureConfigurator.cs | 20 + .../BookStoreModuleExtensionConfigurator.cs | 71 + .../Localization/BookStore/ar.json | 42 + .../Localization/BookStore/cs.json | 9 + .../Localization/BookStore/de-DE.json | 42 + .../Localization/BookStore/en-GB.json | 9 + .../Localization/BookStore/en.json | 9 + .../Localization/BookStore/es.json | 42 + .../Localization/BookStore/fi.json | 42 + .../Localization/BookStore/fr.json | 42 + .../Localization/BookStore/hi.json | 42 + .../Localization/BookStore/hu.json | 42 + .../Localization/BookStore/is.json | 9 + .../Localization/BookStore/it.json | 42 + .../Localization/BookStore/pt-BR.json | 42 + .../Localization/BookStore/ro-RO.json | 9 + .../Localization/BookStore/ru.json | 42 + .../Localization/BookStore/sk.json | 42 + .../Localization/BookStore/sv.json | 42 + .../Localization/BookStore/tr.json | 42 + .../Localization/BookStore/zh-Hans.json | 42 + .../Localization/BookStore/zh-Hant.json | 9 + .../Localization/BookStoreResource.cs | 9 + .../MultiTenancy/MultiTenancyConsts.cs | 10 + .../Acme.BookStore.Domain.abppkg | 3 + .../Acme.BookStore.Domain.abppkg.analyze.json | 138 + .../Acme.BookStore.Domain.csproj | 33 + src/Acme.BookStore.Domain/BookStoreConsts.cs | 11 + .../BookStoreDomainModule.cs | 52 + .../Data/BookStoreDbMigrationService.cs | 226 + .../Data/IBookStoreDbSchemaMigrator.cs | 8 + .../Data/NullBookStoreDbSchemaMigrator.cs | 15 + ...PasswordPolicySettingDefinitionProvider.cs | 34 + .../OpenIddictDataSeedContributor.cs | 366 + .../Properties/AssemblyInfo.cs | 3 + .../BookStoreSettingDefinitionProvider.cs | 12 + .../Settings/BookStoreSettings.cs | 9 + .../Acme.BookStore.EntityFrameworkCore.abppkg | 3 + ...re.EntityFrameworkCore.abppkg.analyze.json | 226 + .../Acme.BookStore.EntityFrameworkCore.csproj | 38 + .../EntityFrameworkCore/BookStoreDbContext.cs | 91 + .../BookStoreDbContextFactory.cs | 33 + .../BookStoreEfCoreEntityExtensionMappings.cs | 44 + .../BookStoreEntityFrameworkCoreModule.cs | 65 + ...yFrameworkCoreBookStoreDbSchemaMigrator.cs | 33 + .../20250617072419_Initial.Designer.cs | 2052 +++++ .../Migrations/20250617072419_Initial.cs | 1209 +++ .../BookStoreDbContextModelSnapshot.cs | 2049 +++++ .../Properties/AssemblyInfo.cs | 2 + .../Acme.BookStore.HttpApi.Client.abppkg | 3 + ...okStore.HttpApi.Client.abppkg.analyze.json | 118 + .../Acme.BookStore.HttpApi.Client.csproj | 32 + .../BookStoreHttpApiClientModule.cs | 38 + .../Acme.BookStore.HttpApi.Host.abppkg | 3 + .../Acme.BookStore.HttpApi.Host.csproj | 56 + .../BookStoreBrandingProvider.cs | 19 + .../BookStoreHttpApiHostModule.cs | 280 + src/Acme.BookStore.HttpApi.Host/Dockerfile | 5 + .../Dockerfile.local | 18 + .../HealthChecks/BookStoreDatabaseCheck.cs | 32 + .../HealthChecksBuilderExtensions.cs | 76 + .../Pages/Index.cshtml | 127 + .../Pages/Index.cshtml.cs | 35 + .../Pages/_ViewImports.cshtml | 4 + src/Acme.BookStore.HttpApi.Host/Program.cs | 63 + .../Properties/launchSettings.json | 27 + .../abp.resourcemapping.js | 11 + .../appsettings.Development.json | 2 + .../appsettings.json | 28 + src/Acme.BookStore.HttpApi.Host/package.json | 8 + src/Acme.BookStore.HttpApi.Host/web.config | 18 + .../wwwroot/global-scripts.js | 1 + .../wwwroot/global-styles.css | 7 + .../wwwroot/images/clients/angular.svg | 1 + .../wwwroot/images/clients/aspnetcore.svg | 1 + .../wwwroot/images/clients/blazor.svg | 1 + .../wwwroot/images/clients/swagger.svg | 8 + .../logo/leptonxlite/logo-dark-thumbnail.png | Bin 0 -> 10695 bytes .../images/logo/leptonxlite/logo-dark.png | Bin 0 -> 38171 bytes .../logo/leptonxlite/logo-light-thumbnail.png | Bin 0 -> 9230 bytes .../images/logo/leptonxlite/logo-light.png | Bin 0 -> 33228 bytes src/Acme.BookStore.HttpApi.Host/yarn.lock | 306 + .../Acme.BookStore.HttpApi.abppkg | 3 + ...Acme.BookStore.HttpApi.abppkg.analyze.json | 118 + .../Acme.BookStore.HttpApi.csproj | 28 + .../BookStoreHttpApiModule.cs | 41 + .../Controllers/BookStoreController.cs | 14 + .../Controllers/CheckController.cs | 40 + .../Models/Test/TestModel.cs | 10 + .../Acme.BookStore.Application.Tests.abppkg | 3 + .../Acme.BookStore.Application.Tests.csproj | 20 + .../BookStoreApplicationTestBase.cs | 9 + .../BookStoreApplicationTestModule.cs | 12 + .../Samples/SampleAppServiceTests.cs | 34 + .../Acme.BookStore.Domain.Tests.abppkg | 3 + .../Acme.BookStore.Domain.Tests.csproj | 20 + .../BookStoreDomainTestBase.cs | 10 + .../BookStoreDomainTestModule.cs | 12 + .../Samples/SampleDomainTests.cs | 46 + ...BookStore.EntityFrameworkCore.Tests.abppkg | 3 + ...BookStore.EntityFrameworkCore.Tests.csproj | 21 + .../EfCoreSampleAppServiceTests.cs | 10 + .../BookStoreEntityFrameworkCoreCollection.cs | 9 + ...ntityFrameworkCoreCollectionFixtureBase.cs | 9 + .../BookStoreEntityFrameworkCoreFixture.cs | 11 + .../BookStoreEntityFrameworkCoreTestBase.cs | 8 + .../BookStoreEntityFrameworkCoreTestModule.cs | 77 + .../Domains/EfCoreSampleDomainTests.cs | 10 + .../Samples/SampleRepositoryTests.cs | 40 + ...Store.HttpApi.Client.ConsoleTestApp.abppkg | 3 + ...Store.HttpApi.Client.ConsoleTestApp.csproj | 36 + .../BookStoreConsoleApiClientModule.cs | 30 + .../ClientDemoService.cs | 38 + .../Program.cs | 33 + .../appsettings.json | 17 + .../appsettings.secrets.json | 2 + .../Acme.BookStore.TestBase.abppkg | 3 + .../Acme.BookStore.TestBase.csproj | 45 + .../BookStoreTestBase.cs | 67 + .../BookStoreTestBaseModule.cs | 47 + .../BookStoreTestConsts.cs | 6 + .../BookStoreTestDataBuilder.cs | 26 + .../Security/FakeCurrentPrincipalAccessor.cs | 26 + test/Acme.BookStore.TestBase/appsettings.json | 3 + .../appsettings.secrets.json | 2 + 231 files changed, 21500 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Acme.BookStore.abpmdl create mode 100644 Acme.BookStore.abpsln create mode 100644 Acme.BookStore.sln create mode 100644 Acme.BookStore.sln.DotSettings create mode 100644 NuGet.Config create mode 100644 README.md create mode 100644 angular/.editorconfig create mode 100644 angular/.eslintrc.json create mode 100644 angular/.gitignore create mode 100644 angular/.prettierrc create mode 100644 angular/.vscode/extensions.json create mode 100644 angular/Dockerfile create mode 100644 angular/Dockerfile.local create mode 100644 angular/README.md create mode 100644 angular/angular.json create mode 100644 angular/dynamic-env.json create mode 100644 angular/e2e/protractor.conf.js create mode 100644 angular/e2e/src/app.e2e-spec.ts create mode 100644 angular/e2e/src/app.po.ts create mode 100644 angular/e2e/tsconfig.json create mode 100644 angular/karma.conf.js create mode 100644 angular/nginx.conf create mode 100644 angular/package.json create mode 100644 angular/src/app/app-routing.module.ts create mode 100644 angular/src/app/app.component.ts create mode 100644 angular/src/app/app.module.ts create mode 100644 angular/src/app/home/home-routing.module.ts create mode 100644 angular/src/app/home/home.component.html create mode 100644 angular/src/app/home/home.component.scss create mode 100644 angular/src/app/home/home.component.ts create mode 100644 angular/src/app/home/home.module.ts create mode 100644 angular/src/app/route.provider.ts create mode 100644 angular/src/app/shared/shared.module.ts create mode 100644 angular/src/assets/.gitkeep create mode 100644 angular/src/assets/images/getting-started/abp-blog-white.svg create mode 100644 angular/src/assets/images/getting-started/abp-blog.svg create mode 100644 angular/src/assets/images/getting-started/abp-community-white.svg create mode 100644 angular/src/assets/images/getting-started/abp-community.svg create mode 100644 angular/src/assets/images/getting-started/abp-support-white.svg create mode 100644 angular/src/assets/images/getting-started/abp-support.svg create mode 100644 angular/src/assets/images/getting-started/bg-01.png create mode 100644 angular/src/assets/images/getting-started/book.png create mode 100644 angular/src/assets/images/getting-started/discord.svg create mode 100644 angular/src/assets/images/getting-started/img-blog.png create mode 100644 angular/src/assets/images/getting-started/img-community.png create mode 100644 angular/src/assets/images/getting-started/img-support.png create mode 100644 angular/src/assets/images/getting-started/instagram.svg create mode 100644 angular/src/assets/images/getting-started/stack-overflow.svg create mode 100644 angular/src/assets/images/getting-started/x-white.svg create mode 100644 angular/src/assets/images/getting-started/x.svg create mode 100644 angular/src/assets/images/getting-started/youtube.svg create mode 100644 angular/src/assets/images/login/login-bg-img-dark.svg create mode 100644 angular/src/assets/images/login/login-bg-img-dim.svg create mode 100644 angular/src/assets/images/login/login-bg-img-light.svg create mode 100644 angular/src/assets/images/logo/icon.svg create mode 100644 angular/src/assets/images/logo/logo-dark.png create mode 100644 angular/src/assets/images/logo/logo-dark.svg create mode 100644 angular/src/assets/images/logo/logo-light.png create mode 100644 angular/src/assets/images/logo/logo-light.svg create mode 100644 angular/src/environments/environment.prod.ts create mode 100644 angular/src/environments/environment.ts create mode 100644 angular/src/favicon.ico create mode 100644 angular/src/index.html create mode 100644 angular/src/main.ts create mode 100644 angular/src/polyfills.ts create mode 100644 angular/src/styles.scss create mode 100644 angular/src/test.ts create mode 100644 angular/start.ps1 create mode 100644 angular/tsconfig.app.json create mode 100644 angular/tsconfig.json create mode 100644 angular/tsconfig.spec.json create mode 100644 angular/web.config create mode 100644 angular/yarn.lock create mode 100644 common.props create mode 100644 etc/abp-studio/run-profiles/Default.abprun.json create mode 100644 src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.abppkg create mode 100644 src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.abppkg.analyze.json create mode 100644 src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj create mode 100644 src/Acme.BookStore.Application.Contracts/BookStoreApplicationContractsModule.cs create mode 100644 src/Acme.BookStore.Application.Contracts/BookStoreDtoExtensions.cs create mode 100644 src/Acme.BookStore.Application.Contracts/Permissions/BookStorePermissionDefinitionProvider.cs create mode 100644 src/Acme.BookStore.Application.Contracts/Permissions/BookStorePermissions.cs create mode 100644 src/Acme.BookStore.Application/Acme.BookStore.Application.abppkg create mode 100644 src/Acme.BookStore.Application/Acme.BookStore.Application.abppkg.analyze.json create mode 100644 src/Acme.BookStore.Application/Acme.BookStore.Application.csproj create mode 100644 src/Acme.BookStore.Application/BookStoreAppService.cs create mode 100644 src/Acme.BookStore.Application/BookStoreApplicationAutoMapperProfile.cs create mode 100644 src/Acme.BookStore.Application/BookStoreApplicationModule.cs create mode 100644 src/Acme.BookStore.Application/Properties/AssemblyInfo.cs create mode 100644 src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.abppkg create mode 100644 src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj create mode 100644 src/Acme.BookStore.DbMigrator/BookStoreDbMigratorModule.cs create mode 100644 src/Acme.BookStore.DbMigrator/DbMigratorHostedService.cs create mode 100644 src/Acme.BookStore.DbMigrator/Dockerfile create mode 100644 src/Acme.BookStore.DbMigrator/Dockerfile.local create mode 100644 src/Acme.BookStore.DbMigrator/Program.cs create mode 100644 src/Acme.BookStore.DbMigrator/appsettings.json create mode 100644 src/Acme.BookStore.DbMigrator/appsettings.secrets.json create mode 100644 src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.abppkg create mode 100644 src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.abppkg.analyze.json create mode 100644 src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj create mode 100644 src/Acme.BookStore.Domain.Shared/BookStoreDomainErrorCodes.cs create mode 100644 src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs create mode 100644 src/Acme.BookStore.Domain.Shared/BookStoreGlobalFeatureConfigurator.cs create mode 100644 src/Acme.BookStore.Domain.Shared/BookStoreModuleExtensionConfigurator.cs create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/ar.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/cs.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/de-DE.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/en-GB.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/es.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/fi.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/fr.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/hi.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/hu.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/is.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/it.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/pt-BR.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/ro-RO.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/ru.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/sk.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/sv.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/tr.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hans.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hant.json create mode 100644 src/Acme.BookStore.Domain.Shared/Localization/BookStoreResource.cs create mode 100644 src/Acme.BookStore.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs create mode 100644 src/Acme.BookStore.Domain/Acme.BookStore.Domain.abppkg create mode 100644 src/Acme.BookStore.Domain/Acme.BookStore.Domain.abppkg.analyze.json create mode 100644 src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj create mode 100644 src/Acme.BookStore.Domain/BookStoreConsts.cs create mode 100644 src/Acme.BookStore.Domain/BookStoreDomainModule.cs create mode 100644 src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs create mode 100644 src/Acme.BookStore.Domain/Data/IBookStoreDbSchemaMigrator.cs create mode 100644 src/Acme.BookStore.Domain/Data/NullBookStoreDbSchemaMigrator.cs create mode 100644 src/Acme.BookStore.Domain/Identity/ChangeIdentityPasswordPolicySettingDefinitionProvider.cs create mode 100644 src/Acme.BookStore.Domain/OpenIddict/OpenIddictDataSeedContributor.cs create mode 100644 src/Acme.BookStore.Domain/Properties/AssemblyInfo.cs create mode 100644 src/Acme.BookStore.Domain/Settings/BookStoreSettingDefinitionProvider.cs create mode 100644 src/Acme.BookStore.Domain/Settings/BookStoreSettings.cs create mode 100644 src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.abppkg create mode 100644 src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.abppkg.analyze.json create mode 100644 src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.csproj create mode 100644 src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContext.cs create mode 100644 src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContextFactory.cs create mode 100644 src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreEfCoreEntityExtensionMappings.cs create mode 100644 src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreEntityFrameworkCoreModule.cs create mode 100644 src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreBookStoreDbSchemaMigrator.cs create mode 100644 src/Acme.BookStore.EntityFrameworkCore/Migrations/20250617072419_Initial.Designer.cs create mode 100644 src/Acme.BookStore.EntityFrameworkCore/Migrations/20250617072419_Initial.cs create mode 100644 src/Acme.BookStore.EntityFrameworkCore/Migrations/BookStoreDbContextModelSnapshot.cs create mode 100644 src/Acme.BookStore.EntityFrameworkCore/Properties/AssemblyInfo.cs create mode 100644 src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.abppkg create mode 100644 src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.abppkg.analyze.json create mode 100644 src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj create mode 100644 src/Acme.BookStore.HttpApi.Client/BookStoreHttpApiClientModule.cs create mode 100644 src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.abppkg create mode 100644 src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj create mode 100644 src/Acme.BookStore.HttpApi.Host/BookStoreBrandingProvider.cs create mode 100644 src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs create mode 100644 src/Acme.BookStore.HttpApi.Host/Dockerfile create mode 100644 src/Acme.BookStore.HttpApi.Host/Dockerfile.local create mode 100644 src/Acme.BookStore.HttpApi.Host/HealthChecks/BookStoreDatabaseCheck.cs create mode 100644 src/Acme.BookStore.HttpApi.Host/HealthChecks/HealthChecksBuilderExtensions.cs create mode 100644 src/Acme.BookStore.HttpApi.Host/Pages/Index.cshtml create mode 100644 src/Acme.BookStore.HttpApi.Host/Pages/Index.cshtml.cs create mode 100644 src/Acme.BookStore.HttpApi.Host/Pages/_ViewImports.cshtml create mode 100644 src/Acme.BookStore.HttpApi.Host/Program.cs create mode 100644 src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json create mode 100644 src/Acme.BookStore.HttpApi.Host/abp.resourcemapping.js create mode 100644 src/Acme.BookStore.HttpApi.Host/appsettings.Development.json create mode 100644 src/Acme.BookStore.HttpApi.Host/appsettings.json create mode 100644 src/Acme.BookStore.HttpApi.Host/package.json create mode 100644 src/Acme.BookStore.HttpApi.Host/web.config create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/global-scripts.js create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/global-styles.css create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/angular.svg create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/aspnetcore.svg create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/blazor.svg create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/swagger.svg create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-dark-thumbnail.png create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-dark.png create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-light-thumbnail.png create mode 100644 src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-light.png create mode 100644 src/Acme.BookStore.HttpApi.Host/yarn.lock create mode 100644 src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.abppkg create mode 100644 src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.abppkg.analyze.json create mode 100644 src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.csproj create mode 100644 src/Acme.BookStore.HttpApi/BookStoreHttpApiModule.cs create mode 100644 src/Acme.BookStore.HttpApi/Controllers/BookStoreController.cs create mode 100644 src/Acme.BookStore.HttpApi/Controllers/CheckController.cs create mode 100644 src/Acme.BookStore.HttpApi/Models/Test/TestModel.cs create mode 100644 test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.abppkg create mode 100644 test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj create mode 100644 test/Acme.BookStore.Application.Tests/BookStoreApplicationTestBase.cs create mode 100644 test/Acme.BookStore.Application.Tests/BookStoreApplicationTestModule.cs create mode 100644 test/Acme.BookStore.Application.Tests/Samples/SampleAppServiceTests.cs create mode 100644 test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.abppkg create mode 100644 test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.csproj create mode 100644 test/Acme.BookStore.Domain.Tests/BookStoreDomainTestBase.cs create mode 100644 test/Acme.BookStore.Domain.Tests/BookStoreDomainTestModule.cs create mode 100644 test/Acme.BookStore.Domain.Tests/Samples/SampleDomainTests.cs create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/Acme.BookStore.EntityFrameworkCore.Tests.abppkg create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/Acme.BookStore.EntityFrameworkCore.Tests.csproj create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Applications/EfCoreSampleAppServiceTests.cs create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreCollection.cs create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreCollectionFixtureBase.cs create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreFixture.cs create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreTestBase.cs create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreTestModule.cs create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Domains/EfCoreSampleDomainTests.cs create mode 100644 test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs create mode 100644 test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.abppkg create mode 100644 test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.csproj create mode 100644 test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/BookStoreConsoleApiClientModule.cs create mode 100644 test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs create mode 100644 test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Program.cs create mode 100644 test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.json create mode 100644 test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json create mode 100644 test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.abppkg create mode 100644 test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.csproj create mode 100644 test/Acme.BookStore.TestBase/BookStoreTestBase.cs create mode 100644 test/Acme.BookStore.TestBase/BookStoreTestBaseModule.cs create mode 100644 test/Acme.BookStore.TestBase/BookStoreTestConsts.cs create mode 100644 test/Acme.BookStore.TestBase/BookStoreTestDataBuilder.cs create mode 100644 test/Acme.BookStore.TestBase/Security/FakeCurrentPrincipalAccessor.cs create mode 100644 test/Acme.BookStore.TestBase/appsettings.json create mode 100644 test/Acme.BookStore.TestBase/appsettings.secrets.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3aa69ea --- /dev/null +++ b/.editorconfig @@ -0,0 +1,2 @@ +[*.csproj] +indent_size = 2 \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..c941e52 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +**/wwwroot/libs/** linguist-vendored diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2e9da14 --- /dev/null +++ b/.gitignore @@ -0,0 +1,274 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +**/.idea/ +*.sln.iml + +# ABP Studio +**/.abpstudio/ + +# BookStore +src/Acme.BookStore.Web/Logs/* +src/Acme.BookStore.Web.Host/Logs/* +src/Acme.BookStore.Web.Public/Logs/* +src/Acme.BookStore.Web.Public.Host/Logs/* +src/Acme.BookStore.AuthServer/Logs/* +src/Acme.BookStore.HttpApi.Host/Logs/* +src/Acme.BookStore.HttpApi.Host/Logs/* +src/Acme.BookStore.DbMigrator/Logs/* +src/Acme.BookStore.Blazor.Server/Logs/* +src/Acme.BookStore.Blazor.Server.Tiered/Logs/* + +# Use abp install-libs to restore. +**/wwwroot/libs/* + +# IdentityServer temp files +tempkey.rsa +tempkey.jwk \ No newline at end of file diff --git a/Acme.BookStore.abpmdl b/Acme.BookStore.abpmdl new file mode 100644 index 0000000..487b7d0 --- /dev/null +++ b/Acme.BookStore.abpmdl @@ -0,0 +1,101 @@ +{ + "template": "app", + "imports": { + "Volo.Abp.LeptonXLiteTheme": { + "version": "4.2.0", + "isInstalled": true + }, + "Volo.Abp.Account": { + "version": "9.2.0", + "isInstalled": true + }, + "Volo.Abp.OpenIddict": { + "version": "9.2.0", + "isInstalled": true + }, + "Volo.Abp.Identity": { + "version": "9.2.0", + "isInstalled": true + }, + "Volo.Abp.TenantManagement": { + "version": "9.2.0", + "isInstalled": true + }, + "Volo.Abp.SettingManagement": { + "version": "9.2.0", + "isInstalled": true + }, + "Volo.Abp.PermissionManagement": { + "version": "9.2.0", + "isInstalled": true + }, + "Volo.Abp.FeatureManagement": { + "version": "9.2.0", + "isInstalled": true + } + }, + "folders": { + "items": { + "src": {}, + "test": {} + } + }, + "packages": { + "Acme.BookStore.Application": { + "path": "src/Acme.BookStore.Application/Acme.BookStore.Application.abppkg", + "folder": "src" + }, + "Acme.BookStore.Application.Tests": { + "path": "test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.abppkg", + "folder": "test" + }, + "Acme.BookStore.Domain.Shared": { + "path": "src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.abppkg", + "folder": "src" + }, + "Acme.BookStore.Application.Contracts": { + "path": "src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.abppkg", + "folder": "src" + }, + "Acme.BookStore.HttpApi": { + "path": "src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.abppkg", + "folder": "src" + }, + "Acme.BookStore.HttpApi.Client": { + "path": "src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.abppkg", + "folder": "src" + }, + "Acme.BookStore.EntityFrameworkCore.Tests": { + "path": "test/Acme.BookStore.EntityFrameworkCore.Tests/Acme.BookStore.EntityFrameworkCore.Tests.abppkg", + "folder": "test" + }, + "Acme.BookStore.EntityFrameworkCore": { + "path": "src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.abppkg", + "folder": "src" + }, + "Acme.BookStore.TestBase": { + "path": "test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.abppkg", + "folder": "test" + }, + "Acme.BookStore.Domain.Tests": { + "path": "test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.abppkg", + "folder": "test" + }, + "Acme.BookStore.HttpApi.Client.ConsoleTestApp": { + "path": "test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.abppkg", + "folder": "test" + }, + "Acme.BookStore.DbMigrator": { + "path": "src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.abppkg", + "folder": "src" + }, + "Acme.BookStore.HttpApi.Host": { + "path": "src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.abppkg", + "folder": "src" + }, + "Acme.BookStore.Domain": { + "path": "src/Acme.BookStore.Domain/Acme.BookStore.Domain.abppkg", + "folder": "src" + } + } +} \ No newline at end of file diff --git a/Acme.BookStore.abpsln b/Acme.BookStore.abpsln new file mode 100644 index 0000000..9409cdf --- /dev/null +++ b/Acme.BookStore.abpsln @@ -0,0 +1,55 @@ +{ + "id": "6f002985-930a-4cf8-a7bc-8d06db57d00e", + "template": "app", + "versions": { + "AbpFramework": "9.2.0", + "AbpStudio": "1.0.1", + "TargetDotnetFramework": "net9.0" + }, + "modules": { + "Acme.BookStore": { + "path": "Acme.BookStore.abpmdl" + } + }, + "runProfiles": { + "Default": { + "path": "etc/abp-studio/run-profiles/Default.abprun.json" + } + }, + "options": { + "httpRequests": { + "ignoredUrls": [ + + ] + } + }, + "creatingStudioConfiguration": { + "template": "app", + "createdAbpStudioVersion": "1.0.1", + "tiered": "false", + "runInstallLibs": "true", + "useLocalReferences": "false", + "multiTenancy": "true", + "includeTests": "true", + "kubernetesConfiguration": "false", + "uiFramework": "angular", + "mobileFramework": "none", + "distributedEventBus": "none", + "databaseProvider": "ef", + "runDbMigrator": "true", + "databaseManagementSystem": "sqlserver", + "separateTenantSchema": "false", + "createInitialMigration": "true", + "theme": "leptonx-lite", + "themeStyle": "", + "themeMenuPlacement": "", + "mobileFramework": "none", + "progressiveWebApp": "false", + "runProgressiveWebAppSupport": "false", + "publicWebsite": "false", + "socialLogin": "true", + "selectedLanguages": ["English", "English (United Kingdom)", "简体中文", "Español", "العربية", "हिन्दी", "Português (Brasil)", "Français", "Русский", "Deutsch (Deuthschland)", "Türkçe", "Italiano", "Čeština", "Magyar", "Română (România)", "Svenska", "Suomi", "Slovenčina", "Íslenska", "繁體中z文", ], + "defaultLanguage": "English", + "createCommand": "abp new Acme.BookStore -t app --ui-framework angular --database-provider ef --database-management-system sqlserver --theme leptonx-lite --without-cms-kit --dont-run-bundling -no-file-management" + } +} \ No newline at end of file diff --git a/Acme.BookStore.sln b/Acme.BookStore.sln new file mode 100644 index 0000000..4e16e1b --- /dev/null +++ b/Acme.BookStore.sln @@ -0,0 +1,123 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32611.2 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Domain", "src\Acme.BookStore.Domain\Acme.BookStore.Domain.csproj", "{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Application", "src\Acme.BookStore.Application\Acme.BookStore.Application.csproj", "{1A94A50E-06DC-43C1-80B5-B662820EC3EB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.EntityFrameworkCore", "src\Acme.BookStore.EntityFrameworkCore\Acme.BookStore.EntityFrameworkCore.csproj", "{C956DD76-69C8-4A9C-83EA-D17DF83340FD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CA9AC87F-097E-4F15-8393-4BC07735A5B0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{04DBDB01-70F4-4E06-B468-8F87850B22BE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Application.Tests", "test\Acme.BookStore.Application.Tests\Acme.BookStore.Application.Tests.csproj", "{50B2631D-129C-47B3-A587-029CCD6099BC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Domain.Shared", "src\Acme.BookStore.Domain.Shared\Acme.BookStore.Domain.Shared.csproj", "{42F719ED-8413-4895-B5B4-5AB56079BC66}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Application.Contracts", "src\Acme.BookStore.Application.Contracts\Acme.BookStore.Application.Contracts.csproj", "{520659C8-C734-4298-A3DA-B539DB9DFC0B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.HttpApi", "src\Acme.BookStore.HttpApi\Acme.BookStore.HttpApi.csproj", "{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.HttpApi.Client", "src\Acme.BookStore.HttpApi.Client\Acme.BookStore.HttpApi.Client.csproj", "{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.EntityFrameworkCore.Tests", "test\Acme.BookStore.EntityFrameworkCore.Tests\Acme.BookStore.EntityFrameworkCore.Tests.csproj", "{1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.TestBase", "test\Acme.BookStore.TestBase\Acme.BookStore.TestBase.csproj", "{91853F21-9CD9-4132-BC29-A7D5D84FFFE7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Domain.Tests", "test\Acme.BookStore.Domain.Tests\Acme.BookStore.Domain.Tests.csproj", "{E512F4D9-9375-480F-A2F6-A46509F9D824}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.HttpApi.Client.ConsoleTestApp", "test\Acme.BookStore.HttpApi.Client.ConsoleTestApp\Acme.BookStore.HttpApi.Client.ConsoleTestApp.csproj", "{EF480016-9127-4916-8735-D2466BDBC582}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.DbMigrator", "src\Acme.BookStore.DbMigrator\Acme.BookStore.DbMigrator.csproj", "{70680696-BB1E-4383-BCB2-42C3767171FB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.HttpApi.Host", "src\Acme.BookStore.HttpApi.Host\Acme.BookStore.HttpApi.Host.csproj", "{96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.Build.0 = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.Build.0 = Release|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Release|Any CPU.Build.0 = Release|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Release|Any CPU.Build.0 = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.Build.0 = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.Build.0 = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.Build.0 = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.Build.0 = Release|Any CPU + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}.Release|Any CPU.Build.0 = Release|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Release|Any CPU.Build.0 = Release|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.Build.0 = Release|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.Build.0 = Release|Any CPU + {70680696-BB1E-4383-BCB2-42C3767171FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {70680696-BB1E-4383-BCB2-42C3767171FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70680696-BB1E-4383-BCB2-42C3767171FB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {70680696-BB1E-4383-BCB2-42C3767171FB}.Release|Any CPU.Build.0 = Release|Any CPU + {96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {1A94A50E-06DC-43C1-80B5-B662820EC3EB} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {C956DD76-69C8-4A9C-83EA-D17DF83340FD} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {50B2631D-129C-47B3-A587-029CCD6099BC} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {42F719ED-8413-4895-B5B4-5AB56079BC66} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {520659C8-C734-4298-A3DA-B539DB9DFC0B} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {E512F4D9-9375-480F-A2F6-A46509F9D824} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {EF480016-9127-4916-8735-D2466BDBC582} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {70680696-BB1E-4383-BCB2-42C3767171FB} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} + EndGlobalSection +EndGlobal diff --git a/Acme.BookStore.sln.DotSettings b/Acme.BookStore.sln.DotSettings new file mode 100644 index 0000000..cb0b2c9 --- /dev/null +++ b/Acme.BookStore.sln.DotSettings @@ -0,0 +1,23 @@ + + True + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + Required + Required + Required + Required + False + True + False + False + True + False + False + SQL + \ No newline at end of file diff --git a/NuGet.Config b/NuGet.Config new file mode 100644 index 0000000..5107236 --- /dev/null +++ b/NuGet.Config @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f59f661 --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +# Acme.BookStore + +## About this solution + +This is a layered startup solution based on [Domain Driven Design (DDD)](https://abp.io/docs/latest/framework/architecture/domain-driven-design) practises. All the fundamental ABP modules are already installed. Check the [Application Startup Template](https://abp.io/docs/latest/solution-templates/layered-web-application) documentation for more info. + +### Pre-requirements + +* [.NET9.0+ SDK](https://dotnet.microsoft.com/download/dotnet) +* [Node v18 or 20](https://nodejs.org/en) + +### Configurations + +The solution comes with a default configuration that works out of the box. However, you may consider to change the following configuration before running your solution: + +* Check the `ConnectionStrings` in `appsettings.json` files under the `Acme.BookStore.HttpApi.Host` and `Acme.BookStore.DbMigrator` projects and change it if you need. + +### Before running the application + +* Run `abp install-libs` command on your solution folder to install client-side package dependencies. This step is automatically done when you create a new solution, if you didn't especially disabled it. However, you should run it yourself if you have first cloned this solution from your source control, or added a new client-side package dependency to your solution. +* Run `Acme.BookStore.DbMigrator` to create the initial database. This step is also automatically done when you create a new solution, if you didn't especially disabled it. This should be done in the first run. It is also needed if a new database migration is added to the solution later. + +#### Generating a Signing Certificate + +In the production environment, you need to use a production signing certificate. ABP Framework sets up signing and encryption certificates in your application and expects an `openiddict.pfx` file in your application. + +To generate a signing certificate, you can use the following command: + +```bash +dotnet dev-certs https -v -ep openiddict.pfx -p 04d612a5-1d46-4efc-a0fa-530c324729bb +``` + +> `04d612a5-1d46-4efc-a0fa-530c324729bb` is the password of the certificate, you can change it to any password you want. + +It is recommended to use **two** RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + +For more information, please refer to: [OpenIddict Certificate Configuration](https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html#registering-a-certificate-recommended-for-production-ready-scenarios) + +> Also, see the [Configuring OpenIddict](https://abp.io/docs/latest/Deployment/Configuring-OpenIddict#production-environment) documentation for more information. + +### Solution structure + +This is a layered monolith application that consists of the following applications: + +* `Acme.BookStore.DbMigrator`: A console application which applies the migrations and also seeds the initial data. It is useful on development as well as on production environment. +* `Acme.BookStore.HttpApi.Host`: ASP.NET Core API application that is used to expose the APIs to the clients. +* `angular`: Angular application. + + +## Deploying the application + +Deploying an ABP application follows the same process as deploying any .NET or ASP.NET Core application. However, there are important considerations to keep in mind. For detailed guidance, refer to ABP's [deployment documentation](https://abp.io/docs/latest/Deployment/Index). + +### Additional resources + + +#### Internal Resources + +You can find detailed setup and configuration guide(s) for your solution below: + +* [Angular](./angular/README.md) + +#### External Resources +You can see the following resources to learn more about your solution and the ABP Framework: + +* [Web Application Development Tutorial](https://abp.io/docs/latest/tutorials/book-store/part-1) +* [Application Startup Template](https://abp.io/docs/latest/startup-templates/application/index) diff --git a/angular/.editorconfig b/angular/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/angular/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/angular/.eslintrc.json b/angular/.eslintrc.json new file mode 100644 index 0000000..47c17dd --- /dev/null +++ b/angular/.eslintrc.json @@ -0,0 +1,50 @@ +{ + "root": true, + "ignorePatterns": [ + "projects/**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "tsconfig.json" + ], + "createDefaultProgram": true + }, + "extends": [ + "plugin:@angular-eslint/recommended", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "app", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "app", + "style": "kebab-case" + } + ] + } + }, + { + "files": [ + "*.html" + ], + "extends": [ + "plugin:@angular-eslint/template/recommended" + ], + "rules": {} + } + ] +} diff --git a/angular/.gitignore b/angular/.gitignore new file mode 100644 index 0000000..62f9cb5 --- /dev/null +++ b/angular/.gitignore @@ -0,0 +1,47 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +/.suite +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.angular/cache +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/angular/.prettierrc b/angular/.prettierrc new file mode 100644 index 0000000..d029317 --- /dev/null +++ b/angular/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "printWidth": 100, + "arrowParens": "avoid" +} diff --git a/angular/.vscode/extensions.json b/angular/.vscode/extensions.json new file mode 100644 index 0000000..5db7bc2 --- /dev/null +++ b/angular/.vscode/extensions.json @@ -0,0 +1,15 @@ +{ + "recommendations": [ + "angular.ng-template", + "esbenp.prettier-vscode", + "ms-vscode.vscode-typescript-tslint-plugin", + "visualstudioexptteam.vscodeintellicode", + "christian-kohler.path-intellisense", + "christian-kohler.npm-intellisense", + "Mikael.Angular-BeastCode", + "xabikos.JavaScriptSnippets", + "msjsdiag.debugger-for-chrome", + "donjayamanne.githistory", + "oderwat.indent-rainbow" + ] +} diff --git a/angular/Dockerfile b/angular/Dockerfile new file mode 100644 index 0000000..0d82a2c --- /dev/null +++ b/angular/Dockerfile @@ -0,0 +1,15 @@ +FROM node:18-alpine AS build + +WORKDIR /app +COPY package*.json /app/ + +RUN yarn +COPY . /app + +RUN yarn build:prod + +FROM nginx:alpine +COPY dynamic-env.json /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf + +COPY --from=build /app/dist/BookStore /usr/share/nginx/html diff --git a/angular/Dockerfile.local b/angular/Dockerfile.local new file mode 100644 index 0000000..6cec53f --- /dev/null +++ b/angular/Dockerfile.local @@ -0,0 +1,5 @@ +FROM nginx:alpine +WORKDIR /app +COPY dist/BookStore /usr/share/nginx/html +COPY dynamic-env.json /usr/share/nginx/html +COPY /nginx.conf /etc/nginx/conf.d/default.conf \ No newline at end of file diff --git a/angular/README.md b/angular/README.md new file mode 100644 index 0000000..63c52ea --- /dev/null +++ b/angular/README.md @@ -0,0 +1,33 @@ +# BookStore + +This is a startup project based on the ABP framework. For more information, visit abp.io + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. + +## Remote Environment + +The application provides a remote environment for production. we use `dynamic-env.json` file to set the environment variables and configured web server's `getEnvConfig` endpoint by default. + +See [Environment](https://abp.io/docs/latest/framework/ui/angular/environment) for more information. \ No newline at end of file diff --git a/angular/angular.json b/angular/angular.json new file mode 100644 index 0000000..eb00da5 --- /dev/null +++ b/angular/angular.json @@ -0,0 +1,198 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "cli": { + "analytics": false, + "schematicCollections": ["@angular-eslint/schematics"] + }, + "version": 1, + "newProjectRoot": "projects", + "projects": { + "BookStore": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/BookStore", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "allowedCommonJsDependencies": ["chart.js", "js-sha256"], + "assets": [ + "src/favicon.ico", + "src/assets", + { + "glob": "web.config", + "input": ".", + "output": "." + } + ], + "styles": [ + { + "input": "node_modules/@fortawesome/fontawesome-free/css/all.min.css", + "inject": true, + "bundleName": "fontawesome-all.min" + }, + { + "input": "node_modules/@fortawesome/fontawesome-free/css/v4-shims.min.css", + "inject": true, + "bundleName": "fontawesome-v4-shims.min" + }, + { + "input": "node_modules/@swimlane/ngx-datatable/index.css", + "inject": true, + "bundleName": "ngx-datatable-index" + }, + { + "input": "node_modules/@swimlane/ngx-datatable/assets/icons.css", + "inject": true, + "bundleName": "ngx-datatable-icons" + }, + { + "input": "node_modules/@swimlane/ngx-datatable/themes/material.css", + "inject": true, + "bundleName": "ngx-datatable-material" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/bootstrap-dim.css", + "inject": false, + "bundleName": "bootstrap-dim" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/ng-bundle.css", + "inject": false, + "bundleName": "ng-bundle" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/side-menu/layout-bundle.css", + "inject": false, + "bundleName": "layout-bundle" + }, + { + "input": "node_modules/@abp/ng.theme.lepton-x/assets/css/abp-bundle.css", + "inject": false, + "bundleName": "abp-bundle" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/bootstrap-dim.rtl.css", + "inject": false, + "bundleName": "bootstrap-dim.rtl" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/font-bundle.css", + "inject": false, + "bundleName": "font-bundle" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/font-bundle.rtl.css", + "inject": false, + "bundleName": "font-bundle.rtl" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/ng-bundle.rtl.css", + "inject": false, + "bundleName": "ng-bundle.rtl" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/side-menu/layout-bundle.rtl.css", + "inject": false, + "bundleName": "layout-bundle.rtl" + }, + { + "input": "node_modules/@abp/ng.theme.lepton-x/assets/css/abp-bundle.rtl.css", + "inject": false, + "bundleName": "abp-bundle.rtl" + }, + { + "input": "node_modules/bootstrap-icons/font/bootstrap-icons.css", + "inject": true, + "bundleName": "bootstrap-icons" + }, + "src/styles.scss" + ], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "2.5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "100kb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "buildTarget": "BookStore:build:production" + }, + "development": { + "buildTarget": "BookStore:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "BookStore:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "inlineStyleLanguage": "scss", + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.scss"], + "scripts": [] + } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"] + } + } + } + } + } +} diff --git a/angular/dynamic-env.json b/angular/dynamic-env.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/angular/dynamic-env.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/angular/e2e/protractor.conf.js b/angular/e2e/protractor.conf.js new file mode 100644 index 0000000..7c798cf --- /dev/null +++ b/angular/e2e/protractor.conf.js @@ -0,0 +1,32 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +/** + * @type { import("protractor").Config } + */ +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + browserName: 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/angular/e2e/src/app.e2e-spec.ts b/angular/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..b79f63d --- /dev/null +++ b/angular/e2e/src/app.e2e-spec.ts @@ -0,0 +1,28 @@ +import { AppPage } from "./app.po"; +import { browser, logging } from "protractor"; + +describe("workspace-project App", () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it("should display welcome message", () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual("BookStore app is running!"); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser + .manage() + .logs() + .get(logging.Type.BROWSER); + expect(logs).not.toContain( + jasmine.objectContaining({ + level: logging.Level.SEVERE + } as logging.Entry) + ); + }); +}); diff --git a/angular/e2e/src/app.po.ts b/angular/e2e/src/app.po.ts new file mode 100644 index 0000000..b68475e --- /dev/null +++ b/angular/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo(): Promise { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText(): Promise { + return element(by.css('app-root .content span')).getText() as Promise; + } +} diff --git a/angular/e2e/tsconfig.json b/angular/e2e/tsconfig.json new file mode 100644 index 0000000..c92199c --- /dev/null +++ b/angular/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es2018", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/angular/karma.conf.js b/angular/karma.conf.js new file mode 100644 index 0000000..b7ce6cf --- /dev/null +++ b/angular/karma.conf.js @@ -0,0 +1,44 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/BookStore'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/angular/nginx.conf b/angular/nginx.conf new file mode 100644 index 0000000..11f9847 --- /dev/null +++ b/angular/nginx.conf @@ -0,0 +1,30 @@ +server { + listen 80; + listen [::]:80; + server_name _; + + #access_log /var/log/nginx/host.access.log main; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html =404; + } + + location /getEnvConfig { + default_type 'application/json'; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; + add_header 'Content-Type' 'application/json'; + try_files $uri /dynamic-env.json; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} \ No newline at end of file diff --git a/angular/package.json b/angular/package.json new file mode 100644 index 0000000..58377a9 --- /dev/null +++ b/angular/package.json @@ -0,0 +1,62 @@ +{ + "name": "BookStore", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "build:prod": "ng build --configuration production", + "watch": "ng build --watch --configuration development", + "test": "ng test", + "lint": "ng lint" + }, + "private": true, + "dependencies": { + "@abp/ng.components": "~9.2.0", + "@abp/ng.core": "~9.2.0", + "@abp/ng.oauth": "~9.2.0", + "@abp/ng.setting-management": "~9.2.0", + "@abp/ng.theme.shared": "~9.2.0", + "@abp/ng.feature-management":"~9.2.0", + "@abp/ng.tenant-management": "~9.2.0", + "@abp/ng.identity": "~9.2.0", + "@abp/ng.account": "~9.2.0", + "@abp/ng.theme.lepton-x": "~4.2.0", + "@angular/animations": "~19.1.0", + "@angular/common": "~19.1.0", + "@angular/compiler": "~19.1.0", + "@angular/core": "~19.1.0", + "@angular/forms": "~19.1.0", + "@angular/localize": "~19.1.0", + "@angular/platform-browser-dynamic": "~19.1.0", + "@angular/platform-browser": "~19.1.0", + "@angular/router": "~19.1.0", + "rxjs": "~7.8.0", + "tslib": "^2.0.0", + "zone.js": "~0.15.0" + }, + "devDependencies": { + "@abp/ng.schematics": "~9.2.0", + "@angular-devkit/build-angular": "~19.1.0", + "@angular-eslint/builder": "~19.0.0", + "@angular-eslint/eslint-plugin": "~19.0.0", + "@angular-eslint/eslint-plugin-template": "~19.0.0", + "@angular-eslint/schematics": "~19.0.0", + "@angular-eslint/template-parser": "~19.0.0", + "@angular/cli": "~19.1.0", + "@angular/compiler-cli": "~19.1.0", + "@angular/language-service": "~19.1.0", + "@types/jasmine": "~3.6.0", + "@types/node": "^20.0.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.0.0", + "jasmine-core": "~4.0.0", + "karma": "~6.3.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.1.0", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "^1.0.0", + "typescript": "~5.6.0" + } +} diff --git a/angular/src/app/app-routing.module.ts b/angular/src/app/app-routing.module.ts new file mode 100644 index 0000000..8815f71 --- /dev/null +++ b/angular/src/app/app-routing.module.ts @@ -0,0 +1,35 @@ +import { authGuard, permissionGuard } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +const routes: Routes = [ + { + path: '', + pathMatch: 'full', + loadChildren: () => import('./home/home.module').then(m => m.HomeModule), + }, + { + path: 'account', + loadChildren: () => import('@abp/ng.account').then(m => m.AccountModule.forLazy()), + }, + { + path: 'identity', + loadChildren: () => import('@abp/ng.identity').then(m => m.IdentityModule.forLazy()), + }, + { + path: 'tenant-management', + loadChildren: () => + import('@abp/ng.tenant-management').then(m => m.TenantManagementModule.forLazy()), + }, + { + path: 'setting-management', + loadChildren: () => + import('@abp/ng.setting-management').then(m => m.SettingManagementModule.forLazy()), + }, +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes, {})], + exports: [RouterModule], +}) +export class AppRoutingModule {} diff --git a/angular/src/app/app.component.ts b/angular/src/app/app.component.ts new file mode 100644 index 0000000..ab95d36 --- /dev/null +++ b/angular/src/app/app.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + standalone: false, + selector: 'app-root', + template: ` + + + `, +}) +export class AppComponent {} diff --git a/angular/src/app/app.module.ts b/angular/src/app/app.module.ts new file mode 100644 index 0000000..2360bee --- /dev/null +++ b/angular/src/app/app.module.ts @@ -0,0 +1,49 @@ +import { CoreModule, provideAbpCore, withOptions } from '@abp/ng.core'; +import { provideAbpOAuth } from '@abp/ng.oauth'; +import { provideSettingManagementConfig } from '@abp/ng.setting-management/config'; +import { provideFeatureManagementConfig } from '@abp/ng.feature-management'; +import { ThemeSharedModule, provideAbpThemeShared,} from '@abp/ng.theme.shared'; +import { provideIdentityConfig } from '@abp/ng.identity/config'; +import { provideAccountConfig } from '@abp/ng.account/config'; +import { provideTenantManagementConfig } from '@abp/ng.tenant-management/config'; +import { registerLocale } from '@abp/ng.core/locale'; +import { ThemeLeptonXModule } from '@abp/ng.theme.lepton-x'; +import { SideMenuLayoutModule } from '@abp/ng.theme.lepton-x/layouts'; +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { environment } from '../environments/environment'; +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { APP_ROUTE_PROVIDER } from './route.provider'; + +@NgModule({ + declarations: [AppComponent], + imports: [ + BrowserModule, + BrowserAnimationsModule, + AppRoutingModule, + ThemeSharedModule, + CoreModule, + ThemeLeptonXModule.forRoot(), + SideMenuLayoutModule.forRoot(), + ], + providers: [ + APP_ROUTE_PROVIDER, + provideAbpCore( + withOptions({ + environment, + registerLocaleFn: registerLocale(), + }), + ), + provideAbpOAuth(), + provideIdentityConfig(), + provideSettingManagementConfig(), + provideFeatureManagementConfig(), + provideAccountConfig(), + provideTenantManagementConfig(), + provideAbpThemeShared(), + ], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/angular/src/app/home/home-routing.module.ts b/angular/src/app/home/home-routing.module.ts new file mode 100644 index 0000000..7089990 --- /dev/null +++ b/angular/src/app/home/home-routing.module.ts @@ -0,0 +1,11 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { HomeComponent } from './home.component'; + +const routes: Routes = [{ path: '', component: HomeComponent }]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class HomeRoutingModule {} diff --git a/angular/src/app/home/home.component.html b/angular/src/app/home/home.component.html new file mode 100644 index 0000000..6d1e9d0 --- /dev/null +++ b/angular/src/app/home/home.component.html @@ -0,0 +1,321 @@ +
+
+
+
+
+ @if(!hasLoggedIn){ +

Welcome

+

+ {{ '::LongWelcomeMessage' | abpLocalization }} +

+ + + {{ 'AbpAccount::Login' | abpLocalization }} + + } + +

Getting Started

+

+ Learn how to create and run a new web application using the application startup + template. +

+ + Getting Started + + +

Web Application Development Tutorial

+

+ Learn how to build an ABP based web application named Acme.BookStore. +

+ + Explore Tutorial + +
+ +
+
+
+
+
+
+
+
+ +

+ You can check for similar problems and solutions, or open a new topic to discuss your + specific issue. +

+ + Visit Support + + +
+
+
+
+
+
+ +

+ You can find content on .NET development, cross-platform, ASP.NET application + templates, ABP-related news, and more. +

+ + Visit Blog + + +
+
+
+
+
+
+
+
+ +

+ A unique community platform for ABP Lovers! +

+

+ Explore all ABP users' experiences with the ABP Framework, discover articles and videos on + how to use ABP, and join raffles for a chance to win surprise gifts! +

+ + Join ABP Community + +
+ +
+
+
+ +
+
+
+
+
More from ABP.IO
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
Latest Release Logs
+
+ + + +
+
+ +
+
Video Courses
+
+ + + +
+
+ +
+
Samples
+
+ + + +
+
+ +
+
Books
+
+ + + +
+
+ +
+
FAQ
+
+ + + +
+
+
+
+
+
+
+
+
+
+

THE OFFICIAL GUIDE

+

Mastering ABP Framework

+

+ Written by the creator of the ABP Framework, this book will help you gain a complete + understanding of the framework and modern web application development techniques. +

+ +
+
+ +
+
+
+
+
+
+
+
+
Follow us on Social Media
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+
X.com
+
+ + + +
+ +
Discord
+
+ + + +
+ +
Stack Overflow
+
+ + + +
+ +
YouTube
+
+ + + +
+ +
Instagram
+
+ + + +
+
+
+
+
+
diff --git a/angular/src/app/home/home.component.scss b/angular/src/app/home/home.component.scss new file mode 100644 index 0000000..c5bd877 --- /dev/null +++ b/angular/src/app/home/home.component.scss @@ -0,0 +1,27 @@ +/* Styles for the home component */ +.card-bg-image { + position: absolute; + width: 630px; + height: auto; + bottom: 0; + right: 0; + z-index: 1; +} + +.starting-content { + position: relative; + z-index: 2; +} + + +@media (min-width: 1199px) { + .h-lg-100 { + height: 100% !important; + } +} + +@media (min-width: 768px) { + .h-md-100 { + height: 100% !important; + } +} diff --git a/angular/src/app/home/home.component.ts b/angular/src/app/home/home.component.ts new file mode 100644 index 0000000..0257dff --- /dev/null +++ b/angular/src/app/home/home.component.ts @@ -0,0 +1,20 @@ +import { AuthService } from '@abp/ng.core'; +import { Component } from '@angular/core'; + +@Component({ + standalone: false, + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.scss'], +}) +export class HomeComponent { + get hasLoggedIn(): boolean { + return this.authService.isAuthenticated + } + + constructor(private authService: AuthService) {} + + login() { + this.authService.navigateToLogin(); + } +} diff --git a/angular/src/app/home/home.module.ts b/angular/src/app/home/home.module.ts new file mode 100644 index 0000000..c0d42b5 --- /dev/null +++ b/angular/src/app/home/home.module.ts @@ -0,0 +1,11 @@ +import { NgModule } from '@angular/core'; +import { PageModule } from '@abp/ng.components/page'; +import { SharedModule } from '../shared/shared.module'; +import { HomeRoutingModule } from './home-routing.module'; +import { HomeComponent } from './home.component'; + +@NgModule({ + declarations: [HomeComponent], + imports: [SharedModule, HomeRoutingModule, PageModule], +}) +export class HomeModule {} diff --git a/angular/src/app/route.provider.ts b/angular/src/app/route.provider.ts new file mode 100644 index 0000000..dcbd57c --- /dev/null +++ b/angular/src/app/route.provider.ts @@ -0,0 +1,21 @@ +import { RoutesService, eLayoutType } from '@abp/ng.core'; +import { inject, provideAppInitializer } from '@angular/core'; + +export const APP_ROUTE_PROVIDER = [ + provideAppInitializer(() => { + configureRoutes(); + }), +]; + +function configureRoutes() { + const routes = inject(RoutesService); + routes.add([ + { + path: '/', + name: '::Menu:Home', + iconClass: 'fas fa-home', + order: 1, + layout: eLayoutType.application, + }, + ]); +} diff --git a/angular/src/app/shared/shared.module.ts b/angular/src/app/shared/shared.module.ts new file mode 100644 index 0000000..e4d2f39 --- /dev/null +++ b/angular/src/app/shared/shared.module.ts @@ -0,0 +1,23 @@ +import { CoreModule } from '@abp/ng.core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgModule } from '@angular/core'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; + +@NgModule({ + declarations: [], + imports: [ + CoreModule, + ThemeSharedModule, + NgbDropdownModule, + NgxValidateCoreModule + ], + exports: [ + CoreModule, + ThemeSharedModule, + NgbDropdownModule, + NgxValidateCoreModule + ], + providers: [] +}) +export class SharedModule {} diff --git a/angular/src/assets/.gitkeep b/angular/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/assets/images/getting-started/abp-blog-white.svg b/angular/src/assets/images/getting-started/abp-blog-white.svg new file mode 100644 index 0000000..6d85edb --- /dev/null +++ b/angular/src/assets/images/getting-started/abp-blog-white.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/angular/src/assets/images/getting-started/abp-blog.svg b/angular/src/assets/images/getting-started/abp-blog.svg new file mode 100644 index 0000000..881609e --- /dev/null +++ b/angular/src/assets/images/getting-started/abp-blog.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/angular/src/assets/images/getting-started/abp-community-white.svg b/angular/src/assets/images/getting-started/abp-community-white.svg new file mode 100644 index 0000000..59aa29f --- /dev/null +++ b/angular/src/assets/images/getting-started/abp-community-white.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/angular/src/assets/images/getting-started/abp-community.svg b/angular/src/assets/images/getting-started/abp-community.svg new file mode 100644 index 0000000..5260071 --- /dev/null +++ b/angular/src/assets/images/getting-started/abp-community.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/angular/src/assets/images/getting-started/abp-support-white.svg b/angular/src/assets/images/getting-started/abp-support-white.svg new file mode 100644 index 0000000..8de6a4c --- /dev/null +++ b/angular/src/assets/images/getting-started/abp-support-white.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/angular/src/assets/images/getting-started/abp-support.svg b/angular/src/assets/images/getting-started/abp-support.svg new file mode 100644 index 0000000..774bca6 --- /dev/null +++ b/angular/src/assets/images/getting-started/abp-support.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/angular/src/assets/images/getting-started/bg-01.png b/angular/src/assets/images/getting-started/bg-01.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6b323aa9572d615d559b8c4dc3c8b5507b0e65 GIT binary patch literal 27830 zcmeFZXIN9)w?4|=?k#pisvsbsC`c6)=}J{80RnA6b3QF-LjFJH}eUni?wS&#;`KqM|zg z=%J!E71dvvz`qx#P6B%#4ApW2|DAsI@ToHu72|cvzds&nU;7E{{KHvWMV_j#=gJbW z@t5TT^#@c`#gS(Zp8rin^-}eb;sYIzKUSt3-Wx6WjP6c5uNlS1#P-X7rpp!j`1X2R zDu%%{w(FWGDeL+*_qn@p`Nxt9(WReW;3^Bv{1fYo&Ci_W%QjK^OQyWlQ-PoU!|*+} z(~0##aMds0QXDN4gBjCjS_-V5$GYVf*j?7-rX5_XTUe3^HL^J^=wB0B=iXbjyOlxH zQ|C_eiCVvI!`-*nnF|=_|J~12ADB25m9WmV-}C}uVB>Z(F(zbLuDZPZ!xP5B)_-UL znNU%^TWR@WNjM3&C-bW?`SVU*4~ZDNeO$3wGYBl5EJDHnBm(UxIG_GE#o9AP#%eHDgb~ z#B)Jh&RN3Xe$b!5Ma-W$-{uuO!6GoI&MiND89FXA*ujMTCwdLH z2{+bHYXSGBQW*YpvCR6qQuX_hCutl*pJg~HN@Ci^!jf5T5LQ+u+IT_xcur+k742AT z-XBloqY@`JZdoSV%$0axOpO8M{yk88uJ$4v&g9_zeT=R+P)+d<;AZFg%M#x1x%{lh zU>d^Qs>g$WHNAH5op+k#rh|syGVLR$%`wn#9Joi@DSkoDd99`EU$w~-;86S@bWJZi zLBsNYz!s9s|r3gZEW|{E{OvAubq=urLeDf~AwP2cM3K20qlSh6BgoFvBtKf9S28V?iB+~Na zdkw{=bM&8inbqVVK@r|R`%-Yht8O46l#2}(#cuQSc748Xn53I+7<7Mw#g=Ys3@QA& zcWahsA)ZTy9C1X}>$UfVZd^JVo_0vw6Qd(L6-uT>Sgi6A<9r|~_=`BslGE~G&bpft zQ`zKfEDLc`s-Bde#t3R%OV@mi&e*yTeUygc2_0ISr;x(I)z2QUZM^N{<8|d}QhqNP zgCzH^w?^+k>UP?B_NOS(T2}cW=2$!A?WD~eIJF%ml_AxQH%;m!W}4J%rYx8R0T*4R zqWT`bdsMRLf>m2`VF=4boPri>*e)TWnpt5~>M=Ni?*i}2++#om{W9TwLuhJl2BwOABsic?)N6jLm^`k*90Hzh z!p8`DeDCB@cdz2yrlD(c711_so?;ZA7V7djV9KtF`UM4PSuAz>;ALnLdGdl{0@}@ac^H%Pdsm- zn(~Yvny_``nH+*EWYF0%-2|EXSu~)tY3&r3wY(13w9^bnaBj~ zb*t=|x~PHv%F7vUAJ2%PoI7q+h27!}>4XpMPji&qcLnsUM2rTwyXi$;@5I7?2R3wK zI0`cdHY&SI2iOgQV^Ep=_1_}(4Gg3`WDGPw2~>tl%DQrC=sd`~0CO%*)2_c*Rr#~b znYvd+6aO+U+# zVG}s4efWgvF3WcQITyuAGJA0(HQXIgC3Q;7SgB>k^b$K~22?|-i&|wtd-gBhDcKr{ zh|~Qiq&@ykb+nHO*3z0CxKOxUb`w^Z0;q{okY*VYgKJJpIV$lCgV$QsMRuDcJ*^?R z)GnEd7i!>LR(6?a3Y#u^+E9kuXTwTM&<@hvozWD+3pKw7m+XGNE-k^(HSzS?qlkF& zBHc8}`&<+_#{0Ho$=aprV#aQW7L7yWD$jLMKStG?|cAlwX~;RsQp=* z_hY6#+68yIGS#`H_g>%2 zh0z0(K{UzdoVH&6=x#I<(=?q|Gkgn}mH(5cs^quKj{l77zuBE@c3w|qQ~C#MWOz_~ zGpj^@UhJ9Ax~K>;5Q})e)`YWTFb5UKDm>geFJI)bMBH8!yNQ8x<)!@>h<02C7e16b zHKKaBcj?Bi4JiY3XX$tD=4L40SXgK%|FuTFD=I&PT{lT9jFa%m!#$K%UNEJ_W9kw^ zZqrf_N$J0N=nO)Rhl!DQ@0eA5WRD+OR$wkhqt$9Q`B-O?2OYQ0YQDHQ zjS2IQdaY%+Rxvdct;5ATtn(!0DN|^+s-%S}8?7!J!UP2lJtogWYcX4(>?f#vb-_FL zJT3MKOc@^}N|b#f;w?HP!nFGkGTl>B-Ge<5LYY-+ zqi<^9mUHo-UG`bYN%^f>O(wTpPP|h5Ez*qBATJGG7;yvJ&?w`;FgT)ow{i=ci?hv#D$hT>qrA?dU}6I4137)4ibrP{-a{3 zk)by%JBENh5NQ6HP2Vg-=7-KICZO@n7g2aS{&p!=gsIPK<24$0KECF_h4~|CH&tjN zwu`XNPLlToI^(X7>qcw-rziYFerV=YWMp2|=yk|^KI)uvcxo(jURSx88F6i>#z;w` z>!NOR_KejEq<&(08Z{B@?$J&LEGX+dbwJvf68gr8TYNbWIUKFD90Wq4rK ziGDrg^m{XpegSjHcXC_n!zxrsR$*1t?7ylc=Z0E89TrZ98$nXfH3;U+`*Wlp7z?6K zdOd){OClus9rNVoy|=SOOM~+| zCM(zIh;%Blth@`ejYu2guiPc?V#b9M^r zTKVVZ(V+JBP53zTPrLG*UCzGhjkU`rXcQ?UJictTInvIOg_=s zPkMtV0@H$qbS`+YU~wEa*1+l%`mrAyyu`wmh$7KgixNHQ?1(+oGw7o=xyaj0&I+mT zI)>zi&5ohJRjEb{lUZf%h_)<~z@6R5BLyGH(MP1W%%6QDo@F4GIgt)x7;iTZG& zdO11B=~w3&=cb|11splrG4j}dR%~RK=P=hV-F6ka z<)IWh^A8;9%S+%-gWCO~qtzIv#IyKwR)!XsFdEqVLg52+k*~kX#xjBRwQ{f}qIP5`@ki#wTmIY8xLe&W^B$&?3M8 zq$BdIZmc!ZU7^q8_T!OOGJZ6wm`c%A%X9lQ8@Yi=8VqMWD;2> zOtb=fVi0yT<;SiRo7Ry$k8N1CM3nwvV?@rbCG2xRI45`~inN{_9;4CXi+Q8dz@J*g z)r}uL;n0Fct{UK`smd}4n%0N53m1Gje@ADHI!k!erW3nk9564BxQ9u35`QZlAl&5QgxP{4EM%oY9gE2p(j4sTRceX#Sd1|pVv}~>y*HE zYB8erY4xy?Ps*PSKUv?`Nmx?6QqZdvqr#0w9%0DgFjl9gGQJQWE9+C8G;b;SMS9te zPcY83(BVp1f>k*-2Y;iX`d8`#;*|6q3M#fL@TEU1VRk*SAk_sRFckCn6a+5Zl0P=E zvN%Q>V}h+i@sKGFZ0_m2>07 zd-IHj8wS=sSIJ8R7cA^;kzl>$gRt>pLkalX+M=dY9w1y3ej>a1%YGb{r;(Zf zSP}i~0l{d5N?3J%6mWxMFi9G(;z%me?%ew7wsT#62vT6ga@N-L(>C6e3wL$TW4#Y% zW+GD}eIR2)td1VIYvjbFhMq=oAAW8l`)yOKFT{rngy{$e`@`M{M$A5*@1L%wxpn|K z8_sVB=QIc0Dvn$M<40IsPIH4nU_3Q9{;bGTr#d|VQOlK2(_$?^XcT`l`m=*h9la2K zGq_0La8xgo6VzzanJxgLE@gWc`d*&3^f`m&XiflbJCgMPI&8+4bQDT@*t{e%CWSqt zSsasjwC!vE(Dw!e{x=ACr1|3;1}xcx?lwK`?6*ZJQor6>34@ZqYA-mltSm8|dDT_) zKHjCAW8-bEK;uLNDCJk7?}Wx|4=&YCK z333g!MkUWYWO$nEP_?2lb=_gB{V}lQ-YX4p;Eoe#4%x=Ztiv#jd)o>iP}n)bctr# zg?f=YL?S^N-mpX=5UEy*In>zlsMBSi-N1DBhER6-%WMbGNVD=bFI^!G4);Pq!nC(` z1HQa3pVDDYnk+B@jgo4VjuqCHw5sUsQ&Tj-O-Zc$y~^>YJ((Qb!)3s`HOFa|M?pGKXZrQG1ZgI(E+~87Xn~QD*;j5jHyj|(asIYPwNKAs5A2}K z!Bl?g*OwAnb6J@#-n;@R$ydar1?hPTI~AhSEtJb%^n9bt%>T4Vhq=du2xxP{^P64r zK9awX4MzamptwQ@@ooqk?)&Nuj^DquCvRc+{!%|qTd7*QS}xTl)DBBAC^?!noX{z# z4uo)$soKkz^0Fi9%}b+!GU@i{u-ac)(+6d(pkMT7tT87|ZSd_}2|vl}>^ZMu;$@TJ zD*&!TX_tlfo^ge9X{v9BuD8v7Vkuj(gL1L*amc}qrdIY<)>Ol`dhbN6sDb!qmq zHgYp`>j(3ef(~R&5aU_pv5LmCfy@#-<2>4F$3rj<8x|uM6>ZJVAIbmuSooj*J>d)kl%+0*_EhHFi z_i>#%wi7maG!9pFuZDOF<`1mEiuxpWV(wis_soOSuVWGL%OV3U-%AUm_?v5VL9EFf zaytik%Bnu-9<35BzGY!n__7Y{0gxUqx!3O4T2hl`Aaj$7-pUdCPCxhr+B`AV{hz7BJ`lwBp$&Yy%_^@^g*`LcGM!Q<;rR2NIjm56}5E#*OaGx!Bku|Ea}G>gvHWjQ`VkG#vUK>E*ucfA>^dD`hM|-`czF5a zdD}<00__M7!6KN6IuCS(e!d>N)MW|fs;FOIjf;13;x$1r3P%xqGPIlI!*DC(`H{Y| zJP^O8mMkehHOa)c-W$E*l#E1>7E~mHhfYD4I94~0qf|rmhWr-Z)yUdSu zdyCFPnA3mUWKi1scFoQhV(#e>s~rfmO05Km4IiXHHd~#^Zps7GH#$=pc_rhZlh{AI zhcqOJ8DcdaGA;2S2WGl*M?!vx(4L3uZqFl+N&6^*t8Du5j*PsW$OP+_IT9l25&25A z1a;QV?TDPQ=2&J?Xqa)sX%Qpo;qC5bh6t#55f+O~%Q3cG?bQ7zF_bYMq4RVeb|v12 z

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 z z`Y4n#kpoQp6gu2>(&_jy`hxs}kyxf!P|2dFwuzA`;=-}RsfuYtQF^pM?vgw=Mf?_p zI1$PFIT(vl35w^+(US=K{pc9#hal;8n_hKGe?S8w^j`_b8uEi1VB*kp<;tg9nD3n5 z;w;=2fH?+Xk`Pd93pNUHepMKxLpn;WPm3jwPFnxcd5I02q{Dz{G=lzh z$LK6cL33biMVkCkWV4apv>X^!eC=wb4yL@ynUzxJ6K( ztnO*jwd&7bV2YNT+|$puPt__x&IdVzz8d$vclN_$ZCua)Sp*&B@+#l11=0u_c!af^ z)JZ?ZFlzg;-0;1XJgpSo{w*)@3d2`7quZkvLo7sFY4_})>1MA-BTK>2tYQXCtc79P zW?7M|&7$``-3Q+g2s*Ldtt04~WeHj5-0yg6c?f=#2^f`lJf*uoFOq)pJM6d(vo-jt zAOX0f4(`ZDGi`3x7#lz}3=^4aKA+gS@GQ2sXXTS+1kitOeqJh4<5ymc-%d|bjVzNy zMuw}Lx{tT)8Jypx@2(T2L}{OLgV~Fy9%mJ6zPn= z%LpzDzZOxS8_+T6?HXN%mYKXoD!ZK%qo$;ZLLTwL@7a#dNDF>cP@5nv&EL1Wf4AsP zFEe2(ZbE9D`loX4g0%lx+TH|`^J|_D@)F~>(4$-0^3MUahE?EC%SOFPSmG<@f$bM~{H>B3J>s?Y_39Z>8T zvv>dGAAtPvjqAsZokOPIVeTFOdsM|gTIf`Jdiufr>c*BNlODAt5MN0#Rr_3~7bC+8 z{%SarlaqSphFI^k=(CeJizRa;4&JZX21x7t__3;@MUm7ffnEC{J23-p=U3xWqLj!Q1+4h0=Y1@^$fAaIe|I!jLnI4bVswW_CuNg^%=3wglqrpD zHZXX}(Pslb^cGCa+f-O1o0yob?KfW3W+J2L`0R(eKgnm9zSyf}Fb^?~(LW;=7dtC` zB>ASM1MsC*hcuc9c3vR46f;|;Sg#eA5(?b)7)vdSP$M?KzqEu98x?(6N=NGR8fM%1a7LgkjZQn^6DsRhqY#7A}dWE^Gw3E7Q@gVba0WnX7wWf6C2wjFI@Z8FO?6`|4(DE$E_Yb;jnaC>V79c@Bw| zuA$*4!T8vj*|Oc@XJ0iFgujH}AF-)&OxoIaM1aZnK~e7>PO~VjN4J}zr~l1lW{qhYUV~&N&cSr^ zra<6KOv=XoSXSgAzPVK!Ulxh|riZH;u9${x+D-@!<>10i1YS?=G+0fS|+!W>c&iG}w}=7&MhAx2CxZR->a<~KDeV%f{h zgbl~#N2O_90Z5uEttbKnKlQ+iPABP1!plT*Pq7viA=Y8NIN=g`>3tf!+FV+WL2>oL z;K3r*kF8>70lU(DWoEyy1XjL>B^|ooomoAG73g3XM`2W|5Ub*IU}$5!h%Ej|-gNaM zy2WJ9{=1=k{8B5q=BlJV`r(3eM^`_RaqQy34LJvFIktcT~oozS){XMXJKUWH^VUHnA}djr~odaxx) z(x)zIbULZD@q?I3!a4pc&c)$IY@J@CQ%R?m&+wq7zt4b7^Z96sgYOc(vyureZel=^ zeHnDUrw~4~6dEydK0jBCro}R(|Nl_+pV4stQM)*-juM>_M2~JFQG@6;A;D-fL>Qt) zix9n+5JWFQh!zZn8ALaX2+>=V=skMx1pn{vKKFUnbKYcD-Xv?8?X&m3%D!UuSjXt} zGik}W7cy51%bUWnb#Bbt@H-5+2Ga`AsL0U`5jm!%v|YRn^82 zPDl3F?{Asy1v`51G6XLK7xd?g10x6o3Eju9F0a(u=y3U=Mnqmo_}}QDUy%w8^!-DF zeJuT(;~s)${_$tN{eD&C72oI>oNovw-dcohwVK3@l1YteeZC;o2O;%|b4j7Kd3jpn zeKnHkNdJiWCzkT$dw)W&>mIECYe(;8gRk%3n+;i~Qu9L0?Bc@C6ii(g`-lz2@5BVB zeva&$G5cn1yW~(xfO<~}&tSpy#6%CV?kZWn<*4utke;8569-{TOv@8&92_YOS3xuLGOUzFwfX4;vMLL!zg0Y6Nl0GX~6}yLc z7M0NH`NbEg1;0};7N&u%S~WMB6MlIE#_vVK3Ry7rE^8agrLgDDpAR`xg+Vc(MkR1e z`8#jlAzUgHZK`su&;8zm@(s1|H-HKXpNc6AfE!lwlv;Kak7#J72$!2fyXkIIpSgVw z43|35ij38-u{v7&d16uEbY>$+;`=rQ7f|ywq8E?Rt|G(Fy?|6&{a1r_5TJc7x;<{J=+f1z~ zgW#QSM5Uz0QuQn~waSY3l@8eE;!TztC8g|fQ_(8)HOJuZ1Sdr0F}jxj}k5sT*7J<+zN>k5}{a6??QxBuoID?>?~CQ^+R)U)y~cY zCdZbv7@hAD%S^rDR-Q1SG|^_wzFi8oa$5DRW@F5NuXFIK%dd9^e4`2|s8HI2sx~D2 z$|J+|?du1gG7bqdALvpAB(L>F85suS?54t3h0MbJlZ8L?=>;*Sm|QBkoO~_HcVrjV5)Y02{UC3)Rf3iKownjRhwAjYauF(XyKA;u4~n zTr-hru8OAZ*Y;cN;o8r4KRdCb9wvO(_o-Zh4Xxj7AfH1F7#WaNsl?^D#LSd)d@5C12v1iRcIQhfE(E^@+Ajal(f>M2+OilD(gyQ3`LLKHp#J z9}%S>fK7c8!KkNp2=Jd?@Er~UfmjMqS~C51J}$O!cHw&%@WCBENf(Yge^Yrji_ zlbxu*i%~!s5SYA>9v%@8O0)6wl13Q-*G}Q_gdR20Q+n}t*zbyX&*lRW*J9=n;VR`z zdW}%cH{QjQuX@7!6UDfeS=2flP}O+CPgv7Na-(c$_Kc)IS$#Q+c77++WQ0Vn{5PKh z#~FP)PNhHDxl&WLEBYG{8b>NI8UTSQr-M=&&7Z}KEjPX}-rmT2en-FD{8k158%*LFyg50@er(jGt zbJ{0V?=#6Ya7}JC`oHKS2A66h2vl| zXSFFcO2fbIVsF)Y*zOTysAd`k&JSB>6kpHWSjOHg4YPgxuX5Pak6gz~dABN8x{dx^ z@3L2oTK0TpWhM7pJ*lGqH5;Q`Ba`CK9JP+2NBaJOW^N4~kscN0 zl*QAgs}gxgc)!k2jC!>nQPp$nu%3>kXDXM#2}vIyO9Sw~7Rmq=- zf*m<%*SHK3goH{)ocnLJ6#z_&ztku+7&40GDY#$N$4ht^lc&MHOf&Z{7~B9wW%vE8XO0DUNy0f@ z!FnLCQW!YU!&fg;_UZ|=9Wfj{fF&2iS&V4T@^14`rtFD#f?u>|; zy<0XTZDK%9jd61U`(3Py*>S_Wwk>@jMj-FS zhgy#MYE!?{zsB5dy=B*&wbzXpIx%tbRTN4o(u!yacPL8wbrRpNdP zKXDjB!tU==#B)l^5uD*TwN$c&;D(<`CfzZ7Gm(u{wLhVi6g6z}0#rnaduIh*9Kk## zBpQ%#`7O?I`*$Ddu- z54;k-n}!&T^gL7|?p2fei8gEzRslwubLKb^ST1jbmv*1dgR;`F)*qGMWJNs|{kv+Z*+wqjJHYrV$kwG4!&doy7eRYGMt(h@og z1t>CxE^d3;s_0!GT6OW8@T@n3_vJnB>GM}nJWY?r8B7s*ynyR(eMt=b#rI8j#tHlD z>id&XY~vhJpom8(0qVN$;VJeQ?Y_%g7X&Y8_5QEr0f=A2t%72}Nzw_t#x+~OV6a0z z{!UZZYr?;ZRixB|H(rp8CWb5BEX@I>R_|{~FSDd)M?M`n zmjlysgn_fO^yCkqc(UxJ5^P|VDT~<&9SmN!)~}9zU5D2yd&2GHU5MeIf@yGKiIn|M z9p0+wH|bZds98D|SX;5Vyus)&R2g=ep_ZK=bZwE|k1S><#&GkKOnLzk)NZ~*YT^QW zsbaO%`8Imltk!RaI*_V z!Mq4{_b2TNVU}bUkfX>pIxatI7M#`uBDHNs7){RDf9jp6T|csE6f(iyPotFhkaJG> zwaeOBRY|n~ECkc{+yzY*-tot!Z-+>jukHy!=ZwxtDU1P#B6McEw!cG-82E@n9qT zy#p;~g@Io};ODf+xDvm;O7eY^g(TIU$g%0OeAk{k0-pjHJHnBEH#`YO{)0Js@6Tcc zTCQ}f_$JPpKQ3)NELiw@H&JrO4s{VbT{8k65NoomeD z7_u*VvIm0OP0opH)VIESvjD;TziqN}hf41K{A<_*WHMMXX8d)>Kcn>9eU;{;&Ze#h zU8=S^QsmL(2mN<}B2pLvIK3&Xwg^dPlCevM76>^ECsD zVa61@t%G0u_n%zw$_95RC-UW(0LQ33Ze&ilccubQTPr+-W@MIqLq2^o&v(^Go`kp} zJ)n?NShIa>Fm^|)A;}(Op`-<*)Mpxmffd*wrC1nnm7bdxa2-x>PrN#t4FiGQjZyZv;Qxl z#V61Qu48>k3!&6dnj_Zeq8t1UadU#aQXn!u@m*b`NXCtr*6!lbXFa#U-h?Y=bne3L z-9(v-H_+k{ekZj~wwDQ(_$ib~KAQZ|0PDX^FB1j^pD#3nedwi@zswJK$e+ZE2R?SW z#b^W_{I|0M%h}mr;L6ez@4ZUf0}#rz9;Ce{(w_7y&1#SON)K)t{!sCXC5Gc==tVr_ zXa29W#VC?BL7c3o4qi-#(YAd0pP7#ZIwVW?OsL*3ymzP9iJ8Qzm%v|4?Ta+Pd$zyg z>Oq8XbKtTG2Kb8QT(V9u0Xk1~Lw0kxiY&~lp7rZUlXgl@ z-lG<%KcufPG||KBO#zuOO1O5oz0!+ysGTGWPxyPNwWplwS7-{vXZH-brmmi}9kWV+ zyjGi{)2FrH54O?K_bwQ0rXH9d9Or7ez&3XH(v(v{en0(IDNeNi_%LH zFiP3GF*5O@-$sBq#-?o$rRF8t_&bdEMtHR?$t^F+VW`~w4{2sG5w*xA&6~HpZ61Y0 zi&>`UBSMP}Q2e*#nnW1yy(TEt4;m6MKNZJ3Hg9~ihBALe{zya--7=AR;$<@bOsPqw zri_5i=mFC%$ItlN5<;ySAUuo*dWSYa%rQ$des~Xg_C6!AP&JKIy-hz@JzY$R_mNE) zq~c0<;)ho)6(u@H?H~Z1w?1%J&+SZGAmb()F9ny3kMuK#ZvD1U7DU_7e6QE(@+B_( zefuei8O`Z6b*Jm&Y=lGz@%5szLn^`UZVJ_=Uod>(Wbh`F?G=isS6G&{(c1%MUC23Po~$_ z7lxB77#Sj-7;au7lf$x+>(&^7{+(F@IPG4lRIMZKP!G$(o_L5roEPDx1-ZgM?SLC4 zkcMRm1ROzl7cIeAjNb_v17LI+2)vj=WlFdq8iI54OXSYWH$>YzO?2-luuKPZ9SnID zHp3{G9!T($kiAz(BRLs7aNHYXs*jfNu-!F^TrpSwZ##H?QhJXZ$gCdr0z=VLPe>Ma z*(2)gh%$~58+3VDJfjcXQOV&1CWe(vletC^LFzyuAY9UDDf6LT%qqn=pIVSFP0tM< z;G=$}EgX=nSuWm>!92b|=>snX6itN5WTDjs_io^EZDHEEay@1?5=Iu^%_{Jh4CnbW z$dbZO+yW-o+Tb|Zy>}t}Op}HS_akYmR1ouU z!rC29P5sf-yV0?QWUvCfm{Phcyf^|#c99N_T!=Wv*;QX7m87O2yDeX$PFo^O_wjqF zIbmWL5y~ovw5U=%0JbUxfUp1qLCA(oq!px=<$)WvfxpNC(30#`4*?3lUiNBngFRH2 zaNII;#)LhEF7N9`YgK$|PE7Z!5_rzS{z&{g`{79G+ZlFg-Bs?CS0q8EU{b?Y3AF~X zA!}Pg-F!De8!hGEOnOyVyRW@x8G{EG={Z}vCBYWKW%`1)kA-MNY`&>-xNI_<-!gxX zxFumS=t(O?WS4z-9HnPe2*TeAZ&5Ib#eD#M5BMB%c)^ix-4m1lG<86a+;H*}?EZqp zvQdf&9aZ=%n%ga6U=uS~C-qvP)XcWk*?57l;LL~|4(%D=XfJN`wt zHGbH_EJcCgr{`|KL`)I0CSt^^A_VWYOPH9C|84#_$@F`uI#`=CCU-2CtBgI8WsA4t zI{bGOeZCbfCM8-O$L;#+z{iz$;kS*7jVC`MDtgs2LyvN~Bk5FTM@O`|?ERSrtEDxe z5#+0YlP%%8Z5_4K1R_pwIo6w!caz4va!fkmZ+{X(=n00{BU z2|sh$(@0Jssqy9gdx|fk{Pd(}tfVKbl57(MgR3trp9`%J7xp!*Mn&rPTez-*?zfAF+$&vyHpXpu2; zF{q53Rje^pkcOnMDbvQIe_l#kK?K5uZn3iJU36Ud!X~QVwoNtgzhl$vvdCK}HrBUU zD&43Fq6$(#_dIGQw4kOWwiPZgUE^ahc-RumWcfTk1D%%@mMeKAnbPM^+3-6szAt?T zL8cen6Iw1EQoeOti+|VURfKk(NPEZ2G_!0=xrHz0q2%GtH~)D zm54tFzf?e2biiYpo)UG=YLG&xp=lvVxGCBu>_Hm&MI13=6WdCn2Ksa!cP;Pn%BH;g z=)2ar%*rcb-y6dg`i8Wee!7(!x9}L2VUF#er1T57VF8rCQb3WvW^VgF7wU3T#V-`4 z&s<3&j6Q~B^LgHOn-V>g`jM>{vFYrmCw8Hpa=i;q>G!9!5tk;_AmW~`Q5vy0ep1jD zwMU<|;!dES=y;O7=}rWhJMt5@ZHdbV#u2|mokH^$f1{G z!J81Vg^1yQ1HZ%M)a%p9jk&=PLimfPPQ$@KP;dGy8Jtpj=~04FylR{*FajCtzm|`C zESoSi#OW|@M36R5l1BdUg2KAt-CV)%Srfidp|k@lHaq(DQ$8LozBKwzP6=Xpr@*r_ zK!cH$P4O*sM++TyD-$sG?|5Lb_S<#_cB@zi@LnoFKLLo#B44A+jlin1oh}+_%xtds zr<6|(8Y=%Kp=_<4Ww;!CFm5~_OsLEa>Jy~W^fZ;mUK|5`-&FlABP0zVRZZ|kh9|D{bE=0+<1|ZN` zQVw&2(;AJ>Qr(jD@ZqUuUp(-|%C!UqxLE}`_1#y#B6uAC$*|=9doz|Od3|K_!cd&j zxT<0$Lp~k5%la{RO_b`<)=(pBYKfK1R9qOxX)&{9R!t!8JmqxofdiuVH4p( z9{qk$jQ87d+Z$r=Wy}8V=LEJZ3VlAOAFI>Gi%SoP%D@E11n@eM&o!T>#}}sO`(lOQ z%V({r>u&+s%sQ1T$?lhT^D>}MRnO~f+gPBL#)B63U26gtSq>~81o=0lklnp)5}{S7 zdWt`;)LMw(eS?d(du>-N3-wMB0%R^vwv_8-ISZ&XS+)}Y=tV9MXnX_xt7kusNdg2i zB0!e4`CXtFJp^{jsdvrU5nh?I8BwchDos*Nby7?AWkU2UxO@kjp0IGhwd|2s8aY?S zPR8iG8T0*Tr5~E9pN6TSBmk!Brj>9&wh=CT@QOHLP13dS8a8D=01*P3M%0-Wp0+Pl zRa=z^H7Gr(gFYY|Sr`hY2z#WC(>hCsgIaOm0%kWkb0Zd>KHvz+E9Pm+uF6XB{vG8< zS3SW-A6ivwI%w-+9}6k%gf0}!n41LT-X8aWGU3pYuEH8v~TxBk}@T5HX5 zNq-bSW`4_!L=@)P|J@=_B8o^^;z{7iReQR0Gy#V6Fa2vI)&^HIs6q3@CJwLviA-0! zUCdbMNp7K$>DPR2Me>oow;JMCVrDHi#3J*J++y^#F0bNHFDLZc9K0_l#P|MRDr=7U zEc>M{&~(V|R^Ts2-;~uHO(3pACE+J4T7_2quPPW&Bx|n^?#EOF0m)5oJBVR)W-Sg;^|juNoz49dRnHb3M4cDFZuw!}K> zuJ)JNNvg=jf^A)-AxeXFn4fI0@g;A0c8hRP?e9?+MH!?U8fkv=GB3X(kE=dHqObHKh@x_Q}MLl{mw)Qm1SZ4D( z;)f8J&lfRwCCzq5xVa>*RztoffzwQQW;c+^eCkJOOmr{go`=aSClHA2=1-}yBJ?vd31!Ls;ZHOBti4I_(Z?nmVYNySUl&#g=WrS$YeIItwLeu z-yla})G-Exv=D0-#<8^R?>`FsHyzJJdcy5mOO>ZDPtsa)bXhM|lBZ=trQmCJ;yWDhm)SEtx^dyo*kuhq&YA#Bs= z6_Or8YujLi6HrwLBYePSKF?pl zUy+hmHWY=hW%DSRJ%*R z#hp)*Vi2#@hgmFcs`bKfZA24BQrS=;~<*kZ-x^ zpV{2Gl?|{ue(3bS6vDeELX9@lU&sjcvP#g04c<1(je%?<>dt&VpxD;=h@9-71{`#}GqpsoI%)h18o!)svnTbJ3btKIqGZ^(|HL zF=2cZ*LMSKeqO)|-_#`ul!l@tO){LVljoyv$6>B)za}ofKS#{8hjr>(|`nd2cTjAEJo*9d`NMN_3goY14?f zex#@k#6TcSV)n#o-|Y)Fp@5$C|)OEitZ z2!_F=PVw=h&cQhLaEZXL?ql1Jp)y-97@l7dioKS)?+%njr<0m(AD^T3i=`8dZ!b*a z%j(dbV0@HOS5p9?!qrJZYT2!258Lu7wd3*K`2VA-aNYYvGEi<&MVpU!U?!{p$()|( zw+N%WGfsvmw>BgM1NaJJ4gmVYW#F2+A45F`*1*J3{A4A-z>1>FGsgUk1mt-45S3&ZC{K7*?L0W-;)%~QT! zx>N)q!~&1^CRnPj?AQ}pP7n?$7ozq4-iCDn2>Ff}-Ue8sTvu`!1rx6sGcM_C7y+zQ z4%rOrYtg?33Ht{X%Q0=M-S?xak`Oqc(7~5|{z66X+<~~oHf=|ZOSp&D7 zdC*q7W5v?V>x5?BE*zNy47vAPY4fstiJ?R#C{v>9O_U!#H=teu@uHG5Rd zE+4BvK}}^DK4~)k?8nE)F}y!=ZsuF_ise7{d``v$4R9PBj7szL|GOXkw>hM7@@;-J zp1Ncdo&+cwIoUEo=elW+)c4d6phlW zq0LB^;)-#Vd{a#zqVhR-f{)bx#Z-98lX2}o_H#R12M1`53bTLIUTXNlmln_eM|BhE zwJ^7FmQzTgEeLnScyh_Z%fLXXM2_iJ5aGvYc-0PNoDC5`e5^%JS!Lq>-QbfVYNQiq zMv#UOL3*)L%l8>WR3?$EvVam$CkKLR4*^hp!)k}hU(lFYk1^>@L zJnA;urb+Lv17UU-u+QM9Ww8Qqi#!8DJ)imcpmLeq`khS#v>b84&^1PcG%tZiR0aT> z`sW#8DEd;;?Bv-lSRVe#MsH4-V4S8oJB;)=?qg``3!K&S_7U9#%*tzPte48ar-tP! zlPBb|L`f3Cq!@eBD)gQ2`)q{{wE9G-KGfoKPK}@eC7OB4Sd(Ns6Em2rb$>W-#g-jW zVFGH>PGMs2dddCTrPlecWRL~6Gvl^GNrUZ2M?Vwk`x1djju-xfl)LRqZI>HCw|9L_ z36Z{nWRbf;WE?N%BB+Zy7q|R8mwL7p3mi^gBELKv62ttwcwtDFM!`e&d_&Sl12HmK zZud6NVf^K0b@h1wsJ6aHV=T){PwZOKdbWWOs1$BtTk$GVqvX*na5b;nL%{id|B3CL z5q@WlMYfmwK&_MlTD|k@Al}O_|D)Awy&OaD<^&ilX zZnJ;;D%&zB{N61v^|&Y$^L{~qOPjwj{sBF^rAS);c3^@~nkqgZef29eLvoenftohU zDvMiKq6R=__HV0A*VUTg&WJ`ox0m8c(^+D4lGc^Z13q3)*7L+VJ>P5|v&78*UoF7Q z?>m{(+1J-}{hY<1$cV-D9rZND;4Sut`Xy$x75;&b;<$bngT{o@$cQoTA%xmt09t>f zDhfAT(9$_NP_v)`AHRwsiD?lYyQ8-t^i2+alIIe_Nx-N}GZK@!1E_dQ#-*qH)LTD$ zV^VIllyv+s_D*$4(N5wmgBH%84HMp%LzWFJ(&A;}=rat>2GQgn*m8kzya| zCHb#wO+#_b&tDUZUepM7?#sk4s&usu7ARx4Jc@IsvUA5Ox1}~ua}KGw>bD1?(e5lX zOGA4^)%Q5>7qct-{2lTe4*u#3xLrWsc%IIKwLi408e%9Aymt@*a=cVIIzTu@amQlV zo9W7+&b>tWE058EzT05(AE^&hIp9z&w9-YQ{eKj{ z{(Hg1aP0|I{BctoSGy?JVOf-q71$WyHP|qxKwk#Eo7?L+sI{fRBz*ybTazOTr~e96 zH$^#fS_^`=5=3Z6B0DNu^BAv4O(?_5O}F15+jb*Z{4HP~upVP0gZs^8uju}3)Cws2 z9cO7iesYg}BtFWR!1x}JoyKdJ0@$97A5Jd`0KTM-TIpl^*?sSKv&&G|)sq-s^?9R+ z_#0s(?r&#WZs<;L^mc^%GiN)-)bMDbdZ9B-z#R*y{Q(3G3$v97Z-U-iry-6BR^J2b zQVE^(ppyalFaVhVzaMHyU8>B^0lupq-4h|yKUhAZau31J1QD8qLGG~B=SSNBR+1Xu zLS1UHvmS4Bb2i~VJ;pbJcK4q09PG2J=q|~33n5kAXEC@`97vgWI+!G{BRIxn!VzRn zD*JcpGAp1TsbyP^Z|O7mkAm2YKxfk5HVAD#w|b>`^(pXSR{PmWYd@ZW4x#rZ6i?_^ zo^ns%pyYIy2PaPfZJt@0rq5slZJU#jFV*|Bn!K{%n2@=^f5*2-(1<=a1MwCU)$Ey= zLPiy3j?Sz|!pXsRHgB&@DgXCp2GXKiyeR`dcTTG3m1BcxL%Nmd@M9jGND0}w1!{gh zXkcj$B1skZxuq(#ExXz@*~|Amy%NZ|U_306Lu-X3O9>`KPdX3+bPxf&5`?Vfo^CWA zBzrmLwe$0Fot!!C2_kmy_GNx+ziA=ncLZC!$8`enSJ;=s38IrJ0)Bm zxv`Zz>ItwtkUvAyky%PKFf$kJ2Cb7z;Jd>`Cv+Tgs;ZZmS3VekyEh%P9+w0L=bJ;J zNi9GkuMs+fjkyWeNM64CgGCVFM zXMy@G@7Rz^4kq--Y*FJ6E&?AsKp@Pb(pf?8V7-s^4Phphu+4T%+|m<4k2QsJ;TKti zbKaw{c|yZCvm!luc4S_0@1)PK)P?-xiiwN$i?0XQW+yG7e8s^A(whBwX2nVj$~}0g z{v53a3KJg(e%OY`yd3g{aM(QL&s*FoTX*x`U!D*A5wsMfeU)9R$kuL&kCOJ6dVxRA zZ{S60AMi+$>g|i^h_^+GF=f>^1VTEL)${5#!3>rgub2sp!;5A1gg!2v1c{ffHAimx zDJpFoPb3CR80gdW<*|U9UX&RSK~z${zOLouw=JWn9`G}FA1G`DSA!*?IF_?pwAy1p zjxfyji1$a~7mVcw2=x+qh#nt!8Fq36d%gU_g8(kfVG#$`h5V}em1eo9dZ&$Uu_CNn zfQbpGo}7lgH}pdL)-L)j44l9y6AYzSQJN% zmZuxF{4HKawa3WfB z9**#6ThctOGB^OshGrAMB-=#ThKG19b3F1yR>Tma<@nk;oDdrKCIWyn^7U~T@^nks zOy#Kq_8}R0CK;KouVF^uFy{Lk8WedRRA~Y``|XUsXYY*Mi4h5&8~@Z>h7dY z+DK=6Rg&ZmeNhdAS4xYT#fNXOKS4@^$BvKUoh&sNU71+14r(BET@7P6) z`XBLKhRq@aFNmn-ujmxMG*jjPD&lkNDNlbnkI3_?xy(lJp3Zb!nD|Zbj7-pn<+(Gc z;#vT{hzjh)DRj&a`SnPIRIk~1`PC?Va9(`}%kk08=>1u5S6r;>>9_u_s7Xdohu$3{LFv+5mzq-l)!4^fT>WgwRq=d~ZTm

uCa*26FF~|Zlkjl#xEm_dJ*dY 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%0DbBoo1p9gWu$#S;P0wxN<0sa#78*oPc*s6wVQ$ zoC*%$u-TgfK3>?Hy*X+zam?z&DPN0WYuIH)fLwtJQ+VYQ^g7r^0Np;ujFWQTyZk@Q%l( zJXq2}C}qNjReA8MON94)>pq@(NCPa@MRdbUE;CDGB~W&M!u-ZAye%>CiB`PiJEs zgIqUME8DEff;x05ZHr?pQj zR-#-$7d{=U>JWfJWw*=4>q{)5v%;(j+-%wi%Nr&KU z89DI1mwEBKvzYOnSv>dcnLPXL7kT#EGkE4ZGkE5<7kK9O89eucnLK~bOlCebhuJ@# z%d7wV25&v_4)4FXgq5#<%%-KA*|TXcrw%*f>EcC5Uu+xoz%@^?BaskhSK5CP1*^oOiFomSxRH}+<`18O2nd_h5(12=GAZi+% zrr=2jC;>Q8q9#E#!Dofz%Zy6Nc6-wFe zP|9|NQMNlmK~%Y2qy|)y_e4>#H=0U`eKAz+kEP~79JL4HsXdrL-JwM44<}J?pG@PC z6dLR$l2oogoJ`Gu1Zoc?P_ZY5l3kIM?1~_7TM*fs{kin1m88|4B!1#f%nBDGmYyd3 z11EysJ3+uZM+tb_9^d%~vA(e%^Sr%yy}ApJxw~+Cc?WJUe}?w8D>|G!c4?aIaVUc_xSlepcFlpTSj>eN%t^ zj{jypfo02<-M(|@-rwxow{Pj;!-riwJUz=VCd87Qn@LBiPc*TTsE+hcQ04pc_ z%p9|rIBfRfpvi+n-X0wEcIU8{2S>a;IcE0eq}7C@zXd0ME2sR->iC4&i(@7aj(WLa z?{R@cZq6$9UpT`)m(%QVcEs+S1G~?hWRKGcb~_$puhVh%IUQra<1y?{pWx`3lQ^7p z*?oiVLUD;Njwe$-@Jy$wZL9KOsRuM23eG9T`PT zOboGcaVlbBMtNv%r-CE4@@WHHtx%1O=$3V`@^n;m4XXw`;1ERtmK7 zU+KnnQL1DF#guYofRv5l-PYu;t&I*r&D<_snudyH0M zuidYyR033Ubx0CWQgQ#AylQ)&n(8H(mH+@C07*naRGFpkO?dADUb}lfbMJbCm+zd% zOSjKu#&_rN!nbGf?BBh}Gv9oHKm7OS`TaMa<@euu4)HWSbLaCs|MxHQ(t~q&`LS1d z{eQg4yT4z=l9|i+QhXFRDPS65czBfIkr760L#`QqCYAMa-KbWo6ZNU8 zsFo=2SX}pdabdRy&b!@k-QiC3W>=E-TX3`UB+xkw(=lH)j>LVxH+jj03gSeq5_nQE z1y9$QyndZ4*RQKQdE*+BH?DK#+EoQmN~szhV{CYo(f?;|+(>7?f~TQ|4hE`P=r3!e z=W-q0xixfUSJIVHNoRTmooN+xrOR(W{dr9cca5zOp)6rB~j-}IfER#-$EV@qR(Ce5>pHm+Fr}OD|%BRmMpI*m&I!sa>d)hzkdDi%M! ziVq(DNWs*Se_6$czy5@kPpnnVH1!Ixu@A5NhGIEDsrDm)N}$RHdd0yz=l%ZWe>NBw*_V)5j#$&JI_7dYhM%s~$U zt+O0rA%^ia>>ojBQL)|{j$!HYuP!<(~*{*PD*MjiAhPs$H#N=VhmAHQA9>Y5*8j# zNJt2QK|uZWWn zfK%9S#& zi>ZBjTDvL@{>Uf?im_cE(O_E|RGT~7s#uzGH8uarR=t|?Ug=&dbv*68nu01@70U*! zq(e|E3+jrMDhq0=l>t+txrNfi}lmS-8TD$K}b)Ve(+5;F8TcYnW-WwTeX zcENhKt@w-sn-Af5*a`PD9{8L6iHe9OH8qXAf_y5fD`{+Pq^rM+!O=lRC&!q)G0C+r zq_lROYd5YdSP}oyq!_@ZWTwh&8Vo75X$qQj^=U->O&UB2Kp7CFyiPh$iCU#XOyer_ zQk{BkQJb_9o~Te#;u{$mqqnP{wx$m1DjKP%XrQL9g_gQDwV`=mPd~jq1594O#uxwd zPnrTHO4*GY3ZN8J$@`b*9Uf(@e~6K;eufO?sk()}(t5fJYw60ZqBBdNsf>=4VmgwF z=}0c3Be|H4loC2q%QUFUtfcEwHQm{@bm!F5BOoQ6hIs;04XX37KfjTI0u8JN3!51% zY+Tl>t=S*r{j2riuU8_v>Z#L;b+^}_X2FHWyI zkNu*P*uQt2eQzGZ?$v#KHhUMFU)aw2r#G?ssr9V*%^H^e>SF|&7XR`i7C-)xS}*<8 zCoKETYF7Mq4J)5mqtq%=lqzte!;7Y*CShu!mU}XT7c(4SpzBal4Z7|DU{kvSaaN*sn_wRpW9XoXJe(Tt*7c=}BBjOXfmK0vD3wa8HcG zH8BqN>K4rNrZxo=k9N8d2F9#OG#{mY+*@K>-EDMU<46QC?X=Rdu!6K)J52PW@6ba!qwD zRh5;LS5#15UQStgnKH%}78a71mq$)cjsmZYj0_C8N={BDF)>jAR$N@HQnR9?qlt)! zAS^6QgRH`^TTYhU^4mO>E(sV#|QgENBGeXelk@ed{{3Lih4CQX!N#6)D-uJ zZkIu$k0`);@}XxqxZ)h!-w*{$?;`xg^d`@$gHVU5o0Tgawp90^bP(#wl_~}5YaOlx zybRBk%Hp*Wpwdn424ETGLS4x?xW4k_*L6rsd(%?-4Mr}Y#)GXN+M;j!1OV)i?T9@Fv+872MwnWL&It2~YYJpO( zrc^B5Yc&m424v|Y84NF$&1i-xwaQSf6qspHCgsE_7!&nL%6<2|smgV;@0`cX+g|4R zZ_VQAZ_eO%|4joY8FcyN-#x=q-+hK>?wY}jhi3E2&*!n=x9_s_rDd#Hu#O!c?c(5; zL!7ohi^o|{0?dJ2jEEsEC7t|&d^L8Uv89oYo(={^1{l3Es-WrmAFp%cPdE7dPoMMo zA3xX1b=R*W8-!0@(cnp7M}d%(=@dAPGCCqL!sv)}&>2AVpJf4~v1wnE0Mqz5<6jvQ zNV!hCW~^^MmU5h!!*BfYbN=-2f97BLH~s_df08Bs4fxZ)|0|z=@wxi9i0^5ndw`+V z9tIma=&KTVYM`f}n(mxRIy1}YNGqW|xrp|p%d{mH(wb06dwe17372V4Dx%$hskBl$ zGs@}AsHFQ+6w)K5PdwIp zsKy{CGe!j(tr7wWeTD`Vfk-XYY_F@HGCwh)K|rmYgzTX zb$tBP2A2NQN6O>5{E3e_w)P}3{;||n*D*9Uq}0^D{ysW7Iu%?AFxdi@23Cge%2vhF zR4v2gZf9rb@mK%l{q-CC>-+>3zP9kbwRZd7-*x_imwk|b>6zrjQTNOFc$F99U0#G| zaUt%P^KdK7!{c%ua?Rs%KJG=b&cnSZSFPO&b8suj!8Jb{m;5Zw=Uu`%H)vJ+Dc1H3r$T;G&VHSP+w17Z7nr5HB?tuQ(0L_g@UUxWu7f9Ev2NS zgrcG%1hNVW3dqaLCpRaDOIcZDWM-0;A;lI*nUnw<9z-kJvY!xg`y)s5IOsQHosaT>${b$~*n@2TFbq(sJL8Vd| zWx`wF%GPfsFr`gpmn_rXwa!6J$&wPGKJQAwl&z^Z|-#23$?;GpLmZr~Frj za-|OyRV6_i@6{X1bEUzRwgrv>So+K>!+WIw>dR22N`r>FrQiGJgYWX@L+@%cumqm& zeT!G`p3loac%7H-cvY3_p8M8J{_xEiJoU}zc=GR_<*DyH%OCE1p6Bj+k(obynOFbE zeBS=ULOy(D1?v`WVAq=69NBpkms74-Jgr2AMv<1BrvASx|Nm}kX`-{IQyIdg1TubY zLIbBSt}C@kmFd3tTzQYKO9||nX1-QNZKVj^3Qqz}20-1cG)<{WQwoy+)woixZiXcr zAQE*;`I-c%bc478s9WL5050tw&CGt4tJkk_?ThQ&`12Qh@o#_Ri+}$!fBg49as5wU zaP`J@<$D_F8lbbLji!P+Diew+49q0cErI&vBD!-cX-_YuEv1;Y#LKkC7tk7)Pg`68 zZL#^&YXPamLIqdtDMhrWmC%u1N>_Rrof&0xWtP*OSwYvOO1iVE>CUQEDpijv`3Y2M zB|oj~r$JS}09AoRGeZifY?Z1uMv6P8!K$Q_(b6u)RCF^@-pfRFKW%|UlJBGSbs&MV{c#lTjV8-3g4CU%#BB>C zVv8Rko2~e7G-F=xjrTfFJlA>RzSbRAi8XGxtGgDSCVbdYl_vXC)cs+ ziS>N&ixq01@w%5b;$iPaL1qD+ogE6ShDV3!?d_$rvrCUoIy<$ng{*1yO3H;=iBMCo zw6#1&l?d(ZF8p0|{whC#4?g(dfi*jJFWKYi8F(T*tl8yK>ZE5;9;Wgl%;lHy zDJj6GI3J&)Jj_M;Sc(f&$l6?#r_P%$=OW=PQIwCVI3IIKA^v4W1Xq+0Rb4?`T{Rg^ z_2jlRQ`*r^byp{iy}h*e_t8BtK;OV11A{{h4h}ISxqpCx{(cqxeSP%x^wQhiO?P(} zU7ejO)E|iI^w8j{xw)BU0jx%eMj9F#)Etw#`Z{XsG}x-Ds+@u?0WRrO64;V~f(o`S z7gAVsnZlAH@{0;oWM*9=B_&09O%meciHVIxl&r{zNWwzH2nq^PDweOWFJ`mm!8-4F zjy;=p^Wz`{8!qT1}PIR z)ysv3A4?m{px{ZaiTA+9870D-;7a#i-2_-WFSYxlgx+`pgCoFB|%)*W-zl<;T2 zJ5!m$pZ@L(JblLuo|Dl7kIdnfU(Dmp-)d&?kKbI)<`vu6zx5!F_NVc>U?SK*l*G71 zE@jH-fg-A^s;FNI5oTJCQ#DUr*Zw9%3rB486b2^RwD~0RJl;z$8?C_$v8IFS5#-6lo!P$ ze(m$?D6{*Yzu@zK{iA}ZYoFgx_lyh-)7R2NYgrSunH7{ofYZ!;0R z&K=(s&RCY5!Do>p-tRf!_Qp}dH+s+f^3lI&gKr0fVGcDn{p!JDl3ZScXe!5bd|BBd^g!sLO63SDtpr-Rd49i9Y=)_dWz z-W!t&ZSAwc3l;0V@sa10Y=j)&6ee|S-r$A#QxkrhEjTWAWaV#Hv+P$NPXU&ImVzn+ ztOT-D2w-XJRZp(v<0sbf!7rBc{y#2d=X-mJFh!~H3jG8942=viFf>4SPY>N)-E?&c zTy?7Nj_&U6DbNztO1?vkur;--AM(oZt^tReq6w{igmpJ^>l0aD4Ca z2kdt3TN)pe7+O|Q-P_RJ{drAaFE#yrlyrAc*xo{3OA~1gwWQV85noeDOm#Vt6{Q4~ z7ZX-dN@P_zF*TJW)K`<%SWk9KGnd=jDDUp1p|6*=!2x=PhZ&Uru#b%?nSWwzoGT*f zk5A``@iF8-;1WjZVRS_1&W3NqqTiLrzeZ4Sflq&G3a z(WIxPlNg&oa#Au$;>$`*ATBYUi*YeTL_{jc@(=LG*WV9opdV+BIk9ri2mJ7MndEM> z(X$#fYBLK4^k`B6n5E2uT$j!}FCF+L82E^mh)zd|9f1mm?7#to{V+cmZMj4a834M5_mi1$! zTxJ79hL`DP|B^Q7QqD=qZhC%`QMS{7=*y)!U2T%r7NAmjLhFjt!AO)R1xZGp0wy`H zLz9dm5MVOm>ZB^oNoSxaP1i(4`=i7SrAW#6g0Yb?hPwLcs%@vKpoYrCA`1L7$UGlQ zynQgyJ1q*H{8u_-{opjFg{Sa-*8$Vp4tT$P5|hL`C-HgL0iX9IPT{lA5z8VcEQ=h~ zeW^!+=uFkhep2RBzNu8rH>JE&QtmULD!rVp3{9!(&a9+6Q-`Xo8kACHqgIJx)vx=j zj1r(IRa0t}QmhPLm4MZ>S~XVO$(R9E0#l{EOqTa@wW6Qvm4jTb9^yvLFjuRGnXDaQ zpsa^-k4$p*gpsi)jO3lc#BB>8apbyU>xqx#bzYc_Snq{-y%!dV4HDj1)_ZGN*2X!to<48g;Ei>I7b>rpwHCggny^Z2 z@Wywean2jRjVAmzn>qR330D4Q4afjodT{wQMv{cbjjei zzP?_1dIY$7z7n{k_*JW=tAs5lJ|& zI?BEo>pAuQe(auK$GLSU@U%NegejOy*;%BerV<$x&bgfqIBq(E*J)QAcOJ*l?l`A* zAH{yle)fI5gT+rT(B@!$cN(xBzD+iJmJtnl7#)Oav*$;+=iB%3+Xw!@fn{ge{>Bk) zFT#J+x5_a(2!Fm*+x|urDx*ZGN`up?)y?YFwEs%;TWJGD4S$sZTiUTcra`G#8gz-# zeOj?HyjIg$DOER3YqwFZY}BfoJyz4eB|a-{182PyXp{(T;L7L{RGoxINl@j5y!D6{ z3aB2I&70p<-GB3?M5mOdcbKPppI*EFE#}@kpO^1`ojHF$4;g?t^9Qf+;$1KE;@z{E zaqk>ndU!4`|Kv61Nr~?F3t2qtLq2(XEt{8bWB>MpI2}EWx4VhZ;84V;mtUAqRdp53 zt<6eh>Kp81cyyT2aUGTnSh0mB8%0QfN-Mc(9wsTv8OCoTeP^G|1 zhbvL5F4fYLEpdxlB}VnUMrBqX$ZOPmRSK+H7%C8;YGdSbJEKJ%j23C?)OblZ6Q$i; zDeK`%Suc~KPL=mEUfQF|f&)eEbmTSBkX=VfS{d1ig~Uf^5*nI>#V-msb0}xM0&sM- z;^1Pz>70err!AauvfzBu!ujJCE*vrAcEAVs{XTfv`QW|7g!gAY_-r*{-fY6MNuWoE zp!Hr@*L&f+-V48VUihx_#&@l^mZhUl4?iPsFyXhso12g2oF1Z1ed?{zZ#uQbS-f~zOis`D$vll9A0eDF`pS@ZmQT=u$Bl3${L zO2DeGw~t=+JunSc0#x!tT*81W`7tiv6WVvhboZeAI2V92exw^tQD2DLnD*d82$Wn+Q&z!9_S;#tAosrR$^Nk z2y3jxQd5C@RVmIDMVu}#;8bY=Cra{EoGi)bRB1j=r3IWSlWX}nmKLbvbLE$DsVK&y zssw9IIexVjL^ReA(^OANYZEygZRB^hQ_<5+OI`iO?FFt^|2zq+X`sC5fYsaA%;-SA!+ zLq%;yGAMJq4p-V*A1Z1ws8%psrjgGrKXK zL9!|rO4(2^9X`59>l_q#lC5d(f16kDeUrKO%;#mM!Oq|JQHx#;@Mu!vIsN)G}}O4*Ttms6^a<~{*;=1xX4NiL5 zPRf2Za5n9C(kF>4m@~Xix`)YDWxAsOz>%!Ol5PI7>Ljov{wFQ2UA@ZH$w?Jre3!?{ z#PXs3A$nT6X(_6wIG zy>SfFn1r8Lp(Usp!Yfe2i8C4Xg6q6m7OG0EiVZjMleIs!eYya5%nWm)F}g^WUWQdRHbA3 z+_Z`%u%*G&m%Ug5QVOa%I@ByISsSn=@Ffb?*JB#~E2-wc__Y@n+j*dTHchLUb zz30xmn^RIdQ#;y8AM7KlvjuZqB^RnnI9E}OQ~701m0iZ6w2)I}5|?o*E8=WLG0v66 zI9HT#zM>SD$`S=n=PTv7nDgqqcHOzW7>RS`MJmpg7jwGovI~e;8$BkXoCP*9SO}1WVSbx)6qgvSBC~=y*)G!_N%gE_s|f10%fBk zQ@`@nJR1S7u`#ZUj&Vi7*9hYyql}M?&{SB>#lyY?e0rWRJ1-K>gpd`OOqx#&Ngh!o zc}5ZM7EY>vJVI&M5C8xm07*naRC!6+hwV7+gc+;0Ia1FojafzxW0ac)YrvMCeV&byjgD=(I= zS{aaKbPei&H9bsJSE(LbthTu^{8p+%&<3jH_?@XTp$=s~UaXC35YxMq10P+;{0HAv z&@@jxO)|Os{3(B;In z32o4&cz@K`fooio0h0REZ3Qs;*Z~cE^iuYhz{nPoZeDAUG&-$P*(y(}M1G5h=_>)s zxaVfINv49U$>3iBOSa%7LpueCZF1u`FCEwF0-j_a9#fW`p5-QpX8p&iAm(g z%-HZ4!+k>x_DI=(g!YjUng<4H=pUrIZ-C0~ev0eb$SwAt^-#LZl9S1CLols$Z z>jY*2Fm-$q%Yu`b-*LeD?kTMAI^w&?5x+%F_`QD`zr`9%1$=N;d(I`2&*GY7MM1Dwy_G)zXtyrxdH+oO)II(>nf|7%psPq)N5T&eNasUIFT!3toXpxOxYvkjELJoeRX(q+N6MHtq|=P1dF$mEF99a5DwsCdU#! zLAaTNakT{FW|17C)~?nN+FZV6H0VG72>I|xs&V7y%e@p28q$2k!5=>U9A z`>TogmSg@{kNDwtz*j}U9xH*ntOV?|612@i&{hkskEs6}akU&xar|qRif6e)n&L=$@A&g)N7Qe*DxM?L7+{5O~GD~0=_e% znpFto=}}(Dnexk=EiY1F=U!EUXH_ZI+6w&ZDhX+*Cc3GP*rs|?TbsDl)=XYUoAQu} z53H`QhvtDk+6M>e=;@=QtCz9sSGn;YG6QFlq22)oI(z78YNxZdh33*anoDaL8W>R1 zr3VN5>F(+zD>Q|pGq-Z|rELTq^5&vjDDjpkVtgV9KOcbWCMR}2y9VdYCrM6CAu%nP z(C{$)gZw#h;v_%5>nA+&ZEet~n&Lh+$^BtfCVc37k7^x+w@Vk{qpC#soBMvp{twTv zWBw7AJZ>mhh6hU<#W3ZyGDb1ns$AWA{L`D&EL9Fv5M^`@YGWD<@0FU)E*m-P+u%%t zm0lYB@nUV;8(SZiz?d8xD%X!cV8Nq{c=N&cc>TV&nS1w}nh{+5Oy8f&3wO@p`8#Lx z+?_8m^Zr+u`{Vh{`O!S){A8XQJ@CTAvzYOtS-kV?LOz)NA*&XwX3wU5I378T#{~~U zLPAMNOQERrvg)Kuh)N_bG=ZG-JPI-j2{;o(LSP~lg;i7))X-Mf%GF7&ge5Q`0HQof z0!#ld!?^!eWl7s&MfVfxfFxz_X@$w~H3=YT>X&ryO~^JYwhGgi)|#(LgD6p*ZdRU* zlAQpQ{Ch-!lCcT`NviaJ7=!; zjpm9*>WXTp&aI>(qlD7bB8ubkDT>J@zqFRDu5Pm1J5}VicahiLMPXMjMg9Ghjto;V zK1Su0ajLG2Q!_C^_1HMo!=uy;jZ)n`Ky^nyl}+80RkTu8)=W`$H3cbU}`qoJ-Z=TR% z{t3+Uk7IfBB-RBI4*2RoCa{*c+mD{CD*E#3=*_C7FQ-XE~YTPfXs_oBt@hV8Js|n|3%D}Fg#2lxOn<=&cly09=@D$ zw{phaR~@@}2H@%ypy0>d6odj8ftab7KId)7%W0%09u!v8PW6o+dr}gy1E| zddS+_9D79(Ve$*Z+g}SWmBaD& zmk7h;8?M5~8m>MEi!~fypK$zqA_(+}B-ksG5U&VAT_OlM8%FS{V1f?$WrHU! z@0?`a6YE(0!UmkSoh3a!11Yy(xjv!1RnsLtO|7zpDx(x=C|bs`7~Kuf>g}C|G6S%r zyU-{N8bBq-9kK_Zu4u`2Iih+=7vavGJDvXGU+`bQ;9vd|Sh!}*4?aC{;*G72j!uWe zLkiCo=lzGNvk`Mw6J9OVxYw1b@Te=tb1KTz+Dku{JiRW{*VFf?YxVMY?V7s3R(p(> z?K$;)a*zJlTFGU2)|BB@TZWgOwc~Q_oIH~hS3yWaC1F*igp^z+vbd1g zlFP&u7m`t3L3Ujg#Vz%ewKY**Ur%*oBX!M9w5UI@cADzs3#Wq0tYXU23n@v;r8p^< zqLf^U)AK3KxlCnQIc24#g&#%XSY! zZ4TDMw?E25cl?NZzjHsoy7wveE18xlcl`(*izp8@lqB%`aW;m z|1PgTpv{w-bNB1Kbl0oQzJDIi-!+@x-}XFz`2Gx@yLTopKKe2*|7;#_J^3z+UR=V8 zd8^p6Y&-imO9!13rw%!Bbk_+^9dP34j^pfDWrxEaM||D=$j-{9w!T(vuQD*wuT-Z$ z|Hq&B038| zPl1wNdQ+nY3@@M#NZPq+SkjLFb1+iM(JkJko7JRgFOzY8a#Flan#!cXk^qw);%_nx z<9c~cK=In-BvP`wE>e^(z}EuFN~woqMGPg!9Vg;}NKq+cd8 zA(yn+EK(vfND5CUF*J>&kTg<4(nt+SBO^3}OW~PhM`n>5eu@0}d~zGx$nEJNucMp1 zPA&2~x+&<=_aF!(-HrjZ;51LBqr( zjaRPHbmbb&SFUO?eud`ID>M&})6g?aL-!E%t$ozgc2Zr{Mnz!*Wmz?pq*hQ6SxA0Z z9@&;OGTf5LaE>MMNEitRgNfPUOVlQBA_UAX1}W8w6v0igACX4TM~ zSw($XITgu8lq3|88=FmfR0i>3DMSUw6B2L{U*8CPd_t6};i>DvwJ+u(05+%vq z6sSW_um&pvI6fhmbkLEt0vfXhJ|=Sr0ybLMuH{_V)HNTAc8`xG3?FkSa;!qFjdNkh zbpbuwuvo(|OX%kXek_)7RF<_K)~R&_R!cZ?Y=qozwMMAV!0M}IU;jw_0;2E_jK)7C zhQP2`f+FGw3XdZwEEfNuDCAym&tTln_;U7$Cl0&Mb9mz^_N_R^_W65Q@zh$DJidah z^S0x2(#+-DA~m0FY;ug={$9E|yXX?tNhwcSSJu{76UZmPkju^O{PLlr&^mH5;fQ8BePsdE+Ty1Bu~m6#hU zG1nXSRcXg^?kmF5pk24fwMOk8SzGG$s4K^;))iRPb5^Khd46-99`)Ka^|*#gtPNFI z8>_K4RpZ-Si?z81KNYq3Hdd?WHrJG4swl>@v;djEbv`G9bD60)CMR$r{vt=B!#Nxg z%>K|o_67N|C%}rGuNgb554){q_WGIG?{DEypfC18{u~bp#4$V+r-(2vT#UjqAr`+& zsf6ZVA|me+v4y!L6y}m%a+&P%5(=uyD6OmJa(O95#U)%WDpG1n)}>1X`1$kt?0Nj` zp`Y=B8KP+R>PnWUqC(C&EM@xA7(Z$Sv z;5}Zw=PhRa;5A;j{bio{-b{Xf+YEkp`|~_?=d(O}|BKB2`K!G6*c_gI=mlPR{B_=V zY5}u;F_%R%m#}BUUYt+45EdFve0&0#vgvn5CUKDoBt#{V7MD(Tat_tyHKfO6Vmakc zynhn;DFvj3XVTfyrIZ+f3n^#)@n8SMzyAB56(lv)wosZ=PJ~A^2?0q&d&l5@z?*`! z%k=m3)7RaHK#Lk-aCK5WMqo-cP)sRH(jjN4Nz!DYLz9ueq$X(!lCiyt0Z0FzvI42E z0IaJ5Q36U@2sGWec9qYsT~l#G6e$5I8TzSj9y~rd$>^0U42cJ7e4L@lD>OBLIh_(+R}4Dx&*eg5a3eK)zzaxS63gUU44{w z^{XiF8la+kfU2HBs(S{h=^du7f0+7#Q5uHEXdE7=Y4i#$6O*(|T&3;GRobs!r$b`$ zI-OUp(J?+r$LJ&-BNMdsjndXTLQC5K&5b=Y)pk->)J$DrBUKsIlw2&LJidh5OXU>C zWN|4norKUNE(XOB>>G`rH3G9a1W)fEJiG&O^9sP#I{-JYK-|3owX&HhSSdvsJZXxL zf*&1#449E@Q6W$x>s#Q)02w3OK#c}B5ejUKwLqS)4mwk7Io89^H&Q{6WIx{sw0!GY zjwA82>e(+6f8Sdp3V(kMo&o|d5*U1upx_vSLt_aEiz757mXP3BLi{fhV2Z$UAs8?)j93uWN>`)wE4ZG@Ec1h}LTN&_zqv@|7bdR&8H za5oeyBOCrJIhM!BbF5mmYVTk4%l_*Z`@i-H{I_p>;~W2{_{M@ID}Qq)JH0z>q?fRv zZbJGx2<>hqtgDrJ5!BYGBCxfAfR+XVn(GN@ zs>5GJEq+Z}_%{j6)Z*KqWjXKLR5Nv~uE}*dCt0l}*WqhCR@TNfm22>As#C8a&#zv; zrJjJ6dIDP-2yAXp@58U5T9pLNm8E!>6yhnvOS95($w=i~ay)0^V{p6}fkR{%C&NNG z5fa4l-~f&ZCvwd^zNA<&eLH zgMJnc_-Xl|ubG2ZGY5Sw9P+bp*w=!+p9Ong+0MtpF+VHEtY%L7S~zKJ3uN}@l$QsG zPCN3+md(t4YXQId&67Ox;E%ZH_ItVKJNI$lckkzc?>)$a(m{Cp!#sTFqdH(c$=)Sj z1z0zi2eokwH+!y>x~2QH1e)F#a8h|Wi+;LX0n|G`TEhH?7xCHyZ}aj!Z}8#|Ug4SV zzr^qFe4gL^;5mMO&$B%9$P8Zk$Cr8I4+~g4cPXDNTEo`W+c~)F5W6(lymI)6?0bJU%0X!*n!t5bhR5tT|pO zPHy|W@N){HIIEPVnkI&ahE+$a_<}x{4S+wtuF7b&rFCRPXOWwjN3e4kPSUJkjixIj>YD z{V_HQlTxDuq~!57p+HfGBmt){u3hI(H*WB!>yoeY#r5k5NJ)uL;AwbboW8L!x<Azr(K0kn z+vpWK#;(vgah0ws64&XOyiU*68}v@zpiht1jsXhdv&jre&%E$ zB+|oDNeN3PIW(F0kVF+RLGeTd#Ss}8OQ?U00*xTQX#A~F3RVPoMDdZZNVY^^u^8tf zZvr9%f(*zB@QWnCFA6P36W}WmrDeZp0{o&0R9Wtk<0t|p{3UDG0{t%PYa<)yqg6RG z$UmB(fQtkL#;6DhiqU{6B$m*SIKqPC2n&iO%s-YeYcxS#5%{}=U~=%qZNC?1wm5Ta zl>_@09p>9n-AFgP;E(8wS?y*)~?66lc-)k;9>R=}E8sx)}gpsJr~sFL-7IyTN}YL_ux2yyPb%hb|QNv zI*97+Bw9rW(LEhR_qG$=-A+_@8bWFQws{mdN?U7|z8+ zaV9z(r-%?7!-6>#7KlS=04GBNa8TjT$q;`|1{=o#ID`grN+KkPQ=vgPhDi=q*-6&M zv7Eapf^ZBC!pSD&Ipmz9JYTRpXP|nmlR^HR4D{o8fG@}VeK{h~W%c2Z#l%4$PxgCx zu*cn%-4~qM>v|r$^XJ&^c#?Go_VNCPwY>D!e17@cCwSzcA9MfrAK-!8A4ayydFakZ zRf+Il?sboSCx-%3Yw zr!t7kbL1oxP+3q-L240E9x;?=m#Kl70%JEm|9lFp1dQahRoP949}S2!=#gt*4*fAY z6n*)+@fcB&G{d;uqYUAC=}r_Tt!$?$PXbbZymp<>uZjYtZE`#`F;3U$2u(wSRP^_f zr+4#aw6~Gk-bPw`D`}ED+PT!(p(3ZNll-nO3c9-~>gl1lx0jOMUdsFWsOQWm&RKTUJ&Tfk*;F3|&bEE_S#i&?4X>*qVrC7`P^5Sxk}Q zS-6uz1Yf?SkUyD+Kb1!?J%j1=EFv?Da8HHcXfwjztb?P?fbKSIMYDgpk|k>qgH|T+AcKLbfT%c z6OC08pjEY__EOs#{8U%Ap}MjaG*Z4xR&7-qYOC5&CyC~ydRf(l^9}(?H4-q@b)vDp z6HRqpXsqoNs_H;vMLQbGT2Xth5mm=)QSs(Q6unY{<4>K$p`C}Z=bn9d;YYjiLF~u<3Vh_?E!4LZ6~);*z~3C*nHa#Y`J|WiyDa1b~oIy{nqWg71z$c--XkA z&cbQ!;oy2K8Am)B=O&<`wQXz&uBfGgfGdIo;Kg0r!)@$2W$pMUcI6Ds)NkNnZTfkJ@# zUGoq9^5KWS|5$57{sog3FB(+XZPMTsvktFX^?2Q8#9q4z`yFN+bXxINuMLM?4jk!s z@+!ZR!xUa05ILpE5tO;daKSr)iv(hUDbxf#sGIhoAtc41{h0qrAquK94-P9PW$A)pSzXun3>?pPxQDo5KjH(N#yV`J~ ztqI3l>T$HG4o4blaipOd@6=c02&thOM;mHzq@e~!8*6d2iN+cnZK}nw##$V2uEnwD zS{!d$*D<;#9gBJ0`aOJq9lwrWL$57({fWjp9H-|NJWrnUvl?n~yrBliShYA-UyWn+ zH8@&VEmT{Dqjgm{Qd5byYbtTL>JkoBUc_6MF5qBA84i?{U~h2|UORINFC9CA$M(OD z`yPE5|M0^f;+EUKjE{Zz6ZrU_d=h{0pFV;w|Jh&R)s08-{ErV{DO@EpMM3nefTT5c(X^A%O zokNeVhf8oal>_xB8d0{d0>&0IYK}MH+$+VH8g|3)4k8wgb183OVUaUHw518bOe&Fr zciab;sUM0;HD{w-#y*gvm5e7jU{0Vyd&Dhs09ypJDWKh>>qX<47S^Rh)o3g0#N^Nv za=951+FqiKh8NdX#t9f&kYGoY(Z~rRQAw?El;?b&Lhm=-L!~-8$FRixoT#VMx~OLy z>GIMNYndFg#YF}-D%mAw@(AXryp=$IJPK<#2u;w7R^JqAr$%vca+vdnMYNzqS{%aT zXdlju((2j)oF|P9qHJQASN~p|96_~v9JQVaG<&De?4Lqczz6ko0J=~B)>s6#SOh(Z z82S?lbgJyAuTrA9MunDIwFFyQhAjduhOGu2RE;_bxb)C98`9Ib3OsM$;I(0lH-1B9|)*H;J9DEWGS?Nx+rLBb1%TNdE*Z zOR7+-Y$rf7p}W-xTZ;kK7CpOXh9)gY+D0{04QeRsmFTQfuuI%l(}mWWPT`;t zsMU0!salA@t)-T(b)coX11*&uXu8;rrm|Kv7B!>pR0FEtsYb>A3Y6|H!RaSXZa{@bdqB1y6nFIsEExpTGlO`xQeJ0n_F$?ZlQZ?c~-81XNpYe}G*oa;mo8@c=gf zrG}x@2$Zz_j$N!xU)+IvKEDx<{__*4JXwXYkugN$QK9I1mvtFx2!2GbD&a7(gLP9s zD+;U2U_}k6*Ptqu;#LaWsz*9ctrbWNSkj6@f-G8HNPtzCy^`k?YA3Lg9V}W|NWB(E zM@KK8K7D%UAMKa_g9rVaeFMJ>q~7oPhkmkU%a?c6TuMHpQ{WkO2cFe-;#qAMp3^B< zFX)tbL9fJ%MipK%s`a}fTl@;W!UPbEaD#3EW z6#xJr07*naRAS4^@MSX?jR4I+GQURP^7&vLABA?PpF`y>4h!lmMpWswsL(1=rs~3Z zMLUW*T5+bW1*hAZajLZmr&=0us=0y36U_}c+1!8=O{97uI&N;n$(BaGcCxt+&o`Y2x8ApT}^Jx({*<5Y7!PBzy`s>jKuI-F{%!^x&v zoFFyU;$&kjPBf5e#8_XA6Lr-%UQ4RNu^Lh(j#O9TovKTCyRrg@D#~%NtQh-?&*9Zm zC-C_G*YS%7w&QF6a3}uq8O-1^}=aLa%D5A)XWSrGqcFg&hiQ~THQt^HfnsCj3p5XL=X)| z;2H5EHXY-o{VP|Nxsl}5&=kgc$1&bF4)?Gd?d4r)EA52hk`kr+%F%GT8QxJJBEcvo z2i@#g&CL_Y&9m#3%jA%Xr?_NTd%OY1o<0qIqY>sdE2f6r@Q(R-Rovq8(pp1Hh8_u? z2!;rXxY4CNmq+U3B+nU~1Q0POQCUvX<)vi^E#dO=GA`2!JOVi?+bu3)W?=!D`8h;q z^6=#{7|$f(O2lA^g`k@Dp^cnc?*uMU=5cZar4z#_o)}`$|At5eOq7G9mMJ2WID(3) zQCy&MxO?mdaoOE7h6<89NsG=EVmF+0M*oLa=PSns07$&_K~BTrN$M z9=aw249zBnYIBPPe_({Yx?HcA*SCL;?L3)Yu5c3G- zbMU587>`CUFdaaTXNsXrH#`8Ps|W24JDM#f)EV`t)@e|oR-#PVg_6z=6nC_tsI3*} zT3c|or3q(RnsB;V8k-t%x><!`e7|LrZ(WX|y z;_Sij)D--*awd~SW^Nw&#U;!vE+N0LgdCNj78V(r?2!me;V`TeMvg>ai$r<#7q0-L zRbbI59I+Uju^4*darDOH=#R%Sm`GwcmBLsmjmb;~-dqmBnHfap=a5*KM|yb?8G?c4twD; z^r5x59o8;8)YV!Py;{oWQn54$yslikf|b=3ERsXU5JkWvbqpt9l5$JzI1vynEn<0b z3Cj#g%eZ`b8CNb}X07nJ0vhQ$Z+c9br`cH~vpGakX?UYij06I3PEA2SJd7?^9~zxK zsCGJWvDb;xUMEUiJt!XRMe&deWg~+qA05KQi4jyzjiG9495tRv)Ov-egkDRfbiZ53 z=SH2+!}EHd2Q2Rt>b-8%O--P7avas8qo^Dl#3ffRF4!C>)tgbQ)Z$#L3McE@alEn_ z$1c?4ost^7eV!UqRF zEBd>v7*N_Uq_$&N(~V(mH%3?v46E!IBv-822y3+pn)7XFK3t88-NiWZ&{6EYdoP~- z-gDUX^+&mEM*wyIt=l;hwTYdmo!mj4U8q8k`mOU_Yd}SfKnbpPd`0XXNcpP!Z`sCq ztDS%MFb+O`2u8ITv1AO%O!7DKPF#wc4k07~m7Ir)P`7otwL&z?*{29WmIPA-NAg?- zDH>(b_G-Mvngmv|gT*dZGRdzMSuBz3Ds0n0Koy*xUMm;Mmv*@wU zYQTP*9tUg&9IzX4$Zmq&?SU_z#8fN}cRT?vDVc&Vm4-h}${>)=U^+{VNgmOeSq7`* z;v&+^%gC=>S%a~~>({aP?z>oe_dP7V`!48s?%FlXuC5|?c^S!t1w>|N5XfZUNyIT8 z4r9RYL(kMCtYf1v3=Tl;>P1(#9j#Ui8jJ?i>b0oSC~;BQg$rFBDC=xPX?rV*TbohT z(uDIZjX2-jz&h95zyMX$L_kI7>AJX&!HS@&q5cM)ZEQeMQv=^u($a%K+Mg(b|cT*2IxRm?13!Q9GK zEUaF`(zSP4i&w80 z%fX$?!=Il)aCR1<`8mXw7Li;k*@Pu9h#a@VS*MS8#>2x{50+D-3hgM3X=) zKR1hXF3<4fkH#<-45H8Dfpv5gnt=hdIGm`pSW&LkPJV=I6jX0sR`7NkD{i309AG;Dh)Q2EA=RARiUJ=14XngN?8L=7uVuc zQ4LO=tH#N5)i`yo2B*%~^7+#x^*B@7fHUO{ID4T{sDj)oF+az1;a<_4b)gC8$k8fq zD6PZkk~*9!uEk0EdnL6vMd!*IaPDFg&R4ghtiBVKts2yKnb2W$Lf1V62f3E+ z5GErjSi=#{URgpkhGArpgEbBPbeMBm>}XAkaw5$cwD@|V(=`pl^fW)qD2;N6-a0K- zE7Gb(hA#rHaEwKLxX9sRmusz@7)SpNz?Ed+8fNIC)rx5lY>h`Vtf^EU6QKlb3JXk4 zYKAOxt4@L~0^HraJI)Tdh=TB-k=BQ1uZ=5in^S z7}0lQSm(r$wwupUY0=)Khp|$LuA){n9Iisy?(;bI@KNmBun*6E|9K9WQ^{@vPjAzo10TPp{yK~;iXszR`m=QQ51#ac31ki(*_)yPG=v7 zzx2{eKYt&K6@Ss2Z8+gBel=nOTp>KU_+kbqp=*;A9tB%WmR01T)z(nrU z%Ty9HX|dZR=JN5YCM{kyYw?;SdCsFni#;YSUN@4Pr4??LMRK)dxRS>G79I9m#kDit zR*VLMm?R4|6vjk2%8N_Dik(^&ddT|Na%a@VAas_j%SJ@dO7+ZXgVC>gee)l~rl2azRWVw~gNG~oT zF*k>BE(d>_ATWy2=^zIDUi3^&z&17v<6u8DE+-TY8`>>KG@10M*QrsXR-jVZiHgoP zRCKoElA;6EDh2Aa8Z?;N8H{8y7|mobmd#>3o8^(_W7!LfoEnG-kDhh zW@izco5M7f+vwkCi9mY^*_F%4U0Fe%#)U=xEHevKnp?vB(h_gUlF#M1wE{U=Ofd6gDtI#oE`slcg@E|vf$ zC5jbllql3FS7~rTtz})*XmL@k#oDOWiDQ)(7g-uyRBBM6(&7TWPN_z@QiBqu8l@@? ziq%@2(`Znn)#999hqEN35oawXoHpojN~OlhE)`Cbw6D4(>D6Q#0Np(9)t2$72sSRZpTTxcghO&xQlwFWi-ip%l7L=B?pt!UJ z=S!PWQrd))(ncOjOIuJ{P7YNYDk?j1sZN2aCM{~)jc8O^(QfQPmu&#LzHykxJm~g@ zFc3;$G?9TjGYj9$0)lgk2+c2JdTt4!{36B@8FrXt(4m!qz(-orD5OQ!{WVl=m zT$JHTa7j^=6(yI8!t$v+h9-kBwrF8!Cdksk)T)JvLF;DNy78D{ODZXHj*Ci*QkF{w zuI>&KdK4D)scjh0IxwVnVo2YOL5&?Qg%yq#0}NFvbQQIr{%{q_Un#+fM~>r-`w!s7 zAMeIvcRq<7U)=?QqjYPGT%8$Q34!{(a_dbsV%CSKXMcjEy(|D%`j z^#6DPkN?v%c>4P<;K9Fs1e#5z@2iZ-t~%<<0L+hAbNC8r?rWKAwI4`R9N9 z2Le{%Z}}fi2p_!SU;Paf{sa83`G;sboCnXI>U-5{z{@5zZh$6}1Wy)`w|dQ_#U9FC zS@d|_qQ_p6l|}=P`)F>ZlAv&=_E`*|bNg-NQVG3bGh#oL3~fdn;L*S%IaqrwS~L$1 zz#WcYg5atEuqMJ0jLYYzLwrq!Fa|OC{t&&k0LBQ+qA^S+5}1m_Sng;Xo>+q2F@~{t z5&5s zyS#+-!UAH_N-uvZfyrnXo_GwQYzA@eH?+WeI?i6Xg85Y{fnLKRJ(nD&D_7Zp$}g`V zw@5Ix$iPGpm71AHk|Ami$^0BrGm@x}(cC=47WFi`0jlN}ktMid_h$k5c`5}iu9XF6 z7HPf+8fVD?TU^2{ZS^9#H~q;3w9yERu_#RO7)-Gk%<(uZ@fa+LIBbbH?6i`N#{?XS z1RU`Mx)Y=%oRXX6A{Q$qL{3&;nt&^X!E_pf8KGgy-ARx|U^S7;3b@MW7_i(kdAMh0 zSRM(uJk(HfmNX0B>>T{Fa|n{=<`J5kM|f@?k+}uLmzLS>>v!1UH0UwZ-Hnl+9t_y5 z=rx&O)#{*EtD#aV(cYy%TSpg~I=ax%Nm8J;ON9od8ue-|>eYJGYYeE<8BwP-qDE&# ztIfKrtnWnDUywyROrrbbz_0_DvrR5Yn@sZoX6W(^u!bZBTZpk8T4gU*3w zOD|fx2hq_#2F36sR8v0aeY9FJ3TreDMrJHk}fi@_0zahG>zB#xd)9KF#v-$%|81=R;*LPIfHA(+H) zOtfX7;QC06z=w{->Os2Bs|o3K{Cdh@Ntvvu7^%4_h2jNRiBh8Ma#5a(<^+KZg1ll; zG(x3jsC|(n2Bq!kTEYEb@KDNa6q90#|&iQPYa1y6kI z89ey4UvZY{zRz#PJ)hddD}?X<)Fy2B>}K45%T{cn_6L-6`ocC2pKrZwC$`@H0Pg$T z7Hqs_3!eJ!^VqXtKT7vrK(D?Jswyoi57*-COXsnF^P711Zy#qE6EL+7P@Jif0jt2Z z+Wu7ntA}ylXSd+zAG;S@|9U45K6(g>MkTyHFEX&TM4-MUg{^Axn1~QWg)tc-38*5lS`&d4A4f3}2w}n-#6&Cx0=3@|1+@vn z_-~LSCR{Pu8FRBU7H4OSfXtUj!Y7q11BLFGRIZHA%^^u3w77(f1Z4Rut6a96yLy!Y zZ1LUqaQVGovsQlnYh0GJ{N8))oKZQG9JD1WaT07@lfa7rZ1o!E$#J7h+R7^Cs3b}m zwdKp0p%N)&)<^|8D%qK$kz5=e38oe(Z$&^Qa#svii;I|BT*BPaGUk_;8LkMhRxYn# zI+uqo8i6hrg&`J$Ar^%(CV>_Ov=cE{<1ttXw&F1sIa+qw3_O{DBbkIVnM6-2#p+F^ zKysyp`qF9iX9%{0t2LO(fIw>`n`PJ{CyPL9f}N}!rgAw<<@0dog`*|ATI6i`W@q7_ zC5LMcfw?&zgR}GOc7^5_5LsNtz~B%xEzQuiwL;(C3PXDv3?1z-cXq(q)d9P*3l5b6 zPNfn~l?pv-A*Wi69<>_XYBii14IF9>Y#I&hS}iPE9n4xCj5FhQv|q1|Xk zquGplvjvq_D=t~BD7V^BLbBOVY`5e54YCO!ve{8;v!P77|AN(u3sxH{WZ7(}Akncr zziAY&v7+2!MVZBdQi3dt8KqVW%I!8>=yu?u(}^lqFKPz|&@?iPjN? z7^VL>iKoyXi^G{nq9>h(E0cyRn?+wP%VTdggWgOAJ*hO`V~-`^h{a)##$k)ZVGE1V z9*M&dO~4sTq9>MwE1pJQB7=cM2E(Zwh7xHm6;esh8VB-${)xy}OgQdd&o6>}C zjTJpQ8+vti^k}WHcbPcLrMS?JhU2v;-&=;`)HjMC>SwRu$?rUihraQ+SZR0bc5L`8 zmGw5^UT*xmnL+9PFKh>`!Xt3v)q1x-z@c+m&9~{+?Ho|w_1BLuh;9194iJnz^v%cd z=8m_~QP#y<(wu#<7#(E_*t)uLXxC9Z{_SVknG&o2eoKg5E*VPY!X00I7}OYa!)G?* z=byL-yZ-T4+-AY5w_-XxjdVT@>b6dRLLfqtL*nlTRx(sgQ?DzjT>`BZl-n_|b0w`D ziy2~C)5aryhW=F9cCP2S#YRZ=y10MbZ?of zn@fU}xssuVN`B-xQ3;UGMPpJ)kibin2KgGDm!OP6NdmJea<1F~OrCDVWcLUr^H~P9 zNdmM8!B!L#Iu|DWAxuQ03}0)d$hER0!JPm+8fEAcqx2pm2&4DtiIb92sWJs`A|-$< zndaoas`VkD_FdI1&h@4N!IdZEG{o& zfm|zj&#iQ(Iv7?oU!z_titz;awBtcdJ_Edt$?o<*& zDRie&aLT|%pp{C4K#QPD02jelMwAgV84NLS#=Ea!n4E65Wz|R7$wi zD!5cC^r=^mtKc%gOJszhs9)o$!LVmY=+Kc zhRR|^m&J+>ixtgwJDTk_)Y~1XvpZ1Z=tgz7lU3F2L{)b;tGZj9uj%gQd+Tiu)Y=!62?$SYCswhr9CR;g(ED6u5e@xxH!0ev&$uCsG@NW zty4LVOL_&+MNZdfoI1V}IAt(F!S%QRs;Pu%$>2_A;7MiSO=aOr3i*>+1X83NE11e5 zm=tq9m&}6i$>iasY?;OeWrG6xb{&je2AEYQST$zYG-j9-MrfPW=)BZ{`qOnN-(QB4 zPoKnrtq1Ya8bm$DIVK91-*?M4Z20U}&Pb6HMVlH^sc+L4wsRW5E#Xz-dZPg$-R#XnW_cNRD%g=1UQ$KkY)n{uk z=o&;g8V0QhBoHcedF1At!U-ba3i5RV7#XU9QXY#PENSZ-xkO0Mlfj3A?lhNOE6!dO zmIX5z$;A>mD}pE)tP1D3Tz(C(WDp}jqi4$w+RY#+gJR)G4wlR1@;&s>Ltp#=u>O4k z7QNf|1FD zp^}~iE;P!Hk~Ck-UeSMDQx=O$fCOc6xRWV9c0Y6i?x%|2nVW?>o`gFR$5b*2w{-|p zn+{=WI)bTWg5iyvD;7hVC@Zq7Rgn3bjK!srqX0c|zqof&Dn*Ktq;$24#4-Q?AOJ~3 zK~$a2@pC0ul**J;s`SQ1UW|hLRHCHJ7>R=SlpPCZbC}NMIM82Mwj>~E zm2kaSB!v6=sm2wOL`YqWL>|G)$7->a_t(fkgk%h za^U;DYu9-7pE?nRG7*I;5e3aPaZ(Jrcoh0X3wkb3|+}MtSOQJEdnk_Itd4j z3|#`YWZ>#ar_h@gz{Rjd4i~vwSpu#M2D6#NtP!mSqgpjabsCK8G#Jy;sKvNmhjG0a#|(Nt9x>=JVl-gT zWQ5CPg3D}%!)k%uYK6sSgTZcx!R|npvj+|R{b(H;M%UOlRFhLM`U9{{htL~|VlbY> zc#85*)X{wgq5K?1B5~L~e)M<)aQOr1_XjcPpT=-t8e@SF#)Dx@1|yi5j=~d;!$-ZN zVsUmWsT@otU@rf1*;jz^Kstk=jBp>vvy`0^08HgvZ=SMOGYq^0yVH_FvvUZ~&LJZG z2S==iuz?WeKpZyx0pbp%KR zFdIL=4fjbRfD)_gwqx@bsRhDLcATg|C&3i0z7y~y;EIkJvdFdK>!OJ#^_AN3)rZ*O z+H%_t?D(sP@%)cpLG!tGbY4*6-0l)|Rj6QYwQ_ruqmQ4&liz)gn|#vW-AJXx+jjE% z6mTVaRmmkmE){#kdll#WR7zeUD3$uiu_Bm~9V$8|$ddOL z6~MK=kvm-{*Nb3H204N(dSCROX_R40{%rDRiN)d!SlhR6{{XQ5{qfbm3|M>j?)^VW z5{P|h+kpcYUw4?X*KWXG$)(z7Gk`=uwckNb6+xB}2MDOT394wc;LUD=DQdeQS}zbx zz13~Sp>8X;VmRcqGE@;rz1?lWI}B7-9C2E4q{oJ%PCMT2w&JAIhJJqlfrRAz#1m^J zIpGKqV9_}NTI6!A%?Zl*Ji&?#XySfq*Wk%!;CbRKJb$?v9@{WH3v-;o^5nB{KYAMO zuRkH6ES(n4Q$oNULtO#Ht%02{1h+o~H#=w&$g#^N=2Oyq4Z7lSOwqO^F&Wm@M{?f? z-eea}xOEiPPcR@7fE9-JDJw>+DSfF7e91IBW3-}@a$^i*GLU6*2xapK%d0G@?Zpia z*-cPJB}N7^xfOCf%|Mp8as|^Xm*Ky>gsG)Pj4jS%czzcBvw8H+ zPrG-bYg;%eG*C6E6>k!oIFkv#HYGe@S zJrlf-C~YHE=yl4*k(H`_e5eh;diNF|*pqmyU#9|C$1Z0|tNf@U*u)4i)czkeq z{TT2DFysqj%s-7u|1`Y*5WK+%x8^WX{*KDRR1)Uw9hHL#x2k!mcCT#iIP8@#v9oP&u(YJ~kf<{DMN`@tJt4K1C(0QNFC(47oGEi!FAeGqY zK7twfej2$YgOsoK>~_@-_Oml31D1fPq-fC~wQ7(7i`zEH z?Hm5ZF%B>FAGAdcps>_utn7^`$#nr1^ zc3h$ozIG{UCdp-j{LQ2$XvaOk^23$8o7nQ9BvZO2qb6E`MvKY*;2ttkW~O$y&4sI3AiNK>eFa2pw(bN8V5BR4Cw@L4ePWFUc-6mqlLj5840-`y20em0Eqa^|)cRtF@$?zb~5A>n9 z--V*S9u)ODQPk6o^SwQ|(C5O%zCKhB44`Rv7|kOi!VMcAhhcIG)+sl7ro3Q6MI;bb#PUcG?V z?%9tgzWXd5`kTktdD=v!Mk)bHWkA`nT6e2Nm-Ve*-o-#juG_s|*o=tOCAZl=X@W0!ES zOddC;lNtEpsr8Z>!3}`|0SvA3Bdr0IbdB$k+A{F9B=^vwK3YBsq?6l25cEb3eE-J} z;rrNDcnt&aUS5Rv-Z$a>k3WO=&S&9`CgAmk;CrnSzJ1m3>Rj-;Cb<8WHynf4HUjUs z7rvE6cwZ`q_hVb(>m7%0fl3`Yc;{x|o1>20l+mD#atU-Y@LpYpuT%l==N^F9G0Nb^ zkj1MOrO(QFEpqOJ_%p|(vZ3_(Jqb}t^bjyMn&D}&!81?)rJUrFjmIOwP%1j1RQ@Jx6}nqoP9%qmfNRawqU@G%wJd5GxCC_B)hak7 zb!$}UVW}Ck7`C)BaFMg6K_3B^B+73I(9&XrKuZ$2Tw?};E}d|>2(%33Y-ynw=ttSu z2rdi{p?qKf<^BCA>vQ2kUmvTYua6<>QeQtR`}BUns2CI~8yZ0A@BoTQ zBLgTJ9YoO>?aDBMbF^ovXAI@!n9(Nhv^S{VjmBv|TBrSJ4+o))grEvfLm!Rs>Ql<* zQ6{fDnMALYwc}PDQb|!PW)Rseuhb8%H<@C=vEkFSI&T}7@d$&}!6NisaGU8k<-T;h}RQw&x#7n1Lnj~S?_50&Iv(Q_!oPGR;(|Nbew{qQjy ze&{G?srKBn9|T;~g`L_p?EI^Txpc_)-$q;3>|!V@1T4|Rit<*wI9EmBwdt1aoCTvc z3(wv4BC5~TVrps%sa%TPs$f8r%P2FowsnkDLSwL!fJ-i|@wq?%J`TFySZbqt2*}tC zqK@q$;f4|5+$gaHj$9TLJ+DNtU4|+GB)KdoyH#}j+rWx9dM|)2x}TmypjPN$$xui@ zl}L$vmS@5ZO{Z?@tyd0B-uIJDC%*G{-@j9?ApHT6p5OYr{=e}0--jVSxaSY;;9lrl z$#eP^H}Bnhc&}Xm7L@=GNDdX1|H!T4GN9AKa3#A`1XKi51X2Q~?0Bcw&Yjt*JNuDd z0;+W#a}iWIaGc~4I_c`h+fF-*`+6`IiDH_ZB^f-D>*4UVb24N}tN7?Vm&~~5l{Dwq z3HajGe(5xP`5b%)YT^Gc_rmudeg@yK&cIisfd9jr;QRB9@O@`DeA97wA3F!%hkgv- zhd0CfkxlS@?^XERA^4suhVKgx!}p5=@HJcEyX#H({``LUo+*Vdnt;y}g70)Yd?hOQ zrlas?v+()D@MWlsmx8Zn9KP49;2ZP9w>S^q(gJ)7bMVrf-W$Ony=G~SL5*LZmR?J* z=M{@mX^=k8=A-cKIwc@+ZU){+9NwQFfcG!A!uy4X;oWi+-T^l|aNaW=@a{MU?@JZ% zT++cCim}5bN{6`>*xfuz}elyU|{m3LBo4LHgZ7CM6T;(L#P-Y!llt+R^`|Ts>erBJwAfk$uZPS zjd2J0i?q?ZXB=goQIvQ`QS2QO=X*02%bo5e@h%w zDRCo}7jN0lVRr%`%5!bL?E&ok+OKfr(UUN@+2Bw)p{+Nf`ki`|?74vbTi(JG-+7kv zRJ6*F-UBxTl^iSDgn13B_}qisyK39*yLdI=J)gNBJN{-D_U$@=u7)lI!_(ZqiX1Be zR^(W%uL>jpksT{hJ`-EX+;~nnR@4cd&db>)nv(=vtxxQ)GF;Ipmj>l< zI>C`#4wT`F`r^qBRpCf*C2#dbbNL#*UIr|7uR_z@ULuprARLaM+u}so$@0*nTOVuu z{@?#_`<-|G;Li)mrQmn?j|ES^&vOdj!Uywz;T!mUzRb0IpCIUGZ@~AtUGU%e0{nk=Km3oJ70-F>9Q^;` z=kWi@eee?$K3mFdCOAl+$-+ksQ%|(P_pO)U`^kRz?mYzG(=os0IURC476zp zY72mtvtX156Iz2X&Wf#v_CE*GTIrEtowBP*3K3CxnKs~Goq z;2P+M)71lew;g7i1qP!58m$H@l@cnILbzK5TAgiBbhJUy-U?+$8fVN`a(r0nASmPM^#*ph*Zpo`rtjSA#!b!({ggPMU$hAtOFmjJCkts4F0 zZ0Xb(AmGw!Sqxj8-x3bjq)r1vj}w(slc=HXa%gl3`>0Zt-JPV<8D-VJ3x3AhNB zBxg#1)%tT~coOA3alR0&cz!#T?RIg?1p=Tazw;b+|Liq9a_3XLAK*(r-@{p|cOE-| zBafbds#1&QqIS+$(JH~0e)=kh+j-^Tt=kJ$0*aC!J5&V?LaABk_OCt+0xRmJb@ylP z!>_*m7*4)&8q{VXo{Awmn`IYCc9{sKL~wmQ^ewwnvRg%~1BGsE$sj`&yqmR+@1E=<27!bvnmRRX2|FbDf~)6I8MKdid|0>g`6~bP&-D?M6>9C7ON8qgYiZ&fPGlY>^Be z(ra$GF8{bw{%C#{{?{%c@a4zhZ?+-u_s=8np&!71K?DEeMeyJG9Q>AH1PHudu7Dqa z|LGF=|LSS@M||+#{U!rc;Q2E6lNki|*TVnF2M|#8Akbt%;JY0^grR>a2SCTtq2gLsa)_sR)oM`Y(e0&4`;-d(B z>lFl^C`O=I$^hdXWO*G+@4br^U~Q%4!qrvGu3YBEtKn1`9Obitxj zh#Z%+I+0c;5^zz^EtXcb?rzB$E(y2%4D0j9z;iHn{|RC?X48ovj10UxU&=tD!$kH+bMBtM#_18ABKu4(;R0FA)_ znnSXJXbDZDITS<--yc9zFo61ij|2DBJ`XBAlc;b{pnPf!C6l8#KR$wUV?#JII)GEd z{Ww090>tDCo%A)qRh3|qp*TF+n+T#=I{Ll$>xm-ypafSkU~PN#)#nd7E!W<0Io8U2qP$0N z<-m#FZk!}A>T}|BpA% zS_JO>e?jTLY(Svigy6X@1U~;T0-+cJ)p`U!vJHWM-h;sZ*n`04qXMYD@&p3ke;t8f z6oD!Of}eT-0sR0151vHuzimZeZw-R<{0)Z?XtHAZvkxKgPp=^Oi?hf^egt&=2u{cNxwJZw zK`fIK&_g3NS7qpTAJ(iMzY)Ni)AsWNZUlpDD z3Cuz>GYHMhA~H*wLv)UMmyu=>o1H~$W`?&Diexh&APXg82*kqhhJx@0yqNM%VSI87 zqa#BY8gOC2<%G*&Lyy%Ar`Z69K?|E!%>j9831LxmGI*K0I$m7P$bZjVQW~chS6-qS%#KDoEsg)xsd@ejt=7d=#T)f(IFI%4WpRcq45#n z5KWGvVrm=}wBa;4U*1Vnd&w=LjitS44EoR%^rJNtKwEekZJ}v&gs0IO3Zi*BfCdIB z54&ZT+>#k?pDxpCe- ziqn04IHtGYt@=*vJzb66d(PwON8ZL`8(znQ-+xI^V^IJAAOJ~3K~xUgzxgP(P`I4> zL{YO%%0$Wf)Fy2F?AEoio+#T1prMkU(0WNv&OyodF?dN}CC&-=N}h9BP^f0iTyjd}|O^a4eSt>6%O%^Ey%=aV9I&zmR6BbAjtqE+$y;Myg)<0gd5r`O3q zMfb~)#SKNJ=Au-RBm$z zbGC8Lfv7Ab1R`UCgffVzoDm3t5Xu<^kjPOeCnSLYNiXZ^DQCcTmFxe_-shgDE5NRv z4pVFO*lX=|&OP_Md*8dV*Zujw|7V|Wp<4Z9YH(mcr2SOsKY}Q!R!Qg@92jH(qph`m zzz?|j-M6?{UiaOOz{u0~Hm>dqUj6hL`CgT;c=dbt|5X3az?S@KKezviC-A=oS#*7; zfPm%OE6#lzR8tO46IPWgX7zG}R$WpV)k&2S(8UT@ErC~s0$v1D00TI{c{K_W*j66$IYS5=M+9XDX2jeR97F)%6Mq#pa1^n1nUsD6}u!E;MW zOjRp7(@vq&U`9u~9-Z~qgd!A_gHFeAR#Z9;o`mMt&glHL6Ey$igwEHz&{dqJZ&Lo+r4jeR&YzjNd7t$A=MG;v3u`NJ(}HXMLv=6Yz4)Ibwi z1kFS4&_tI&GdcoIe?K&1qtJvEKr?*}GzFKSG4%+5B9J1G85)G9yBC`7K4?crpdB6- z_nR1nc5qM>OdTA8rhkwtr1N*C&(e2SmyVFYq>Pa=CDf_OR?e5_CR5N9L4lT58 z6V*hc)ttNlqnnjif=0RrmB!#S=fDuUhKFDt8R7jSEhD4o9UVdM$S8V7Xg^5W(r6Ht z!9jHQ_rct2fvMXJy~zljP76&(JKC?e;o6lJTxo1TOI;0`swz-lei60j&!OhbX;hy+ ziK-LFQF)A_RH-;Gz^l5f6clx3Whkny#6D7ruD0Odl~x?2)r425--3fQ)++kRS6h&L zWik%6wcyZIidH4AAo*%5cpfQWZOur&){2AHxPk+U8ny50Ww2s)^)mLfHev6T%dDR5 zB^8bOSDF~K5*WCeu&=EJN&4&9f1?$9FE=3OTsgw>k73)MZ1@Ex!eeDP*4S*pvJXAr z_SzaYVAIMtM*=4DLOra+BhGMq%mvO*xWbt{MO5bC4u2E@5syg~YPyom(ia}0H9!_SR#>J9LNC`?uz=Ew<`|d_8d0{1+(H*DJa}a*2dxMowuSgwpow*DI zg7Y4PrZ!x`5#7iwLeJ$SOx@^+iS1x`c=- z;j!Wrp<-Gmj}@gAtx;QnXacWVkrK2jSyJVytH$2C8tkd9Ms!s=q5pubiNHU@@O@(fF2s(l+6-aTFd@D>zsG?T(r$Uw* zxVT(J{~#BMWbl%!B?pF}>Fz;ohbY8JE!AzS*L0#$qeYWOi_014GFPl2YpK#58s+yPdqIr6hs2(p5bTBTB{PYhWK zJn?lzDv!W~(rJ^|Az+#cP2zZROnu(ke|jmWEWdeYBepv3g6F3`*dK5ZSy8!2^iM)+ za0W6Xb8)exg7*eY+LFSBLQiCzVz}Z|=hI7-l&700`blcl4Dwhl6UKE0HwEB01?kS; zn<}o`&2Yx9H6gfox}0IkXf|-wbt;WO8!xND$_hev)O{itx*M3tm!(py6o``7lb$R7 ztn_dZkf};E$O`UM`-*_dnjRzt%Pcl=mfou=sX?VIgM=w+Wq%4-DTPJ8|39Bc^l#t&Vednq+)Q}*(}~@Wd^!^Q*r)xGPkwF+p7B}3 zj#;0V1&&F52@Lf6kD;wwc=DfP#i!Xk!lxLv#^iTa`eUJZZLF`8$>!+R4HWYx4m`;H&9v(`cT z(H7`_w*(ru7zQjYfeSNN7I{fadlLHE=eXyZ$vJ5>+eI|0zm4}d!uoRo3}7AaT60aZ(?F%0uy877#|(M$k-@)X@AV|F&Ku2 zakR1)S!XUHx4aVBmDR|qt3yU(Bhs5MBlSuPQrcRPa)Zq6WJFg5nc+LGBf0$=l5ez4 z2KlM3w}CueBGi5ITD2ni`V}N!m+ckyejU1Y73szfL>Hcf(==B&k^=Rl3!G@n7ltPV zpr$Wo)k%VoY*__TKuM)-c;=f^(q z`Fb-peeQ?N3%6st<1TEq-GR05Y~>#dRWNlKVK7n|1WL>4cvYZG19mFrb5fBc98pVPB*BXPRn|11tbHX4h|(O5 zR`{z#QPFl@ZAkD$z}Bu56{Ty+G0~@Vp(rFu>J_11PoY>vXaPrikh|K=gM|LPU&c=R(wOq+w4r{*Dk+FT?& zIT!n<&BeiKbCLSge55}$9~sjZAoCfUKV?2+^T&)C3%^U9WpgX(xrHNpUtD-S>g9zO zcD*_Okl#BCwyybLuFH~7=DfS;i+R(X=gj$sun(R7HgLAf-vrK{{nrX4-Syg6zsG;9 z|1)6S_1OO12CVdZuZJxEAapkeFE7V!7YVQ~S(PhNuckm2trV=egm7tM=W+|e3@-qy z649($3BOiMU8R7mIsz=kk5yNR-SvuRtD#1jUx@~)xJzj~tAB^QI>N8hA-y+zP5_bs zED1~Mmip>rx!sItr-0R6P$oa8Y)`}25$PtrCc~MyzJ@$M1YEoVjyy^O(2S2jGcgLy z;DAWIjSfRINU1W~o2&<#4x?xrZ$MLhRRC7rMQAe5@n^MJ=b)V*4DI3==w93ety3g} z5Gzf$#-Tmc0NrCNpbI+;Exv=c-2mP=5CbTw_zJ+}e6 zMKREkI<+kex*6-BJJ$@|;VS56tcPxQDRiYZ&_BK!dV;h0;m|*|7WxkYp?}U3y2WwO z>CDi%?uPC;Pw1cD1pPM$pbyH2-Z2Wg^Uct&I{@9WI_QtqKp$KHy{;R2I`+?m{@`io zO+CDIieA$Nz0m^w@Cfv+S{UYrz~Ge%{rDL4Hz&lL{vj>}LFqZF)1_BDSF#lzEKy9= z>c^74ENaPLMWKutdTDD#hzX*_8Tm*7K?qX3sk*D2}0JICZa2~m8kK-83TlggA#>9J2q0VE!q zzJ&czT(V)B8`r>+hI!iDcrgLa3`)DX3(%XsL{YT_V6g%>eF^{em9MYGR)<~K^tmrW zmWHD^@d!fPBas%AiK2uO9NM0S!+VR76nF@ct7EZd_6FELN_!9rbG}fh1Y9vxsZ=U8 zWYPDcx%9m4o>&CeSKJZd6@{9L8g%t^3Ddev(cMFtA_yYjk-@-p$Cw(72%>1NoW~F) ztF6NPVNVT050xpi1o`H7Maqw(68%KPkWc{Zq{B60XQ| zHGXpp-+uQkMn}g{eW@P4D+BP-Z)V_yzy2Lue)}qXr+o?E>2u&c{cCtXGY3A;%z^(i zbFq2GTx^{&54&bAKG-AXSGF(ved_k0 z@5^?-c9}i0ZRd?&)>V)?9<``&-b_7+v$(4bUZ@gbsk-^C0vuc|zA| zflk*0{i{CE?KuWrQ3dqRZiK$94!XU^pr5r7y0e#|U!4fOa}29k1Y7#hLg+Up!!UCL z^nMvIe7Y0*O{p-v>;wJUgU~OEgTXNx`s{KTU-yIIxlJ(4@PJ`gz5pe^bm&*^gJDZH z4Es;Q;2aCX<}4VDJuu{y!_aPoet6glRSZcgK(fM<0!#9k!0D%B7$!2r4-WH&+*CH= ziqXUh7VX!^q0yqDQ;POog`56qTcbocba(%XmL zUMh;%kG?)yT0VfGp<(p&^rNWw3^KFIkdu27dHE-iUvLTq1*cG0cp628r%`Yu6$Rd&Yo3@x={Jh^D z^~p;`X+To3$S1`W&?i+XE{!0|9;nnR>&iTJI*)-$fiMYIbY6~ITao^wl$}(!`Wo)Jl~~ zLKPX;39N2?dkcT~;~&u9H;5BQ&tSRz3QYg+58?S={uA7P^D=fkH3vJV&%@TI=3x8N zbFqEKJnVR8KDN)Kn1^jM<{@zAd<4#zhs`tQVDrqm*fMhtw$7S|ZL{WK$FmC%^!!4E zJ#T~P7wr)LiUSf~b3*bPF35OmF>>E@!{N7<;OOk7IQH>6s#l7FRa=3`+DeY7x++A~Rw0^$RIDn*)QKRll0nKde*Ark>VRu6{_BPZa zvbF*V4K-*pcf&}jFcmo62{F8?u2(GCm-FNt0w6LtGYBcll64Njj1_#8z5;3T^LMw3 zvD!LM-uE7@gemJiCXLk+wAh5Ld=E;`@dnP+4i7@%^nZR9u76Cj*AJH$#8969$5-$JfF*FARplDj413 zVO+HzM$c3jU-5zAcs&f1`nm^HO;w_Xc?F?>D%n>6iXch}1}bICAQNrat3=n(2=u)J zsMlyv+o?gF0#*$=9U8PckO{s?t4EVgkIOnenzbTY^&(B!N>HUY;HoO5dPQI*(uS(k zp}~Z93RbfuWSO8bbunz|OkL0!C1iEOVCsgx%K`!|gINVz-96~GP*CORURZkiFfu%Z zii!s8+n~4xdDE@ktaP zIfbIqGdOal9I5+q5xXf4+Z}dc%}eXC`la<)@xmG`e|8nzXRg4KXO_clx;tE-S_;=` zOW-oi4U5RQO^TNUGOAckn;;X6vB6z|F!o-#S?f*-P*Rsg5Wqy^R-jVAN*=o?HLE6% z1$a?$&gHMHLGspAs`kOeE9y*3IdFOaV-;v}})SRqC$kGT<%5SUvF8I$2#L^d5 z!R@)_aDQuc`Dx^VTrD#hAnB1m-m%$MaNXWfuK*C+SMf) z$Zth}Wi~67+EpbPBwSg6YEYD7pko57Z@>Q*f5M+&>FPyp`eE39YKtfS>eqPr7ylD$ z{^5B>M&Wp98tU>+qwajg53a7R_tX2E0855^ugmsl z1?xW$ynaf>QvCsbVdv%HxZ~3K+aa};3|0hJq16=#tCfINf$-W(h#;`4qqj|tX1z^=zBc{FzvGvu6qqJayqF~k6Fldo_wWqNb@eMTytFFNLP7RxV zwfzEsXeTxRh zC3|3Wih&-0p{Pc{)0xWxrasyU<7EvDrXCnwcEdQ+1Ev?eVcd5DMoT~Yil)L8rTm5& zy0|QZ3ZRTsX5k(HWf~p<1#SC7dodDFQ4nD9F>MDlJj$yFYc(2%s(Jz|oo*7U7_4+? z*6Gor1VNPqE2{^KeOSVa#j2H}R&iy1qkyU#rY^KAX+laDYK&$ED+Vl+8Cp`WC~e4L zVYuS-p#oUO?jDt*B_N9d%hJnf5~HyjY3U_M+@FgBN%=@hD!{>{0wf_26d^68m?I|@B!J%NI}lPD}Wg(6bG z3Ka+|K8w=g^C&Amk7FF?aJ={|ju)N9@x!Na`q)KWD6c_j!C6GEPC}UbK7=hzK*-{F z>~f014%;Yfoga$LUkAbO^X>5YcndbY=Z}qVd*hooJhA5G4OsQ!H(37MYAl`dMcQ#nYEq?A5mZs>1ZwXDEP^uESH z5M|x8`3^Jt^0jXYaZpvtOzX?agSx+Xyu!Ikh_O|BLs$dZP3*$NZ;J>yh!!#Bvg84ploS0 zikF4rY-lQ~a!S!sU5`$k7N!9UddCLQ)^TIR$;s(~KL=R!p1%iV{RdLV|9zLfOU06K zr9Av!IBxQG*imuuc1UdnLI|pAD-f!*5eirdxVnVMIt8j2s45XvFTg6gp$ah#)k+Xp z3Al=FtU)ZnRYQ%4M$yJM)M8IV4fZwFBD|&&SuK~@^lV_5ncReUD!fdBlN=Y2G&p_qdF!~lj@N?&tsIXqZM}F-x6_aT+CBU+tR#EEvNSQI<(SFT#sAo z^C~&oqDGVo;Cl=VKu-{*`X1^&8NkViuK(^P*LV`w6#gYPkdr5i0B&p)I=vbCbIs7# z-GKghJ@i*~&^O$GKH)g@8WZ$+m!RL8!(J)lwj3CI(|M&FrSgo=dcyd;7YzGPfC1}d zBaHLHLEb9kx`V8W8NRy>hnAoG$gD%CVWwG?ZLZ;u|KJ-}n zI8|6)UWa{&IXIYnm?Qb%VHIE<#vxL+7_bT%xCpukxKe41+LS`1F?b31N>439Mp`j4 zQ;U(6R)XwwiX+I)IEviNQsiZoAwRne1v!*vJb}XelPD^nROA_m{r66i;G9p(VK*aJygu3lTu0^rXl{rAH4$i?VB~B$fO7|rpy@;vuGTf7Q`-qse>coSw8+H* z1D9{nfmTj7HZ~0|S+eAJKLgfZ9_Xe3mKv@kU^)5vy6mhf|2C|?lHn@6t^(n8mk?1` zfrz?FhAIN9NK&i_u&CvzV%2IYTva2sp#}_A1XD`HH`cIP6;G;_5_=l!kkD8Mf-O?J znrQzhdYMa5P+AE#5@aN3NZ62I!{@CKBh(rKqc)8m1$zr{U1!4O<{LOwaE2?R6HF0& zG}K?knd0;4`{TE~QF3*8Bd-uNj*j4T;W@Nk>*Vcd?gdCzSfL`5lv?`{kh$kLRV2T2 zKK=eX$M{%`TUWP9@KIL3(aJamA-MvMt|LRWK{L-&j_JJmda^75L+IcT^rIte9w(UK zv59f$zrO|jw-XFx`q5G0d%8Ie{m>BfWHRrgXF3Ffp&NRQ88pXW?uDVa3Wk(3&^NZj zaBCa}jR}T=Dj4W|agFHX56}}#*+s)NeFKcMJYkF|fuVN*#s%RpElYqAKfuu01=D9c zVf09aX;C~(PH`}H^};wZ!cZk)N^Y|w(tE>J1&Wj?v!Y0Gp;0O}dPhi@y0hhiq*RoY z>SA@7QBS@r0xTt(bOv1385H%(fEJxWtRU1IaYb*$RjQw5Frv*!pe4ZS8g0l;U}X}~ zPO24$S-=%l6aHWcVHp5pDa?(qXlU9P<^rOgAq9D5zdxJ9IZy$**F0t6+8i%cmcVpYqz1Z%a zfE~*cuxrIW>{_)S!D|j6bnQWet~-SA4JnB9Ohu$;I-)lblnF44^~yl3S2|)hr6blO z4Y3>25VP(OqShQl=126pJ19QP{R144dZ&mCXC2E%1EL9~<8C#=6%$ zu==HSSo!=KEK{c~pLXZe<>IH8VlkQ5Wl+s2+Ax`dl`nTTxy#jkv}(^`+F~vmO8XpA z+Ryf3XWl59d|7fHtpwz-0+mSpNzmf-pB1{qIk#EM;rg^Y=G|`#hnb5I?Hh~A3zaZ* z8PMI+4Jyz{ij_tJ(;ch-7^5D>`ot+NDWHZBDf-z zOx$OC|6>|AORMISS{GiTj5v~^-7xAWlL}+Q-im^rF|LzV}}XRfzkM6*8BMQ zw=cu@3+Og`xn6e zX(z1uXf1ZE3Py5NDvlMML`_XS+S=QpH5p*&F~ii`4WrovgFz1+m&FipNzao~q)kmt zgEB=pd-m+V{;?FHeBa-pV*TZ*0}kM!!vk^{IQG^$dAqCO`J^=qd2@L9~X~TqA0NtCIXIo01%CJ z7%gbM(rG=1eLns#-0J8M5UgCF|!=T?{C9s=z(d? zK^U_x!kAkD)B8JNEUba)*2G;(6~UA`y(bi^NuZ*1pEVSPY7(l(K*d3=P&G=&llvjE zilx<|UMm1g!qsJ+k;^$yK~gSCs-y?6C~(DqMQ~*_;kpt8ShN9mdl$i#1gmZaEZ*|S zY?%sJW&$h=be0|tQmz=VdIVe%U>SS*V4@NaJygWBU#v2um4;+^?-SA2*UyC%%ggJL zbl@=3(@HqfxGhF{syNP|96{=yeE2&>!p9~QzV_kpwF`rveFXd*B1G#L z34e|#ZUda6vDrBWn_XfN=o*W_#k&#cwj0})#ACbrUhG(&fL$vS5wz+6g4ZM=bZrvC z6ex?>kg8J31emc(rYL2xo$R-i0m<$i>@Q|fXzb~(jjyPZ_YcEIP8KzM!-fQ_@g zStVQZ@_MX#VJ%h=l+9epUNTBuE_r$x+@5gGe)9U(c~Y?=&lRm4w5I-qVx^vU=T+2EzQ6Pdp*o>|3`XJyf zPx!pP0Uocc!@3t&W6kp`v0~OTEPZAP+@2wLUW`T4sD#KOI6dwR$0sOd>m=fFC)hvk z47*32F#kb2eDRyP`23&eV8Ii1SpNQM>{uO)^gUTPd-4KWny)b6Qqfj(kC~yj%iP7_ zNGVW)D!Isj0oJ;~wMdU%ZEL&f?(Y5!y}#9fB|(eYJKpnF4){;RHh=k_qV{2_AGqw( zH+0#&H6W<^(jP+WDiOx&RVBjfCfD8#6laL}57y%os(2#N? z!>ZU!syC*wF@_It!(_lhv&MdzSh*M-yhXHj3>f-^`qN1P`}lAt78zMcdpf;zsw>Us=%bWd?# zc|8Ur2|}_ZAfmnkSF(Rst1_C)6?(k2%#id$DdiA`N7x5tATXn#6d%nQ8-sCTLd3|Z z0Ibnb7-gTHkGT(~zCjU9Y_`68L+x=eTs5LfJGs|iZ=09 z!xbx7-J)12saLFESp-;d%`C2))yH5(aK+Kv4^wYHy3~Nxr<8M0RuodTYMtJM?Cdh6 zrW7NCpegMLd#ebbGSiQ8kk=}U#?y}=JN+oKGmauB{U~yjmQ*NC15zq5qf`komPccB zKK+PQsmf=?>Ih_;$LC5=ka-k&sYej9ZZ9^?4-r5mA@~m+rwfQp;8(V%N(3 z2wIbbU{=bK5xzbJkshgt;?!k2Vn`wL&On?OMJD1lWgw2AY<&u%zez^asw6}#-;dBG zdl0-R4%_V`uyujrC8MVJKSgpdA)I zT>L?E=Lg6!(tCsCBo|~5n)xassvay5Ll7lN&zee zt6IbXFb~kA2PcNNjFkRji)&lcE>6^5PeY zi3$k*j8emCFV&o`@iDYs?L?yIZk*0Ng+spkP_n-m1+lrv3QI@)stDvnW#LFt32Mum zP!OGqvO}f3a*yC9H82V13eRJ|$8KCYSuMOUW(%%$7`TvSr?H#&qN}~wh=Q0L^#9>| zUS)RiSS7Ar)3QQFphoE{QhLaA-8D9b3uP6kzSw}8OHDYQbrQOsK4H=x9!Bd`4bC5} zKtojvu4#-`IzOf00WSJhktT%w7nUyOQ zU~y{DgsTP<+9Y5RWSPvYT3zSVpqZ<^6I`{M6~IzdE2;oba3uh%2UzLCTf2 zC@Cpdy}b-oq+W^W=R&33ef_YIg4I8u)XSopS!4hnME}4LE?%rdN^&8C6Ty=;$iPkz z#Zk&Ws@$wnqu5PKHpIN2^^^c+;v(y@gvr18zQ-*|~40zjw zGYt6?5LrX0Sfp(EQ4n+yXxW7`Xi=Y(F9I%an^1T!4B^&mVF)NTEeM9^f?#Y~C?f=$ zXxt_kUN#}{vZV-xmt82lDeS}G;}8xX#|Zd2N5P+BQ8YHY#$tGxfN+D`0Yxy^rEoRVNkyifA zsuhy-w@^cud?xZ))4BHc_U~4%T=|*=EK;##NEJ){o~OPlP52k0lK*_SRm*}?089Q6 z=qG>a=C=6D{kunO)06(_l$(Yn1({e;oQH493gL0$2)xf6L%@ZT2rNH?9Tn#hL>1m^ zD;T~=(P9;=sg_fL3|Gwpsz|lsR3O7uy@0GH0;~pxtOVL@mLRL80S8(e5nW${k{j31 z#V=s>OJAk1NX11eG4fae1x{NLU@0mK0ajCE8#04ZFz~~7xOlVzWhqB-&@TZE)h)=_ zk&LX+bd)9?!RegSNZWD%Co)b5V|d>H(zYJN`Qi(RUlD=a@GKO@=OZUH16jdoC@-r( z%9bQ#ho*y4i;3&va60b{u6G(ySJR5-<{M~fX-7+QI|G^4+{?!5uCY;^%sI{XJ?N9b z;MRTnCd?D#u-v|hnv0D{-=2)3J%`cM&<09nvSFK49tCt5npm-#EQ~47v7)3_o$din z*111&PJ)yKECEC+Fj62%UdMW#fk`M)R%o&s&c!$Zk`TGK3Wl&lXVoi*-A?* z1hdMJms5sZitJM4<&+{Xn+lW)(|W#QUYExOIb>ungLOQs3~7lhOTfc9{~? z7sti<$C0_e5L?~i;AbC+0Ou%h8qg^k0gh1|q&`uakkf{WD#Z#Ft6d6sk#eP|Tiyg* z61Ety6tGf&%X2{xro_S^c*?K|h6nX+gWzEk3{RU7c-n?ylbwt(csWpn!^bHCKF(3_ zT@(dBmuUF8#=w7Z3^u#PVe^vR2wWPEz-4=}ZAAihtlWp4tM?;lZ4!dl9YhELnMW!j zH>D%WD+AHqnTYkxLY!X~cKc@|-Y=WMEZ!@Np)7V|Dx%ks!9NLcn-ZZn>bUwky_D6^ zM8G0n)Uv)5jmbG`ppjz|qUfB29vV~6rE7`Qpkhc@)GzgC>Av(C2~pIiF`A8^ zpnDQb5Rg#Z%h2A}+sFF_j*XA;RyL!zrkz&-RiAb+#6s8xUp|*ixmTHJ~lXprnqto}NXQ>VvlYa+!Uc%Jf^F-=aJx+ZI zSgTjBe)p#U>nGBL|M^JgFZ7G7fORL$ssQVk4xc#ukGB`txX*NP-uB8e_mbCkZo%up z+wj`1EqFaB5N`%;#q6-1_#iSEpT$LB&b~O<9!$WZjASg&&&1l|d~7Hyg7>MT2snEJ z+se;kSLFqS)|Ml(z8bNlY&F+oPfG(5S}7W_ueA}0R~nJn+KBxvjX2QKgni8o*nhc> zx2&NTt$ca^>)T;Yvr#&*rs6Wp6BDRD--w3lR-7$7ha|7PIN%YF(v(u1&OV7V`DYlo zPGp{BMTF8bXcOx}mKkCYxkQJPYiWAjH-EsgqVHw!FIvSZf zQ*bK#6wVz!kAmnN9Po@sjB5~*Joca@u?Uu%H(|MT6QwC-*!03OoXR(5b})32qC+Z>d29^k@iD$e_xQN=8A%Ybrt27-L@5G#e&W3P zc=GuQ5SoN1F`wp6jtPJgpa03e6`q9Q{NBJcbyc4pE=~-DQSoEsA<2;EDmOTY)Ru4S>Qz3RW)%Roo}A()aY; z1F$9`OTv}8Z-4=-n-naDt3d`Vs{B4MG{Q>O*)vsaR+kW!%Mc~Nir`8HLlnW2geavg z$UVlZ0~wrh%5XS`j>U>WYU$V-xn(G%pw)yq$56yk#_f^(6DZ0qL!@UC{OlsJg;IEn zVi33}2AiD~zm@E>|0)^*l0+=VxFXmJhNo=^gO-O)2q^g2Hbg*|eF!$$hl+3rg_k2m7`&Xq;Nu+5 z;k_slJ`^rd@O2d+=C?Q&{%*1GUlNDS?(x{NY!3pL@5Q#23D~}BA9k$Sk6mjIVAnTE z2wtCzFpm^Oc%>s`!yzQ>Is{`Er2^^2KIyZPFLDVr1Tr*6L45`q1;``}(HNZ)nouX^qRhfMftmt!he|9QtN%*39@_Uo=Lxy&_x1g-fPO8; zZvZDsPGPal68z?`@5A5!;vX5T2&!x!aKM6x>^N*6c7Pp+P^(C(a(s+72Y2QT!wID3 z-DiV&_btT2hiu_6%?a*rtc16%A7cFCP?%nb`q~Cg^$m;+pl_%TX4;^g)F^uHWJp*1 zQv^fe8H(Q`e-F)-L1S``oUaBd^?CVBRDd;`xWe7t{lCcgF%?UtUJ(=g{LjDB6JWrS za3voy9ZSHXKZyEX3+(M*nwPW}3o?@M)&4kqx;Gl{M~C6ZpJ%7+wpN^2)^1K1)BqV;F@+2OLNk(>~J>L961b+ z<0bGra~xaC&+rD*v|2H~sSaecuQ2NQ<<&JZDpEfqln$aL_4Hy^UffpYMFk2H%D5Hj zID!GXj^*|(PS24it7~GMy;1~Tokj~fOcr$L&1h@aqoL*sT3g!DH9EpRth2=zP;;Sy zK`diu3aeZMP`d739NAxt;@t&E^4`n7u49Kvaj~QvB?*N%k$MctUI{ppcLvE`dvHAc z7*e+$;QMw@jHC2WDT3zu<9PaU82Sc~8I;OCFM_p8WtFU!l_VCUWM2_0U}p}WM^Qo% zs?OG-slE*tODh<@DBVb@ObJ5_N30^<0Yi6=$z$14%8vSXhD_N>g-NFNrqqy9?!|NH z?;}E}O%kRgEQ!A%L6TIX1Xzh<9+xnsZmF+?04Y`aPX$nBRbQ%9-J@fmkOuWhkRqi@ zrBW%%lv<@Cu;Tsu#wPgR$-Z%F1zZte^-tX7^ViJXXfhbkY&4<8)P+`pDwCPv>Z-}a zDpy;V0$9{`nMI1wY{qqSH*RoPaKmgtyQK#m-4=96xUvYavceT@Wz^HBL_hSsLb)RK zN+?+ULc!|ohne;;RDx23w3UuU0W3}x_79?WU&>Ew3(Api974EVek)yeKxi)0j}b6t&AS3jPiRUQr5cMZll@SW1eK4fJ-Da-8&b zk*|wYFS{^!+l5U|l9lcN03ZNKL_t(Z8&dkv%U&H}3{zhAVUWS<7QvN6C^k_LWI2Vx z%UOUHx6WbkUK9>5Rd_Fo0EbH?yj>#UL-4gY8om^6G4OYbfgiO?MIPOe&zq%|2I4VtAeG5EBVkR?aDt0-REnE zMeofyuot#D$ykt{06Rg%zK8{>iI|_ZA9GR?@%5p7`10T$e71i#K2D6q`|%NYGjbPR z2@1pu+x#%o-xE)HticoOSK+a>EAYtb<#>4cQv7~}8y;G=7&BI_z^C3`_{hf#ANcv; z9e*FZ7Z`x|cLd^-u$}laIt*X!j>ekQgE(7Vi%ZR|sBOEBW{r;jub*B#T3Ufe;59x0 z^XQloqoSp8QhHQ=9ah2!xP~a@ILznR2Q)k)RG?co(LFH%f}ZZ16R_OAjqaN_MGA|G zN=}HCX7Z-cyK% zs%GRwW}@fTE%p!{IZ(o%%Lz$GY4TB|`0qzc!!;ysh{J{AiztdOz~0qSh+7iIFqIXO zh7;*0a46savO_YlZ%r%?#}zPGk)p+b#c-sg=k5VYcfr%0bMAFaP&<5&l%4{+YB-t% zCN(_WqpyM`h9*@JPg1F52?aW*u1h73NvRrv1S#37RVoQq5~vuirlbIcLd9?;p=w-7 z{ZUH*H8zeu6-WuNnuIJm=9svN!JD_C>+J_ubJrQrq&K43Afm-cDi*<37p}5;)s42U zZd~uO;F?(g)eVaUH!Qtq@9sgnr57DaP~A2S@4?x_E%j+HL;+X5VzcaC0xStx0<2_u zP$*Xe3|ItL-TnQr^bew^f6&_Y4iI1o$Qm3O;r{896e?s62ywajWMD=$V8qnj=Bz?s=WO8c?k|(HyC4sjoG4OsHl&M)0O6X>tx-kM2t# zApuMJt|o3xaH$2e!Gh$t6wG^jK3@38XEFW1K82V5-`6nzK3mv4;DGrL*kb-ewjvcs zzA6f;P4+uGeEm=J@cBP{g)jekE(6u7_t#+C(j7Pul7wT2kK=OvW%jW3j|^aFl>U3^ z;bR6IMV+GWCV@vjM|mt;IZn?(_NkTUWvf2N=l=zBIy*bR+qiM#C-lxHz>*=~=`uYi zTNPaWtYG~cfJ*(*pM)!V@bZr_6|fxMo4Y?AHd)D-pRy10k`pi|c`v>^um_(f#^bYn zarkIo3_jQ!jrZasFgq?3Z^Z=TjmTYiEo2*B4%&hjcLw0a9RUno&u#I>EPqct;;{zv zHv1zqb~m;~M#DEW4C}Vb|D}n z9NQve5SFkXu?JJIKQjmEMMqF@`YcK>Uc#A{R#bL$qOQGzD`#Ibo6$iY6)Jr&G{k^F zDi#A7K^Q4wBa=lYjS4`p5nBxz1QDZRH6Nw*dT!rhgF1m2DQcF93G{vcE&9Iu7L=}| z^c}$+LtWnhD`5Jbeop&!8oF`0={mZ{#`&|9s%+PpQGKofCo@l?ASw@8J5rIgD-9LL zt5LN3Ffw+|oXR={0w=p6E|7C>c4plgA=!S zbMgi%0H_y$MP_$Wv@R2DsentQ4MocEicx{CE;B<2^-8Gf zW1yo|s1ycO82kD`!7B&*`q9-t0J9S0zoPV@Wnj=6Jp)7N9UNj6tAA(+BjaPZa`h1@bsUAXXCXlp?_GFjdjiFI6vrncUmTa@ zA4f^v36#+GI)_i7B=-cOJPsnjE(Tj&;;@wfi`qq^Ptdj1Sp)-^b1VW0x~#w@l&#Iq zQ4C)qy*Qap6lq2Bbw#tfMP_gZUt6^?wt3n1!XXp&=e4f#15lgARa?lmUv zB|axVE3Q2WRvIp9Dr#Rz4;Niq&ZCwfM*6NsCr0rn`~YL8330)D@yUyy;HAHtg@uoN zj-4O*z-^iv=G|vInF@S_{8dh{dB7fD{nI>r`gdR8i(h>On$zU%lR6Tt?yvk1vQL=1;grd9KNwrEoJ2{7rWuIDk{?2hZM~=&Ra$L4# zjMwY+-~0OdE~FQ}i;K(ONCiv2)9~+qYw# z|7I-n^2QPmPq=)u9!{&*z<&8^*soXxyVc*o_JudF@V@)uIM)U)8$7W1!_TqoQcP2p zN1&B|1P848C;%qYZ?fcoRD?KnN#H@yCexZ@W2}e~bdm2$wh}lP_Qu5OH`;?yXYNI7 zO9wi%CTL9-T)nErjZPz%e`sxP=Y7rcBXV&p{RGY(zKDj(792}C1_C(Cgn%}AZFMWb zMUKg1bxY^uv7DzKljrVi?*yZ%=Osu{EBch$6a72F!c2?Xfa^*_rs(>RoB2E%mahyR>CqU`j&wq$dHi5X+nCIz5O_O>>_e9 zj^Ho>RGxq=(Wecb?;R4R7_Rb;F8jC1LppE0Y3ZtukiUleu;%o*l|(Mkac0mPRPdj6Bp3Z(!xq#cV9Pp z2YS)l-^)HKQ6o$M5Irk3=*Z_utpqPwSzdt9WSUQ$S5^rs&qU0*w`pCTqi4l^RmxD_ zS3QU3>Gk?Q`1<>Kw)=zP zg{?k#KF|kG`*~vaW^aV=-;bDshY+5)AHjPQurq!Sw#CI`b94;+!z1An5{6Ad!SLL< z6YI8Y#oB<)Sn1~vcW)mo_1FZr4IXgy_J-rMXR+WHzktodPr_!-Ld^Na|AVjp=D%V7 z0z1ro>wV1m?PHkx=KGj8-yRE>xMP8h6YN&5g~I{|IKTcLmaJThmA(O3AGjUfJ43KN zDh^?L6A_=9j)Qpx$T@xzM+nBMYf;|Zg4*lXdFvB`u^aSq>+R!e>jYd@Lpb@46dx0* zMdU*gB?&}&jbMzRg?=pj)0%umS9W3QMWXg;#^Xbvy7LQ2t-7WNf~)Iye&PQQhsbZ$MgVmM$F5LZ=JxpIb{ubS$BFh1Iq0|@C*?TR z-T?|JE!fU2r3NWTg%!tV__&?DSp-<*(PGdN(2^mFVJcU;CP9^eE2-VOr5HPl%CRw{2s+DT1T2kX1&aWS zg8++RD*HAy zEjngzmr)Eu7J-(pQ7nAv+&ESWlUVpsn8w0ihAV<9e*z|gCmEm!un3~KHBW%Ac>??> zEE0Q;Y1N^hMFOurq+>p}On|>-A_A-u;ct}ye`|^)_*#VE`0-;500L|XT*S*+sXEb% zo5m1m^&caRlV0{TMx^fOnC9a9WFMBeR{)au3>x#GKKi_qRFL#cZ)JD7M}U27&UYZhQ0MU7JsJ?_2K{|=!YTx$6ziJYWbl#raeCsKMb19MLiv+ zIw8z80-H0pprLvfjvqVDtNf_YDpj$++}_3t6|GD>f9^a-e~_Vb@!Uu;>T@m|)9E_( z6Hp20663f^zQU+4#wZQ&;(3aB=w5NZc+ND2LslKdbpkAZe}7W}SktFZf0Q6gWTTYt z`+n&`VuHW^{V$(D4_GO^S4yx_!j<@=&}YtCVmNtjdJ>jw%)!D{X;`>24U1N#V^K~T z7G|YjVOBEcWhCLpv;@pZj>VM3NPHU;it!OTNx{ zuVS;Z5tWgN(9~1}B_%_fm;_Z^Jp7}g;S&)FkKj4M;@(ZWTgmLSW^2ew{5tZG^M z`oU!QS6KSkb1-<~MHs&HCiDmV0|x(m9ZRRo#Nt7(W5IyOvGAeCvG~&wSg1Dz^B#E` z^FJPe`Jax$oWDJRc@w8$zKtE`EjGmbr6!nXVTHNomY8R2k9i9WF#qk3u;hn1Fk0pc z^JT8Eb@POazY3n(V5p+v5So~R_?2srwJ8@Hw(mq?Wi?6~8d1If02)u6MDyu0IP}wb zHZh;-=)hU3Krd=@(aJnI4XIR%`Y1*OUP@>p__%o+mv8@!%hcYw&49saNd=fNpxo@; zH;l`5)}QY9JI zdjabH|<9XRZr@V6e|TxFk01XKiAC$F?iAwyLUToGWA*Q%p~3++-`kfY-&*JGoN&(BfFDZ%qs zukpeNS{%XttDb(zkJZ}I$t4?Tbzy6Jr?kqD>t%I-_9$$<+|K(H(q4rZu3W{%D^%^h z6K!&IQo8rj6_ga$vi~YSm-Y*k;Yw}`WQB^=Dg|KmDptiPl;MfhD_NoH0V(->Yi=ou za!Wz02Dj!?(6JQTa!av2zYN>9lp@M43;u?2kW?#Dt7IjMz{(cpDrAkkJ@X zDuTv|`RIF7i33`dM_}Y??S}VX8HyJldI_IC_Bm#~F&9fdSc-*j8{o&m^D*<4*;q7G z9}d%(A<{h>c`NhLw5thc&YqEqd0xJRi)|Ni@sd=Sl!1z1=v;4MPw_j%vl1{RK!%== z2r)*$618+q%pt}J*b>*p809!ImuTslGQ?b>71zYGk`*i?dS{Cip?Ht?f6psn>o1f0 z|B|fa+xq~Pc)9rj6}>#PsEJ01bm+s zj~OX(_&zBX(~_bvH9i89VnU%88H5R;8jK58fl57mrSr!~l@CVvxx+U(2`Q`BB04Jv z(V1C2DppWp5;XA%2#AS=UnHqmVekkE#R{Dct{M%N1q8y;*B|yizOeQ7fvrjn^Up`a z^tJb4{MvgkeB?1KeQOw&zBLraBfo~hz*k}T<3bp`^&t%2{}fB!{|t*B9SDQb-(bmy zqjcY1#&BHjh85ai`0K)<4GKqWQX0}W zY{uGcJCIveiR}%$QPF$=b%&2&&+!vzIeivK&bM+Zh+ev418XWG%I0<18>NIU0WhME z&#BmEAJs|;R|HtSAy(3HpR5Q`Jt$FdQyl-H6$=YwaO%BIpQWrZ)fcS#LX;S%Y~}CD zb4YWMNuB5XgF&6ts@{53%2Z&xfGN=`d{%wI>SqN^N$S)efQtN81X%=CbWDns90XU? zN2%q*mr1Q^?+aFaRI3hFtWLGJOKO!2R0LJ0JFZG#rGO~{s-Lb(Ky|LCl{WAuxat9{ z&g;DC^o7oAtZ0&|Nhv|v&-2o?8&YcU`VCwbaia_EH*Vm{^{yV}iWICKPZpWqd6nUH zTl=~R4a!XONwE~$T>*ds+9uc^-61(f>7s7sBMxFU@ogttVT(S6oVAOlnhh^Q<6$0!Bqf3mI#6> zYZ&LwE-Rk3KSSS2W4?jnWAu*E z34oxvL?6vV=e!YgztRmfMwvn+-xxs<0Z{4Aa#$H!rWAwadmW3rdoUJXVGsJ&?CO9=%aoS)F++` zjT7hn$BHrZ8^yQ>%|X|dW5hh-e(_ys4E3Fp!LR>y0aZL+20j8TA0MA3^v)*rs=o(I z30va*uTZjNO!%w$e|Z9Z;EITq9;_0s1X$4@g=9q{VEQA`hs|7MFnvyXA{MUC!n~Xm z%*{#0Y%;m0Ct+rK0%mZEFcwpjqw!rr1oYx04;G~e$A+pgHbjN7!77Xo4#YPh8jzAT zRpo=I>}({jUW?cq39uqb#Y#yq!;5s5Nj7q;z2b9DV&@ zuhqfoi!m^NYZxqN&WGu%Lty^HJQ%(FHcUo;1H*x@z;yOP7=1JXh97?M8L;el#9AisqA&k^k6*OE^Vop^mFuQJz#WP64vobxTsYNZIKZ zLj7VTsQY%0qNRi*p%MuQ``@&^N|ThrQ=YS;CQ2x&ZXA*)t$DzKviCn*$a z6~WZ$c0~|eUG2nKf~by8DHI!>pQr7V$Qwvd)p-rAw1Spe0;+2i*EtBNXb(@xZ*>E0 z0;mX{`bEbL$<%(8Qi6);?CQcbj&5|{zRkr)%S!67nX0Pyr2FJ_9s^Vfw&s;$8!1c$ z<=9>*#g4)XY%i<;wL6L`xut763d*HEzE+MM`4nZ?o>z(;6uEMnSB4#VqQ8XuOSe{F zOJ)(Y7KxlDWFMAEJgZp@TBg!58{Y*~$x4<`vG^K$vt(t9{8_S!#jPPJT2c{H0bJb5 zel4M7`BOU3Fa{nA!jPufgtm(vxcB>Ss4HnkfJr<&7e~V1G#>sY5>#tqCQNHwt})r#OM1u9apY*V1N zPlu0rIF24U!Y^wEDcLAaFJ^`vxwaLhspy=6slPXi3yDhLKx34^L?FO@aKOBeX}3cwMq1T2a)9|Kb_OwqXhW5jv?R)7$-%IFzK zN>)FZqH*H7xJNuM(TaZMIOR1u7W0U)itG2iyu9YqJ6og&m5`-;-~R^!QRXow)6C1 z>*@|`V@p_@Si)@Zd$5?R57YNPhS7k>v2?&cVEpdKFrWM*mOl9s3}1K^CgY}H>1*%7 zMBfO8gNMNIg*RaE!s{?3*m~(L=s)`sjK)oY!Aoyq>DY}-^>;i)sbFg^8BQO{>4n~107|zpYfLrqHOIZBS z6VTV227~EyuxP*l%o{KO^Iv@z3k*$JC7WkqjkyaAF?akF%>8~Y7A#zfg{D?8v~_}! zy)!Ia++pwO1D5~|d_p6jiHS!L>I+rMG+!@7DZNvDk0mAQ4?xvl ztx_mgH}3w*u=UfmP8_{*rPp88aTO=!IMvaKQyo`1B$cX@y;^6kUgf_7sgy#g{7Hr? z38)CFM95G@V8uXn4HvInW01N;?R7G+-(Ukf8`-a4{{v7-fJKUx6y&oKVAXj;@?43Q z{8!g+bm7*|KjZMBrlLR001BWNkl5qvz4XLP zOdmfJPY)P~e?IdPzW;OvycYT*Rh@wyn|I(q%RyXfZ^N~l*U)*RQ!45yD@_bj4^Vvs zun5@dg{j`uAbk%S*ME%Yr|&I}mGjZDNFzRIOs@*nH+4uWH^n?O@1F(F-|sqojxywX z?=N4zd>UbZ5J>2~PLTCy>J`1;|4I@5IXL~dD}BJKzjCF7DHO7RfFghr( z2e3wK{28={`nbS0CIYEz*CKw^YQ$!*M092*BGWSvl9Gbpq$KDP6QPPvnDDvbfQMlG#>X&QXoRINzYXKD6WMdMbkN%{(VGIp z7hZ$$r=wx?)=(I|_bHYR`3Q#3J`clzgJ3Y=F&Hg0fT@QkOkGyM#MKQ(UyOnNfB{(g z=7%u#@`j0lDGVNe5hhdT!0^R4U^HwbD_4e(JO|^~--qGfpM=r)Nj!&{mlsUtE`h;- zC!zn)lQ4L4APgo*xF-}wLKPE+F+rD4Hj5fbGz8u4hA-kFm_xH zQzsW#t?-0{w?D&}S4cSf#=??mfx#+dY}ky|`9;`VT!wAcWaQtAx&sHX=h$(yoH@%| zx{%@e+|_IB6}v>r(ygD-P5^f24m$4qf(~k_z~&t?;R`5}Qg*#+mjEyUQGb@w6NNmb z>s%?lr?_YDHL2LAsG=_FQAvuFQkkL^eh*6Z^+MHMT)T4@*AxIHlqpX8QUBe$Ac*?2 z==${@Z;^AnqXQ>crINwwY9~&~ar$bfl>Q^2l7rHIN~jWGb&i0FN{R@@N~l!|up-4u zf~#v1P!U|wiol-eO$7?oN!BsbI(zEZp4pOf+t=o$HEn>x> zWNK$KJAu}gosxlFF0~-7`cps_0T%hHa%wNsAb{4x|5l%u4e z9L4$NC@rkusMt}Byp=l;YMTm;aXhr92^jZAk>zL z3|WC@36inhMDk`8Z?0#+I=t^Rbatr{U|C6kMPL1c{Ld8Hutt~|g zRCaRMruLj`95XmY*s^~=S}$B+*b(4EFJyW_(>aBBi3=bSpg^q>w&*@FM!L7xW7P{$ zy<;R5i(sp_Ps~RO51Gp;jkmXPFA^h@F>lHOeDvnWm^kJ;Xxwxt-BO0*hfbiaqYc+? zUBmU8*ZUOp6oAsdrSB>FdSR+J-6wvpvQ>_gfu#@hi21}le>O&Zwzy8eUFs8U@Av2( zBf*edvp(>0H4#bxfq+V(Lx&2DxhmZZ;Fw|E7Tgesx=_cat;V&1H7Z3AA^>?Mgu#) z0N4fu!Ztt!TW??3xOu{Qg&QnqFMy?`9jvVEU@?3wtn8d%vA__Lr*>{SjtAE`aefgJI>k0wzO; z!{p5m`74?c(iS!Mdk&{=5O*<)7S&Op9J*a6pfIY`f;K12)3}aN{;#}u7 zR>jD4&#NI7>9@{1ce$hi0~xK9B*jdT;(O5XA0Uehe)eup^B{_*=UcY+}H-4q~6$DLmOl{X)DY}2X2MX#F$K3vMmwz+C6@k>Lt5ePAmQ(c$5R5DC4R9(N$N)@YB3{#|7QR?qHu8^OqC%X8! z{RXvNpjCl%OdutKfQk(40<5mz=w`1KwKpibx^e5y&p3MQ6gF+xhTKi^3c@YL$Rp5_ zVT<5ON*nG(VJ@u{lwpgH39?F1lq1xp4h4W$T4*%E0(V`)_(!zmL1W-ox+s z7xva3hSoY6UQ417Xr71wS;gA9v5o=jXv5tdn@J zLWU_@X{#IpEVX?qG!CiI*rhUPY3$S3e?@@hV-|{*eft?U=p{^WAis?Jyr?Bu>NTp1 zG1MPoN@eFBzfJOzyrsX@_472JF3TAh|YgZAgUe7Oy~>-Hc$E(^=7T(Eeq0o+~P zQBY98rt|Jw-3(Ne_M?rer7dTqVxt0bL@R(q2}%90i80hK#!)N!l`V}?1}Ri@oqiLw zJa_*w{Zu9~pK>0)PoAgGTnZpmeop^6#5M73>3P#J&3o+Fv0u#0%tq3?p5EmTQn5t# zN}*f{R(LQ;{M9Qx0RVrakcpIA<--(kB|KIHPI`KJR4e0gIi3<=HDkt%=jP0r^8$sQ zp59Z_jEszDuS~_9m8lF@KazTtnTYSx6EHnB4y0ZYU` zJv>74WCaDoT^Gb^mRMm(-Yhb~3xAe_uOB%417IHzC;=C#Tv{z`0s>*41k}I^a=Q&0GMh z1qLvG{6$z!odfe%hrsf!p|JJvfsIPd-^c8+=V4=H0b8Fy*todEPOX8hN&`CrM{i#S zNIM@t*n0WG&dZluKKAy5y^lW}`~qN4ivoH=I_G=6d|~bB18YxjSb2Ccpb@AMoSD10 z!_37ErUYrrq@X^6Fl%>j{*F$*fpGRy!(AH+?~n)tM#LdFAqA1CSx8>J9+?~Suznk* zD#$-{SUELfERWexJ=)Q@Yw{N5K+6`8( zHmoUPh@#RA1XrR&gJ>DBa*I(Q2d^F^z*2-TxKq0|PplFY3RbZMS)^o93bB9W3r|)l zcIKC&d|L%l0#-BhP)UX!c%oxP5Ip_axdc{}E|kM4meYuwN|ZfWfdpD2b!a3hTz>j7 z@Ldvx%_+sK@cj$_V#VsWfB%cUS82M9Xg$-$a79Yi@BjWCduxwCXPW|VNQa}~$J4l`?hN@&}?8sjw?L)|LB>;;c%OOpIEr(R-mSw`r zBos}%_OQ{LUc^FW5-)lsAc>c^=o2q@aV}ts`u_k?4*)9xTV!e{Q#_rMzv@c+71USN zBSsg8<<_onad1UgNEix=3UKhy0R|WWKt07gDGBUAYty8Hjie zWyu8v+|YP2hX5cNPbtv;bBWIot+-D)hqy*9eQ$32eKz$eKTC`e^U=8&BgRpy3>tgz z;K5r)Mn><`yIxp)WXn%asRp_xxIoDYe{s}*e*zDLD|(<0f-9j|O_?&~$yu{zJw0jC zq-P1NrcRyu{PgM5|M~s*-@i;j=aUT#T<5G#$Lv+owm7skjsUD_RK-1o{8th9mH;a@ z6yu}Fe?>L0R2UURRowkCN-F~v6&+PeHL*VMae+xxD6b@pU%3*o+1adOQJOF;RZ_92 z=%^+k5o&o=p?_2i{34>be1lkB=oS?TZslS&H*trm_ZR zV$boD^0r8qajKml}k^&2?NFm;Vfa1dBAP+hym z5Gj@9xQ27rC8&~M>KadbIv@8NcIq{POFs`0Zc6VPD-51lgs5 zlq!GYcx+o&&46{{$a#b~XTq0^_*Rqxl+`POE1P6!7_d?pt_ZLMWN95zp=GF&z)I_w z)^i@TEDJtn;b?AZ=4$Q)O5)`$;79qwrt1Qts9yP*_xmnwlEy-Mbe@jvV1R#eCvB6GRB063`^zLpeq{ zj*cm4u0I$4l4?a@ z_1$;hy+B~~-FM#&nml>(t5c>-d41BPNpFlFKmL_(^%wiiUY&t?t5PvLI|<~!`XMtB z)6*zD7>6k-(fBS&-Xezzj7A0H>j*8U2N|#!vivZT3XN*0s=HJR>$3n4=&5`Wo3j!L z2s^Azv*8><_90OF4 z`U2tP?FT2{0N9&Y!+z+Ou={v4Y#)6Q4u)oM(gndOKn1(O@5Aoh&)`fD^7+@Wdwwt+ z=NrK8xxug>^$qOa{seX}ya}f{OJMWF3vd`R431w<#Bvu;EZ6GbtPR3)OMBS=<2l$5 z_y-&wc^1ni&xX^`;c$HNX)GT<1O3P8cs}Xhk z_G8b%qi8vC21lsI*o8|t-6o|csi-Thj=cKIFStfZ)&2WDLC_??iI4ByXBDbPm7??e zzoDCfN`Mr>)F0#aZ@=-1Lti z1%Z{Km4K=n9XBWls=7Hysgl5|O9CkwswAcACa!l&aid!TtFG>wys>lFP0`-Mt=m7N ztE&r@R?eyP*$wSm!&4i5}?&{9@o>aQYcmgV0}SL zQnLuGB+!ytfBk6q8N{G=dlSRaz2APrz2EMmX4_t_bJ;^L+HSkW=?qe7(gVh;<4Cxb#TJY^F+ z`?CnPM;Ew+gz#r9H@1YcjU$%F#9*136&wbCh-DLJ!Ew+VaCqop*#G?> zaQ4}%H!odY@F>wq&v{G_KNGM#b9N_fW3viu27j8DraI<#8^4EvJ`H`ow zV$y85JU19F&%FlM$DW7l8}Gtxz7bqseh;os48n@HK7sp$>F^l!Exi2H@QRFvmxmv` zy#nDC6$_u(ICw|Kz?=4gBvp`}XJj<|$nQocE9(cu#KY(P5%3v476EA) z2#8JKzeiwf0s`acm?9CXSo%99K$DOJbz(9!iOJ9@aXJf8o}>dmvC^z`91oW2KPbidOpd0#y%Kaba17 zLM5wH1XT=HU0t|LA<}$ZT_8nDitawG1XQF_DbjyEsXtk*k`*d~DpIJpy?GNi^W@SxD{K-d!UQEsbTL6?v_c{wr~;1TFzylDb7O6$>?0 zf>(eQfs_PY0pVP?xVVB4{zJ!V-O9MX*^VB2_VSwmLcoh z={EfKuirV1NUC76dIP-lqfod?0<5zqFCxM<2fhS>1XWg~T*+`nCVtygsO{3Ap&-bT zl`B%OShbR&O6Qag4#zZvEYF6gQ79T~cX5hPK$8FfIu~F?FKhBji80cPo%;HYp%=X9 zqZhq&A5~rNEe=ZHb6&1HRaH_Atw#`SjqKs=;fu(~NW{j)A}Kiut5>f^VPPT4%gfQw z(17OVW>&ALg1eZzKTObfCrA=drGyM|Os#Sp9aCS=Tr#YQdBk<)7#d6cA_SOGe}Bjk zW2hCM@jn?O#!BD2_p`+JpgF`m(wJTt6yHOPq37My)YP$f@#44WeNQ5a{Lb&Qicp9z ze*sosp8T(1^`Dfh{%}QLMX5i6D?L5EmnTk~I9Lf*W5kj!^Vsm^U0VIBR=`Y z+<5hzO)K$Zb_!<7>A@c|5?H~a?QtfN!JPps4C81ILIx}i1J)?vzoLzvwUUBG?Fh9u z?@Kt$cLnALtC6}|tR~Ds3>6*C$V6CLIzp3E5uBXNkflvbggPM+fwCWqYGe@vP$`Ew za~8wJFA$b?%V6i~&I${qz3g4xS-|!1VqL#AO$9-LY0^db#f|iTck-z z%w~%;X3mh)T^s80|Bek;VH!MrW@?+^W@x zU%eK|>oy`|b1t&;3$bR~PHfs)jD!sv5Vvsy(hCc)dgo4Tsj5U_Lp`=PHlldXZj|lW zgYwi@h24AhVqeQav>ZN)!za(+_}OzfeW?w!#~;<2xA!2;H#rSRDL_j9^`!p#K-EnUSTS7Pk^t+b+!Acv zx_uirZ{9+6Wh2(FD?)DWPUQ9htX?%sqzZ-iij40JSaQlx^iwN*SwhJo$f6+SiqeC< zpe4hVP_U?#4e!N8W!SoLC!(Cw5oj3OV{RwKN`Mvv7Nr4Y(|b=Vt6O}|>Xw`?B*-GT zV!)D)DK*%ua7n2`>Z6hk1X$IDd+_`3|3Z1*E-pCgs~>|vd8;0^Spq|r$}EwM?Qz~~ zaQ4JSP8SkjQ87|){b=N8SFnP0?(`)@x#hr*euH(26gH_0Sp-*PU{~8wOMsQeDwdX7 z$290fIHgH&MUX{+<(vg?lW;WE@8Kew{F0XU86-%em$dXUmq3bM)&vREN7uRVXU`aE zdmI|W^AKn#E3yA{mQ^HD%BY4_$<|T?xT;~PZv!t6Z^Xn#vtkvWkbv~`bgW&wmf@c4Q|0_yAQ&n{T7 z;AN4i68V@99{uT8Uw!q(mtTH4a^z>9eK}^SLBZrTX_%Usz%hlCtMoWb zNhNc8G`>rY#J7nNm=G6=@i9_*@T)L2Mg`0MD>k^356cfDDAc56d1Hji8(*lrFxuZ8 z(b+jjT)hS{**S<7HL=nZUM$)0&Z)vU+4RopN(^tUGj+-g*ezdyAEwQQ@TsLB001BW zNkl0I!$df#3Y4@P73@_%Aep&)^~O`(`?P-}w}N zUwsR|PsYG^;A`-Iyffy69ZLNZa#7f3bCeW8`keA=HjV&<&|6_V%?4%NZ7myX@v#I-nI>Eii@$n zq!gRV%8*-Cg@Wp86xP;ad&4di6KL&iLgl`_sM)sB!W4E0BkqVd>q zuE@Xt)M*^~=^T!=UchnMM7*sHXD?sIx%PInUhS01EYM28t{b>Q@YF4ZNcDAe-;~mR z-QDQ8c@tNu6=}fkZa(iMpz0UbZ;BKkDOChg0;ohQ!`01OY|^Gu47U_Pb(~tyU&5Bn zJCIAUr9WWFs|YD=NGcY4uOu&44`2ziG+k9xRDTzxyJ6@?5QgqhI;Crd5TvE0r5gl> zmJmUtrD5pq?i>)1PU(WSP#5ieYHIp@1L^)gOu}I zeM+Pf+#Ay=Pzsa`xI5?1QO~5j?s0F+k-l&r+&5;3!^7=AVCU|HVfQY&ZCfPu7arh!OdI zgGI0jU5=1Yx#7?up4XQ85mu5~=1G_wpspXemKDMw^es?h$29+(n3x!S{ioQSf-d5L z{Z7{cqKO#j=H(&@O89V&JKrPC3VO~XKL2~{c*iTEWbRJ=B*lPxhMd@A+g)%@_lE$* zmZtX~!aGl(G3+0weC|7k`0lA8IbmHwWO*s&ZnZO+zk}L#>kI@FaQN?FoF2);SbkSl5g5wMcWp~pS+6lIqz_njt}d|tIxsUExX4%s2;|oq zFiAMFT6#d4J|L(Q`h|~@+CQMqihKapa zS$N?$A{Gj)4OmnUsgrc{BmPt>8a8-fE~JuKnc8!R=%%JwdiYYgbB-n(7{#<7s*>p& zSU3U?Eh6%p^N@?;+q7rq`@11c!P1AfXG2wgA7_64id)t2pK10NrS?AQJ#Cc`0-#Sz z1OH}TU(ofWvP#ZFL-+=Gyr_yC^YF;6B#%CdhT7G7k%u;~F%Mb!$iXeY3}*r#pIywI zl2hw@_vrRelKfBi95rX!WKl#h4rmbSNFRq)aua>Lc4eU;8)|<5@Bpiu$BM=-2?_j7g7{)#fpYwcOS6tTCB*d{% zgEj&Es!8T-fm~s&h%*vZT(+CjNR@Ydg4l4%dM=W@#-voPu!^}M;~Iflq<0T9!y3Fc z-L0;tIF^zIbzwyfZz2~&(gKa=Nv!R6|Ku)6(a{q8o|Y)|u*bxP3%nS%>>ia#(!-E5 zb>EQ3fy$EtZl5 zHH|IJ_-DcbtI1pW{K|#VGFiM=iZ%w0j7oIhV-Wr1AdvqlUUodSC7MPMJBD+S*;kE6 zchN;*`3JYkdOLcdw#`1s9I^?m;8^C7hhWQtI3V|+G!uD8M`t}fWxq97wP6iI%MzfV@>e7l#r-! zp077cxSmI#Wag2>j5>~im+%d#4`P19TmzqAanZtC4Hq_)f?yCnyHaZFY5%7gkyGrM=$Y6$)?Y*8WMNmOopV+HXLTsU5e#edAK zanmAozde{$USYfiYf|{tJWnikF_#3o zhe>4I$nSKIiW$&@!wvtC@q)56Qo@RmxOCzAct#@?#;kW0@)e5?ca($7W>C1qtJb8A zwgeDYwg!%8qrHH25kC;p{7qS<((`#!6_@<36r1EkFe~G3Z@k$HRx?ua#3j6_zeAywcxZydIxZ0c-A zC&UA0s!)iD3GL^Ul;o6@aE&aHJnc{AhldWT_HGXFqM{-~a~+4zxpGJeBywoO(NJvD ze66LMoPvKQKsf14e@%I4^!fSf^?}sxuUXaZcRokbqSZUHqH44@Tp<*m&mRRyj;#?~!p; zj8Nl5#jYCm7Pjb(XnNBzJ2&^3L{@RJJ>=mBT$5Rp6X^IY`-R1oI z_V2QrA}%NR{YGu*6dqo{Ud#U0cRO?6y-9Kp>AYWJSL<1c=f&EIepujp~sirV$+G{`=`SeaXcX9N&&A)*!D#D3>^p@Um6%ni1m%E(yS*u6FhGwyIvUd z%uZ4r7Am0i4}|BAz6^s7DRxf|gzvjw<3b>C5($O9myr75Gk0v9j3c!>-?6FZe zM?{s@Y7C{=P{o}cG#+_Ahvqz4BfGg_Sx539J1o7fiqVP?2@Ucf@uZ@fE-JbboVIz- z#O}`;CRhiw0Y4=j_@F%=5s{FGo1>~l+}RPmwqlaoqh#!#z-(2-s~`OP;~>XQ?OJ#QIY-6)w@m^M3T3QQ3Z)J|aOI`uwPPrQ;(8CUIus7(Z#oi{#>@ zKZ*NEB5xUtS|W$nTI2PC%3+O`*9#|xZ4emwM@?xXw23%qPj|H9fydOo+hSpFq;s2(Y zXkU9$MiDR!ZpufwMQnA;(yp!d{_d9dzu9o@<2hbi53AgtWV-D|cXH{9`|N0-6L11n zl~}2{8nrpLbL_i`rKtG}{L|TaU||9G=f^ydBE?%B&rK8<&pVl(qFDCkd04wz1-~HJ2-^5~4D0nxX8VKsW%!UweMP0WiH9XflB6H5xdw9Fn z2Ree+`vQOMgFf8;^J2ISZW{s(2S1)j9Uk6T{C!|{T58Xhb-ZFz1)cV%Pw1*9kyV;N zD^-(n)bdJ#2Y@aYt9dzEq=4a@Ea@+nj-Am0PGiM?af^O_*Lr)9YUwYF{c(5*NPNKy zLPiBs^PK$AMT#gGhq;I|i!P?WsyL)Aya3+*VH~QYHz8l#P#9v}3Qdw*iv-{3%X~qz zM41(G$Ht`Q1Y%xeI21iUb?rgSS=;vNQy6m>+F5Luqe}6Qz~WOg--VU6Iy%oaxB4dqN`xKH=GCdmC&^=A_M|5O0t}37 zp!s!LoY>rkd6Fh%ijmYl%C%ms$H#9Ee46l98 zdu4e$n|C5@zZ*RqlWJv1Ump|@Xh}Uc59w*WF7iKI+9%2J1CSMUJ+SFdPM`G3?PWyG z{<|#klfAbXxEEFN9BZZ@VsBTo&-0pa`xg1SKzGw~ROFj^!zOhJjuvn1I7 z@aF8D{0QIVds+zibje{Dzg^42P36f=S)&3i@^+AzKlB;8yx!ZPc?urLzG z8Z(NAS2#tyEMj67$KPDyB<}o$yXisBA_s~%fH)F~>oM@VaYWNgqVtC`MPK14jQ61u z{~LT29eiN)BI^~4{eep1IB*8jDA-y(GdvC%HA(Uyuwv9C3V}cv>NSHLo6fp1F7-fP z%ms`7sg5NXybBG3fyp3?=8hWN<&amyuM|sVjB3j4mSf8TCrXyq!o_AOY^ir^G<%G?< znF2BQEwY3hmw_tOsN{Mn27AQ;L!*@tugACW-#geljo;(?TA~rRRm?H@psk!JCcXE=9^4g!WJZTX$ z^tcgP_$EFg)A+E1T_GMsOEdYsH+^is=CoVZdMAy=>V%+>b(dK(fKI@xyhg-b(p?W1 z?h%OX(1^${_2VTFW$5`zYU|q2LAO&BlQ^XyXGuOgYrrDtFX;|-?pH&*y!>$8X8d&u& zkP5)(c<XTcO5 zpJ-D8i;qF}t+ceVBGw8jpVzN2ZotVBb=j&ncXQ+KgE%{Lf3eP;-vF!=vTNlm%83Hz z*wNURcHHk6=E*3#tHvHXEmoOs8URnH!; z?b<2lQ1xI_kawhvij{XOGyL%_p7$hGs|Wqrue`OB%v>|jNJljR@~#`v8?I;>M^gKY zQt=PP@J~qU8s}&eST8(3gk93VW7YFCMWP_X)|9tmyYX&&x`N;HU6a;yyFk}T||-I$>*AT(OsM) z;{OoylIy$QADy-#hQRszksEX>@%aAU~?Hx}GFrz!`QpjPFawdN(~FhnzySgTGFiPTik23K09 zG%hf)V@Jb64YaY^OZW70$)Pust`|2^!PaDZq?8&@^kxC);+?c2Fj@PX@q0s|btFHt zLyJEz3ocGFVhqKU8P z;TUi|@+Cvsj3KkoT2s81S&>6pw-{L00{elJ#5@;7sKUysCNn^k#@s_DOIA5*mGK#R z5UEYPkg6Z?W42BQEo)-LRWmtexPn%}`aO&LE?A+`IGla?%x%@LzhWgs3>;hIfKQ@Z zo75b{^0{{_sofo4SJYYdklCZ~^|O|BfF#JMT!iVUaw=KSnF$KfH%Bzp)f~2n*6cM* z)hzgliwFq`=qDFD#G;hpu$wA7Kr{gTyJ$63WqMo#UhRkiabj1fG%P1Br=ylg`(WWm zCFWiX>#U*Hl=%Xu45nMjdx1nC23Bes`0kDllkvV4> zSLl;5apiFFBag1?=Vjbsm$r!fQvxS@$;3P1fpdYF?#q!N*Y7*AHhycal=}ox{G1!- z4K&{dTP&8)2*rYruop+x&NDVKb6Oni@Z>iI&Cpj$$2QOVaKt9O!sq0?#c2F`5#u!U zACb?!X5@CMU>n`+3ZGsuN{Qgxk8mcZwUC!XKlCpn-ok^Nr9?ik_wU66VYcMPpG;UO zs;|hL)@E$em?#+2B#pj-Q`5?w@yyUnW(TJSR={v)H4aPDI=~!RHl9MPAR98kO{ccs zv**rm`;s|&lB$1afeTw=?gd5_y`f+-QXCl%F`C)vw)CkNyNiH^t4%sqrJ{f*Imfhd zp^Q~BUc4enefpbeLpFKts6j9~893JZF6#x{U2*SYS)$@$TA}fEF9a@+5k@z+n`^}( z_f0@nRt8kdrG`>zV-!Gp+N!EbydbopyMm5g*bkN&_#XBrpUpKlbt~>YY%S6 zY4OdPZ4ScGz-o6i&9K2C4XMKGNQ$%!@k1jE?y;{4l2+VLMjYNcu;PtsjsOL32-?X;yttUD@@;C(f)I zSt`d*^JpC5J@S5}Ke4Fs@{!7lq^QyO9Rd5JP zTS6XV%iWie?P8t+pWdklt)=jPXcby*-~UyHDPF6B4Kv#?Y+_1&2oIYfaeVp8X<%UB zF)^N20PL|v&;ItU{rKc0@Z|XT2^$KWUCgwwuwaF4u(!8IIx#-ZmX(pAPA6bJ9LFU8 zX`GtRy!#j#6=VElrRnUomDM(ShyQH?pO8@8@lu^_L}zDEL}%59h^hq5!i2_;sUM3q z`AsFfR1aoL^^Eruvaeb_Pg>=a&4SCTYA!hB_2zI0|K(N}PsH8{OK@-V9+z11wOgM^ z%&AO58g-htc>6Wod%uX5`?s6(`?Oopb?21zp^OI#wD+O z#Cw)vq9i5y^jpui&#{o=hgMejz>)M&t;XwmzgVnI-jzm>nus&BH4h6?cBuq`nX@BG zi^{-?xt0^io3MMqGH=zBo{#7iSb8fTVcGr>91F(L;0V(;_@_FLrrKDSDXEH;I<4b9 ztEr#+m;@Gcc`QEz?${e?rNAMurBb?LO{<|1y`Nq;Tpx2J6IcBSE!IbXl-M;j0a@DS z^yRf!z+Vi4sW<(bAz#HvBrug9SGIRzuEZdwtnQEquyM#ZG`qT_e_#}B^1~Qn8h+H^ z)vRNXNIn2FM+7i{2eZjqJ4O%&Q&-WB1!8drtoSd%bliajz-V`rSR|iI5 z{$gHQU*|x#uC4hfwqUSpV?N40C#PFyJ_-ex(=BwpEngRz3)qQNUIsQX*nclvXN2el zx0{;AzZ$o9yJbQyS3<4;1Fh}~W56txpALr@M70{*e3uLi>u4h|U#Mpv&j!V!*KHGv zixT5fykKDxpyO~8A6Dm4c(*{3>bsEJ@qaHsYDI5t8cognBPplX?$ob%*1Mm}Bxrr_ zD2FPv>wf~)>QpIzo97G?F%{vw|x zYm*PtqV%U;7y9fm`s$02VB4NjMSE+>SNMZ1m5LY#1<`BPIHGY?6lZ_p6{?Ra4aNmn zPjM?e_v)sy@eX~ia8CtQ4Q8?))dV5lJKZ~BHoB~ZORf-F{;OgUYd=Fvpnn~26*alh zpIj&AwexzCwhc?}=hF5Ux6^)`Z_;`C;wBQobjse}1_a(`zn`IhfmWKNfKZKmiL4=q zctCnL#?oZ&+rO7i%=g31U%U&7E-2M#@-FsK8tE&V5XzEn?|hiX;d!QO1GZX0qq+Sb za+@MmPy>}(ewq<&2URS^2Xa@%ZsYt@O8stFdaeKpyu@U{1)!Jz{c?1M$<6XIz@WJ| z6~~~$hFxtfvNm;+D&%b#Xh{ z@*)F#wM@*|_bvB^t=1f)K&raEy&b*64qdm#xGM-%#APXr?$yTtG=qBdC9eUx@Cxf( z;k#tN>zx?w>Yu>_n^SV|jVW2}*$CGAD^;RRXM%sG?mLU4kSn*&^e1Wn8FPk)upyR^ zP~|J}%C7Hc#R1$>Hyj%de`)WRFN3Nsjf1LP%%&#;Lz~XlqPHX0y8IJ|ZW*@!A{V;V~zR4(pkxM^)WVPZxR$01$dS(F)ABV+usiBr+*aIhf`%6$DSd-|8N zdp4lpZqNRdKGi0_vd(~u)CTbNRMuliH#jD_?rv;s$iJN)9As-2HpHh9amp+$Ek!Dq z4ab-`S?~H6;6?uDY&{qmS&cwe&59Y@^wXzLIzUEp1}Og4*4CQUR{Hs|;gpB|)-Bxq z!YIzkP=ozDL%@RkM_f)Q)m$I(F&$T}f&O@yQj~dIFuPp%OY?x?7wWX4*g^Eqlt&b> zY^IJ6{0qD?;oeqpy*;v&kpH$2GT`P`$_5hv^` zjdYw%Cq%$PbO+(LXWq307K96@OPnDNtMp5PUPw7-(jgj{Ed^(M00M?pDkoU3%vk-@ z%$0D{&DQ%Fcvvy4eIn^k;6L?!=sA|cZDSNd+v<+4%wsw@LnG?;w1@w#*$;n+_uasV znt|KlPpWV4p2R1=w?um&AY$HM0H@~ytKkezp(Sh2Ayl5_REX1@RlgiFF@n|bN~QUknbY77PYX#_gWehi*C9uuc-g%gS6kYgJ{^wI{$- zxz!{%>H5_l^#5CsV9p<<*h~_l2pA-KI+m&R7r;;pugZLL#5|&b-ROz;?4i||u}|0~*rC>^ zt80&pd9E7kYiH!J_RG~aB>Oe$?!7nWV@jWu$w?#yk~h94_*4t^Cul0Rn^Aw36G$RS zkBPGvA12_Hk=4gmB}q58A9PQps2FTjJi73`XLB;GqkFY@*86?p(bat4f_BN9*0D~6 zX`-64WjmcYxYwOblSlcY9>V^$lbTg490uUoZ8=8zHKMDP8Y(*V&PGodQa4bIbB?L(#xCL%C&8>=Ipf==j@)ZV;#(O#`kAtko=eVaVYM`Cd!&4FLd|STM+e(@}vh zo8hN`9;<8!UmtOkSqHFxYqM-ilT}sl3#>KrTZIYN+eW;xbY8$#H*8dC6nk9;Vn>d3 zZScSSKr7*irC&9f^D2t-3vX=t%}SFCZgW{x6?xCcbeL`j$<0Q}%hx4$1y}g@SHn!M zDtAe@Z!)&Po1doc58MzEJAs$tCc-&=M+-79I&&}#?Stacm?mx=36fPyfDZ4}2uhVvy`Bn){*yttZiwfBzJPkU3hvo?ZyfUoAaCmzVFW zwdnga;pOh-zO5vDV_dua*%i^6pV#1bt=0V?llYI@{9>XYjJ2G~`dL-4XBLf1RJ19t zHeL3VvQYQ{05jRQNuv^K% z21nyBJf^b}UWcg*oq>;kZk$)%H@K{H!u5(ZZCd^OR^lGvCi98I5JMYB2ob5X>M(RKHh?u=a3UJjONY)0sE z^P6s(@PkOsMMmx}%KI?`92%F&WA;Mpy`HfpTuX!eC|(rF@Q6c1bsO<}&CGbDL>YCw z>@eaz7W0`YJUzAvGS&G@=M{JydKq`oHyA#(`5= z>m;>bHHQCKqE6R8h>D4>?fgQYPAZHWK(iwN%|0GC|6Fa_?&mlzR4uvz@XUkYaVi_N z?>8oo37N&_*FcHg7}ma^y~bNc)W_=P8b6>%HHTwMz{%e+l!L*^`Jyn-wW zk#Y8>A(aoZp;w(s%M64^St^@=(#nUlwEzC0!ZPrh`d+XZ%R6(oYhd^MK;!o4Ghj;F z;*U85KE)Z9F!CiV?$_T?hZIp_8}4HnLeMI}CM8=_daS*FP-@Fc%psiUMO+*R?dlJU zC5IrU@??Ulnp;-bjOSD%R_rK$LFb%`jxe(FEKE94rN^HV1f*!D=y z(vR-_qsujE7J6xehjZ4OE;$5$9JiruH;u8vpAfr07N6`0h`e%HH^1EllPOjy=Ic>^ z{x%1&vhosxPO!C3CC&yB9Lv~U=mRGBJdH{_xw&(9lW~T!ob%E@7d-5y3F*XtpI!mI>Zy|PzWc_}HEHf`LIiBxT zaJdweT(R8;xfRzUKTwb4*l1Ws$Z zB1xHu6&0kmgxiq54WHAp$-?*eqg#j5rU)0P4*eHXvwEeuc7=?vV_Gg4Qg+?++U=!~ zt>Ttuo@S*=zGV>-h`WanhWL)n%cMEuv?X?!7gE96h9Ewg-YiUW8x~255L$)vdSx{D*sryQ<&K*bzd{P9#!7OiHBsKHSPkFzu4()*#u=gdbt7 zX2rr>Bagec``{dT8?`Ij5H``pVpz1~Pr? z0pkW-ChbFA6+7>u{;ew~v4Xfb{=NaJRoWdeL%1}$^F4>pv)bAokxI>Hm{W`L-4_|d zPjq`~>*{E%Y;1%lmzVvRk=1$;8$IDHn0S;jzy>5?^X`zyzmKab}Y7v2$mlYri@Z?LCyWRCY-@#mkf(osYG|M*2X_owWO zVxN2KuA9daH;Q(?i-3u)@ArFy3NMSgzo3|tOdD=9e(!Q4O?O^pJAM=P1^!ROMONqD zfh$gHpx%Bn8m8I*&4?K58n-WEBL?e&iiL5kZ-mq$)FMN~9z%7pLjHczl$#1%s+|@) z=s{0chsx=F+E1NcStiqv5Sd*j&=6FeuU_M*8Zw{P_Y*wNaiht>2gqA_3GS}!<6MbA z41diWbWm9!EvST2UE1?PfWWks3r89oGE|~#swaQA=(06GktN3R@o<$i5F%IFS}cQL zt)YP%&vTiSRtT+x<^KFzLiyU{|2Mi{`?aJ?FK1Yxxh1CPxP*r1C~`Z^t9oL_LG3(PasJ1frm|lU~@8 zS|Jf?Dvx?dLme@|^x%Ig-HlLNnhnWAq17#-^#7#*D7Wu9j2Rw zYS$UhbAvju^e?4+CmPTj(NsW8dKEY!0EdaIU`)UQ+EzgHYg|t?f3f%e!5dK%RyRycew!PzKwe>}(#>q* zJXD)eX-Lk3?8uou@PRaB05#{!PRJX>m3B*a6(PWun3O3*(w%LOz=KtbXaZF0X%L(J8KUVMF zB9OBuytGZ3?oX4hL!+u{Pn3RT5mO#e1vJ^XbB6YZt5c?C+AHs=pQwX^Cx)ck6EgE= zk*WySk5K2|Bz-Oq;NC0t*%0Q0h`Fq{_tm|eay>e9b~5dvtJ!pOr8`adzTEL|UbB2P zRx?{-Raih^*}~cRtCYihNlj>IXd{piqvQMVt9cELvx<~WoiEp6U>xyH+@n?3B+u`< z38@^?{5L1$x{1J(&1u9GMRy?ow#*NnpD+9AmrV=1vz$ni2PRWue{vfp5Xk>6;J!1g zBM=TKQzC0e$5#u0HXR=wb@&_^8L3_K37>}igM)*F3qa~{#lkTO6SVU<{ibteaUmNp zKyJEJ)YQ0{A>JGSl#RLAcIx{ZK(%rJReD%RMNRz!pm^^ofja#C+vfN0-@7F# zi-1Eh3^0jPd^}t0C;`}B5%8$lugbSgtjo*GY7*Y3?ahIYjj=$&Ureo`z8>1>xbi`7 zk;jzq=GZyF;(+gJlz6gAs~uH-EkYybx@`&9>K|E3@^!E-Oij@YSt(=1P4rvjBJ1oomU7Pb25Ac4G}=sJ3Jau53vN2=Mq`02rGy^{ro{Cog+=Fzi$izh)K3L@K_57^8WO2KmJWtI@gmWfvpiUAsz7iHB; zYtz!rQ$;z(%`)hC<+Aaws`9>*Wr<&)5J;lG*ELG5;kx$7X$4>n6c)<;A&UZKp{7pV zB==a3Ak1XQt#?K5we4qicqfp*$HwAL|B_heDkZ`JB+UCJkPCapBZXK}v<4ksV#ob0 zCx5)%x_?|t_V~%VpI1fJ(putkfj|;%cIbQtmv#RhBMT3W_(co5Du>+t79=`5HNowN zApd{^{re>)mS0ljxJoY=M>(kYH94YbzJBug;)(q3&4;flA6a~CSQM=*-IMkz%ic-d ztB_73aN4m<^lNseMaUK-$}O!iI2=FuaWisi_ohYg>^34*$)H!D`9!AX+ieMOeQm%| zdtW)Y1#BR(8&utiGmVhDelFT9cXK+iH(B#XrJ4I^e(?t~Ow)$uYemk&Yt3K#6g#kU z?uDwBOlOF&&hs)oy5c;SUh_v}HMAz2NIqkxq1LLmxQW)t47o1->g2N_kKuN;4t zBTc+`UjbiVfYf_qo^GxqmGOqyo+o0rXzH(Vl($0t{_mNVL@DeeW;QGVdzRAVoy~Ao zI|{lUG~aHJn(J#5whgX#v=My=-57HdIM4g*M1G*kIkOXSEt>g>!dD!q%?Qj`u_Rv( z@_kgN+kq8QHov;js@pyP4!vylHZ1SPy#~DKSW93z(<|J(KF?Jltzi>we*KqleOu>> z<#_!gk-g5>=-B9?&qZo*hilae!y1&aFTBb|MgX;&SPdP2>xO0U`sS0X*WI~=1#YcE z>L@5y!DX!-`^J>tThUP)W2MC-X&|5Z*Yh6^faCB`|0*)&=!xK*Qhs56VceS>LGAnY z)3kKRH0IAukDWyaDW1HtU15FKZRh*;h4uXbTx>rEeZdJJ2Blo}ME~o>`P`KBCXgl@ zBwYU&Qk@eV?=K35J6_Qj4i@$d4G{jt$9Q%u7RfgAvRg0Josx0M`5I~8dBncRAuB7Z z2`mhw>fLtPQ5kRm0&5TY74v-lqA)NTr$)2o^PwJ9MKH>O3+~6RQtO6MiJd(h}- zorVx~PxF!Nh(u2o z@3VP8;}+c>B7jg~XsB!gP*nhehkyeE|Mt>L`Vp1Eu%U-sZ05fY4!96AGe%Vf1$sY# z06Z2{XrtvNRNwxLWTcfz34 zsyL*oq5hPBjvV<4vErTYv<;1Bv9`Oa*;nhH$MkaO3tA40f?sr7Xy=g(jZGiE`qOhd zH?DP(zp9)|qVYQu40dCbVQy`B!el8YtWPN+36u&BY13jOAR z0=v_#>@*6>agPPKT(ex1oVIhFY z1&nMMUt+%@l-F2;eI2i1XXhYiWmQKRq)jXBhjaCQ5Y`S7G~mY-D>ZCp1l1g#e>@H& zW;oHM3+CGV0$65;MD1jXvA1bhDxBZi@gCFZ zda_f}n(O~zoPMk9Z_+Z`e5xuJYq)<+zxaCK+R7VVeuuDy z)LU#?{>c1fH41lC=g$e}NZ-tOFHATW#oMjlhBZ!=7L9cVn1%P4g4Bt12YF=&Qw4N{ zjKyqGRrg(bKMwLdxq)tS{VtA%q|&bCJ%2g=@YPO-oPLqveqUfO*FL+~w2 z(BCg+7h}9#8;GWAZU1Tl%ti)3ZmsXErJCTXV{>Ui3&1$04uw@sPMrL;49*9!$ zLhDJy?Fm(ic|A1|3O1Sr>z6{lDYBo)eXe@FV^lduk;{tUa&d8SBVa;sg{5a@Ws%B` zEiEnejf{+V?+hm+YierBCL|>E5D*Yp0b}0YTuz|Jy zH^*OB>TIV_fL0_kfQpvDRTsDp022>2AQ&w^27HWpdU+X?)u{r2sL}Lcb>ZXDg0m@b zBVy<1=(6Mad)CIPm?vB0>Fr&$0Y*P!Jmoth`FvJa}ty+?+d*Cq8l z#xN7A3OX;S1WzB|)a^gJ1zC;;vw_HB-+$a|Nf%^k2yD}?rj**}k=Ds(>^)F*q42&Y z{!s!Y{(+@6{wC&!U)bVvI1D^+JRkJFn7~SK>gZKJ-vfUU)!zd*r&mF8*hLHmWM!ts zlL7Fj$?3~iyj;>VnL*EC?DwyMw{g*z!vmY5tizwXj$*#o5}N#411t{nN?z%~?zaqS zV0t5#GEfA1i5w&n1^NqHMJx~9r=XEQ)bYqoZNdP%#PSOS*Kn1h0XHp?zWfzhsiCCK zN9@bEPTNsU*)k};8Mtp8ly}(E#IU#7#CyK8tET@tD1znobi9H)jUgOs7Uk~d10)j=bfe5#kl!)dlTN%w({;a|zSnBhQ8JHxa1*WdI zP~us`rdY(nA#hUgW{;ph+S64dL3cs_-JDchQVLU*pk-aMm?&s%fytGA2UV0bxY^?q zMsME>tnX}A8_og*K|e@|#GFV5Gqn1|#=d6QRfa68KiWmi33zBK)T`lGn$8lPW%3-- z+6m$ej0qp129%b4fzt$DrqRWqRm))P<1*=UL4GqkaokdHnzNBrFGey=i5KwY9?Yj-iM2ipX*zd?;B%}b2}lrLe4rY}H;tJ3+-Uy$7eZzC_LjFh z^KRm2+YZ*Gb4y%Gj#>BKxal32Jxvu|XS^-G+19U9PO+yYj&Cbo=w6FiuJ2b^E8_mr z4(N>~iGGN=6Sc-jWqfH(>@H8vahRb!oX+SyPU4mW7eR#$c(gozW=!At8i|&uu8^qS z<21$|L9O-4AQ4II)-`I|Tr`f)JM@I;{|obgicK5wulekFD3w}l zCj(ukN3Wj+4I5{95yfsVY|iuz`CLB;cmBKZZ}*Ab`4wN)Icw9 zkSxI#N2370y_C|R{EYO%B07mxHn#kUx+)-h!HmYsM(P(ad6rBLEBG2MoIR`yL*umMRG7L=Ci z<<f?IM@2gGJebbIjl!cM5d`dr%{}3mLxj{q?Dl}n<^bA@TEJvD z_!FSB(}79=x{Tj}3If0r$N%~e@(b8uGy5ME7vTd^CFbVvU)|m2k${z^1=!v&3UJJd z-#~188Bp8RN5IV|;3jwtu-(K1FP8Or;AR4tDX%O8+S?h>-YfrU?@C~}vI2}=nkt=F z8dm`Q{n5_e{$ycxR$}^xM%%V&t6k0_VzFzcX}#OnBWqL3m+h+ma4{aKhNA z;!W-D78Z@%0=Sp#RdI>>iH$Id@+zX~3`vAmyRuW>-F96E{RftQL}|fGc!5n61M2V5 zWWlyl?QDr~N!uwfRaxCWS){77y0p(`KKlb1IF0?Woq1F$@?;SOBC21~TFDM+I^Ft} z?JwqSAeS}^57IFV8Rtf9;5f@*ETHSZ8Bo@#$f#-U3xMd=&Dsp)Pw!zeNL2Pu$}I5m z^=kshe1htrQ;Kt9J!QZPc;*kn!0zF}Q7Bk`S2dI~40Iw}m1x%43v?5EmomY~MlZ|3 zuC=Ws#bOcVnX2Eas(P0WRlk*%4lW%!d@C;%QYjpP@sBOfkNxSjLYlZPAlQQg4;w4 z*?F20B>8j6lttV?X-%<-f}>JkQP z3@MQn%_ebPUs3jD3pOR@DXQ2;o4?-mOw2Q!{y=sW#qTe%kUbZ|4_$;4`4G}zu3K1~ z3uc8dUU5)53e#CE)bYFBy;iSF?01Ty9QT4L_Yc3|@_eKC?QJU(?M&WodQk`fse);a zHxAf$qv&b8HWXHz9ehKe-V*ij+(Vg(500>>Vh zgJKoMetdCd`CBT|a-Svqc8RHI7#pnk(UrqpjEQwiB8!TjzukrSQtnHx`7Z&oPdv(v z!Pq1wg8acgw0p}u{c_a`I}_mEhx{owr(3sgl7Seku`qs@XA|H^9GdNyamuc)eC@B5 z`&OOFlq6buM|#i`KJvK2-9ClK(;Qd++ORvpeo5ofyn@*`#*g>>L63jIk%#SZ$o!)n znEB-{Q;;9WZ0}ey%>@ig4X|WQEKKyt zJMFXv@~0M^WY6KKEIPi)rz(9B9Ja;w*4J@ceI$HOc`4Ia4th=zKo}|_-+a^@_++Xds=m8;koe1kx&u_d3sXNO5RQb)aRLcJW;TxVBGQ=zyIjXm8Tt{vs zJBa=jSXYYp*znxH`;QGpvPkc)Ud_O^+Hp$Kx4Dlld&67*W=;LS&rz7cWbeZ)9*=oL zZgzbA91(Q!*IN zhi_;q3gS-@uv4;cxQe$XGl!Ts%Nrf_^vD$ec>E?+Q%6NYAXYB`>(c_++1amwkL<(4!nnR#p}!BO{|?sgJmrSd?=F4XSFr|D9HI zZ7ul}(4~Wb@0OVaI`#1AXr;o|R{w^wGN%u*v1)g~`17Y2q9-ZB9&0@f0J1s|(F(G- z0LUtii9=Wx*i;W@^tUw{9Fc5bCwIs%iE2B+O!-Hp`J4`W*wNd`z#k#R(6&H#+-IZK-Dc# zd`A+v*yPr(rLOK`VZvXj=+>~v02IUbPHqQP21G;wD^CPHvZXZ?b6F{ zmN(JyVnHYQx;Z@zpvawcd>AycEeyE_Lze0;_hiyHV`*n~daD?Qe%1!_$vw|r)!QYa z#i7xL!xLP_4Mv;18@uC%7gPz8hZk#xcUOXajLIZ2nWdFM2XYFiPbJn-;Hy+5%4_1)=snl-7AYYHv%j-J8K&ikD{Pu{(*3p(daj9t4mn?`uI z6+_Wzdv{IUL?^tQojt9tM;&JW5 zh!)Sws|>sr;*)nv+Oi)~AV7vRzTtxhGc~vUj39QC)HsIF7$07?Ju9u7jQ)otf7-io zE|w{4f(ZT+>xv7F56zj8qdsSXS!-Ls_|nA5dk?iCg=Ud~HanIOSn=Nx=v%NW57Hn- zyL%?Lb39<$d9zAcwoyhQW~VGf=YoRumMxEB`azEhvLzIAc>T2^nPT%Dzx?#fmLWwK z9j}ed@N9?leD?-7NrglrBlz~CtUu3>`?!}a+0I4*XqflWY!*Xvc8p5Yy|FA{OQ?~5 zPK!k}a$l$jC}P=q;@a6Mm+J*r1xVJLblzX8$~{!Dxte!?XcEm|2760)U2TY)cLapL zI5LkXwSq_hW56R56F^EgPKsU%ISq4s#yssy6%|%CXF$CtRPnoF82>8H_^CvruTYIr zC?trM^FvNp@|qAH0a47PW2j$CQp}fn+^>wvR)qyzUtOiwcGn0Ea6|pX-}MdKVMItd zu#CH-7vl`G2L(w`Yd%%}@j+qcSLM)bipsDc;8KjeyuADbbnC`F z-vITx34uVFs;hsyrf35eG+6(4-VxKMSvos^wzalSu?Eibw|}R`0WYE*@e^SV2LL2n zF>y)wXvI7%tpF!a-0j7l!D6%f>R|BgrJ1v>ZNvD;h@(GHh>isSh3HC&Rt~%~;KKMP z(9SnTJ;lU~yuiW1p~tfTu<{EKSkVMPyG?sl6+kvJW@Y_{k(B^OmH-$T_#Z}A0~m?B z)aVje3cS23OASt5b%4;d-PqV}{z7CQF78*lqbSLhP9wvbC;KX^eQlMx*x?@RwIj@D z+--httg~#5!0>%IkP4xImB}pb3`eH;SFJ|JvndWTfP8NmDN*=y9(PFRYcm@$Gi>CS zG5N7^T_F{vZ(7_i-$VR8Ep$jxd0Zw^9eK}{Sf#@+SJWK04EN5bN`;~hVwABfW{}bC zK->H80rOYjm8z2^m!WjX2MBQu(y7e+N`YG+aC*(F4(^s$0|n&^pdm+57g`s|q12@U zPOP#!0}_Uwc2OCXv-`UL{@W=j7O+j7=rQ9(;BUTOyVUHlame`9x?U3V2v&<{=-t>- zII-0xVOm)}*w`j9J?WkGsBA?(yY3^6Ue4r;Z%9nsVo{ zV*Rj}j~X$w&BiN3n)$}m>m#B^RHZd>l9Csl*Z(zL$M@l$U{w|=jWQT^zoJHR%YhId zEkhroVocm}-Uk_nLz^6T1Emv^V^pi4A9L<4pgh3rLC^om#fJFC6 z9nEo(VF=saV3$CdU#v@!c|^@iRp{Aw6^PaMX0)=7%TZuj3{5W=sk(z^vz(hdf;J{g?k?&O8>q`mQ6 z@mT31XFiqU%k*c{r<~ILHaV%HuMhZ|Q&XupI62v5WSHK(seKNkuDmqa`Rh#>+BXVv1kkGvu z?WIP%0#rdFE{*^Y^!_#&H&qnzrHYrM$`KtX;|o6dS0>3w&~4?Wro0njwoEW|J|g|8 z1^Iu{^N4o4Jy_8!SelNW4p^vyk!Jr7s1myjDjcsWKjYvlP^950dKLzN4XzpRUzu*% zV2m51r*pm?9d32go+xultb6NJ`_<{J2{*w=LWD_Q!)xNx5d^ z$B)zKUg~G2G&Je4GU4G9tgNj4eSLj5>UPlO1CT3g&w6$3v?GDSp2zC+$K^xxgx@d5V$tqtn}?)S@ruCK1d^se)lRj=|- zw}63?-#|Thw7W~UxxX(pG&;%y>q{>v_-zXyT^WFM&wxpM2U2Dksb51w_SrzAjls)X zt_lF2BOzhDA#nT>Gc%1+fHPKO)sJWKq`0^^s(K%&3Ac%vq{Kpj#T3|)IK+_u6dkq4 zhkF`Qfb#wCCY_F+{^^V7&&{n|T}|zQ^BRD@Ho(D%RpSlx&*rND-Vp;%pS%A$?@vH+ zNDZX9R??w0mAlMU1-8H4sp|%S3|HdqUyo9=rKaIU0NUDY+7oHoeNe5a@^qc7*yzD$ z+dA3qkz5)#_xl+wp<3g-cassPs8F7zwu5e&rFLeML1!Q+by@^Z z-@#dyHThmvRG&Y1zSf$nDyKcRL@PU1`2bjZGTeT&5?3RJ`MW~Q@BXH-lqi|`5T<}f zOyr#-<*ys2p{Yp%_;5d_rQs;(J3Au*tIyZ3d_B-GSU!e67Qf6;-VGuX5xu|9cS0A{ z`1Svj)Zcpq0K>f0`~rg;gYmVtqZEAR9eDB7{0eGsgyQ1jwRMdnioT^a?GvQN0X@LN zNYz`@N>CiowI()T*%3#Mo2mg8V35fo;0v6sv(fGY`4Z30%tnNPO_uDAPyo;03rJWL zo(6Qk@TH!LC~RSIyo#?86(o-lv5K2xco5(abb2rs35QB;BQW&t%(?>qY3|${1tVTdG%WwD_fjx6b7B=S$?qrX`0F-fWN*EZMrYZ-Gca-!I zt@K>>mTT1*DCUh#onqdDFrvf7ou!eyEzOWP)T~h?qYo?2U;sUzAx!^sT ztF|x#3O9Wy-ZNogwy5A)K#>L_5@IlV&Mz*SFMx8)0cdu8eGeAxEVd^YNgG_|EmU~uq$xvvNlUseW;VzAqmu$0^EJV3wN5GA zm+p&4dnT^n+1H-imVaxkhthsg1bK!+Et-S7u}H%*A3zK)DYbil--@AsK~xLKyb6tM zhK&UE&m6#OyIbl~Y^I$-U{`r`gKG2N4+a*5qPvEJ(qAj8`glMU8O;)Udf-2;mxS_BmJ&hQ=iE#n65BYD&5Pi%N@_%&n z9@VwvpjQc{uFeWYHFzNG^5WK3?3&##M+NI$7)D9+JAm0arK9Nmm-G+kV%SJ5!@)A2 z9PLs(IDvL!7zj~@g#j0+qdYZ<@j!eT;2~2?wtnJduG_1kmtqtr9{%x|p-(%IJ4i!u z-Hk48y4Yr2nvbdgb@H4Zcfzq=+wV(slVRk_pN_O=)CK&TQ6Vj_!z*fO-9V6`C1-|? z%KkN*XG~qsDc9Vek%#wlu{&PDqUJS+4cjwmU0x9WKG?QCeUF`SNEL0wZX-0u510|l z4F4ixTc(XvX|obIKplospEs*)+oMq2@M;~bYS+RK`sH94xV&gG9*t8utyCCOKi4px zXdageKR$)k`|!DK6`!*$1)JH%N3!I^jrW7|I$ea#0xJVFlifZ4WP_j9sjmhTHEe6jpKa8G{ ziCV=9a%}6#fng>3!)wRB`Qmp05IunF0R_W=j8I0uyYYB;^W3s3{9)4UmpTDL3Q~$f zEpt<{F3ks*HYJH!O!TyLU!OgDX0o%fAv`$;Os4;8d1D{Nb1lw|fV3`YL12~PP~*^0 zQf(&%R7nq1LWiPebNlwOhlxY-?kqGX09OW;1m?Loiso|y34cP-)p0ngjj&}>)?MKa zeg*2KQhO%=Q~1gpog%26EF#iO!5-vofX{^;Rt>bAybz0!kdWtmhU{U}A?N@8`4(a* zEc`4+uIufC#r@4)OY%hgwa?GP$M>gx!qJECMmz^o^Z^v z81lZfax_ks@%ec_1W+>4DHv9pcgnmF5&5NY1sIx_7vLs=zQZJpBn@s$mo;f=v-te{ zm1m3+Z(9}$-i0iO$tz|PF|Xf^aoO%`{oGc0;Caq_8@g4=eY?74(tJNR6p35=Z`_EX z+sDi>oCaUFf{n}@Yg`vtnzBdqb`Fx3q3yOyh5DmkK%l3P<&2XT7w&C!KmE}DNCqgP z`5WstMc(%(lrR~c9;8yGuDXItj;soQ-fldp56gNStB(~v!Qk$a7R~~`ftEQLGS&YS zYG%=eaUc(|9d0qHF%IVerg06TkaS-^DXQ00=^IAS?CpA#b&;g+p&Ij;4CwaW6ag0? z9#GiqhwqjxP*mq@b9PwX58%+Z#YQTG(V!~{PLPDy$hzAEinjr#oOwzNHz`N9*= zNMSJGy^2t2NQy|t-U_27 zqw}itNmCNoL8^m)xcAGPz7?6rAnJ3nD2dE-tK(WGT#LTh zV|?qo7%eQW9v=z}*AkX_A3BA7d&>{^8XvqeBJtV(Sl9i=(C|te;+qp2XGBEdO^TqK z*A~=&T+52&I5HLdo6R?&G){q_&^@5=VFx`Wy$q<$4^Oknu3=D`S}Bne861v__+k4} zl8bGK{fSeaks(DpL;KwRVCA>wsEvV}2#bd;8XcRS@mDUnDT8SgNDef|s#DCY@TX1;mfu40Rji}f7>pi|q(PMb>X6!`p~6#TFD0+oBtu>;>h`i3 zPUCQxs!1l#VeuN#LJ76&L)PmjQzJj)>o@v9li$B7?#!Ua&NLFN>DNLuvkvyaZAK!4*d9w^p>GU2!_U-mcGPwZXoFFK; zRA)^<_Cdhu;{Lon=eQqm*=;pfzpUNOv~j2f_L3JTW}?TV&xRh(YHpV_xh=^~Pfxds zcpQga08joCfXE34Tx|WGWpt|_s4Yi(ZbM6Krv)~XTTp9RT~T~Uqr3i;B{g`!Bk#B5&=0z( zAFw8lw>qc|vKEm%^*(BOb>k1PHnAuH@u;T{>s}mTJnAlO*H#ZXG13|&TW}Tg# z%hwi6z%OPFe5}Cw@vMQ4s~1bi*Z1EWETMqEfCWWQM9%f{JvsXyUE=!YW(!LP2O1@^ z`r29}F`#&%R?@((r9xT(D3TckWT(b#5z#;Ao12+w=$V;GWtq)?Pdgs#8^p(%kC46^-CVP5n{HL^k zR=Z{?cm1QMy!kf%{;w?OHqFEBhBy7gClo2sFmtyL=Jp{RPyuD1BVRxm;nr@heU$-V zJ@51;i~7$cY%qL8ocsmXn3O+~DiRs)J$Mr+0E1v4=E<+_)K!b1QFGll1PN?57owl> z^jAY7ahVUu?)3LbQqywrYP$olBM`#XCz~i2sla=>B#Vxot(btXrBwq)=rE$%IlLlh z1q=xr+_eto7l7unnTpQDQu~ESFRfLVd3EaO?7e<268A4UFL>+TiOhjhIFK_pHB+Qd zUkOxY09#iEBn&t_GT11eH-4+YnY#Sp0aHZE@BI)i>B(mNc8m9(fM-U0oCeLS{c$ax zOADqtN;m={M7p3*Ii~np0o{{=AQ^Z@!prdt{70il4D#Xxl|~?Ig;e-05Di{sD`%m& zpX%DlhEd7udTY`!fCx&X^&V#NC8nsl8}D0lmthLA|Gn-mgC5fHeEZ_%m61kRPITSP z>0-(=oh-HEEw{bc*x+VBH(&9` z=)kfhZ}^30$){&mV!&z5@QHjo^TYlqHn)~ZLL@!u`UFaHL-D@EB6NWH;o{%b^*`D8 z%F7?Sf%m(S3Me|{=DW5(_hawcC{ku&HFy*fhRss z@maO(?`^;k+unS1QhF^U@U`PTJbun{qR_vF`OlR_Ko;@ClzI7mI*^RiW&dl=@3%+$ z`Y1pKGXWf`p@~B3uXPplaO(&T0q#cSlxKv^@#CVn=Ug7FvCwwR zmHJ(1Vag5IL+!8iKU^zy61c!?3sjTy9 ze7=eyL`s?@2l)?8SR24*W@cPu1Ij=m-NNXo6SBVkOoNN7WC5_4^`&vVUszgFAsYg? z922>5U=*Quaq%oe%G)ou;T(T35E8n|zu-XLsI8i8R*S4Ed*S`}R_D#@j^vh=)GfTyKA=**X?F zru}*bLbR+*m6pOt4Ka{Z;Xg1cToCh(r6JqC0Y^`v|*s_cc|kXMU&xBed#y;SJE@{ELbtAvSOq?b2= zVODiHCJ0G*(P;fLtTS8={xmlZib7F0LZi!vlz%xo_9P79)DlRh0)Euo)PlO#3QRjc zXFdeJ`d&)*Gm1cgd-d7kyGHNbX^F-bGkByVT(rf+tX!mfZngkfC6Bf8g;{FAf%iph z#1yGVQ54GQn!L_4<#aHp&=8+j(4zJsg|NpJfd&B;W5J53Vr{(e;L$u_AmKp%4WxuB zzCO(|W=_hFlnK+~r{LA+M4GTIu3g%p{!l~OyYF}~N~#PBZBcY|YD#iT8J!BODztbt zyqd4?(bQW{1K2PsID1!}feTlBPkZ-;?Z;k%n(PR)FQa2bIYgn}7%^HA-Tdx)of{V% zS4*!Vat^S7OH}v$%Qs7_A;MzlB%jFt3OLFqEk@T7^WT0r2Q>MpO;uKG~pz` zDWPJCR2Q*t8MMAE#Tq|@Dy913P~X_HPQ1WX3%ORk{7#vPq&kwSP_syqoIAu{I((PY zJzNcJPew;FcMSu9WhNC}bJYkwL=+#su4z$9QR}Iqc?7}~-{4d+XAb6QSmS@NC<@RA zx`xpWf1prx9aCMleJKTM5Koov#|>l{T!tV@x5zM@qI475vLWa`INgASuMaC9`(_Y_ zXf~)cF2a~?OIr@7hXp1l58C@cfC&xgVg#(JkY9Bx?$tp94$xyP{g@S42YMBV0Z~&k zus-?BU>xa$v%D2piVr{SOgnmJARg3xEouGi{wU<0@!@z_cCCatlmdlsFk#-`X17N! zBuyaDRQ0!VX*<+=X7{{K@mAB9h?uzfi&2JMS;9`$-9D?TT5nj6-H)5wRH#yNieknO zEZ!%rADuz+asTcg@%4ef-=I?QP&gEziWeSVpzY;6Uth&fVwO*X)whhjFzVX*Q4V%J zp&49%`br_K;!SccxZdc;bBm*bRceheCw#dzWVBA*z* zvyrypz7R*zA%YOVH#G&nb*iH1Y0WAYElQZ~~P^G#jV9 z>rAOm9w6OYMb!fNzM6nzDic{2CoUloqX+Wx@W{}jwb2}(oqfJIJF9P)N-+duQE#fN zqmZ+=vXZysOLC@#3&xxVUI?2m7pVNZSj>`iKbWdoUU_b8JiO%C*!n9k_?@JL#4`O2 z?Y}^0d#AHLw}vBMtDp7{6ra*A+~f7D@4o@r*Mo-xUjGi)ah|C}Riq7FaFvD()wIFN zQx73|u(EqN7SbL9Cn^tRKj^0MW09SkrYw&novsDK;@wz_{?!Ge zj?Sa941Mkkoku|#`3rh_k8(A)FYfsfbKI`eq~NkwEyKI9L-sI_&-e!4OPyaUU)B{17k21K>ERTt|ob@9}eqW{wCWS5ltOq@;H3BCzdHsSR+Ru{stFU zf1qHzQvaHR1XD=A807%8g~CRL{K0+~FZc6%IRFBH{VnDu8u~+?!VxWj+7)_aj)O~j za-{?f*%2&N&-KV1pJ9jhm#|n~!D?|9HR07I5p(iBdgQ8&V?M$d2gNKsArOp%k_L^i zekv?a<ZK`#a-0n;Nvg8jV`T4^j!u4S$r6;mM;o-f`7-Bz422^(#7-hjBM==)<-jLQYZG$x ziTUBKr$ibUe7A^AKy8sw=*u*yLaJ$I zeM%Tm6D)@7R;K8)7~sR1d!Ra%vsGqXGrY!8E_0QX1k}C+!o13;xc;1rk&o>B;QTm# zzmo#(+mbaX<$vbzGIJf&ttGjP`%Z6)B;NIdQ{Sf`i@{(z;@!IVIJt|xqtK-E)sCS~ z7tnlN0Izlb@AdV~=&qRi>DE`<7E8?sQx)YUfsUm+YYGkq+nHVA&_pP_*tV4`unY_4 zWM5`WZG?n>)-D2s=d^H&#Wm)4oVNeb50$gIVE&g+;w@y$NRrE~g` zw-x>X^DAfW={|ld7_`5migJQjd`9C$Rj)<}7$;Hm0rTCI0~{Z)v9LZ^%6wpJV-gf$Iq{% z`JtTy7_-)Po@xK*dCw$0>%CXpS;@Y~vDhHK41}hY|L4S?LH%^umGqc;MlU(+9vnFw z^uk5{{OBj4`h#hc6R+RhMA?_-mzuHd{|r0j!0Mw0wcchsHO_aZzaz9E`uyR5)n)gi za#dVfjyAGXztcZ{n*jrn;Y&B?elob!?D%l1uGDB<1r37-t5-pF%2PE!UT_0g4Iq4$ zI=fO?dh3OOD&x{XNJ*El7}>#hvv2r89mzCKXB0Wm34?)ti-NZHS; zWAar0FfNObSl)E^T$Tc=g;8v4{&CZ&{Bd0>I{}3^vusojdL!ACDg34O0|!M zt-14|uu@oQKK95*ZG?VYN&`h|VLGxN54;m!BjzP^YE4M?vV4+*=mBC#UPIM#gQl-g zo9}F=S;MByqYZjl!=_>6nH9mJt^k@F#cTQ;XX#=W(Xz-*$uYP7lT0dzPGLrL#D^}z ztt9>zyk_|=*1{`FO4p}zPw;$ljYZ8gYWm-L;K6%gwG1UZ&eR6p^I=SzBE-E6+dKS} z8&ZTe$`cBu86Husd_5XTeqZOkFx*!|JC?L4GmI@~9M(~0b8cV2Fap$-ZaC2=vVBS+%ogVMC){&wbCrzBH!MnzKt$;52ebSGoV&vk*)!HM*(}!!=HOU>w z@#NKP(Aid_{d4sPHZZ{dZ7`F_$A=nLJ~O6h5P|cLA@BMTyVQ@RTg*)rLCLfEkiode zh~&6*Q_(#2#e~Xrb&L$t>rjqYTk6lYi^{@k(GuCw_w^tdoKb2@`|jwOoKYvndQW~o zj*3@WeHfz+|Bx4)39_-w8Os2y%Cc_IKH4*D*f3Cm^Pp-+>Exc9VLb7&feqtXkH-ns zxC4d|A;2vc#9pwX4(J4PK0gneI=zMy-z_$~_!bAZlgza{x)}W3xo~C>emk$HGN>$way>8?lMg;i zib?N-Oy{kG=+~yFSbhiwVa-!y^A(!OQTvEuwvRX!Ns;5ZBLLr4DM_$r%u8`hfBnjw zqR780t2&i3dz0yn>^ zl@;8UMKAo)OI967hyIvPE|EU-emN%n)F_jvjBTr{Ajg?N@N$$wm{stT zHbrFJ%if=nvH7-o)~Zc-&RPnVlDl~esZ?o-u~rMIWNEKrt;9tjeD5e`QfRXkW7k_# zsXi*Ik+)jM3$n6(pM*pU5x_+m>heQ`GS;8WauUM@Nb;N&bjc zO^I88nT%#&N?VL($xtc~Nfk+(h<}7?^LD1bBu)t5pJ&@NSUr}+cJBm@Dk4g7)?fY3 z;0>u}k>$U-JA0~%en4P)LK*4V#VaMsJ#5A*ioF&`xZS1j3nXPQ&$P*}AV-ZxxFt+V zy-}9jy<2!%w|Qm}ET5Boo9g^;cDg=EhKuQ3l{PtOx*xSS*HoF+?Pj-k^`^b)psDTB zvr|-%<9G;&9^xcs6cxddEw-W*3&z+dQUtk@yWjW9vnV2n^!IBcq7HudG4U?A3?>gU z@uuz9rho%0ST5F(MQDW2v)2iJ5E*_@G2kJVwi=1#?*|3ev1G=f8wdRs!WT61!#LUO zv;B?#UX3R*?an1k+B9Rz^g}NV?v#tP<^H|(RRoQOnH1YfywwMEBHb0A)K1GfE)7DP zeQcXpL%|p!Hz``hCvqRGG)M=~?DmO&ehL#hf0jC0Yi-Pp`GM6VrV!fMyU=3M3Kl^I=I|6G!|WSAB)(O>n9%h?*4Mi zDM?!GZ3&OmEZL$C61A~f=r&jlT8fr@A*-a--IUP8az)RSeSfQDN^KsjmvBxv(icMT zMnAnn|5%g9!#j;6M_m2g#Mgp;ZU=6sQ2XS0PhzBa?VL%JW|+r8M?X7 zNyqxJ^AN1lazStyfi@W7o9u&O62^vkZ@ySdx)cT_XX5qSi%Lf-hXGsFKhrJ3&D8O% zAMu!YbRRQ2v8TTuao?aCViySqGAiI~^dlBT%mMbcJ1m<7E*>5-Mfk zo73pNUBlZ$Pvhsl*!(%ox*g1~2k%e~0an<}X2b~wbl2!;MmT~vxPdxs8Ha$ory<*VGP*O)hn?0!|s z3P|&EW&COccV=H8c#R+#oC{Ik?8Y$cbtyvAe-6fR(9^Y%|BRFB3MKfS_i{$jOG%oC zFI_uDr%&gUs%*##KZBGDi?>`zM3^ocBl-;N4``)MYuYOG1At>ZQaGQ;o(*gMZA zeAdwwNO(B*vF3Z~IXbjcaGhTjrI;}?2?(I^UcSvE$=$$k2Q^_R$#)9z-YWO$vqa1f z>gUqUkW69xS}#*x@QO}k1li@JGI!d3 z)yL;7Eb1YiWZAqrGibgz{2{okYf!(+L}p4Ss);N~-XB~HrIK>hQjZWsI{ZgQp3~;m zZeU*Jr!!KLrbWT7Na&1%_U>2cWj5(;kTrN^AwGinxQ{^mT-v79&bSGD!Ztb zUrmk{?L++jlTY$Q-4&aaP#j^!T5BSQeeq{lj;FKWCf*Y&FqgN|J}u^xjiF->aEA?% zjWe38t}#oV3;Jn{e_Q)x_j(Nd*vIuQZsILOvj5}}sr2n#G|j5t-bPavb8L%%?VD3p}AOd38K^DX$Om2WZIkO^te$yp=KGfCOr-*$-wd;=Ds_YEhack_TC)Fe`P<#y-I{##e!|gw=p5m^xTXqy`EfnXT;McH`JkniOJF=qe=71-tKOlI15WIA3(-{s&mn`dlj*>NTf+S zt7Ue$a-lf9qs1bN48XI@C;ou8kVwC{2jR-wDiB!FGC@KlJu0bYJW4{AR@bSVl?8U4 z`yS?4m*jgyqIaE_Qx8SD}=S&b9@%)JG%Xpp&QgX~xy*4RQne z?2l|#?lkKBL3zYUH13LHWSo(-iW$@cnJQ`O;YMqG-8Al<#4vpCTVG6gcX^D zV}#T8g=}~*zx*nZ&aq0&BW8N$_f2e=7WdRkP`1P7KWK>Khq|h;`SaFo{@Y*h@-NZM zdM+U@zHA3P)ZQmFUU*&lTvj)DA0EG+G!I59ve_ghs4|`TuWvfZrdCy5`Tx8py}S9V z{?trv=(_n*|7VrryV5^b_|9@3w+r=e|Lz+_{BwScrNltKGzG0eU9S&{nlFKa{P$x? z^!D$;Zt%ILsI6#cy*sm8wa!ZHl>i#F@~E_|m~lj+yEf)?~b~^z)$&5@?+MW0Q78r-Yv(UM%Qc%Bi=uioUY_? zm2$QB&7bwr8)}HfLPg=@PfJ7zc}tOR6T&LJ)n}(~is&7G*CjMKEpQr}G$q#kR(E`v z1EbqQXtK`;{|IDAIA!88KO}lO%gu~kMb$G#cEqG{{H;(YBr}y|jX+p^X1%qK*ONjU z15w#C0K~3PM0#Rb@~|NIrSug$^>}>Os6LCoCMP~qqX`q05V1g`X5kg*OHwX~+9s@? z9YNy&e+TiNJMT_qXG{&MOFbH2^?_mEZ;`_gt*cRaF?LYzA1eGZB#(kP`Y+tOBXBbO8&~i z#v*uw(>0Ek1e52znkJ}(+e zczDP%N`|Da72RBo48uB0J~utM&@X#`lNPD;lNfw=Q6!*g7Ft_VBjavohg$o!0yrF) znCJ`g^Pxbv*>kkE_n}vH0(S18J%_|{>)?qt^V!E5{JP3yH@qe4Ch@x98+J7Hrse?e zCso=nF!j}^b-tOa_iN7I~+4=k{Td~GiXILPCJHXfBeCT zFzkc0JrS_RcnhoM&g_ch+{Z?lm{ar4N_Qduk*{m(&*}@A8}8-D({CF^ z6Mp_@E`gU*Uqn&onr_5y)&1X!PY9U(N>YQ&kLG$Lv8Ryi=x~hUT_=ZN%!7*R64Jdr zCj&*y1EhPdnfJxHPOxU^{jO5DFEljm9 zN9(=>k%nzU?9vWlZgM5;3XUTU1$5K$PybH-=LG;?qgB;$k3Nm3xM!*7$y^_k{X%hH zk8KOa-qiNABuOBFajZyYFr+RSD&ubJczQ4q?~A5+;%XGVcxa96y1AskIbCuu4e*sl zaE#~4AC_U%B=?%79tY8ZG8DJ!U*}~>UQQ2zef8L?o}_8W7YR$zXk6eVl*Bq> zqYckg<@o02BCa_u4>~s9rIygFKtwHNcx?VgP_o0GP4U(yiF_Dn)d;kRy6%$Fl>}uT zlwFC(JO-B{1Hu{uCtoAWDuHw<(&<`CztA-u^*!*e3SN>H@%q6>M>?(FV*hI)9c^*!9*IsmJOrAVsttTL>ZaqmYg2PM+H4^e2;OT?;8 zJg&Yh3j*?W2iEOFDQ?W_m&T*IE>EZJO^{p{J#n{HI5k8A7Maq9{NMBw3|uJcIMNHU z_P=kag@2j&^o}b--JX6fQovm%=+nsOqfxdD=e7yO&lhpVmJhDAduO&~PJpc}}-=wq3mJ zLn=4BaYNa4-H*F*@55yLx{eDu%>ObnFnrxvDWBT}y4Cci*UJG}jR;imh@rcc)pc=J zWdETLqa@@0&bqg-80W*!yipztyH}s@`agibg&27+xxF3!^Zop)+~n^TDyx%I&v3aWy*bK(d%}d(g_UPv0(=#(zl2@8graRSUH6jCR;Hy6%)7ga1H(B zt>yhgF~&RJHHEysmN9G z(x2LB)_D$8QR;`Ih97HDsaR+BO z^Y!2#H@t~F6=9LmbL=mOZcBNMz7!7KjV7jl@w|_^!+`$9YqlObUHRiC7K-<5l9KL( zGDv$znrz++kk~2V*C$n*B{=8?1eQE%O6c*Dz6XVi64*!*W^oPFEz)U^cj<5T(oxZZ z-u938@&%9(14_boSgblJ3 zA&hG_nzC^TNho~MMogmYdz@`^_Kcmd_!GaSxF_y^w@#v7HPyiANt1fB*(SAqzAGhU z$Ad{TcRd%W?@WW_O~(KGaT!EkPRB}K(ntpQ<#J5V;PUW!P@7K+*re~ z>x%{v@iO3uRHmXQtXC9)Lsj%BdIkx|A7y4x7RA|k6Yqw3ArOd=;MCJ*U-#x6V7rg; zpP9CcN}t)LBokxfE@wBl`|!?4o8Vyqv&75Oa~T@))uX%8+MU&e9GTzSb)pEG7r%U& zrLXS1&im-ADa{=dXyBn?mECQ|i*O4SX8a_0yCl^E48<#}; zzBe+VXnjrIS?ulmOJ>+uxZ=CNxyGqdGAe&Z*8AV?4YfO7Hs~6QxMTBMXMC~)e>gsxLc@vVMkzh8d*~Q5RM09?*Mgw<<3+5mZJa!Rm@Zx%%G})C9_{Qq+7=`FW) zb)2Is?Ektu>!&E+aEa-LSNDcdsBI-QCF2E!|y8NOyO4$9cbV z=KK?fADDp|hM9fu_j&HP?$5;zTtG+$MdSeTt~dUzN-jP@Ig%#0c>Uw60dWB?M~DdA|tY#Q=f)59~xT*VffhK6n z{WjKGqqz1f_wv(As&m~=r>llknaeq|EP}hnN}+*4Ne?UgwEM~T+0pf=B9Ett#bqUM z#9%B%8+pvusw?@Xlb7Ry#)%!Ju4u_~$D17PviT=#3&X3FgakEUz4!>~aIocSrl_c> zrK_up1C`Q!;po#JmaqD4|Jxx zqdj4P6bq#fa~}t;{f|N@JN$iOZHV@(GvaIvfpO}BK1uoP*Wd9rybCT)7}G9W#eJ++ zNKA{MHWKfE+n}n=v>~1p%CJ`L>dCKcHaeN%j(P$Xjl&%@vdqpT=l+9XQsu^CIn1m~ zOx%qT{H&shEo>e!mO{qnoZ(d_#BnsNzG`6Sm;?lT6h?G)^5{~<_g8gHSJ~lf7_s0o zn!KEYxBD}`w9o3#Jca$9;+@6pCTs37ZjzEc<{}hXXRS+%+iv?~hONMYBsF*9bcLq2 zW}BUPec_ftUZ0Clk{LNOMjfy?e2=!rveCA0hOm?6LKA@R}d zGdXj5Z8#)`*LfLDThK2MLHR;GRPvV$KU$?SZe)2b99?~492w%(+vTWDd9Gh(i&Uxx z48o?wI|v+2)D-zZvdmpxYE7Rzrc%clVp73-B*l;t^X~JjPc$AMF;7w;A(2BId`!A;~A2EHO7v|R6o{}1ivnA*4!-C7+8U2Zw6+dZ(m6vK*bskI?g2|fO1JiBt z7;L?KYWK?n-lPa+aWs0G8qvTKBS;tv4zxtIL)|%KU>1v2-SaP!l0sC5s0AH^F1%O1 zMKvl_oRn}$tUuC+sk)(Cz!d08t4K{fr;3_B2UHr{Hcn8fsu*)T~8_4hM zCe!TNXfj76mUbb4RET{o_Ou(J= zEpZo*sYhO;^txS>ehWrl>8B^TB@4LKi7!B@AG6Y_57lJ1#-_5x@VjYC^`WwVD&twn z4?gz#LAY20!wsg1i)wy3Ia+YJ9h@Gz=G0+q4yrqvw{<#NyN6}9uMGX%{YeV&^ql}P zMzkQX5CWuySVv(W{>l`=P#r4C1}L#GG%>UenRh6DXdr5q+G%0`F8@Y`RWx;19T9C4 zZtXS8QWbBLJU#88Qx{ceC8XwczOjhRTZV3ugzK9~9X6G$t9&7i#I@zpK@q3x@c z4~gfPQe-^P%s09-U#S|0@yhs=GbBcE*ae8{o>io`gW<&T{@VzVw z2eY$Sqxe~|*qzwVlBlpSQlKsr9+{cB>HCkGwLg~AEd*#%S?A_w4=byxi)w$n@y?Gl zKBbTgEsdZC2l)v&t9B_g2KKfO)9ZLU90AQ+LVzMl}kXAd@>1F=I86LLz^1oVt2O^ntdU0uYsBuSJOAW&Rweca8D?d7Z z!GF!qO!79PknlIwa z0ys3mnY?vqF2Y2yt(u2L2$BwZi5ME`#b9!#9z#lar|Vj;r=EM&DxWw8zMw3KQWVF3 z0<4Mgb*L`;aJWgepIvz5Og&u`U&p`U<7z~!28_|0q63TkQ;%Lw#=zY~UX{F7~6`cC!vUvUGvxh0eY;MggnlUp5Oh9u;Y_^#wvLg4`&< zD6HY3p{cpzQ<~Obgwi*akp&>I`l+^|>>H~Tig~cf86o9#Bk*SQ#sW}z%~H-=RN4cI zX|GaJEjRIk>dZisr9b!D(|gs&Nk@na_+>{iM{(>69~Z=pVSp^c*2;#ho}^T>diYzV zkp)U=B5GlNxjTu$Ae4#OZ%O4*RSy6ebIG zo^NX5t;ib*O9w6zt)Zds2N*`$gAl32Qu|cuoILwXbu9;dr;3~#kG7y|fm_|gQZ|wS z;-1w#=g}I#!wMtfm&%?EHLYb-ml| z;#}hskF9O19|mUBqp9lp?n)T#*Tx3-J4n;jNb~MlK~|1mYhA+f+?nuE51tYim#WT; z=+)JO#S3_A$s!oX$>sJH8J}}9NTb>9IKLNOQsn#$(f;ID3uA&Mf|w}(SXfx_G3)$P z7W*TcfG|1*QNjmY8=8XD6C8@Nr$7wxQVFVU4ay(L%jimSL!}^%@uXJFYApZdU=;;4 z6NxIZX52I$CiKgUlgPkCH6CH$E%Pb_47AJI_~QK$DiUBNEwV7=(F7z7W3>){xyzy4 z5NflD7>WM9hnGiDeV+@=*3(nQcmkpCxKEC+GK<+e11~3AS^x2f_)6>hUU2#NJ_{~2 zJ^KF3+D(#8BV3UXd3?lcJwMd>^wC)`0+Tt<0aRT0I@d&!(NXs=lJbz`TOxt)eZ60E z!)HU{aRk1=fLRpv*CKQhp@eCcmW)U;A;=?sP7Bw-s`DTz{M#Fm9BZO;2T%%zf^L$K z)-IwdyJi(Cy3O)ONnbh;VT(B66oS`z%-a4~EptfUqKPdcceChKAyWVv=t`uJNStL* z-KZume1FGlhizo_=B~DKiw?DB;~r2&6P^%ldTW4yy0FgLBe1UZnZNaJI_+}aN@wp( zIxCw%R(-sIJq3Rk@6zj`j_i5EVCS?pqikug&Sw7bc)DysWNB&X1pU=3I&5t0EFwHS zPJ#tL01Y#|2kafc6;ucC*yO_AxAu>$SPtr6zI<_?N)}lSjpODtFbq>X7+k+q;PO@J z$wa8;#X#T}#jezJtMoN`>c5Y<$}iQ>+NoYnbZIVqnG-g*37JMAsn+r2jyn3qM3R5` z0Wm>+sE))14~&js@O+{j4&!z~#ACs$pd45yE#-OLppf|~fAZ>M?xLAF!oiglZF^On z>)L<~RJS^wC=03wEgUYoK(K>Ui$}vt**5tZ@ykpCjf;PDaa?iEUtE=UhK@y>1P-F9 zVz-%qx~CB`Jtf;%TYTwQSXh8fN$VzHxpE4VXYn-ow^K6@u)tjcaBLJbb#(mJ3{FmM z`Xe)*kJgT_tgNk9(2e`^C&Ed1{-uU8G@Z1e?gkR+$Jg!RM{B3Uc6(QqykN%n= zD2Ba!!#mvKfRiwyBW8L5(mFLLQ%7sjLb@XGc!yK3sWqrY-29g+k3%W4*ccE>NIEC?XGpX3ChG^~hN>r681pG%Z8Y z_TML~+ojx1!mwGS>KaLsYBA zD|6|;1YQ-PP^Ae0``9xb$;CJ#{^Tr&l9%dvr-h+z&OBQX74gAqIUQO zaJAieM@EM2e7ty<0pK=;x3)H1ybKIh_bV$akz-y3ujtI^rvS%T56$dRE;yGYa6rL3A+ zqNr6^@mJIbiqnnSLd*v)S~q{{z%Fy;yK|Itz79*#@+J=!GSx>@LnS{-t-cd&TS2Jp zQ)vIZG58*S_jw(KG!-fTnl#ngQAFYIHbl-jy@Y425gQ%R#pApAK?|%V3}X8yY*bMX zTI%U?w9XA5M$4riM3Yh&3fcfH0TgO3u(-GQuhwdY=s&hy_cGw=IX`qCUlwuXQJ`+q=C-$eE~_Xy z)|(R$tmJDeoG`))PvcpZQxLiPB-DCmF*HP%UwUc8Kq3;5FP|y>`&<0K7Og+#Ylj3i zufRt?>w!Y~btOm*=Mx3%@q}dRV1nh$l)}k+}2`q<)u_1oMVq z(kXVJ*%N32LsS*qo$-F@$cYQ=c5!0_G`d0H#gOPzN!1>g2%{Sm2o6OV&Bk6?W?nCA zd%3}`X}f$ek2fQe?}$GZa!XjXNs&+_Fn|6{_Mmx zeezuE^sh&UGLASQi*9sW_h-55>OS-)LGjtH4u6mS3%C)H*(zZuEX+<`r`lk3KH5Dm ziGUB^5GE34&Ckt|*{m;qz-QHNm4&7El zYI`Xd-0c_U6_?xjsmFN_C%io4uYB!Rph4kCSOI;Jo_pW?yp&ZbGwXH!esyd^DnDb! z0i~&_86YMko~eD)2T{Xrxy=D-vH!w`ysaWveEjt}BD9lG+C*-%2L^*}0T`dQ0>FEl zm5-0#$H3UwWvr`fUB!y=fFk2v2Fs=Efqbjib$;E~qav>v^3Anl=^RS-$@UXA2yx8k zJ!7;&HZwGN`b?T}p1<8CPSGcj9{sYMEmMM;YPl;T;FwkemC{%hc@JtAi)uARG9;A~ zz|mqmEsGG;tdhzLTx5C1`Ar=3YeUqBi?dZ!F{*e^is$reRcZ6 z5odo2@Y}uLGET8}s(~Y}ShK4@B`|R~s1yO6o~sh39Dw#Zn%ko1U6ae6PdpA(?#uFA zJh`@~Yph#xngv1oa{W%>}4;@OXC^ayk&0d4K8L z%RefAyZnHl%dTnKM`wWC5i45`rQbftR+I*?bIFV^mifyv5z85P|77 zU*9hEjbE=25)$fbYipAOD3#*9`Pu^=fIR29{O8Ysubl=MQ$7NM;n8IqYiqE znDUB^E3;;sUs(N6T<(a0H2&Aj_ULM|Yo~*bmz-UdBZXfO+%@Nq%`=AVySM~Nr-O5@ zv?i2z9Q`DMxXewb)L74~sq4WZ#c~NPga%EE+;U`AIxY1E#g5YOoOC`J_2qAh3C=u^ z{(TkpNc-1E3vRmZ?zi&5mbX>a@GP*F&hzfwyZv{EN28iLT2BTRh7O%wU9qKQHUm`& zcrNzGazeJd@@>mv_$1RwK^VkR^shOpIAzhKVJ^!jr%(S6l=~V<0-^XL!4>ciOcdL&*ylp&*!dh ziJ(-1ny`|;g@b6CIph)dABGUD!IefIm0ZICsTe|G{+s`Fm1h{56Xs>724plXn_5BC zlVBCyF%$za4pp)9M4)lNC`u$jfSAnW5ZrCcwml%Ku*u-4>KW6>Sd_aT?}rmCL;PXR^vd3M8j=Vj>&V`4>KY%cEGMY~g} z8z^~ueYMMD6ks>Q0|dAk;I@FpCm?X*=&;vT1^~xKJv=>yH;;~d3fkLWm;n;V0RjR7 zgTKFjV(^b2@qxj?qai>^8rh$HszM3>;_2D~=^3LeqnT7z;Vk5A$S=KcY!~ks@3DQRfGSKQMAIXT!!3(4@Wu zV=%oJRn=Z~hoBQH6n%#ki9^ueRuIAgsV#A|n%rKe6hh$`5BD4L5?uI?#Ic4kT!_Y2 z!`SP1a_;XOU9>=&%^u-Anx{j!BCYn@?$?JE@A*p6GlSOWC^rk;9!Ur$y|Mv=C5Ne$ zd@j?#?qECtrxZR|T{j9@Qyy+z3#yLiNT@c>pGf6P+da*ZxE$P@KuG+WDJVs&0447M z&Wj*=k_O@?;#}gIhAhLd&QKvOUJ93%sHly~H@jFJ^W~mZr{bnquG05Nf=WL@E=a}Q zVKkWxiw#O2NRdsJTo1~ePg-x@te23xuZlH2)h$@et(&TH_#$AE@E+zCG~d|SWXwPH zk9R495)vY|aDa7hAH62$x#Ru)Cis7G?GD8C;o6!*MScCv3jm}*D4nJ@7vkl0w=g$1 zw*Zc-#lpfu5)X);n(N**B5DyIkKdTc8yhRr=omvSWaC)7RnJ z0~Gtj<&|oq3K))x%}8ogm3ltO_7?be|EC3jvlr2|Xtc0wQAoCYHf`vNVw&?pZhimq zCSb(ChYB%KooCP!+hw{+yJ%{~lUsDu)jn%lc<^X@UZk$yy1;ahTQ?EcTu-8uO+QsS z8>cewdpkzmCTS4=%2;CTaE45NCauDBV(G=YIb@%?j&W~-WqrG@c1X0sMka=Mf2JAb z#zJHwy-vMqua>0dGOv`WktHA*!w?W(3F$xnN%DLBdj=hb+{?n~Jc&c(57L`jAc!i9 z+uhyGT^(ChR!|sS(ACq+I+(56Kn1##6brMO8)}s8+S;10>@*lrrT53m@fuy-ns>L> z6xIN9+QJii2uaH4yNyr_$2GZB&a!yIQ7th>Le*&8IOHfoQ7c3nruG!|(UQFIXsWjx z32r0?;KK1IG>ddUa0EKBUlEe!zSxF^t|AT`m4Iu=`4XJ#Pr$0?X_`=#t5RWQtG%9u`CrWBNS4~-T>V||B0Tr~qE z9VEr^$;Gle(ECTfoi+qbcJIN;KwhREgU*0J;!+@)3$+23KKz%?B1Q5(12v%ak&W;9 z7o6k~lI5zW;8m9%^(CLE*gnI(bvRX!zGzHGgNs&OyvXyY>C;!3Ql zV|TK1{wAy9~PwhAG+aDhYHlFG!qT~8dYPtQfwJgWYG&)^UrD2J_#AKM4bP{FCyu4-{H2! z$-hUajOQ3>uf(b3KnSIyegoGW_?vCiREk8T^39&z6p3hpSMA#me7q#N^58_p&%X+a ze{g_QazG44pwh`$9QF_nYFZ`F0VD`EFo&U}sbRC@YJHiOzI^P~p%d^71=TTi5G0wy z5|yiet)(cVw`f$s7?2A!xBC=+rO#T#lW_)cvpkCcSm{D{iX03z$1WvU++j=;l5$dY zGp8WEa!8|iMnwp}1mUKke6^A_9#C_F&_e`pcH8u>4Av4pRkWN#ei5N7JP6(4LpvVv zh3+=L;Y6ubHTi!`kju?M434P?J_-Cv#{Xn#XZ3>DqMDePm^D8?M{YHdFYnX;mCOyW zHafD=(3qL=ygs~h1mIek0OD*E?^M&n!^1*Iy@jCR)gB=)Oo*Gi4heh+#9+!hGkCt< zE_P)XB9$l55&>SOSsh^ch`4yxsnq54gTbb-U7eZ4AHeKQnL=4FMUO+^~Dlis#xpt%=PEZG`@2c!jAr* zXvK33D2BfE8-w?!vbtBUlzvG(7zBa{r*Ar}R!>gaixskjv0YA)VzV&}q&hBh!A_Uaad5JkHQ#X=?URuGHtn{7E9WCR~L-%Nd%xh^nYRy7p;+ zF(t?guI%p?BtsXfiUBM8)GiJ|HNT6}0GIsa0Bdm=ASWrR+rKu2&@h@HmKYmwTYuV!0-agdltc@`E-=Bf0$dkRxcV%mG&N_}fBt-xr<+VdLc*tpTq1~4 z0#LtSM-gOVNaiZGETdc`w5lJL#dboljDq`zH1CnEQR^h%2u!D802k(6Fm8phhmX}v zTPdxHP?w9=&hDOw5Sf)+FzIh>`8kq1ca^$W8y3WbOjSx*RMfwE%t8n=1eLejq_LiH z!J|_G)9Jzn51m5-c4&VY|6q>$#pB#?GSi;`P<2%=X0XGlYRNY^Zo zSyp}96Uw?=x2ivn0p+k?n-TCGE@?mXG3YUvjc#D4qB3d%5@PLosBM~n+g{63QN#o# zprjrJ`m%mCb=A+kBYnp_UOK@m8SmzGtyl7?T`XoIbOmmx+=%qg-Ovjvh0pLe*ngn7 z(~h%csX|T%->^D=)HAPlZT$h8(9aB9OizgiN z-*@&9N2-r1u00=sRkXPnx;T1T$I$3GSkb_s5js1kHLj_&JPr-&``+c^-J%ck>cOiA4BcjHJkehK~UW>$h9LOvp=*|JxEY} z{z&xsd+tuvdadbS<3N`oD-GyE;hzJjg4sY5vP&6OoD2C(+IXw{-oy4hJpYhv0U{$* z8T+99_QT(q35xF`1O|h6c}1Qoab@sG{rs|6SvNwVY28z@Vo9D&g&DKrTTdAkfTubadG6R_Sy* z_^bV054tanBJ_Aw$sMg-E_wZM9 z_JK<%ZuZ&9&CL&A6tEh&g8`ZPlJe?33eaw0*emLgO8)~~Ge4{R`$LUOD+zwaqqh(Y z7{G}-uxw zpYqceCXHH``%R_Bm0cvz{wlVsgSn@s85A4K3he*&cfe^)ky#J{0nd2S0S1)Gkgi52 z0>m0A@g2O5uz?hSTmi2BW-N=k{Hn*z!_#Z|XukU@5Kw%cm;(bg2`lOTH~>0sSunvRy)(`pIMIatXg##TGk$@3KzM}1>s?xb?3Mp5D;%Hc^xQCL;>m%LC zUj?BEg+q9v@PQT}IU(};MF%SJwtmPV6UjK=(1IeAKDKevRh-CywQ|XM!ff?jSb+_& z!}jq{Y#%x~X++cp-q3W&46lzY1aqja30|vmAxz`Yj6L-X;!&MU&pDY%p?G+=mFH(d zA9mE6T%L|p<8{OhpK&Jpa+Z(*RWAi#Q6>Ulcz73!R0;sJD-TaS(f#G#Z<5u`wYBfr zm#Bh*g2w^U5adDuA8&8l8z3LX3=vg2#ed(D4w&2~bar-@#C!t}icQfX>_|yU{{7q( z2$XSy18pn;1mpt-Q3M?f?Ck9CG8tO4uksOQ&aRQJwL4XMml?PSm3p)sxLu#YoflfH zFf#kzO#NXXVJBt`V)W1(JWzlp&ATvGIC(t%aVaBb&+`l46EeP^#cy5FT`(PJds{uj zjETE_@O1NPw~OG~408!z$rfB_l16MdeFG?v zFGI80qMq@0xWZ8$qVjRR@5K|ROBjozNmBg_ufzrGYMq(~GLSQZfK&@)^>#~2{+FQI zwzNF_ahG(8gv| zslgM0IJAeQ4@Q;8WuD1^m%JF@(b05RB*ynb&=CT3Z&_hD6jndzVpK29H`Ldve)aF( zhHR|s1!wu3kz~A_qw~96za!&2Wp90$_PQL?iyBKWx-hptRNSAh6VTGsd`~gOC*UQ} z^R;yuaG|3GL4e1u_TOU%NuTmMh>;>!6u!p5&?UjguR%Edf&2Dt)29y~OxV$4zjp}) zUZTmMh2o4- zc2lE6;%9Z^{;Nn570bRzG5Vo?tuOmuglNKq)Bp6>gp$~(FM7+Num}eUcMwuoVY#zA zS2=u-Z`Et*Ekx99Iifpvqs&JkN4Mr&-(wdMX^*gNUCi8_ul++xRk_^x91i#sU=OU& zD1Xt^ifgrDv|N}^X{vF{$y{0-ERlYXd=;5XcOo{qBJw>5B?7KQnevJMQO$+4Nm}?k(r|5q8vkbM$v$K z4OoR!3a1}QZb>qbL6u#X;9BKr&qwDtAvF#~k^lyekqdr5 zH=*unzn)v@{oZ96PQ)=6RzNl->ZKw0?-eUbxIHj}xCLB;I9ORL7W9A?&dF?5cktJ* zk^R6Xcw2Q%&13I4(0*rP9vtb5d`FgE=(8{~*=mfvKeZI*z35Lr$r)+%6g1wEZSod} zKQfle(Lzp=5-uIDm@o4#w1Lr@psN|)K`08$|3uXd7v<43dxvwoZqo|c$Q=nIPQo1H z7!vqJA(s-@&0pxB>~eF#PKA{x)}Duv1-o&a1wAVMExo9(le?y~xyi%8`?pmaA42z+ zy3B<69$x$0U3uJZFWBu)IAtjv9rJsxg(R6zb)i8N2J%3oqL#)B*Hn&5TH0D_0&dQ} zBi(;~aZvFa;nvxmF_2idgYDU;-8rxa`Onx85r%>Rrw;dlXiA9~O0s1d>!l)tAEkTr zK(vqsXwq{*8BA9@z8fprV?j^y+Uh}-V+{mc2`sj%UxI}PJMCJ$i;_79Hl*y^>dk!mUiV$O|f zW~bk;^oT&9!#`Rwvl57AYww|V0?z}UP6;DZnFR%>7*|zYCiGcmGM$zWT9j5ajP_+F zrWFYox=eHCl_tNsR*_!^P!n-~Wm7NweP$HUciNkYIMv~T;#^epVR3B<1nMa4HpT_| z*MFBLo>-Ddb)VN3JMX9gH>Wsm?&%d^-1UrdT1~jjf-3H<(eJ7^0FNWRYV1sU^bA%> zb`uH3e)ly%T-n@2@*|D(mWsA&i2KU>bN#K)3cp&2t+5%%OA*|wK$@WP&mE~!Qa)xA zx4uq=KV@I|R6h(^tBvHYgPn@pI|Mx+M`-shX=y_)pbl?QmhX-25@F>VkY&byZjZzn zf-bSb59=!T_X`!fk9QZ&g==iB_mAq@&DPYWv^z?L3dAm!3xQ0`rR~3~EBVLjd=`@K z8*a2n32{Ec&=giXIX|qL=E)3xUsQ}>75-+2b3Ylr1ODmN#hvjMG4MmC;l7GD4vZR> z@)j1!+)6BpSC121kQqSC5Q7vSFfk|5`=4*y?}c@F z=e)cH2P~JgQ(KdynP>=nf5FPKJ2tZ0yO2|ZFgpk{_LRhULNpip(H4^bdzRYNl=Y^@ zU8}vy=mw7IL;*w}ywEnwK3}u2xfj`dke90S%!@r$t0zG%@H7=IopDTi08`N3K?1SkpY6)^m>a;$>yBJWTpju_s@9372%ii?9Vu8B zyV&dPf0i;EVOR*jP>a^>satiRnT8-0WIg?8yFGWhKQFm(UZ4Fk-{yk4q~t=BU?P{7 z+|dxW#NYV1ZE$p3mJ#uk<9al2v$wQhV{C4|8!r}cPlMn-*e!BNrS5^}Y%8T6lMYzx{og`%{PRs06SfO0X-y zwtKO-aYy&U8{JxauDg9VtPDj23dDeed9J{^oZ3RYX2*r(%m!Q^lVYsaw+}{tkJo1X zl)g9qlKPyjWls~3sB5>M|5QQVo*H=S_E1^`$%Bu!}f*?`k@L)`P-+;_0kZ5!Z~YxcGla@#`NiTM8dG0EB7@Ka3HhP*iD=nY2?N19)A&T z6{qVF$TV6zLX*#li6QyK&!07JBumHXini6~1bdKsOEF5$EK1~6`Auc817>(2gp(fc4XE^ zQGjnq`|)Sp4S-4C{X-3hz=d*2V3oW$$5Y5H(8Qq{{N5akkqPdApigMMjer?DI0tvoXrtfY|@`t^a7c`kb}C^CW~Z+fA3l}3UHg9U>P;}ZrC zMl%{_+iZ0gy1%ipvD0ZyT2$1GjgaT1dyzyxR&)A1Z%6@&O=+25WmVnt+;rcy25Pf< zJ0D+N>sXt-+5U17>Q!53@ZNQpN$_(UpU>>5cCIex}iVkiBlFG66MuQ`Alr)5{0M#!<=EFc2FhVTq0y z%^os(>TtBv$m~Zkq;x)=nJFFGnhNNd^GuSv77awrqW$A{@b(2~Ht%Rh zWy}9uXk^al?lg{$k7>s|M3iy8eLJhB$r&?(B=+;MUMp)&wd-T&^z?N+@GpXe zyqbi`fePW3PS&ZSVF~7&z;>edzyaci`r<{bToY?3l{oL@uG^5c)*rojamVY272BWk zuz9k@e~e0WEm}2ci^(a-DO%MdwB2>H6m14Uq0bbFK3`nF>r>8*EBtejaB$x8SHQAEU*-$-O?WKD09b(Q9k; zDd8ZWuAY%^M%8p-@~)bSM?DEsT*ZZ(jcM+UMFbuxvzBE<`eG2}kMAY{1E=uo*P}=n zB^de`P_}Wl#o`z@Lq!-;P2qz1v->)h!Z4-0n5d|zhuzIGc5{QXUzv~BPHUNt0C|0V ztq5?;T*W28w@!YZRo6=y_z3JTwg~_eJlaucC;o=W4_l}Qqm73lx{bCE`c^??LH2Ua zrpeMVEjs$2->%oL4^7So=jrY3b{+sV;vG^r^;p`=#~`{OBGFLt^Z|o&=_&U7YPXQJ zfoK!WSQ-gD*`SYrJz&&H1+a~>bC-=w?=f<^7_*Z=ncUSfIih8Iv6u+2axt{Fv54ZT z{dN_ZRxGQn+@G4eQ@c}#r2D8=VTciw`e4W58qwa%e)NNVntPjs^P2C1-IR1#p6kdB3jxi$LZXMn*f+Cy9VZS$3+lOProz7&aY8t>u`psoQ z#$Cc-7yRn*%HKp&jBG*QeIIKNC7PFuLC`X&qTNo-&aGY=a4>4B1w_VPfE#cWFxB_9 zHMV(b1?Vn*howip7G?|2L}txcD_T0UnRRtlcZEI$*Q4%t?xi7-VJzY-bnb;9MG)=W zMfVD}s3Bdv;g16hYQGw!+f}=Q$7KYLoaX&e+zbU!y%wdvG| zS;Q4@Em<3j$tpo4OKf`$>)7RFlX*|==vMU9C4h3ao}^9RzbeA0u{&k# zgHBEK7Us+r4_DJ=^gbH70jU=xDwh^2JI`dDMU5{XIUmhecSc`D%ge7?x#$WI&g^?V zhtJqV;@+2}8;5pHXO?ii%CAY|5a+f1n|#JT_bPYfvs$9HCgmLHk23e9u9?IrTSs)~ z*mqxD#F-wq94wH(G}-@-Xi*nSOmWO*W9+`rFsW>YPM0BV9lgeeP$ZsJ83F0+`lP2Id|$LQg1pdn&l}E4mST|AK*lyU6UnE+JAR{ z?sncdoN(S=)R@KYO8z3x8+@Qm?+1NesNLb3N_=r`Bg&U)n+eKujWk~f+D@*^+A(u7 zaheXTaw@;_Oseo}y*gXLNiW}AF$pSr5u3F{%TINB^kkiFzrPtAIv&;L`Gz4UH2n^7 zYLZWTqhMzG?Rfrt5JnA}V%cT5a5rK%N9^!|3l6zA5y`A=y z_OJyF#*F$veB6vB{mSll$M3Y4>Sq{JzXDWW$YF zo;$>8Jf8jKCT-j|ocZNN`6Dl!`Wb$v zrF{TI-(WJW>2)Ih`v8+0NY_VPXL$CLno|V8+I_JI)uxu^HV!Llg44SwV~Am2(Z@ z6KzshV$<^!G2h+qpm0l-rx}D-<(H}QPh}dOkC2zlgR@4)C!WEqxSh`0!um;FyJMGU znN}x)`x$_~m9>CCZBK*pZ*~Scc=b2yjsjL+qKIbX`xt|EG + + + + + + diff --git a/angular/src/assets/images/getting-started/img-blog.png b/angular/src/assets/images/getting-started/img-blog.png new file mode 100644 index 0000000000000000000000000000000000000000..37fc5be0e03e6d59a60d559d74d6fdfa51e10482 GIT binary patch literal 42029 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 literal 0 HcmV?d00001 diff --git a/angular/src/assets/images/getting-started/img-support.png b/angular/src/assets/images/getting-started/img-support.png new file mode 100644 index 0000000000000000000000000000000000000000..27f4f13b22c1036c269b6e2b17d29e287e2ef26a GIT binary patch literal 33989 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 StuUzo0000 + + + + + + + + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/getting-started/stack-overflow.svg b/angular/src/assets/images/getting-started/stack-overflow.svg new file mode 100644 index 0000000..2b09789 --- /dev/null +++ b/angular/src/assets/images/getting-started/stack-overflow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/angular/src/assets/images/getting-started/x-white.svg b/angular/src/assets/images/getting-started/x-white.svg new file mode 100644 index 0000000..38b09ee --- /dev/null +++ b/angular/src/assets/images/getting-started/x-white.svg @@ -0,0 +1,3 @@ + + + diff --git a/angular/src/assets/images/getting-started/x.svg b/angular/src/assets/images/getting-started/x.svg new file mode 100644 index 0000000..422e2de --- /dev/null +++ b/angular/src/assets/images/getting-started/x.svg @@ -0,0 +1,3 @@ + + + diff --git a/angular/src/assets/images/getting-started/youtube.svg b/angular/src/assets/images/getting-started/youtube.svg new file mode 100644 index 0000000..1d38b17 --- /dev/null +++ b/angular/src/assets/images/getting-started/youtube.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/angular/src/assets/images/login/login-bg-img-dark.svg b/angular/src/assets/images/login/login-bg-img-dark.svg new file mode 100644 index 0000000..69f3511 --- /dev/null +++ b/angular/src/assets/images/login/login-bg-img-dark.svg @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/login/login-bg-img-dim.svg b/angular/src/assets/images/login/login-bg-img-dim.svg new file mode 100644 index 0000000..61cb357 --- /dev/null +++ b/angular/src/assets/images/login/login-bg-img-dim.svg @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/login/login-bg-img-light.svg b/angular/src/assets/images/login/login-bg-img-light.svg new file mode 100644 index 0000000..5edf938 --- /dev/null +++ b/angular/src/assets/images/login/login-bg-img-light.svg @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/logo/icon.svg b/angular/src/assets/images/logo/icon.svg new file mode 100644 index 0000000..b7a6dca --- /dev/null +++ b/angular/src/assets/images/logo/icon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/logo/logo-dark.png b/angular/src/assets/images/logo/logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b672828003dacf42c9cab1f254ef3536a6edf0e1 GIT binary patch literal 1386 zcmV-w1(o`VP)2Rm(*Ft`meI3_=ghFR4o~~UTZ%R|k(%DQ z60cUwjX^Xq4=nxHmA1Wrwwh3H6kAiJos5fvctM<2UagoLfrsnyDgsk2OgOh>D{d_d zHEBbOeYK3mMJ!%fmWA+YQFFYGK(D8K=gKV16v0XxnwT|vHt}&LA~vrg_)J6{#r}69 zO0g(i6457%%?@njxI{mRArWn(T`FvoWo&{&m|4c=K1X8w10w3<{|h3Th~Lj_Pl_#x zIruFLa5OPTeQLW7s}i#-S9|NRp@~_uci~AN#^zN96ZF}{-<4m?ae$q^`1c#7ZVv*R zK@?lK$kO)2=(i}qKM(b~xRFxWKY)#8Kz}*@8v1{Lh*PDF#&Icbo=yDSIj^s_0b__+ zi;Xp5xZo3w%cDLgFCSQ3Yq*euKrwgmc?ltOgow8A`9oa%+>@EML&njth4ClC#sWfm ztIQHM$njImCR>JpeH^(y=kw9H$)6xb%xuf=mO;!IH72jBNKv$@RYM=*y+fV6h+Wt+ zy;!JiA2v`w7wu*k(F z#olGWPGD~IO#}IBU|VHx2Ik}x^>c{1DzwcJiQO7<9zu|&Ks0RPyE|OGREe8IuxGT9 zQ+mg;$nv4Am~C)zBvH?y)g?L5L@_rhT_y#Si}GhcAC8w<_zQS6%_F-oH0q>Kmc~pp zh#006fs13us9*S;K@-K?B=BPAugDDe&_}y%v}14B_jx7*TG~uP3MX`Z5yHO+TpVTk za0oAb;L2viSO6A9ofc*itKc<8nG_K68p=?FCnP?#xG~R^lnEO&u*Wvz+fD^Bv#pRY zO9MLv=K?Z@m}4%SLTn|XRJBz%aBMt=*E$m3iR(CX(G}ct@fXP>yP#!IY>UEBu&uk2 z{Ta?sC`Oo}ZA28!&vO3PwyCibuzkHsUaNw+0OA<&T70*JP&v!NJC*Ozt^+ZfH?L`X z5qN`hZhHv3so0eH6)=Wb$D1ZgB}^*IQAG?fYZqMGuwZC{k~Z#@{w{m}i&t!z3mnE$ z@v^@mW{#W3h^dDVSw0P$yJ@EFNdcjpB0l9T0&i!V3s7wgt!^&1^2>7M8L97@A*!C5 z)6O27$2ujnujq1zVUAQdsc5$CI?s;qmb#<=4=j5Xn4`O=;m#C0^~5CXIpjNs}UCrpOPpjw*06 z(LT`n^6_vzV(tJQVd{?Ys)2LZ^KAs2B8+f_M1^_zUNs=l3c5ycy*DESyUHRd=1X9D s2o(l~VCBs)HR^1eDeX&OUNVU2AB?X3R_NE8K>z>%07*qoM6N<$g0SM01^@s6 literal 0 HcmV?d00001 diff --git a/angular/src/assets/images/logo/logo-dark.svg b/angular/src/assets/images/logo/logo-dark.svg new file mode 100644 index 0000000..d263c7a --- /dev/null +++ b/angular/src/assets/images/logo/logo-dark.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/logo/logo-light.png b/angular/src/assets/images/logo/logo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..f414b0ace3996bc1366a9103bacd8e5e2711c80a GIT binary patch literal 1579 zcmV+`2Gse9P)FClP^+l2HB+|x$jyBX>6C~1N ziR#==G}arkUeE4df0kgM{*zW8yu0(C{okLRo&Eb+M0SYij3O{I$DfrzL^g?NpNQ1% zCW_)3<(!C4nE9^Ip4l3p5Nv4wb7nrN$qROy@T$#k)8TPZRm>vtmWYlDnyO%qnfW+l zYn_NbKzuo<5Wi>U%UZlpa_Gdog!sA^B@uZ?LJ?6JW^dcdi8L`1Dd-gOec>!C8PW_IE#5X`SULBSn4;C{7wCPms zhLb#Ip2oILyL|}w{(pGd5Z7Tif=S=GW9#0Vmh!Tg+vDZ%=&;17;hDYR_@kGtfS^4u z7~1f{3om2giMbW8O!(4;8Y_ev6F|@VB{K`Civ=6n@WkxdONq}i5w&?Of?tTJ=h%Nw zL=z&?N$Hq~-grqP5$VB(;)0pqNA*J@dWmzWy-RB&BHp

Cj6|h{w$QCa^c{!_0@l z`Ck)JA5CtEXk-)YxP8RUJO7n_cV-?pam4TR&Z)aX{UmiA9!t!*T@ zRoo(SV}dMzoqrAee^e1Ob123f$8q3%w(y%MuU}KAt|4YGuJnYFLsm4o9P(50Du9V= z4W4#TDCP|uFCf%jAfjy?e`Dt9#fP_@u^kD!7$UNb^N-AiiWoxr4x>vW!t?8mMnpq! zAB7x6BxlNOD4(CBn|uy6V&;-ua1jz|x+mvV0TUE&X!X#CXSzjQcoFr&PE5#vwk@^Y zglDL~vUYGLlO{1`V78vM>RmXhR9iGz0ByYNm%!^YJaiT!vH@YL2m6G!HsllPW`_DO z{;hxkY+gmCCMEnms4aNlwl{-0rmU!+Ld*|>h|Dd$htT}-64D+*kg-5KY~iz8^}ZOQ zpBMC-fr#vd|3_g*524ATXeH)Sj!p<>^%h!PPzEa}<`qkqg@RF0{!!4!;$;)QdZT_6 zH?{CD>%=bC4NmLLcp3VrVvR*l+SoA-uF% zR3A>zO6M0P{EML+GZVmR>Jons;iX^avKh6OvlqcKP0T_(2Cq|;QHc z$GNysQ(i5@1`n1?j^o>2TQLW=O2RA;<`l9M$QojyAjY=@h_4`&S5Tt5_s;mVl-Q~4egqc4TWli8Qwy~qWRfr{#Tcpyaa5Rp%~z$)gMo7b6K-IV0(nfU^_=AnqJ1&bzn z{IlsCPMs~9jN>pV(Z975sv&0Yg6AI4@dOpxxO4iqdElouuiA(wIEHbQLstBQFryE# zonkqA2$AUmN4%OA+a4_-loQ0KmPN4T?05p|ox`iMro?S_J;rXu}%}t zW@4fh+VJkoedn{L=Z%Yb!7DfM>agTUh8cxR%a?c(>)IKnZ7b6q{U>D4W5tBQ{g~$UR{W>dZ@Mnh}E3C8m}5) z=8qzBnDMHH69_yR61Cw~@Tvhr_sW4KLX|Kh{GjGbU|`F3YKMZozZvl0(S2R&eIMOR dV7_n=(Z6wxUN3m5)LZ}n002ovPDHLkV1hLY2z&ql literal 0 HcmV?d00001 diff --git a/angular/src/assets/images/logo/logo-light.svg b/angular/src/assets/images/logo/logo-light.svg new file mode 100644 index 0000000..4ce31df --- /dev/null +++ b/angular/src/assets/images/logo/logo-light.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/angular/src/environments/environment.prod.ts b/angular/src/environments/environment.prod.ts new file mode 100644 index 0000000..24c38c0 --- /dev/null +++ b/angular/src/environments/environment.prod.ts @@ -0,0 +1,35 @@ +import { Environment } from '@abp/ng.core'; + +const baseUrl = 'http://localhost:4200'; + +const oAuthConfig = { + issuer: 'https://localhost:44380/', + redirectUri: baseUrl, + clientId: 'BookStore_App', + responseType: 'code', + scope: 'offline_access BookStore', + requireHttps: true, +}; + +export const environment = { + production: true, + application: { + baseUrl, + name: 'BookStore', + }, + oAuthConfig, + apis: { + default: { + url: 'https://localhost:44380', + rootNamespace: 'Acme.BookStore', + }, + AbpAccountPublic: { + url: oAuthConfig.issuer, + rootNamespace: 'AbpAccountPublic', + }, + }, + remoteEnv: { + url: '/getEnvConfig', + mergeStrategy: 'deepmerge' + } +} as Environment; diff --git a/angular/src/environments/environment.ts b/angular/src/environments/environment.ts new file mode 100644 index 0000000..ad0233d --- /dev/null +++ b/angular/src/environments/environment.ts @@ -0,0 +1,31 @@ + import { Environment } from '@abp/ng.core'; + +const baseUrl = 'http://localhost:4200'; + +const oAuthConfig = { + issuer: 'https://localhost:44380/', + redirectUri: baseUrl, + clientId: 'BookStore_App', + responseType: 'code', + scope: 'offline_access BookStore', + requireHttps: true, +}; + +export const environment = { + production: false, + application: { + baseUrl, + name: 'BookStore', + }, + oAuthConfig, + apis: { + default: { + url: 'https://localhost:44380', + rootNamespace: 'Acme.BookStore', + }, + AbpAccountPublic: { + url: oAuthConfig.issuer, + rootNamespace: 'AbpAccountPublic', + }, + }, +} as Environment; diff --git a/angular/src/favicon.ico b/angular/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..39695854d21146f87f3c65b27b9baef29b609255 GIT binary patch literal 102968 zcmeI537pq+{>Q&#(w&J=Nlo~pW0Qn59Wxb$bSNuPvRT%hqf4s;ZCSZ(OWK-7Y)i-r zZEQ`BWU(4$h17J>bWX=~%{0yb`I^3;@t%*GgB-i_?eTc}yx-r?{dphX@9!Ex5EGOS z^e-l;AAC?X2(CpQHEO@!pkhpLdbJ=(N(%M%L2%hITswWg{Go3(h~chiXMdP2K1AzcFXkM=vQ{WM`>iK5IQHnHPQRzt zxkvx;s7jSiY*7E1QRg0e@=fmruisv=!i!UmiT(7r-c?Q>^;)%O7fpC5@2#Ahhc^GJ zc5>$0C7GKhH6QZVg@0M|&$Vr0QyMMH=rZ<+jg^Mi%Dysf$mp&MT9hAtOjga5#7eo% zGP;fLU+3RXrM>z31*vgKJ@U>8o_Y89phy2Bf`-j1jQZ1)u}K$x6jT4?v(qwTGiKeA zHD<-h+f$OuP5Lb6qfu?Y7@Ji-V?ffhLFHz3NS$`{((5kWxw^xI2B+jSed3wQ-T>bO zj~sPJaQ+{=WDg3KW!zk;Y3|K(S*CgxBl++`JUy(6z(p?=ty|YGk=d|n7^S(%X_z(L|&WIn=HLt>ZQ_|ydUtr;T zdSyLY#Igrv4-by~9>>cSTZimE4LMSznFLY?oLkyLnpE zd)n5`UYXYPwE4GW&AoEptxvsn@modAv*ozES`5p2szyqSw75|tnh*SPR_=#sv+f=d zlXd;YV<*Sw)yg_Kt>4{U6VqF!?Yg&ZTtb^&qtfoEaN6A?nq)0b=~sSu#q5NPDi{9! z!EeU=ZAI;GUCnMqo>=FOrrDd*)+MxBwy?{Rtv608KRhmDU~0~B8C6pH#SZWN_11rn z?wXu8krq2UO-Zga>9YxGcN}@zg9(ZE&aIL)qusQ%NBpJl{mU}iT*ApMeBzBF40H2G z38NlQ!Drq%XJp*HX>X3t?6zw|a)sPpY3pXk^lG0TpRjB|w++Fi?MIf&ZaO77Cih_~ zf>*n)XrIxoL*9`Czsy{9b=vilKB#oog0)3#D0W%KC)=0CkLtRx6MnPg?*s0>vemnn zcIX%69+C08c0|)_Ip6GBS~+82-MnELucp8AHIBA#e%ix#cU`h>#+a@f`qUdcVqn8z z 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 Kp#2tJdH+9GLJime literal 0 HcmV?d00001 diff --git a/angular/src/index.html b/angular/src/index.html new file mode 100644 index 0000000..d162f54 --- /dev/null +++ b/angular/src/index.html @@ -0,0 +1,13 @@ + + + + + BookStore + + + + + + + + diff --git a/angular/src/main.ts b/angular/src/main.ts new file mode 100644 index 0000000..c7b673c --- /dev/null +++ b/angular/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/angular/src/polyfills.ts b/angular/src/polyfills.ts new file mode 100644 index 0000000..1a05fd5 --- /dev/null +++ b/angular/src/polyfills.ts @@ -0,0 +1,54 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ +/*************************************************************************************************** + * BROWSER POLYFILLS + */ +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js'; // Included with Angular CLI. + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ + +/****************************************************************** + * Load `$localize` - used if i18n tags appear in Angular templates. + */ + import '@angular/localize/init'; \ No newline at end of file diff --git a/angular/src/styles.scss b/angular/src/styles.scss new file mode 100644 index 0000000..e0eabb6 --- /dev/null +++ b/angular/src/styles.scss @@ -0,0 +1,41 @@ +/* You can add global styles to this file, and also import other style files */ + + +:root .lpx-brand-logo { + --lpx-logo: url('/assets/images/logo/logo-light.svg'); + --lpx-logo-icon: url('/assets/images/logo/icon.svg'); +} + +:root { + --lpx-theme-light-bg: url('/assets/images/login/login-bg-img-light.svg'); + --lpx-theme-dim-bg: url('/assets/images/login/login-bg-img-dim.svg'); + --lpx-theme-dark-bg: url('/assets/images/login/login-bg-img-dark.svg'); + + .abp-logo { + background-repeat: no-repeat; + } + + .abp-support { + width: 178px; + height: 30px; + background-image: url('/assets/images/getting-started/abp-support.svg'); + } + + .abp-community { + width: 215px; + height: 30px; + background-image: url('/assets/images/getting-started/abp-community.svg'); + } + + .abp-blog { + width: 142px; + height: 30px; + background-image: url('/assets/images/getting-started/abp-blog.svg'); + } + + .logo-x { + width: 20px; + height: 20px; + background-image: url('/assets/images/getting-started/x.svg'); + } +} diff --git a/angular/src/test.ts b/angular/src/test.ts new file mode 100644 index 0000000..e98cf6e --- /dev/null +++ b/angular/src/test.ts @@ -0,0 +1,16 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting, +} from '@angular/platform-browser-dynamic/testing'; +import 'zone.js/testing'; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting(), { + teardown: { destroyAfterEach: false } +} +); diff --git a/angular/start.ps1 b/angular/start.ps1 new file mode 100644 index 0000000..581a5b6 --- /dev/null +++ b/angular/start.ps1 @@ -0,0 +1,2 @@ +npx yarn +npx yarn start diff --git a/angular/tsconfig.app.json b/angular/tsconfig.app.json new file mode 100644 index 0000000..82d91dc --- /dev/null +++ b/angular/tsconfig.app.json @@ -0,0 +1,15 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/angular/tsconfig.json b/angular/tsconfig.json new file mode 100644 index 0000000..e8fba96 --- /dev/null +++ b/angular/tsconfig.json @@ -0,0 +1,30 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "es2020", + "lib": ["es2018", "dom"], + "paths": { + "@angular/*":["node_modules/@angular/*"], + "@abp/*":["node_modules/@abp/*"], + "@volo/*":["node_modules/@volo/*"], + "@volosoft/*":["node_modules/@volosoft/*"], + "@swimlane/*": ["node_modules/@swimlane/*"], + "@ngx-validate/core":["node_modules/@ngx-validate/core"], + "@ng-bootstrap/ng-bootstrap": ["node_modules/@ng-bootstrap/ng-bootstrap"], + }, + "useDefineForClassFields": false + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false + } +} diff --git a/angular/tsconfig.spec.json b/angular/tsconfig.spec.json new file mode 100644 index 0000000..092345b --- /dev/null +++ b/angular/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/angular/web.config b/angular/web.config new file mode 100644 index 0000000..ed1d104 --- /dev/null +++ b/angular/web.config @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/angular/yarn.lock b/angular/yarn.lock new file mode 100644 index 0000000..5e870bc --- /dev/null +++ b/angular/yarn.lock @@ -0,0 +1,7974 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@abp/ng.account.core@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.account.core/-/ng.account.core-9.2.0.tgz#d9dcb4ed2f5911e6327ab261c57e1d89aa5b92ec" + integrity sha512-+GrsGSrVclRWp6yviJ4opN/DaAMiCMoRH85Wjlv9Jmfbxs4nyldWkfFAVznL5tcetnhyAcWMoDS1mLKSsy2bAg== + dependencies: + "@abp/ng.core" "~9.2.0" + "@abp/ng.theme.shared" "~9.2.0" + tslib "^2.0.0" + +"@abp/ng.account@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-9.2.0.tgz#06b86583526c03c9fe8983b46f3375990f65a21c" + integrity sha512-q+OG5ihfENSNH5Qewv55PKGiNRpxm2CVmSPnGZyolFz1BmYg0aCoA3hIJ5V0CRxFV5Q8QFZ23QZUZfGmY2LUKA== + dependencies: + "@abp/ng.account.core" "~9.2.0" + "@abp/ng.theme.shared" "~9.2.0" + tslib "^2.0.0" + +"@abp/ng.components@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.components/-/ng.components-9.2.0.tgz#902a3043f7e5006de1ff7dfbabbcadadc6903e48" + integrity sha512-4yeSKOVNyrTSbwC3aNjMhYdTtTep0IyzgoVd9Bw6TNC2fxpsf/aK0Uqn6vIpZEFk1oFdqRRqH3v7tzp9YWNcYw== + dependencies: + "@ctrl/tinycolor" "^4.0.0" + chart.js "^3.5.1" + ng-zorro-antd "~19.0.0" + tslib "^2.0.0" + +"@abp/ng.core@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-9.2.0.tgz#b7f4c3c32e0d5a67a9a0d3da695ffc2d004ccd59" + integrity sha512-Tz2VP7MrW5cVfkFDMOdJ99UN7FF3Ylc0TT1jYqUOUwMk4Tzgqryw4psiExlyLbHQdwDDHNiJ0lBuRgJQ4X/qXw== + dependencies: + "@abp/utils" "~9.2.0" + just-clone "^6.0.0" + just-compare "^2.0.0" + luxon "^3.0.0" + ts-toolbelt "^9.0.0" + tslib "^2.0.0" + +"@abp/ng.feature-management@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-9.2.0.tgz#49e4d3a0880a8a9481e54105e6f3c6c3eaa1fc9b" + integrity sha512-jP/qCzVGJh0bUuQuvlt3l+Vob5FvhzMbMBr2FfL33D1H5cw73h5lYeuP5WMJN2xUTOvMmcdOSRBR2y0cjNukYQ== + dependencies: + "@abp/ng.theme.shared" "~9.2.0" + tslib "^2.0.0" + +"@abp/ng.identity@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-9.2.0.tgz#fcb8563bcde43fc358397820578529ee729b970f" + integrity sha512-z5EIBVs0P5X8R3nMpSkY9PQT/1u/DA5VnchoDr+YhHF73rUVPpZlkM5AB4cA0fXDYhCbFhXHsqAlFqsNHocl2w== + dependencies: + "@abp/ng.components" "~9.2.0" + "@abp/ng.permission-management" "~9.2.0" + "@abp/ng.theme.shared" "~9.2.0" + tslib "^2.0.0" + +"@abp/ng.oauth@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.oauth/-/ng.oauth-9.2.0.tgz#1c91acc323fd2d8e2c3f8dc893e29a5703f2c86d" + integrity sha512-i0Vslgr4eb1cVZvMkGNE7AtYSJMcIwKPmL1GZhIusnCLrDBWkBa6HOMKXM1ISZRmYsgxvcPPJzlUfh5sb4wcaQ== + dependencies: + "@abp/ng.core" "~9.2.0" + "@abp/utils" "~9.2.0" + angular-oauth2-oidc "^17.0.0" + just-clone "^6.0.0" + just-compare "^2.0.0" + tslib "^2.0.0" + +"@abp/ng.permission-management@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-9.2.0.tgz#a42aa866d91450b9d0c07f1f0f95d67b86f88203" + integrity sha512-n3jmVW4AOKyRKSN/LYNCiKI6UzvbkD/a+sEbschfXBJKihLo7tjBVkO4s51wfzlQHdIN7Ybpw+6XxfdnRsLWgQ== + dependencies: + "@abp/ng.theme.shared" "~9.2.0" + tslib "^2.0.0" + +"@abp/ng.schematics@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-9.2.0.tgz#a1033f2d182c92ad35d6b22f0259043e10826c18" + integrity sha512-aaFjvO6qIofAvizI/ho6zGB15diTx15qcTIKPcvUPdCm4Az3eZ0eob0Az1MfNHiBwpaLYH2m/Btw2f7jZ0tshg== + dependencies: + "@angular-devkit/core" "~19.1.0" + "@angular-devkit/schematics" "~19.1.0" + "@angular/cli" "~19.1.0" + got "^11.5.2" + jsonc-parser "^2.3.0" + should-quote "^1.0.0" + typescript "~5.6.0" + +"@abp/ng.setting-management@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-9.2.0.tgz#8cc9631224c38e66630ba26c842771358bed5f18" + integrity sha512-VaW+DP+CMb1QxAH58ymnUc5XbTnU19fmI/m9Qs73SVUGuF7kiWKcbVxL8w1qplnjOOVeDB7l2ihp81Dm7tXYlQ== + dependencies: + "@abp/ng.components" "~9.2.0" + "@abp/ng.theme.shared" "~9.2.0" + tslib "^2.0.0" + +"@abp/ng.tenant-management@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-9.2.0.tgz#267664f428ccc5412a5f6f2f2efa24fba1bd8e29" + integrity sha512-nRLDBDCVai5DOyd5rLs1KfwfZ/m+yAmzMfoUJet4Sk4tgvAEnlm8WWmhs2GkH+7RZwbyAJHiIpO52xFSFXWusA== + dependencies: + "@abp/ng.feature-management" "~9.2.0" + "@abp/ng.theme.shared" "~9.2.0" + tslib "^2.0.0" + +"@abp/ng.theme.lepton-x@~4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.lepton-x/-/ng.theme.lepton-x-4.2.0.tgz#0d0b93f4c0b82d474880d7ac06857d05f03b766d" + integrity sha512-L9xBNQMtii+aRpTCymTuMjCBwFCO+pFC6wNnbsCXfNkrDhn+XeaO5uKi1gCysEbJVP0sezdJxLExfUF95GmPdw== + dependencies: + "@volo/abp.ng.lepton-x.core" "4.2.0" + "@volo/ngx-lepton-x.lite" "4.2.0" + tslib "^2.3.0" + +"@abp/ng.theme.shared@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-9.2.0.tgz#e522278aa3f30ceaee50d688aaf88424c2b285e0" + integrity sha512-/haDZBnGpdgwrWc6duMf5wazoT2sRNdtGo8TBIDx821K457VhNdLh7R1Y5nbdeVyk6n3dJ+aPC+vAID0Tu1z/w== + dependencies: + "@abp/ng.core" "~9.2.0" + "@fortawesome/fontawesome-free" "^5.0.0" + "@ng-bootstrap/ng-bootstrap" "~18.0.0" + "@ngx-validate/core" "^0.2.0" + "@popperjs/core" "~2.11.0" + "@swimlane/ngx-datatable" "^20.0.0" + bootstrap "^5.0.0" + tslib "^2.0.0" + +"@abp/utils@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0.tgz#bf32ced1175e45fbe010c3cb806c7cd37f85089c" + integrity sha512-aciBuXhzlaqe+o7mNt536bCk425cmxY5BE0wwl13u3pX3LfWYWLEgwl8GS0aeI11TS1/7+1N85RJELyz/+y0hQ== + dependencies: + just-compare "^2.3.0" + +"@ampproject/remapping@2.3.0", "@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@angular-devkit/architect@0.1901.9": + version "0.1901.9" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1901.9.tgz#9f83ce2b15fafaa04efb50a3183fac7ee46a79f6" + integrity sha512-Z5H7s9X2bIWTvhGllO7kDqbgNnn8r78senlLquyc8sMIC1vQ4EQE+nzUSDtfp7tHqWeiK8Gk7eTWTL+UM9rXmw== + dependencies: + "@angular-devkit/core" "19.1.9" + rxjs "7.8.1" + +"@angular-devkit/architect@>= 0.1900.0 < 0.2000.0": + version "0.1902.15" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1902.15.tgz#c9154e520dd287972cb7d5942513b2ac6a8597e0" + integrity sha512-RbqhStc6ZoRv57ZqLB36VOkBkAdU3nNezCvIs0AJV5V4+vLPMrb0hpIB0sF+9yMlMjWsolnRsj0/Fil+zQG3bw== + dependencies: + "@angular-devkit/core" "19.2.15" + rxjs "7.8.1" + +"@angular-devkit/build-angular@~19.1.0": + version "19.1.9" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-19.1.9.tgz#1b59ce9968779066188f64e6070af2f5247c3449" + integrity sha512-Y2ohbcGEsceiNO5B11C0sbEXUhx+Z6+9nAV5GyySMXZ/GDE2cfvxc8deB0CK+bnlI0diz9ZOdJt6a65LBJ7Tnw== + dependencies: + "@ampproject/remapping" "2.3.0" + "@angular-devkit/architect" "0.1901.9" + "@angular-devkit/build-webpack" "0.1901.9" + "@angular-devkit/core" "19.1.9" + "@angular/build" "19.1.9" + "@babel/core" "7.26.0" + "@babel/generator" "7.26.3" + "@babel/helper-annotate-as-pure" "7.25.9" + "@babel/helper-split-export-declaration" "7.24.7" + "@babel/plugin-transform-async-generator-functions" "7.25.9" + "@babel/plugin-transform-async-to-generator" "7.25.9" + "@babel/plugin-transform-runtime" "7.25.9" + "@babel/preset-env" "7.26.0" + "@babel/runtime" "7.26.0" + "@discoveryjs/json-ext" "0.6.3" + "@ngtools/webpack" "19.1.9" + "@vitejs/plugin-basic-ssl" "1.2.0" + ansi-colors "4.1.3" + autoprefixer "10.4.20" + babel-loader "9.2.1" + browserslist "^4.21.5" + copy-webpack-plugin "12.0.2" + css-loader "7.1.2" + esbuild-wasm "0.24.2" + fast-glob "3.3.3" + http-proxy-middleware "3.0.3" + istanbul-lib-instrument "6.0.3" + jsonc-parser "3.3.1" + karma-source-map-support "1.4.0" + less "4.2.1" + less-loader "12.2.0" + license-webpack-plugin "4.0.2" + loader-utils "3.3.1" + mini-css-extract-plugin "2.9.2" + open "10.1.0" + ora "5.4.1" + picomatch "4.0.2" + piscina "4.8.0" + postcss "8.4.49" + postcss-loader "8.1.1" + resolve-url-loader "5.0.0" + rxjs "7.8.1" + sass "1.83.1" + sass-loader "16.0.4" + semver "7.6.3" + source-map-loader "5.0.0" + source-map-support "0.5.21" + terser "5.37.0" + tree-kill "1.2.2" + tslib "2.8.1" + webpack "5.97.1" + webpack-dev-middleware "7.4.2" + webpack-dev-server "5.2.0" + webpack-merge "6.0.1" + webpack-subresource-integrity "5.1.0" + optionalDependencies: + esbuild "0.24.2" + +"@angular-devkit/build-webpack@0.1901.9": + version "0.1901.9" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1901.9.tgz#45461da16b71936ee7520536394217c6de1da0f4" + integrity sha512-Q5fZI1UTnth5LRColCCBIXssBr2/TNoJkuANd/cqNLcYNJehlSDfOOiEmRKTiH2Ytof2GvBclmt4+twL+clTfg== + dependencies: + "@angular-devkit/architect" "0.1901.9" + rxjs "7.8.1" + +"@angular-devkit/core@19.1.9", "@angular-devkit/core@~19.1.0": + version "19.1.9" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-19.1.9.tgz#489ef1f59a64baae4355006b4c2e92bee305d49f" + integrity sha512-sRstYW2M+P8AMcQrJiZ1VEJAmk2BXn5N7/OfL5SG3UXvwvfik8KI0t1Stre9fX9DNalbQSGGHILLBgO1CIyjgA== + dependencies: + ajv "8.17.1" + ajv-formats "3.0.1" + jsonc-parser "3.3.1" + picomatch "4.0.2" + rxjs "7.8.1" + source-map "0.7.4" + +"@angular-devkit/core@19.2.15", "@angular-devkit/core@>= 19.0.0 < 20.0.0": + version "19.2.15" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-19.2.15.tgz#35af566f9c69d3eca9c183936ee8527d9725a006" + integrity sha512-pU2RZYX6vhd7uLSdLwPnuBcr0mXJSjp3EgOXKsrlQFQZevc+Qs+2JdXgIElnOT/aDqtRtriDmLlSbtdE8n3ZbA== + dependencies: + ajv "8.17.1" + ajv-formats "3.0.1" + jsonc-parser "3.3.1" + picomatch "4.0.2" + rxjs "7.8.1" + source-map "0.7.4" + +"@angular-devkit/schematics@19.1.9", "@angular-devkit/schematics@~19.1.0": + version "19.1.9" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-19.1.9.tgz#38518a8a1fba5bf1dd460775c9d1f4289a30ce92" + integrity sha512-iTJsG0MSQuqHxgbqJPEB2acqHpZaCvadIDwKsReUYTQRSQ8/+n8msjU7to+wunDmi7auKlF3y3TiJG4NZGGzQQ== + dependencies: + "@angular-devkit/core" "19.1.9" + jsonc-parser "3.3.1" + magic-string "0.30.17" + ora "5.4.1" + rxjs "7.8.1" + +"@angular-devkit/schematics@>= 19.0.0 < 20.0.0": + version "19.2.15" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-19.2.15.tgz#d20ceba32f97b5f0e07e25268d9b8fea7ee142dd" + integrity sha512-kNOJ+3vekJJCQKWihNmxBkarJzNW09kP5a9E1SRNiQVNOUEeSwcRR0qYotM65nx821gNzjjhJXnAZ8OazWldrg== + dependencies: + "@angular-devkit/core" "19.2.15" + jsonc-parser "3.3.1" + magic-string "0.30.17" + ora "5.4.1" + rxjs "7.8.1" + +"@angular-eslint/builder@~19.0.0": + version "19.0.2" + resolved "https://registry.yarnpkg.com/@angular-eslint/builder/-/builder-19.0.2.tgz#62b8908187db6292732b265c07402a9bfde8c662" + integrity sha512-BdmMSndQt2fSBiTVniskUcUpQaeweUapbsL0IDfQ7a13vL0NVXpc3K89YXuVE/xsb08uHtqphuwxPAAj6kX3OA== + dependencies: + "@angular-devkit/architect" ">= 0.1900.0 < 0.2000.0" + "@angular-devkit/core" ">= 19.0.0 < 20.0.0" + +"@angular-eslint/bundled-angular-compiler@19.0.2": + version "19.0.2" + resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-19.0.2.tgz#9308199fda2581953a4a9b8b270dd289b5034c68" + integrity sha512-HPmp92r70SNO/0NdIaIhxrgVSpomqryuUk7jszvNRtu+OzYCJGcbLhQD38T3dbBWT/AV0QXzyzExn6/2ai9fEw== + +"@angular-eslint/eslint-plugin-template@19.0.2", "@angular-eslint/eslint-plugin-template@~19.0.0": + version "19.0.2" + resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-19.0.2.tgz#3ef9bccadf4021b231471e701dfb1cdaac5a53c7" + integrity sha512-f/OCF9ThnxQ8m0eNYPwnCrySQPhYfCOF6STL7F9LnS8Bs3ZeW3/oT1yLaMIZ1Eg0ogIkgxksMAJZjrJPUPBD1Q== + dependencies: + "@angular-eslint/bundled-angular-compiler" "19.0.2" + "@angular-eslint/utils" "19.0.2" + aria-query "5.3.2" + axobject-query "4.1.0" + +"@angular-eslint/eslint-plugin@19.0.2", "@angular-eslint/eslint-plugin@~19.0.0": + version "19.0.2" + resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-19.0.2.tgz#3a9d6351996ebff98af6755cdbac9e7e307cc71d" + integrity sha512-DLuNVVGGFicSThOcMSJyNje+FZSPdG0B3lCBRiqcgKH/16kfM4pV8MobPM7RGK2NhaOmmZ4zzJNwpwWPSgi+Lw== + dependencies: + "@angular-eslint/bundled-angular-compiler" "19.0.2" + "@angular-eslint/utils" "19.0.2" + +"@angular-eslint/schematics@~19.0.0": + version "19.0.2" + resolved "https://registry.yarnpkg.com/@angular-eslint/schematics/-/schematics-19.0.2.tgz#44142f0bb292c262f229240f56debb5678c6aee7" + integrity sha512-wI4SyiAnUCrpigtK6PHRlVWMC9vWljqmlLhbsJV5O5yDajlmRdvgXvSHDefhJm0hSfvZYRXuiAARYv2+QVfnGA== + dependencies: + "@angular-devkit/core" ">= 19.0.0 < 20.0.0" + "@angular-devkit/schematics" ">= 19.0.0 < 20.0.0" + "@angular-eslint/eslint-plugin" "19.0.2" + "@angular-eslint/eslint-plugin-template" "19.0.2" + ignore "6.0.2" + semver "7.6.3" + strip-json-comments "3.1.1" + +"@angular-eslint/template-parser@~19.0.0": + version "19.0.2" + resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-19.0.2.tgz#c03a45c2bef06adb2fb518db68b0d91074ab885c" + integrity sha512-z3rZd2sBfuYcFf9rGDsB2zz2fbGX8kkF+0ftg9eocyQmzWrlZHFmuw9ha7oP/Mz8gpblyCS/aa1U/Srs6gz0UQ== + dependencies: + "@angular-eslint/bundled-angular-compiler" "19.0.2" + eslint-scope "^8.0.2" + +"@angular-eslint/utils@19.0.2": + version "19.0.2" + resolved "https://registry.yarnpkg.com/@angular-eslint/utils/-/utils-19.0.2.tgz#6e435385caa68f752f3ee9f0f9f917f77bf44cad" + integrity sha512-HotBT8OKr7zCaX1S9k27JuhRiTVIbbYVl6whlb3uwdMIPIWY8iOcEh1tjI4qDPUafpLfR72Dhwi5bO1E17F3/Q== + dependencies: + "@angular-eslint/bundled-angular-compiler" "19.0.2" + +"@angular/animations@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-19.1.8.tgz#2e56915dbb576ca67dbde610a50c5485f49a81ef" + integrity sha512-sxicBdNvqjoInqGnT4C3qBJ7G3/NilWIbBJB1SGgnk3eHBHX8DJH0D/kQKVfN1OSuAVPpRc1qqz2zpPbf3I8bA== + dependencies: + tslib "^2.3.0" + +"@angular/build@19.1.9": + version "19.1.9" + resolved "https://registry.yarnpkg.com/@angular/build/-/build-19.1.9.tgz#f25f3b3dd09c9acf08fe6561a07eaea53a3ff942" + integrity sha512-YIdIE4ogZytEPKVysNnS1l3cBIYa6e/MRFeOPyLmXm0Rhl3XmlxHMnz8Go+8oT4SjVM7d2puboc/I0MMK2D/HA== + dependencies: + "@ampproject/remapping" "2.3.0" + "@angular-devkit/architect" "0.1901.9" + "@angular-devkit/core" "19.1.9" + "@babel/core" "7.26.0" + "@babel/helper-annotate-as-pure" "7.25.9" + "@babel/helper-split-export-declaration" "7.24.7" + "@babel/plugin-syntax-import-attributes" "7.26.0" + "@inquirer/confirm" "5.1.1" + "@vitejs/plugin-basic-ssl" "1.2.0" + beasties "0.2.0" + browserslist "^4.23.0" + esbuild "0.24.2" + fast-glob "3.3.3" + https-proxy-agent "7.0.6" + istanbul-lib-instrument "6.0.3" + listr2 "8.2.5" + magic-string "0.30.17" + mrmime "2.0.0" + parse5-html-rewriting-stream "7.0.0" + picomatch "4.0.2" + piscina "4.8.0" + rollup "4.30.1" + sass "1.83.1" + semver "7.6.3" + vite "6.0.11" + watchpack "2.4.2" + optionalDependencies: + lmdb "3.2.2" + +"@angular/cdk@^19.0.0": + version "19.2.18" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-19.2.18.tgz#0fb3fcc0cc8cb21501f07625ef2ed4d6f8287f01" + integrity sha512-aGMHOYK/VV9PhxGTUDwiu/4ozoR/RKz8cimI+QjRxEBhzn4EPqjUDSganvlhmgS7cTN3+aqozdvF/GopMRJjLg== + dependencies: + parse5 "^7.1.2" + tslib "^2.3.0" + +"@angular/cli@~19.1.0": + version "19.1.9" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-19.1.9.tgz#974d78a57b69e8980051d93fe6bd388b9b81bb1d" + integrity sha512-dXJfepGRlDrXkUlZVQpGYRyemZM1eqqyZw5lSeK4iqWWQyPAnxaOQUVDL1Tsf3dUozkuwiizTLKb7NfrafEVaQ== + dependencies: + "@angular-devkit/architect" "0.1901.9" + "@angular-devkit/core" "19.1.9" + "@angular-devkit/schematics" "19.1.9" + "@inquirer/prompts" "7.2.1" + "@listr2/prompt-adapter-inquirer" "2.0.18" + "@schematics/angular" "19.1.9" + "@yarnpkg/lockfile" "1.1.0" + ini "5.0.0" + jsonc-parser "3.3.1" + listr2 "8.2.5" + npm-package-arg "12.0.1" + npm-pick-manifest "10.0.0" + pacote "20.0.0" + resolve "1.22.10" + semver "7.6.3" + symbol-observable "4.0.0" + yargs "17.7.2" + +"@angular/common@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-19.1.8.tgz#3ea7d21a572919c2c7ca705985866b9a4e1b4e96" + integrity sha512-JTErVPLOQ+S1AbzUzHvgwqreiYltKI2yBRVUaiKSvutuu5zRvePmw0Ybo49DygkU9IT0E+CN8EzXp1WtaUGXxQ== + dependencies: + tslib "^2.3.0" + +"@angular/compiler-cli@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-19.1.8.tgz#367f6d43a18a17349b70a308751826e17f1315c9" + integrity sha512-Q1Y6zV2VDWhMNgtNcR2+AAG5xd8b1z+aRuGIKH6s0usDLE+OoOx1giOi8WJKvqVu/YHKhB9f42vYFoGf5fedEw== + dependencies: + "@babel/core" "7.26.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + chokidar "^4.0.0" + convert-source-map "^1.5.1" + reflect-metadata "^0.2.0" + semver "^7.0.0" + tslib "^2.3.0" + yargs "^17.2.1" + +"@angular/compiler@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-19.1.8.tgz#293f2e2b452da174bfaa93ddc064ee216f392bda" + integrity sha512-KeCnzRwqavoKR5HZR7khaMf1XE330GuJULgL5x8XXsVPtb3x1i93md/JHr62VsPG6838S+5QmnWx8Z7hpSZF5A== + dependencies: + tslib "^2.3.0" + +"@angular/core@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-19.1.8.tgz#922551133efcfaaeda7798df3fe879feb6945c3d" + integrity sha512-mhLQDpKNvg5ou15OMwAAqmdHnmms1c+2beShRj0+sKa8EdPC9Xrz0SFWuSEX6tUEtKbtRpaxKFczx/VtuOZ5OA== + dependencies: + tslib "^2.3.0" + +"@angular/forms@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-19.1.8.tgz#d8f4ac38a8f8ec7f1c37dbbb46e526ff3f6fe257" + integrity sha512-APmeoMg2IIsdf29MfLr04kSAFDnlfyRmI0gIXn31mvO7pWJgcwEOMmCC7xTbvfXzwY8u0W5+iASwqQajhyx90w== + dependencies: + tslib "^2.3.0" + +"@angular/language-service@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-19.1.8.tgz#5b5f42784bbace7d5d86b396bf146d4abe69743a" + integrity sha512-JwHo5yHYFbIhkRSoBZY7j29CX6DafscqSbUzurpjq3VRYHlAJ0A0vO0W60WGv2ClfSdh6uttlhiWl80NzDfWDQ== + +"@angular/localize@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-19.1.8.tgz#d564d044bf2ef5dea18e102d4d4f658914532122" + integrity sha512-GFEordSZ1pHSwgCq5kpmCtZnArnEiTSOesGfL5NGmFVZ9E01PEXJZgxqnNKk8b3bTDg1vOmIgEztzVCuLYn0Tg== + dependencies: + "@babel/core" "7.26.0" + "@types/babel__core" "7.20.5" + fast-glob "3.3.3" + yargs "^17.2.1" + +"@angular/platform-browser-dynamic@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.1.8.tgz#4670dcf4e9898789fa241b336b105ee6a7062b1c" + integrity sha512-ZlfSdIejJB/NciC1BHCcMhQd3UKw98qjLGZPd2R6W3qYZ3iNc90xzdAAEpdmB/AH729QxZ1I1W5MWUDFZsZddg== + dependencies: + tslib "^2.3.0" + +"@angular/platform-browser@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-19.1.8.tgz#98e3e70eaf362aeaf888cceef9d9d75abf51a535" + integrity sha512-EPk3QVjvEiVpZiC/GiX18dmxpMyH6udqcLHh+dmYWYo3hUlxQCzRGzHg3hyaT5eaBL/8bjE6MkiDFlKchKRjEw== + dependencies: + tslib "^2.3.0" + +"@angular/router@~19.1.0": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-19.1.8.tgz#eec986f7e5a96afe56398f1ae945b95411cec57a" + integrity sha512-EG92wVFbHL022jAtRZkhmh7pB8dWkjbu9qRgvcUOyAGxrsnN2k5xMA+lMKkNr3wzf3wIICiMvP2dnhp81Mb6Sg== + dependencies: + tslib "^2.3.0" + +"@ant-design/colors@^7.0.0": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.2.1.tgz#3bbc1c6c18550020d1622a0067ff03492318df98" + integrity sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ== + dependencies: + "@ant-design/fast-color" "^2.0.6" + +"@ant-design/fast-color@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@ant-design/fast-color/-/fast-color-2.0.6.tgz#ab4d4455c1542c9017d367c2fa8ca3e4215d0ba2" + integrity sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA== + dependencies: + "@babel/runtime" "^7.24.7" + +"@ant-design/icons-angular@^19.0.0": + version "19.0.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons-angular/-/icons-angular-19.0.0.tgz#3cf43d2fcf516d07949fd609966b7cdec09e7126" + integrity sha512-bBWFA1cTZwLAFTgpozkeNIHX1nXyZuiUaRzTcAfFEt85eW1X3ypMcBfS/XEVVVzkdTw5Td+E1vwzgfuUlKiYSA== + dependencies: + "@ant-design/colors" "^7.0.0" + tslib "^2.0.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.0", "@babel/compat-data@^7.27.2": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82" + integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg== + +"@babel/core@7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.23.9", "@babel/core@^7.7.5": + version "7.27.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" + integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.27.3" + "@babel/helpers" "^7.27.4" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.27.4" + "@babel/types" "^7.27.3" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" + integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== + dependencies: + "@babel/parser" "^7.26.3" + "@babel/types" "^7.26.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/generator@^7.26.0", "@babel/generator@^7.27.3": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" + integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== + dependencies: + "@babel/parser" "^7.27.5" + "@babel/types" "^7.27.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-annotate-as-pure@^7.27.1": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== + dependencies: + "@babel/types" "^7.27.3" + +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + regexpu-core "^6.2.0" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz#15e8746368bfa671785f5926ff74b3064c291fab" + integrity sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-imports@^7.25.9", "@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.26.0", "@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" + integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.3" + +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-remap-async-to-generator@^7.25.9", "@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-split-export-declaration@7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" + integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.25.9", "@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helper-wrap-function@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" + integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== + dependencies: + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helpers@^7.26.0", "@babel/helpers@^7.27.4": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" + integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.6" + +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3", "@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" + integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== + dependencies: + "@babel/types" "^7.27.3" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" + integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz#bb1c25af34d75115ce229a1de7fa44bf8f955670" + integrity sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-import-assertions@^7.26.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" + integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-attributes@7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-import-attributes@^7.26.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-async-generator-functions@7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" + integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/plugin-transform-async-generator-functions@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz#ca433df983d68e1375398e7ca71bf2a4f6fd89d7" + integrity sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-transform-async-to-generator@7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + +"@babel/plugin-transform-async-to-generator@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" + integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + +"@babel/plugin-transform-block-scoped-functions@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-block-scoping@^7.25.9": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz#98c37485d815533623d992fd149af3e7b3140157" + integrity sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-class-properties@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" + integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-class-static-block@^7.26.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz#7e920d5625b25bbccd3061aefbcc05805ed56ce4" + integrity sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-classes@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz#03bb04bea2c7b2f711f0db7304a8da46a85cced4" + integrity sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/traverse" "^7.27.1" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" + integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" + +"@babel/plugin-transform-destructuring@^7.25.9", "@babel/plugin-transform-destructuring@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz#3cc8299ed798d9a909f8d66ddeb40849ec32e3b0" + integrity sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-dotall-regex@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" + integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-duplicate-keys@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" + integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-dynamic-import@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-exponentiation-operator@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" + integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-export-namespace-from@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-for-of@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-function-name@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== + dependencies: + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-transform-json-strings@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" + integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-literals@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-logical-assignment-operators@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" + integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-member-expression-literals@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-amd@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-commonjs@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-systemjs@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-transform-modules-umd@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" + integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-new-target@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" + integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-numeric-separator@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" + integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-object-rest-spread@^7.25.9": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz#ce130aa73fef828bc3e3e835f9bc6144be3eb1c0" + integrity sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q== + dependencies: + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.27.3" + "@babel/plugin-transform-parameters" "^7.27.1" + +"@babel/plugin-transform-object-super@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + +"@babel/plugin-transform-optional-catch-binding@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" + integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-optional-chaining@^7.25.9", "@babel/plugin-transform-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" + integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-parameters@^7.25.9", "@babel/plugin-transform-parameters@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz#80334b54b9b1ac5244155a0c8304a187a618d5a7" + integrity sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-private-methods@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" + integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-private-property-in-object@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" + integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-property-literals@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-regenerator@^7.25.9": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz#0c01f4e0e4cced15f68ee14b9c76dac9813850c7" + integrity sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-regexp-modifiers@^7.26.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" + integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-reserved-words@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-runtime@7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" + integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.6" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-spread@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" + integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-sticky-regex@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-template-literals@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-typeof-symbol@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-escapes@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-property-regex@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" + integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-regex@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" + integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/preset-env@7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.0.tgz#30e5c6bc1bcc54865bff0c5a30f6d4ccdc7fa8b1" + integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw== + dependencies: + "@babel/compat-data" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.26.0" + "@babel/plugin-syntax-import-attributes" "^7.26.0" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions" "^7.25.9" + "@babel/plugin-transform-block-scoping" "^7.25.9" + "@babel/plugin-transform-class-properties" "^7.25.9" + "@babel/plugin-transform-class-static-block" "^7.26.0" + "@babel/plugin-transform-classes" "^7.25.9" + "@babel/plugin-transform-computed-properties" "^7.25.9" + "@babel/plugin-transform-destructuring" "^7.25.9" + "@babel/plugin-transform-dotall-regex" "^7.25.9" + "@babel/plugin-transform-duplicate-keys" "^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-dynamic-import" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator" "^7.25.9" + "@babel/plugin-transform-export-namespace-from" "^7.25.9" + "@babel/plugin-transform-for-of" "^7.25.9" + "@babel/plugin-transform-function-name" "^7.25.9" + "@babel/plugin-transform-json-strings" "^7.25.9" + "@babel/plugin-transform-literals" "^7.25.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" + "@babel/plugin-transform-member-expression-literals" "^7.25.9" + "@babel/plugin-transform-modules-amd" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-modules-systemjs" "^7.25.9" + "@babel/plugin-transform-modules-umd" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-new-target" "^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9" + "@babel/plugin-transform-numeric-separator" "^7.25.9" + "@babel/plugin-transform-object-rest-spread" "^7.25.9" + "@babel/plugin-transform-object-super" "^7.25.9" + "@babel/plugin-transform-optional-catch-binding" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-private-methods" "^7.25.9" + "@babel/plugin-transform-private-property-in-object" "^7.25.9" + "@babel/plugin-transform-property-literals" "^7.25.9" + "@babel/plugin-transform-regenerator" "^7.25.9" + "@babel/plugin-transform-regexp-modifiers" "^7.26.0" + "@babel/plugin-transform-reserved-words" "^7.25.9" + "@babel/plugin-transform-shorthand-properties" "^7.25.9" + "@babel/plugin-transform-spread" "^7.25.9" + "@babel/plugin-transform-sticky-regex" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-typeof-symbol" "^7.25.9" + "@babel/plugin-transform-unicode-escapes" "^7.25.9" + "@babel/plugin-transform-unicode-property-regex" "^7.25.9" + "@babel/plugin-transform-unicode-regex" "^7.25.9" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.6" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.38.1" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.21.0", "@babel/runtime@^7.24.7": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.6.tgz#ec4070a04d76bae8ddbb10770ba55714a417b7c6" + integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q== + +"@babel/template@^7.25.9", "@babel/template@^7.27.1", "@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.25.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4": + version "7.27.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea" + integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.3" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.4.4": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535" + integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@ctrl/tinycolor@^3.6.0": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31" + integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA== + +"@ctrl/tinycolor@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz#91a8f8120ffc9da2feb2a38f7862b300d5e9691a" + integrity sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ== + +"@discoveryjs/json-ext@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz#f13c7c205915eb91ae54c557f5e92bddd8be0e83" + integrity sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ== + +"@esbuild/aix-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" + integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== + +"@esbuild/android-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" + integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== + +"@esbuild/android-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" + integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== + +"@esbuild/android-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" + integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== + +"@esbuild/darwin-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" + integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== + +"@esbuild/darwin-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" + integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== + +"@esbuild/freebsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" + integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== + +"@esbuild/freebsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" + integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== + +"@esbuild/linux-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" + integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== + +"@esbuild/linux-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" + integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== + +"@esbuild/linux-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" + integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== + +"@esbuild/linux-loong64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" + integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== + +"@esbuild/linux-mips64el@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" + integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== + +"@esbuild/linux-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" + integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== + +"@esbuild/linux-riscv64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" + integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== + +"@esbuild/linux-s390x@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" + integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== + +"@esbuild/linux-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" + integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== + +"@esbuild/netbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" + integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== + +"@esbuild/netbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" + integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== + +"@esbuild/openbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" + integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== + +"@esbuild/openbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" + integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== + +"@esbuild/sunos-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" + integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== + +"@esbuild/win32-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" + integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== + +"@esbuild/win32-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" + integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== + +"@esbuild/win32-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" + integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@fortawesome/fontawesome-free@^5.0.0": + version "5.15.4" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz#ecda5712b61ac852c760d8b3c79c96adca5554e5" + integrity sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg== + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@inquirer/checkbox@^4.0.4": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-4.1.8.tgz#eee11c7920e1ae07e57be038033c7905e9fc59d0" + integrity sha512-d/QAsnwuHX2OPolxvYcgSj7A9DO9H6gVOy2DvBTx+P2LH2iRTo/RSGV3iwCzW024nP9hw98KIuDmdyhZQj1UQg== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/figures" "^1.0.12" + "@inquirer/type" "^3.0.7" + ansi-escapes "^4.3.2" + yoctocolors-cjs "^2.1.2" + +"@inquirer/confirm@5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.1.tgz#18385064b8275eb79fdba505ce527801804eea04" + integrity sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg== + dependencies: + "@inquirer/core" "^10.1.2" + "@inquirer/type" "^3.0.2" + +"@inquirer/confirm@^5.1.1": + version "5.1.12" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.12.tgz#387037889a5a558ceefe52e978228630aa6e7d0e" + integrity sha512-dpq+ielV9/bqgXRUbNH//KsY6WEw9DrGPmipkpmgC1Y46cwuBTNx7PXFWTjc3MQ+urcc0QxoVHcMI0FW4Ok0hg== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/type" "^3.0.7" + +"@inquirer/core@^10.1.13", "@inquirer/core@^10.1.2": + version "10.1.13" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.1.13.tgz#8f1ecfaba288fd2d705c7ac0690371464cf687b0" + integrity sha512-1viSxebkYN2nJULlzCxES6G9/stgHSepZ9LqqfdIGPHj5OHhiBUXVS0a6R0bEC2A+VL4D9w6QB66ebCr6HGllA== + dependencies: + "@inquirer/figures" "^1.0.12" + "@inquirer/type" "^3.0.7" + ansi-escapes "^4.3.2" + cli-width "^4.1.0" + mute-stream "^2.0.0" + signal-exit "^4.1.0" + wrap-ansi "^6.2.0" + yoctocolors-cjs "^2.1.2" + +"@inquirer/editor@^4.2.1": + version "4.2.13" + resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-4.2.13.tgz#dc491ed01da4bab0de5e760501d76a81177dd7d0" + integrity sha512-WbicD9SUQt/K8O5Vyk9iC2ojq5RHoCLK6itpp2fHsWe44VxxcA9z3GTWlvjSTGmMQpZr+lbVmrxdHcumJoLbMA== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/type" "^3.0.7" + external-editor "^3.1.0" + +"@inquirer/expand@^4.0.4": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-4.0.15.tgz#8b49f3503118bb977a13a9040fa84deb9b043ab6" + integrity sha512-4Y+pbr/U9Qcvf+N/goHzPEXiHH8680lM3Dr3Y9h9FFw4gHS+zVpbj8LfbKWIb/jayIB4aSO4pWiBTrBYWkvi5A== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/type" "^3.0.7" + yoctocolors-cjs "^2.1.2" + +"@inquirer/figures@^1.0.12": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.12.tgz#667d6254cc7ba3b0c010a323d78024a1d30c6053" + integrity sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ== + +"@inquirer/input@^4.1.1": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-4.1.12.tgz#8880b8520f0aad60ef39ea8e0769ce1eb97da713" + integrity sha512-xJ6PFZpDjC+tC1P8ImGprgcsrzQRsUh9aH3IZixm1lAZFK49UGHxM3ltFfuInN2kPYNfyoPRh+tU4ftsjPLKqQ== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/type" "^3.0.7" + +"@inquirer/number@^3.0.4": + version "3.0.15" + resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-3.0.15.tgz#13ac1300ab12d7f1dd1b32c693ac284cfcb04d95" + integrity sha512-xWg+iYfqdhRiM55MvqiTCleHzszpoigUpN5+t1OMcRkJrUrw7va3AzXaxvS+Ak7Gny0j2mFSTv2JJj8sMtbV2g== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/type" "^3.0.7" + +"@inquirer/password@^4.0.4": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-4.0.15.tgz#1d48a5a163972dc3b08abe5819bc3c32243cb6e3" + integrity sha512-75CT2p43DGEnfGTaqFpbDC2p2EEMrq0S+IRrf9iJvYreMy5mAWj087+mdKyLHapUEPLjN10mNvABpGbk8Wdraw== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/type" "^3.0.7" + ansi-escapes "^4.3.2" + +"@inquirer/prompts@7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-7.2.1.tgz#f00fbcf06998a07faebc10741efa289384529950" + integrity sha512-v2JSGri6/HXSfoGIwuKEn8sNCQK6nsB2BNpy2lSX6QH9bsECrMv93QHnj5+f+1ZWpF/VNioIV2B/PDox8EvGuQ== + dependencies: + "@inquirer/checkbox" "^4.0.4" + "@inquirer/confirm" "^5.1.1" + "@inquirer/editor" "^4.2.1" + "@inquirer/expand" "^4.0.4" + "@inquirer/input" "^4.1.1" + "@inquirer/number" "^3.0.4" + "@inquirer/password" "^4.0.4" + "@inquirer/rawlist" "^4.0.4" + "@inquirer/search" "^3.0.4" + "@inquirer/select" "^4.0.4" + +"@inquirer/rawlist@^4.0.4": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-4.1.3.tgz#c97278a2bcd0c31ce846e7e448fb7a6a25bcd3b2" + integrity sha512-7XrV//6kwYumNDSsvJIPeAqa8+p7GJh7H5kRuxirct2cgOcSWwwNGoXDRgpNFbY/MG2vQ4ccIWCi8+IXXyFMZA== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/type" "^3.0.7" + yoctocolors-cjs "^2.1.2" + +"@inquirer/search@^3.0.4": + version "3.0.15" + resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-3.0.15.tgz#419ddff4254cf22018cdfbfc840fa3ef8a0721cb" + integrity sha512-YBMwPxYBrADqyvP4nNItpwkBnGGglAvCLVW8u4pRmmvOsHUtCAUIMbUrLX5B3tFL1/WsLGdQ2HNzkqswMs5Uaw== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/figures" "^1.0.12" + "@inquirer/type" "^3.0.7" + yoctocolors-cjs "^2.1.2" + +"@inquirer/select@^4.0.4": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-4.2.3.tgz#3e31b56aff7bce9b46a0e2c8428118a25fe51c32" + integrity sha512-OAGhXU0Cvh0PhLz9xTF/kx6g6x+sP+PcyTiLvCrewI99P3BBeexD+VbuwkNDvqGkk3y2h5ZiWLeRP7BFlhkUDg== + dependencies: + "@inquirer/core" "^10.1.13" + "@inquirer/figures" "^1.0.12" + "@inquirer/type" "^3.0.7" + ansi-escapes "^4.3.2" + yoctocolors-cjs "^2.1.2" + +"@inquirer/type@^1.5.5": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.5.5.tgz#303ea04ce7ad2e585b921b662b3be36ef7b4f09b" + integrity sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA== + dependencies: + mute-stream "^1.0.0" + +"@inquirer/type@^3.0.2", "@inquirer/type@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.7.tgz#b46bcf377b3172dbc768fdbd053e6492ad801a09" + integrity sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@isaacs/fs-minipass@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32" + integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w== + dependencies: + minipass "^7.0.4" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jsonjoy.com/base64@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== + +"@jsonjoy.com/json-pack@^1.0.3": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.2.0.tgz#e658900e81d194903171c42546e1aa27f446846a" + integrity sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA== + dependencies: + "@jsonjoy.com/base64" "^1.1.1" + "@jsonjoy.com/util" "^1.1.2" + hyperdyperid "^1.2.0" + thingies "^1.20.0" + +"@jsonjoy.com/util@^1.1.2", "@jsonjoy.com/util@^1.3.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.6.0.tgz#23991b2fe12cb3a006573d9dc97c768d3ed2c9f1" + integrity sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A== + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@listr2/prompt-adapter-inquirer@2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.18.tgz#f1bff90f201269914023b17cb383c8febd6287f2" + integrity sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q== + dependencies: + "@inquirer/type" "^1.5.5" + +"@lmdb/lmdb-darwin-arm64@3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.2.2.tgz#39e25e2a95d35a7350862af96d05e5396ea8a074" + integrity sha512-WBSJT9Z7DTol5viq+DZD2TapeWOw7mlwXxiSBHgAzqVwsaVb0h/ekMD9iu/jDD8MUA20tO9N0WEdnT06fsUp+g== + +"@lmdb/lmdb-darwin-x64@3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.2.2.tgz#7b9eac5b7a89dbf3433648622fe52799dd4202e5" + integrity sha512-4S13kUtR7c/j/MzkTIBJCXv52hQ41LG2ukeaqw4Eng9K0pNKLFjo1sDSz96/yKhwykxrWDb13ddJ/ZqD3rAhUA== + +"@lmdb/lmdb-linux-arm64@3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.2.2.tgz#f81b9233b2b78141af4cd22864f152cfeeed7b93" + integrity sha512-4hdgZtWI1idQlWRp+eleWXD9KLvObgboRaVoBj2POdPEYvsKANllvMW0El8tEQwtw74yB9NT6P8ENBB5UJf5+g== + +"@lmdb/lmdb-linux-arm@3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.2.2.tgz#251fa02ed9d2d8b8a4827f5e53bf1e2d8aa745b8" + integrity sha512-uW31JmfuPAaLUYW7NsEU8gzwgDAzpGPwjvkxnKlcWd8iDutoPKDJi8Wk9lFmPEZRxVSB0j1/wDQ7N2qliR9UFA== + +"@lmdb/lmdb-linux-x64@3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.2.2.tgz#f794a5b4c06019a82622565ba3d38e47aa113a2c" + integrity sha512-A0zjf4a2vM4B4GAx78ncuOTZ8Ka1DbTaG1Axf1e00Sa7f5coqlWiLg1PX7Gxvyibc2YqtqB+8tg1KKrE8guZVw== + +"@lmdb/lmdb-win32-x64@3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.2.2.tgz#d160454f0e6c4f4af0a5a05d85141c3bd9523f9c" + integrity sha512-Y0qoSCAja+xZE7QQ0LCHoYAuyI1n9ZqukQJa8lv9X3yCvWahFF7OYHAgVH1ejp43XWstj3U89/PAAzcowgF/uQ== + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz#9edec61b22c3082018a79f6d1c30289ddf3d9d11" + integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== + +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855" + integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw== + +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb" + integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg== + +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159" + integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw== + +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3" + integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg== + +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242" + integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== + +"@napi-rs/nice-android-arm-eabi@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.1.tgz#9a0cba12706ff56500df127d6f4caf28ddb94936" + integrity sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w== + +"@napi-rs/nice-android-arm64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.0.1.tgz#32fc32e9649bd759d2a39ad745e95766f6759d2f" + integrity sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA== + +"@napi-rs/nice-darwin-arm64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.1.tgz#d3c44c51b94b25a82d45803e2255891e833e787b" + integrity sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA== + +"@napi-rs/nice-darwin-x64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.0.1.tgz#f1b1365a8370c6a6957e90085a9b4873d0e6a957" + integrity sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ== + +"@napi-rs/nice-freebsd-x64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.0.1.tgz#4280f081efbe0b46c5165fdaea8b286e55a8f89e" + integrity sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw== + +"@napi-rs/nice-linux-arm-gnueabihf@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.0.1.tgz#07aec23a9467ed35eb7602af5e63d42c5d7bd473" + integrity sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q== + +"@napi-rs/nice-linux-arm64-gnu@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.0.1.tgz#038a77134cc6df3c48059d5a5e199d6f50fb9a90" + integrity sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA== + +"@napi-rs/nice-linux-arm64-musl@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.0.1.tgz#715d0906582ba0cff025109f42e5b84ea68c2bcc" + integrity sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw== + +"@napi-rs/nice-linux-ppc64-gnu@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.0.1.tgz#ac1c8f781c67b0559fa7a1cd4ae3ca2299dc3d06" + integrity sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q== + +"@napi-rs/nice-linux-riscv64-gnu@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.0.1.tgz#b0a430549acfd3920ffd28ce544e2fe17833d263" + integrity sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig== + +"@napi-rs/nice-linux-s390x-gnu@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.0.1.tgz#5b95caf411ad72a965885217db378c4d09733e97" + integrity sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg== + +"@napi-rs/nice-linux-x64-gnu@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.0.1.tgz#a98cdef517549f8c17a83f0236a69418a90e77b7" + integrity sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA== + +"@napi-rs/nice-linux-x64-musl@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.0.1.tgz#5e26843eafa940138aed437c870cca751c8a8957" + integrity sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ== + +"@napi-rs/nice-win32-arm64-msvc@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.0.1.tgz#bd62617d02f04aa30ab1e9081363856715f84cd8" + integrity sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg== + +"@napi-rs/nice-win32-ia32-msvc@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.0.1.tgz#b8b7aad552a24836027473d9b9f16edaeabecf18" + integrity sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw== + +"@napi-rs/nice-win32-x64-msvc@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.0.1.tgz#37d8718b8f722f49067713e9f1e85540c9a3dd09" + integrity sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg== + +"@napi-rs/nice@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@napi-rs/nice/-/nice-1.0.1.tgz#483d3ff31e5661829a1efb4825591a135c3bfa7d" + integrity sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ== + optionalDependencies: + "@napi-rs/nice-android-arm-eabi" "1.0.1" + "@napi-rs/nice-android-arm64" "1.0.1" + "@napi-rs/nice-darwin-arm64" "1.0.1" + "@napi-rs/nice-darwin-x64" "1.0.1" + "@napi-rs/nice-freebsd-x64" "1.0.1" + "@napi-rs/nice-linux-arm-gnueabihf" "1.0.1" + "@napi-rs/nice-linux-arm64-gnu" "1.0.1" + "@napi-rs/nice-linux-arm64-musl" "1.0.1" + "@napi-rs/nice-linux-ppc64-gnu" "1.0.1" + "@napi-rs/nice-linux-riscv64-gnu" "1.0.1" + "@napi-rs/nice-linux-s390x-gnu" "1.0.1" + "@napi-rs/nice-linux-x64-gnu" "1.0.1" + "@napi-rs/nice-linux-x64-musl" "1.0.1" + "@napi-rs/nice-win32-arm64-msvc" "1.0.1" + "@napi-rs/nice-win32-ia32-msvc" "1.0.1" + "@napi-rs/nice-win32-x64-msvc" "1.0.1" + +"@ng-bootstrap/ng-bootstrap@~18.0.0": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-18.0.0.tgz#5120bf9d26c6224a492172686d3f51820bddc003" + integrity sha512-GeSAz4yiGq49psdte8kcf+Y562wB3jK/qKRAkh6iA32lcXmy2sfQXVAmlHdjZ3AyP+E8lf3yMwuPdSKiYcDgSg== + dependencies: + tslib "^2.3.0" + +"@ngtools/webpack@19.1.9": + version "19.1.9" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-19.1.9.tgz#e0d3e1f2c872c274a9d6d38f11b358059f79d7f9" + integrity sha512-mGxFhyYHJoI1GX58zpIl0TnJqyTi8uHhZHS3F20MZGD+RSpKvdfLFI7k2FVnEEbg48nGSLgflEdYj+fx13Xswg== + +"@ngx-validate/core@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@ngx-validate/core/-/core-0.2.0.tgz#5b3d9bb963c2fcb5cb6d745ca2f553d411082a3f" + integrity sha512-04iGHPCXyFCykAyCGehxetziOt69Lhk/6yWifhC/vc8PZJ0S8m3hIn6tI63pEdVoV95+Hc1GQ1K/wMRtRD0uLQ== + dependencies: + tslib "^2.0.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/agent@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-3.0.0.tgz#1685b1fbd4a1b7bb4f930cbb68ce801edfe7aa44" + integrity sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" + +"@npmcli/fs@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-4.0.0.tgz#a1eb1aeddefd2a4a347eca0fab30bc62c0e1c0f2" + integrity sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q== + dependencies: + semver "^7.3.5" + +"@npmcli/git@^6.0.0": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-6.0.3.tgz#966cbb228514372877de5244db285b199836f3aa" + integrity sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ== + dependencies: + "@npmcli/promise-spawn" "^8.0.0" + ini "^5.0.0" + lru-cache "^10.0.1" + npm-pick-manifest "^10.0.0" + proc-log "^5.0.0" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^5.0.0" + +"@npmcli/installed-package-contents@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz#2c1170ff4f70f68af125e2842e1853a93223e4d1" + integrity sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q== + dependencies: + npm-bundled "^4.0.0" + npm-normalize-package-bin "^4.0.0" + +"@npmcli/node-gyp@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz#01f900bae62f0f27f9a5a127b40d443ddfb9d4c6" + integrity sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA== + +"@npmcli/package-json@^6.0.0": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-6.2.0.tgz#7c7e61e466eefdf729cb87a34c3adc15d76e2f97" + integrity sha512-rCNLSB/JzNvot0SEyXqWZ7tX2B5dD2a1br2Dp0vSYVo5jh8Z0EZ7lS9TsZ1UtziddB1UfNUaMCc538/HztnJGA== + dependencies: + "@npmcli/git" "^6.0.0" + glob "^10.2.2" + hosted-git-info "^8.0.0" + json-parse-even-better-errors "^4.0.0" + proc-log "^5.0.0" + semver "^7.5.3" + validate-npm-package-license "^3.0.4" + +"@npmcli/promise-spawn@^8.0.0": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-8.0.2.tgz#053688f8bc2b4ecc036d2d52c691fd82af58ea5e" + integrity sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ== + dependencies: + which "^5.0.0" + +"@npmcli/redact@^3.0.0": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@npmcli/redact/-/redact-3.2.2.tgz#4a6745e0ae269120ad223780ce374d6c59ae34cd" + integrity sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg== + +"@npmcli/run-script@^9.0.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-9.1.0.tgz#6168c2be4703fe5ed31acb08a2151cb620ed30a4" + integrity sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg== + dependencies: + "@npmcli/node-gyp" "^4.0.0" + "@npmcli/package-json" "^6.0.0" + "@npmcli/promise-spawn" "^8.0.0" + node-gyp "^11.0.0" + proc-log "^5.0.0" + which "^5.0.0" + +"@parcel/watcher-android-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" + integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== + +"@parcel/watcher-darwin-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67" + integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== + +"@parcel/watcher-darwin-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" + integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== + +"@parcel/watcher-freebsd-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" + integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== + +"@parcel/watcher-linux-arm-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" + integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== + +"@parcel/watcher-linux-arm-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" + integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== + +"@parcel/watcher-linux-arm64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" + integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== + +"@parcel/watcher-linux-arm64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" + integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== + +"@parcel/watcher-linux-x64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e" + integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== + +"@parcel/watcher-linux-x64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" + integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== + +"@parcel/watcher-win32-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" + integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== + +"@parcel/watcher-win32-ia32@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" + integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== + +"@parcel/watcher-win32-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947" + integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== + +"@parcel/watcher@^2.4.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200" + integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.5.1" + "@parcel/watcher-darwin-arm64" "2.5.1" + "@parcel/watcher-darwin-x64" "2.5.1" + "@parcel/watcher-freebsd-x64" "2.5.1" + "@parcel/watcher-linux-arm-glibc" "2.5.1" + "@parcel/watcher-linux-arm-musl" "2.5.1" + "@parcel/watcher-linux-arm64-glibc" "2.5.1" + "@parcel/watcher-linux-arm64-musl" "2.5.1" + "@parcel/watcher-linux-x64-glibc" "2.5.1" + "@parcel/watcher-linux-x64-musl" "2.5.1" + "@parcel/watcher-win32-arm64" "2.5.1" + "@parcel/watcher-win32-ia32" "2.5.1" + "@parcel/watcher-win32-x64" "2.5.1" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@popperjs/core@~2.11.0": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@rollup/rollup-android-arm-eabi@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz#14c737dc19603a096568044eadaa60395eefb809" + integrity sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q== + +"@rollup/rollup-android-arm-eabi@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz#9241b59af721beb7e3587a56c6c245d6c465753d" + integrity sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw== + +"@rollup/rollup-android-arm64@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz#9d81ea54fc5650eb4ebbc0a7d84cee331bfa30ad" + integrity sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w== + +"@rollup/rollup-android-arm64@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz#f70ee53ba991fdd65c277b0716c559736d490a58" + integrity sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA== + +"@rollup/rollup-darwin-arm64@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz#29448cb1370cf678b50743d2e392be18470abc23" + integrity sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q== + +"@rollup/rollup-darwin-arm64@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz#9f59000e817cf5760d87515ce899f8b93fe8756a" + integrity sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A== + +"@rollup/rollup-darwin-x64@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz#0ca99741c3ed096700557a43bb03359450c7857d" + integrity sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA== + +"@rollup/rollup-darwin-x64@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz#c92aebd02725ae1b88bdce40f08f7823e8055c78" + integrity sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg== + +"@rollup/rollup-freebsd-arm64@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz#233f8e4c2f54ad9b719cd9645887dcbd12b38003" + integrity sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ== + +"@rollup/rollup-freebsd-arm64@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz#b128dbe7b353922ddd729a4fc4e408ddcbf338b5" + integrity sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ== + +"@rollup/rollup-freebsd-x64@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz#dfba762a023063dc901610722995286df4a48360" + integrity sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw== + +"@rollup/rollup-freebsd-x64@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz#88297a0ddfadddd61d7d9b73eb42b3f227301d30" + integrity sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg== + +"@rollup/rollup-linux-arm-gnueabihf@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz#b9da54171726266c5ef4237f462a85b3c3cf6ac9" + integrity sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg== + +"@rollup/rollup-linux-arm-gnueabihf@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz#a59afc092523ebe43d3899f33da9cdd2ec01fb87" + integrity sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw== + +"@rollup/rollup-linux-arm-musleabihf@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz#b9db69b3f85f5529eb992936d8f411ee6d04297b" + integrity sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug== + +"@rollup/rollup-linux-arm-musleabihf@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz#3095c1327b794bd187d03e372e633717fb69b4c0" + integrity sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw== + +"@rollup/rollup-linux-arm64-gnu@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz#2550cf9bb4d47d917fd1ab4af756d7bbc3ee1528" + integrity sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw== + +"@rollup/rollup-linux-arm64-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz#e43bb77df3a6de85312e991d1e3ad352d1abb00d" + integrity sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA== + +"@rollup/rollup-linux-arm64-musl@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz#9d06b26d286c7dded6336961a2f83e48330e0c80" + integrity sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA== + +"@rollup/rollup-linux-arm64-musl@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz#34873a437bcd87618f702dc66f0cbce170aebf9f" + integrity sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA== + +"@rollup/rollup-linux-loongarch64-gnu@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz#e957bb8fee0c8021329a34ca8dfa825826ee0e2e" + integrity sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ== + +"@rollup/rollup-linux-loongarch64-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz#224ff524349e365baa56f1f512822548c2d76910" + integrity sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg== + +"@rollup/rollup-linux-powerpc64le-gnu@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz#e8585075ddfb389222c5aada39ea62d6d2511ccc" + integrity sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz#43c3c053b26ace18a1d3dab204596a466c1b0e34" + integrity sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw== + +"@rollup/rollup-linux-riscv64-gnu@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz#7d0d40cee7946ccaa5a4e19a35c6925444696a9e" + integrity sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw== + +"@rollup/rollup-linux-riscv64-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz#e7df825d71daefa7037605015455aa58be43cd7a" + integrity sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g== + +"@rollup/rollup-linux-riscv64-musl@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz#d76ad93a7f4c0b2855a024d8d859196acf38acf5" + integrity sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q== + +"@rollup/rollup-linux-s390x-gnu@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz#c2dcd8a4b08b2f2778eceb7a5a5dfde6240ebdea" + integrity sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA== + +"@rollup/rollup-linux-s390x-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz#0852608843d05852af3f447bf43bb63d80d62b6a" + integrity sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw== + +"@rollup/rollup-linux-x64-gnu@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz#183637d91456877cb83d0a0315eb4788573aa588" + integrity sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg== + +"@rollup/rollup-linux-x64-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz#d16a57f86357a4e697142bee244afed59b24e6c5" + integrity sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ== + +"@rollup/rollup-linux-x64-musl@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz#036a4c860662519f1f9453807547fd2a11d5bb01" + integrity sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow== + +"@rollup/rollup-linux-x64-musl@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz#51cbc8b1eb46ebc0e284725418b6fbf48686e4e2" + integrity sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ== + +"@rollup/rollup-win32-arm64-msvc@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz#51cad812456e616bfe4db5238fb9c7497e042a52" + integrity sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw== + +"@rollup/rollup-win32-arm64-msvc@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz#d6d84aace2b211119bf0ab1c586e29d01e32aa01" + integrity sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw== + +"@rollup/rollup-win32-ia32-msvc@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz#661c8b3e4cd60f51deaa39d153aac4566e748e5e" + integrity sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw== + +"@rollup/rollup-win32-ia32-msvc@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz#4af33168de2f65b97a8f36bd1d8d21cea34d3ccb" + integrity sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw== + +"@rollup/rollup-win32-x64-msvc@4.30.1": + version "4.30.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz#73bf1885ff052b82fbb0f82f8671f73c36e9137c" + integrity sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og== + +"@rollup/rollup-win32-x64-msvc@4.43.0": + version "4.43.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz#42a88207659e404e8ffa655cae763cbad94906ab" + integrity sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw== + +"@schematics/angular@19.1.9": + version "19.1.9" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-19.1.9.tgz#751c3e1b8633f41f85f49c7e8b0cffe19b2a0ddf" + integrity sha512-+CBtCAqxqy3W+/KJiV4jM5Z0oT9FzBY1mLiKjvszeaYGefkUPH2gsb3eDYL7LDtEmXXGAUnJiei5PRw5quX2iw== + dependencies: + "@angular-devkit/core" "19.1.9" + "@angular-devkit/schematics" "19.1.9" + jsonc-parser "3.3.1" + +"@sigstore/bundle@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-3.1.0.tgz#74f8f3787148400ddd364be8a9a9212174c66646" + integrity sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag== + dependencies: + "@sigstore/protobuf-specs" "^0.4.0" + +"@sigstore/core@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-2.0.0.tgz#f888a8e4c8fdaa27848514a281920b6fd8eca955" + integrity sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg== + +"@sigstore/protobuf-specs@^0.4.0", "@sigstore/protobuf-specs@^0.4.1": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.4.3.tgz#5d974eb16c0a1d44a3f0af6e3e7219b35ac57953" + integrity sha512-fk2zjD9117RL9BjqEwF7fwv7Q/P9yGsMV4MUJZ/DocaQJ6+3pKr+syBq1owU5Q5qGw5CUbXzm+4yJ2JVRDQeSA== + +"@sigstore/sign@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-3.1.0.tgz#5d098d4d2b59a279e9ac9b51c794104cda0c649e" + integrity sha512-knzjmaOHOov1Ur7N/z4B1oPqZ0QX5geUfhrVaqVlu+hl0EAoL4o+l0MSULINcD5GCWe3Z0+YJO8ues6vFlW0Yw== + dependencies: + "@sigstore/bundle" "^3.1.0" + "@sigstore/core" "^2.0.0" + "@sigstore/protobuf-specs" "^0.4.0" + make-fetch-happen "^14.0.2" + proc-log "^5.0.0" + promise-retry "^2.0.1" + +"@sigstore/tuf@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-3.1.1.tgz#b01b261288f646e0da57737782893e7d2695c52e" + integrity sha512-eFFvlcBIoGwVkkwmTi/vEQFSva3xs5Ot3WmBcjgjVdiaoelBLQaQ/ZBfhlG0MnG0cmTYScPpk7eDdGDWUcFUmg== + dependencies: + "@sigstore/protobuf-specs" "^0.4.1" + tuf-js "^3.0.1" + +"@sigstore/verify@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-2.1.1.tgz#f67730012cd474f595044c3717f32ac2a1e9d2bc" + integrity sha512-hVJD77oT67aowHxwT4+M6PGOp+E2LtLdTK3+FC0lBO9T7sYwItDMXZ7Z07IDCvR1M717a4axbIWckrW67KMP/w== + dependencies: + "@sigstore/bundle" "^3.1.0" + "@sigstore/core" "^2.0.0" + "@sigstore/protobuf-specs" "^0.4.1" + +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@sindresorhus/merge-streams@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" + integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== + +"@socket.io/component-emitter@~3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" + integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== + +"@swimlane/ngx-datatable@^20.0.0": + version "20.1.0" + resolved "https://registry.yarnpkg.com/@swimlane/ngx-datatable/-/ngx-datatable-20.1.0.tgz#0f69552e6f2d0d68508165fcf9150a5f4a458253" + integrity sha512-oHnnx1QRNmv10l5UME13v5JP3M3GesM9K3QH6TRYo2C7UbbhY7vL5EZ4HGqcvtMMW4FOzqNOSltE++IVL99F3g== + dependencies: + tslib "^2.0.0" + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@tufjs/canonical-json@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" + integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== + +"@tufjs/models@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-3.0.1.tgz#5aebb782ebb9e06f071ae7831c1f35b462b0319c" + integrity sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA== + dependencies: + "@tufjs/canonical-json" "2.0.0" + minimatch "^9.0.5" + +"@types/babel__core@7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.27.0.tgz#b5819294c51179957afaec341442f9341e4108a9" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.7.tgz#968cdc2366ec3da159f61166428ee40f370e56c2" + integrity sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng== + dependencies: + "@babel/types" "^7.20.7" + +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/connect-history-api-fallback@^1.5.4": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/cors@^2.8.12": + version "2.8.19" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.19.tgz#d93ea2673fd8c9f697367f5eeefc2bbfa94f0342" + integrity sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.6": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/estree@1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + +"@types/estree@1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" + integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz#41fec4ea20e9c7b22f024ab88a95c6bb288f51b8" + integrity sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express-serve-static-core@^4.17.33": + version "4.19.6" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" + integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.3.tgz#6c4bc6acddc2e2a587142e1d8be0bce20757e956" + integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/serve-static" "*" + +"@types/express@^4.17.21": + version "4.17.23" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef" + integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-cache-semantics@*": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + +"@types/http-errors@*": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + +"@types/http-proxy@^1.17.15", "@types/http-proxy@^1.17.8": + version "1.17.16" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.16.tgz#dee360707b35b3cc85afcde89ffeebff7d7f9240" + integrity sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w== + dependencies: + "@types/node" "*" + +"@types/jasmine@~3.6.0": + version "3.6.11" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.6.11.tgz#4b1d77aa9dfc757407cb9e277216d8e83553f09d" + integrity sha512-S6pvzQDvMZHrkBz2Mcn/8Du7cpr76PlRJBAoHnSDNbulULsH5dp0Gns+WRyNX5LHejz/ljxK4/vIHK/caHt6SQ== + +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@>=10.0.0": + version "24.0.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.3.tgz#f935910f3eece3a3a2f8be86b96ba833dc286cab" + integrity sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg== + dependencies: + undici-types "~7.8.0" + +"@types/node@^20.0.0": + version "20.19.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.1.tgz#cef8bc04aaae86824b5bbe2570769358592bcc59" + integrity sha512-jJD50LtlD2dodAEO653i3YF04NWak6jN3ky+Ri3Em3mGR39/glWiboM/IePaRbgwSfqM1TpGXfAg8ohn/4dTgA== + dependencies: + undici-types "~6.21.0" + +"@types/qs@*": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/responselike@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== + dependencies: + "@types/node" "*" + +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== + +"@types/send@*": + version "0.17.5" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.5.tgz#d991d4f2b16f2b1ef497131f00a9114290791e74" + integrity sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.15.5": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.8.tgz#8180c3fbe4a70e8f00b9f70b9ba7f08f35987877" + integrity sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/sockjs@^0.3.36": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/ws@^8.5.10": + version "8.18.1" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== + dependencies: + "@types/node" "*" + +"@typescript-eslint/eslint-plugin@^7.0.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" + integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/type-utils" "7.18.0" + "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/parser@^7.0.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" + integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== + dependencies: + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" + integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + +"@typescript-eslint/type-utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" + integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== + dependencies: + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/utils" "7.18.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + +"@typescript-eslint/types@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" + integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== + +"@typescript-eslint/typescript-estree@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" + integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" + integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" + +"@typescript-eslint/visitor-keys@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" + integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== + dependencies: + "@typescript-eslint/types" "7.18.0" + eslint-visitor-keys "^3.4.3" + +"@ungap/structured-clone@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@vitejs/plugin-basic-ssl@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.2.0.tgz#9490fe15b8833351982fbe0963987f69f40f5019" + integrity sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q== + +"@volo/abp.ng.lepton-x.core@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@volo/abp.ng.lepton-x.core/-/abp.ng.lepton-x.core-4.2.0.tgz#04817e3cda6765e6b7230a76f249186817b5d6cb" + integrity sha512-8uOmmihS0FJt1a4XnjNZAMjClG15bVljpjpHmxUSoJwUUmBBpvPhT7k1e2/KFZS4U9VZkNa503Jw6VtdpQq3sg== + dependencies: + "@volo/ngx-lepton-x.core" "4.2.0" + tslib "^2.3.0" + +"@volo/ngx-lepton-x.core@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@volo/ngx-lepton-x.core/-/ngx-lepton-x.core-4.2.0.tgz#99b961830f6bf60bd14010c923884fd3f65bda0d" + integrity sha512-Gy9+FI6yV6PMTj06ABtirg5ikQo9B4W2khG3YSj/Z+yMouNMHRMkUnmruczn3E1dSSAL0PmYABfP1Lu+OsayEw== + dependencies: + ts-toolbelt "^9.0.0" + tslib "^2.3.0" + +"@volo/ngx-lepton-x.lite@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@volo/ngx-lepton-x.lite/-/ngx-lepton-x.lite-4.2.0.tgz#8f51ab462e8900f560d9b43b8ce387bf1d27710b" + integrity sha512-y+XtM5HWC8kSdUzVJnVQznHR5KOCvGBL5QZhFJMkjeZWBQxbWN2xPNWqfTrtDLxMCX/Hcglmj0muWkK8VdTvWw== + dependencies: + "@ng-bootstrap/ng-bootstrap" "~18.0.0" + "@volo/ngx-lepton-x.core" "4.2.0" + bootstrap-icons "~1.7.2" + tslib "^2.3.0" + +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +"@yarnpkg/lockfile@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +abbrev@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-3.0.1.tgz#8ac8b3b5024d31464fe2a5feeea9f4536bf44025" + integrity sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg== + +accepts@~1.3.4, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.14.0, acorn@^8.8.2, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== + +ajv-formats@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578" + integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== + dependencies: + ajv "^8.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@8.17.1, ajv@^8.0.0, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +angular-oauth2-oidc@^17.0.0: + version "17.0.2" + resolved "https://registry.yarnpkg.com/angular-oauth2-oidc/-/angular-oauth2-oidc-17.0.2.tgz#1f57df5cff8f6e5217aa020b2ed5e7282fc8f9d7" + integrity sha512-zYgeLmAnu1g8XAYZK+csAsCQBDhgp9ffBv/eArEnujGxNPTeK00bREHWObtehflpQdSn+k9rY2D15ChCSydyVw== + dependencies: + tslib "^2.5.2" + +ansi-colors@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-escapes@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz#00fc19f491bbb18e1d481b97868204f92109bfe7" + integrity sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw== + dependencies: + environment "^1.0.0" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +autoprefixer@10.4.20: + version "10.4.20" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== + dependencies: + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.1" + postcss-value-parser "^4.2.0" + +axobject-query@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" + integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== + +babel-loader@9.2.1: + version "9.2.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" + integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== + dependencies: + find-cache-dir "^4.0.0" + schema-utils "^4.0.0" + +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.13" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz#7d445f0e0607ebc8fb6b01d7e8fb02069b91dd8b" + integrity sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.4" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.6: + version "0.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" + integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + core-js-compat "^3.38.0" + +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz#428c615d3c177292a22b4f93ed99e358d7906a9b" + integrity sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.4" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +beasties@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/beasties/-/beasties-0.2.0.tgz#bc418d3b797fbe40cd93923d31cc8d3597d19c94" + integrity sha512-Ljqskqx/tbZagIglYoJIMzH5zgssyp+in9+9sAyh15N22AornBeIDnb8EZ6Rk+6ShfMxd92uO3gfpT0NtZbpow== + dependencies: + css-select "^5.1.0" + css-what "^6.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + htmlparser2 "^9.1.0" + picocolors "^1.1.1" + postcss "^8.4.49" + postcss-media-query-parser "^0.2.3" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +body-parser@1.20.3, body-parser@^1.19.0: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" + integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +bootstrap-icons@~1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/bootstrap-icons/-/bootstrap-icons-1.7.2.tgz#4024e081e2c850602552e1fed6451e682d09322a" + integrity sha512-NiR2PqC73AQOPdVSu6GJfnk+hN2z6powcistXk1JgPnKuoV2FSdSl26w931Oz9HYbKCcKUSB6ncZTYJAYJl3QQ== + +bootstrap@^5.0.0: + version "5.3.6" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.6.tgz#fbd91ebaff093f5b191a1c01a8c866d24f9fa6e1" + integrity sha512-jX0GAcRzvdwISuvArXn3m7KZscWWFAf1MKBcnzaN02qWMb3jpMoUX4/qgeiGzqyIb4ojulRzs89UCUmGcFSzTA== + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.21.5, browserslist@^4.23.0, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.25.0: + version "4.25.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.0.tgz#986aa9c6d87916885da2b50d8eb577ac8d133b2c" + integrity sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA== + dependencies: + caniuse-lite "^1.0.30001718" + electron-to-chromium "^1.5.160" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacache@^19.0.0, cacache@^19.0.1: + version "19.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-19.0.1.tgz#3370cc28a758434c85c2585008bd5bdcff17d6cd" + integrity sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ== + dependencies: + "@npmcli/fs" "^4.0.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^7.0.2" + ssri "^12.0.0" + tar "^7.4.3" + unique-filename "^4.0.0" + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bound@^1.0.2, call-bound@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001718: + version "1.0.30001723" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz#c4f3174f02089720736e1887eab345e09bb10944" + integrity sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw== + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chart.js@^3.5.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-3.9.1.tgz#3abf2c775169c4c71217a107163ac708515924b8" + integrity sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w== + +chokidar@^3.5.1, chokidar@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chownr@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" + integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-cursor@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" + integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== + dependencies: + restore-cursor "^5.0.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-truncate@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" + integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== + dependencies: + slice-ansi "^5.0.0" + string-width "^7.0.0" + +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.10, colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +compressible@~2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.8.0" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.0.tgz#09420efc96e11a0f44f3a558de59e321364180f7" + integrity sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA== + dependencies: + bytes "3.1.2" + compressible "~2.0.18" + debug "2.6.9" + negotiator "~0.6.4" + on-headers "~1.0.2" + safe-buffer "5.2.1" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.5.1, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + +cookie@~0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +copy-webpack-plugin@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz#935e57b8e6183c82f95bd937df658a59f6a2da28" + integrity sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA== + dependencies: + fast-glob "^3.3.2" + glob-parent "^6.0.1" + globby "^14.0.0" + normalize-path "^3.0.0" + schema-utils "^4.2.0" + serialize-javascript "^6.0.2" + +core-js-compat@^3.38.0, core-js-compat@^3.38.1: + version "3.43.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.43.0.tgz#055587369c458795ef316f65e0aabb808fb15840" + integrity sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA== + dependencies: + browserslist "^4.25.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@~2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== + dependencies: + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + +cross-spawn@^7.0.2, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-loader@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.1.2.tgz#64671541c6efe06b0e22e750503106bdd86880f8" + integrity sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== + +date-fns@^2.16.1: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + +date-format@^4.0.14: + version "4.0.14" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" + integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.6: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + +debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + +default-browser@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" + integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +detect-libc@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8" + integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serialize@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1, domutils@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78" + integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.5.160: + version "1.5.168" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.168.tgz#ad2bad79e34ba3ba8d79ba809c1e0756685c3f4f" + integrity sha512-RUNQmFLNIWVW6+z32EJQ5+qx8ci6RGvdtDC0Ls+F89wz6I2AthpXF0w0DIrn2jpLX0/PU9ZCo+Qp7bg/EckJmA== + +emoji-regex@^10.3.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4" + integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + +engine.io-parser@~5.2.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" + integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== + +engine.io@~6.6.0: + version "6.6.4" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.6.4.tgz#0a89a3e6b6c1d4b0c2a2a637495e7c149ec8d8ee" + integrity sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g== + dependencies: + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.7.2" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.17.1" + +enhanced-resolve@^5.17.1: + version "5.18.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" + integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +ent@~2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.2.tgz#22a5ed2fd7ce0cbcff1d1474cf4909a44bdb6e85" + integrity sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + punycode "^1.4.1" + safe-regex-test "^1.1.0" + +entities@^4.2.0, entities@^4.3.0, entities@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +entities@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" + integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== + +env-paths@^2.2.0, env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +environment@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" + integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^1.2.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +esbuild-wasm@0.24.2: + version "0.24.2" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.24.2.tgz#1ab3b4b858ecf226a3c1a63455358ecea704c500" + integrity sha512-03/7Z1gD+ohDnScFztvI4XddTAbKVmMEzCvvkBpQdWKEXJ+73dTyeNrmdxP1Q0zpDMFjzUJwtK4rLjqwiHbzkw== + +esbuild@0.24.2, esbuild@^0.24.2: + version "0.24.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" + integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== + optionalDependencies: + "@esbuild/aix-ppc64" "0.24.2" + "@esbuild/android-arm" "0.24.2" + "@esbuild/android-arm64" "0.24.2" + "@esbuild/android-x64" "0.24.2" + "@esbuild/darwin-arm64" "0.24.2" + "@esbuild/darwin-x64" "0.24.2" + "@esbuild/freebsd-arm64" "0.24.2" + "@esbuild/freebsd-x64" "0.24.2" + "@esbuild/linux-arm" "0.24.2" + "@esbuild/linux-arm64" "0.24.2" + "@esbuild/linux-ia32" "0.24.2" + "@esbuild/linux-loong64" "0.24.2" + "@esbuild/linux-mips64el" "0.24.2" + "@esbuild/linux-ppc64" "0.24.2" + "@esbuild/linux-riscv64" "0.24.2" + "@esbuild/linux-s390x" "0.24.2" + "@esbuild/linux-x64" "0.24.2" + "@esbuild/netbsd-arm64" "0.24.2" + "@esbuild/netbsd-x64" "0.24.2" + "@esbuild/openbsd-arm64" "0.24.2" + "@esbuild/openbsd-x64" "0.24.2" + "@esbuild/sunos-x64" "0.24.2" + "@esbuild/win32-arm64" "0.24.2" + "@esbuild/win32-ia32" "0.24.2" + "@esbuild/win32-x64" "0.24.2" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-scope@^8.0.2: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.0.0: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +exponential-backoff@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.2.tgz#a8f26adb96bf78e8cd8ad1037928d5e5c0679d91" + integrity sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA== + +express@^4.21.2: + version "4.21.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.7.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.12" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@3.3.3, fast-glob@^3.2.9, fast-glob@^3.3.2, fast-glob@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + +fastq@^1.6.0: + version "1.19.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fdir@^6.4.4: + version "6.4.6" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" + integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" + integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== + dependencies: + common-path-prefix "^3.0.0" + pkg-dir "^7.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== + dependencies: + locate-path "^7.1.0" + path-exists "^5.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.7, flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + +follow-redirects@^1.0.0: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-east-asian-width@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389" + integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== + +get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.2.2: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3, glob@^7.1.7: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^14.0.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.1.0.tgz#138b78e77cf5a8d794e327b15dce80bf1fb0a73e" + integrity sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA== + dependencies: + "@sindresorhus/merge-streams" "^2.1.0" + fast-glob "^3.3.3" + ignore "^7.0.3" + path-type "^6.0.0" + slash "^5.1.0" + unicorn-magic "^0.3.0" + +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +got@^11.5.2: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hosted-git-info@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-8.1.0.tgz#153cd84c03c6721481e16a5709eb74b1a0ab2ed0" + integrity sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw== + dependencies: + lru-cache "^10.0.1" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +htmlparser2@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23" + integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.1.0" + entities "^4.5.0" + +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" + integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== + +http-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +http-proxy-middleware@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz#dc1313c75bd00d81e103823802551ee30130ebd1" + integrity sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg== + dependencies: + "@types/http-proxy" "^1.17.15" + debug "^4.3.6" + http-proxy "^1.18.1" + is-glob "^4.0.3" + is-plain-object "^5.0.0" + micromatch "^4.0.8" + +http-proxy-middleware@^2.0.7: + version "2.0.9" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" + integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +https-proxy-agent@7.0.6, https-proxy-agent@^7.0.1: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== + dependencies: + agent-base "^7.1.2" + debug "4" + +hyperdyperid@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2, iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-walk@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-7.0.0.tgz#8350e475cf4375969c12eb49618b3fd9cca6704f" + integrity sha512-T4gbf83A4NH95zvhVYZc+qWocBBGlpzUXLPGurJggw/WIOwicfXJChLDP/iBZnN5WqROSu5Bm3hhle4z8a8YGQ== + dependencies: + minimatch "^9.0.0" + +ignore@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-6.0.2.tgz#77cccb72a55796af1b6d2f9eb14fa326d24f4283" + integrity sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A== + +ignore@^5.2.0, ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +ignore@^7.0.3: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +immutable@^5.0.2: + version "5.1.3" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.3.tgz#e6486694c8b76c37c063cca92399fa64098634d4" + integrity sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg== + +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@5.0.0, ini@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-5.0.0.tgz#a7a4615339843d9a8ccc2d85c9d81cf93ffbc638" + integrity sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw== + +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +is-fullwidth-code-point@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" + integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== + dependencies: + get-east-asian-width "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-network-error@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.1.0.tgz#d26a760e3770226d11c169052f266a4803d9c997" + integrity sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isbinaryfile@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.5: + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jasmine-core@^3.6.0: + version "3.99.1" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.99.1.tgz#5bfa4b2d76618868bfac4c8ff08bb26fffa4120d" + integrity sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg== + +jasmine-core@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-4.0.1.tgz#ea4b0495d82155023bd56c25181d9f9b623f61b8" + integrity sha512-w+JDABxQCkxbGGxg+a2hUVZyqUS2JKngvIyLGu/xiw2ZwgsoSB0iiecLQsQORSeaKQ6iGrCyWG86RfNDuoA7Lg== + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jiti@^1.20.0: + version "1.21.7" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9" + integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-parse-even-better-errors@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz#d3f67bd5925e81d3e31aa466acc821c8375cec43" + integrity sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^2.1.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-parser@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" + integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== + +jsonc-parser@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342" + integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +just-clone@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/just-clone/-/just-clone-6.2.0.tgz#a4614d9bf7e4bbdcae7f9ba904aea5ea9cae8ae5" + integrity sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA== + +just-compare@^2.0.0, just-compare@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/just-compare/-/just-compare-2.3.0.tgz#a2adcc1d1940536263275f5a1ef1298bcacfeda7" + integrity sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg== + +karma-chrome-launcher@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz#baca9cc071b1562a1db241827257bfe5cab597ea" + integrity sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ== + dependencies: + which "^1.2.1" + +karma-coverage@~2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-2.1.1.tgz#7434f8736841e08de3e6c302632e8d239634f388" + integrity sha512-oxeOSBVK/jdZsiX03LhHQkO4eISSQb5GbHi6Nsw3Mw7G4u6yUgacBAftnO7q+emPBLMsrNbz1pGIrj+Jb3z17A== + dependencies: + istanbul-lib-coverage "^3.2.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.1" + istanbul-reports "^3.0.5" + minimatch "^3.0.4" + +karma-jasmine-html-reporter@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz#52c489a74d760934a1089bfa5ea4a8fcb84cc28b" + integrity sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ== + +karma-jasmine@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-4.0.2.tgz#386db2a3e1acc0af5265c711f673f78f1e4938de" + integrity sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g== + dependencies: + jasmine-core "^3.6.0" + +karma-source-map-support@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz#58526ceccf7e8730e56effd97a4de8d712ac0d6b" + integrity sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A== + dependencies: + source-map-support "^0.5.5" + +karma@~6.3.0: + version "6.3.20" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.20.tgz#12f5c3b0e68f204607cb0a3a78d4751b42ef61a8" + integrity sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw== + dependencies: + "@colors/colors" "1.5.0" + body-parser "^1.19.0" + braces "^3.0.2" + chokidar "^3.5.1" + connect "^3.7.0" + di "^0.0.1" + dom-serialize "^2.2.1" + glob "^7.1.7" + graceful-fs "^4.2.6" + http-proxy "^1.18.1" + isbinaryfile "^4.0.8" + lodash "^4.17.21" + log4js "^6.4.1" + mime "^2.5.2" + minimatch "^3.0.4" + mkdirp "^0.5.5" + qjobs "^1.2.0" + range-parser "^1.2.1" + rimraf "^3.0.2" + socket.io "^4.4.1" + source-map "^0.6.1" + tmp "^0.2.1" + ua-parser-js "^0.7.30" + yargs "^16.1.1" + +keyv@^4.0.0, keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +launch-editor@^2.6.1: + version "2.10.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.10.0.tgz#5ca3edfcb9667df1e8721310f3a40f1127d4bc42" + integrity sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + +less-loader@12.2.0: + version "12.2.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-12.2.0.tgz#e1e94522f6abe9e064ef396c29a3151bc6c1b6cc" + integrity sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg== + +less@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/less/-/less-4.2.1.tgz#fe4c9848525ab44614c0cf2c00abd8d031bb619a" + integrity sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +license-webpack-plugin@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz#1e18442ed20b754b82f1adeff42249b81d11aec6" + integrity sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw== + dependencies: + webpack-sources "^3.0.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +listr2@8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d" + integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ== + dependencies: + cli-truncate "^4.0.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^6.1.0" + rfdc "^1.4.1" + wrap-ansi "^9.0.0" + +lmdb@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-3.2.2.tgz#1b3c50a0184847c88e02f038a598d6a229a8765e" + integrity sha512-LriG93la4PbmPMwI7Hbv8W+0ncLK7549w4sbZSi4QGDjnnxnmNMgxUkaQTEMzH8TpwsfFvgEjpLX7V8B/I9e3g== + dependencies: + msgpackr "^1.11.2" + node-addon-api "^6.1.0" + node-gyp-build-optional-packages "5.2.2" + ordered-binary "^1.5.3" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "3.2.2" + "@lmdb/lmdb-darwin-x64" "3.2.2" + "@lmdb/lmdb-linux-arm" "3.2.2" + "@lmdb/lmdb-linux-arm64" "3.2.2" + "@lmdb/lmdb-linux-x64" "3.2.2" + "@lmdb/lmdb-win32-x64" "3.2.2" + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" + integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-update@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.1.0.tgz#1a04ff38166f94647ae1af562f4bd6a15b1b7cd4" + integrity sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w== + dependencies: + ansi-escapes "^7.0.0" + cli-cursor "^5.0.0" + slice-ansi "^7.1.0" + strip-ansi "^7.1.0" + wrap-ansi "^9.0.0" + +log4js@^6.4.1: + version "6.9.1" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" + integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== + dependencies: + date-format "^4.0.14" + debug "^4.3.4" + flatted "^3.2.7" + rfdc "^1.3.0" + streamroller "^3.1.5" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^10.0.1, lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +luxon@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.6.1.tgz#d283ffc4c0076cb0db7885ec6da1c49ba97e47b0" + integrity sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ== + +magic-string@0.30.17: + version "0.30.17" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-fetch-happen@^14.0.0, make-fetch-happen@^14.0.1, make-fetch-happen@^14.0.2, make-fetch-happen@^14.0.3: + version "14.0.3" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz#d74c3ecb0028f08ab604011e0bc6baed483fcdcd" + integrity sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ== + dependencies: + "@npmcli/agent" "^3.0.0" + cacache "^19.0.1" + http-cache-semantics "^4.1.1" + minipass "^7.0.2" + minipass-fetch "^4.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^1.0.0" + proc-log "^5.0.0" + promise-retry "^2.0.1" + ssri "^12.0.0" + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^4.6.0: + version "4.17.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.17.2.tgz#1f71a6d85c8c53b4f1b388234ed981a690c7e227" + integrity sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg== + dependencies: + "@jsonjoy.com/json-pack" "^1.0.3" + "@jsonjoy.com/util" "^1.3.0" + tree-dump "^1.0.1" + tslib "^2.0.0" + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.5, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +"mime-db@>= 1.43.0 < 2": + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-function@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" + integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mini-css-extract-plugin@2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz#966031b468917a5446f4c24a80854b2947503c5b" + integrity sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w== + dependencies: + schema-utils "^4.0.0" + tapable "^2.2.1" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.0, minimatch@^9.0.4, minimatch@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + dependencies: + minipass "^7.0.3" + +minipass-fetch@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-4.0.1.tgz#f2d717d5a418ad0b1a7274f9b913515d3e78f9e5" + integrity sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^3.0.1" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +minizlib@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.2.tgz#f33d638eb279f664439aa38dc5f91607468cb574" + integrity sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA== + dependencies: + minipass "^7.1.2" + +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mrmime@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" + integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +msgpackr-extract@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012" + integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== + dependencies: + node-gyp-build-optional-packages "5.2.2" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" + +msgpackr@^1.11.2: + version "1.11.4" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.4.tgz#14703caead8ee0c2e7c89417de5a3ec94adf5d3e" + integrity sha512-uaff7RG9VIC4jacFW9xzL3jc0iM32DNHe4jYVycBcjUePT/Klnfj7pqtWJt9khvDFizmjN2TlYniYmSS2LIaZg== + optionalDependencies: + msgpackr-extract "^3.0.2" + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +mute-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + +mute-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" + integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== + +nanoid@^3.3.11, nanoid@^3.3.7: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +needle@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" + integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== + dependencies: + iconv-lite "^0.6.3" + sax "^1.2.4" + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +negotiator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" + integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== + +negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +ng-zorro-antd@~19.0.0: + version "19.0.2" + resolved "https://registry.yarnpkg.com/ng-zorro-antd/-/ng-zorro-antd-19.0.2.tgz#aad217330362c5e811ca57f164335d0882da7a2f" + integrity sha512-F0Ct4cJEXpEAAIIirviw5wt6njoITp9jfPq8Tsv3JY6bOriaPQ/6dUgnsXKMAQ7ocoi1hpykStwAMmAQwGIVog== + dependencies: + "@angular/cdk" "^19.0.0" + "@ant-design/icons-angular" "^19.0.0" + "@ctrl/tinycolor" "^3.6.0" + date-fns "^2.16.1" + tslib "^2.3.0" + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build-optional-packages@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4" + integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== + dependencies: + detect-libc "^2.0.1" + +node-gyp@^11.0.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-11.2.0.tgz#fe2ee7f0511424d6ad70f7a0c88d7346f2fc6a6e" + integrity sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + graceful-fs "^4.2.6" + make-fetch-happen "^14.0.3" + nopt "^8.0.0" + proc-log "^5.0.0" + semver "^7.3.5" + tar "^7.4.3" + tinyglobby "^0.2.12" + which "^5.0.0" + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + +nopt@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-8.1.0.tgz#b11d38caf0f8643ce885818518064127f602eae3" + integrity sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A== + dependencies: + abbrev "^3.0.0" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-bundled@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-4.0.0.tgz#f5b983f053fe7c61566cf07241fab2d4e9d513d3" + integrity sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA== + dependencies: + npm-normalize-package-bin "^4.0.0" + +npm-install-checks@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-7.1.1.tgz#e9d679fc8a1944c75cdcc96478a22f9d0f763632" + integrity sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz#df79e70cd0a113b77c02d1fe243c96b8e618acb1" + integrity sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w== + +npm-package-arg@12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-12.0.1.tgz#eb05e797b2fbdf8acf7f1d15344e1e05904202d5" + integrity sha512-aDxjFfPV3Liw0WOBWlyZLMBqtbgbg03rmGvHDJa2Ttv7tIz+1oB5qWec4psCDFZcZi9b5XdGkPdQiJxOPzvQRQ== + dependencies: + hosted-git-info "^8.0.0" + proc-log "^5.0.0" + semver "^7.3.5" + validate-npm-package-name "^6.0.0" + +npm-package-arg@^12.0.0: + version "12.0.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-12.0.2.tgz#3b1e04ebe651cc45028e298664e8c15ce9c0ca40" + integrity sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA== + dependencies: + hosted-git-info "^8.0.0" + proc-log "^5.0.0" + semver "^7.3.5" + validate-npm-package-name "^6.0.0" + +npm-packlist@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-9.0.0.tgz#8e9b061bab940de639dd93d65adc95c34412c7d0" + integrity sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ== + dependencies: + ignore-walk "^7.0.0" + +npm-pick-manifest@10.0.0, npm-pick-manifest@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz#6cc120c6473ceea56dfead500f00735b2b892851" + integrity sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ== + dependencies: + npm-install-checks "^7.1.0" + npm-normalize-package-bin "^4.0.0" + npm-package-arg "^12.0.0" + semver "^7.3.5" + +npm-registry-fetch@^18.0.0: + version "18.0.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-18.0.2.tgz#340432f56b5a8b1af068df91aae0435d2de646b5" + integrity sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ== + dependencies: + "@npmcli/redact" "^3.0.0" + jsonparse "^1.3.1" + make-fetch-happen "^14.0.0" + minipass "^7.0.2" + minipass-fetch "^4.0.0" + minizlib "^3.0.1" + npm-package-arg "^12.0.0" + proc-log "^5.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-assign@^4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1, on-finished@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" + integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== + dependencies: + mimic-function "^5.0.0" + +open@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1" + integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^3.1.0" + +open@^10.0.3: + version "10.1.2" + resolved "https://registry.yarnpkg.com/open/-/open-10.1.2.tgz#d5df40984755c9a9c3c93df8156a12467e882925" + integrity sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^3.1.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +ordered-binary@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.3.tgz#8bee2aa7a82c3439caeb1e80c272fd4cf51170fb" + integrity sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA== + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + +p-map@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-7.0.3.tgz#7ac210a2d36f81ec28b736134810f7ba4418cdb6" + integrity sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA== + +p-retry@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" + integrity sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ== + dependencies: + "@types/retry" "0.12.2" + is-network-error "^1.0.0" + retry "^0.13.1" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pacote@20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-20.0.0.tgz#c974373d8e0859d00e8f9158574350f8c1b168e5" + integrity sha512-pRjC5UFwZCgx9kUFDVM9YEahv4guZ1nSLqwmWiLUnDbGsjs+U5w7z6Uc8HNR1a6x8qnu5y9xtGE6D1uAuYz+0A== + dependencies: + "@npmcli/git" "^6.0.0" + "@npmcli/installed-package-contents" "^3.0.0" + "@npmcli/package-json" "^6.0.0" + "@npmcli/promise-spawn" "^8.0.0" + "@npmcli/run-script" "^9.0.0" + cacache "^19.0.0" + fs-minipass "^3.0.0" + minipass "^7.0.2" + npm-package-arg "^12.0.0" + npm-packlist "^9.0.0" + npm-pick-manifest "^10.0.0" + npm-registry-fetch "^18.0.0" + proc-log "^5.0.0" + promise-retry "^2.0.1" + sigstore "^3.0.0" + ssri "^12.0.0" + tar "^6.1.11" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse5-html-rewriting-stream@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz#e376d3e762d2950ccbb6bb59823fc1d7e9fdac36" + integrity sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg== + dependencies: + entities "^4.3.0" + parse5 "^7.0.0" + parse5-sax-parser "^7.0.0" + +parse5-sax-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz#4c05064254f0488676aca75fb39ca069ec96dee5" + integrity sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg== + dependencies: + parse5 "^7.0.0" + +parse5@^7.0.0, parse5@^7.1.2: + version "7.3.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" + integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== + dependencies: + entities "^6.0.0" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +path-type@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-6.0.0.tgz#2f1bb6791a91ce99194caede5d6c5920ed81eb51" + integrity sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ== + +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@4.0.2, picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +piscina@4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/piscina/-/piscina-4.8.0.tgz#5f5c5b1f4f3f50f8de894239c98b7b10d41ba4a6" + integrity sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA== + optionalDependencies: + "@napi-rs/nice" "^1.0.1" + +pkg-dir@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" + integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== + dependencies: + find-up "^6.3.0" + +postcss-loader@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-8.1.1.tgz#2822589e7522927344954acb55bbf26e8b195dfe" + integrity sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ== + dependencies: + cosmiconfig "^9.0.0" + jiti "^1.20.0" + semver "^7.5.4" + +postcss-media-query-parser@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + integrity sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig== + +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + +postcss-modules-local-by-default@^4.0.5: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" + integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^7.0.0" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" + integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-selector-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" + integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.49: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +postcss@^8.2.14, postcss@^8.4.33, postcss@^8.4.49: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +proc-log@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-5.0.0.tgz#e6c93cf37aef33f835c53485f314f50ea906a9d8" + integrity sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pump@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d" + integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qjobs@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reflect-metadata@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b" + integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q== + +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regex-parser@^2.2.11: + version "2.3.1" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.1.tgz#ee3f70e50bdd81a221d505242cb9a9c275a2ad91" + integrity sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ== + +regexpu-core@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" + integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.12.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== + dependencies: + jsesc "~3.0.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz#ee3142fb1f1e0d9db9524d539cfa166e9314f795" + integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^8.2.14" + source-map "0.6.1" + +resolve@1.22.10, resolve@^1.14.2: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +restore-cursor@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7" + integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== + dependencies: + onetime "^7.0.0" + signal-exit "^4.1.0" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rfdc@^1.3.0, rfdc@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup@4.30.1: + version "4.30.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.30.1.tgz#d5c3d066055259366cdc3eb6f1d051c5d6afaf74" + integrity sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w== + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.30.1" + "@rollup/rollup-android-arm64" "4.30.1" + "@rollup/rollup-darwin-arm64" "4.30.1" + "@rollup/rollup-darwin-x64" "4.30.1" + "@rollup/rollup-freebsd-arm64" "4.30.1" + "@rollup/rollup-freebsd-x64" "4.30.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.30.1" + "@rollup/rollup-linux-arm-musleabihf" "4.30.1" + "@rollup/rollup-linux-arm64-gnu" "4.30.1" + "@rollup/rollup-linux-arm64-musl" "4.30.1" + "@rollup/rollup-linux-loongarch64-gnu" "4.30.1" + "@rollup/rollup-linux-powerpc64le-gnu" "4.30.1" + "@rollup/rollup-linux-riscv64-gnu" "4.30.1" + "@rollup/rollup-linux-s390x-gnu" "4.30.1" + "@rollup/rollup-linux-x64-gnu" "4.30.1" + "@rollup/rollup-linux-x64-musl" "4.30.1" + "@rollup/rollup-win32-arm64-msvc" "4.30.1" + "@rollup/rollup-win32-ia32-msvc" "4.30.1" + "@rollup/rollup-win32-x64-msvc" "4.30.1" + fsevents "~2.3.2" + +rollup@^4.23.0: + version "4.43.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.43.0.tgz#275c09119eb7eaf0c3dea040523b81ef43c57b8c" + integrity sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg== + dependencies: + "@types/estree" "1.0.7" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.43.0" + "@rollup/rollup-android-arm64" "4.43.0" + "@rollup/rollup-darwin-arm64" "4.43.0" + "@rollup/rollup-darwin-x64" "4.43.0" + "@rollup/rollup-freebsd-arm64" "4.43.0" + "@rollup/rollup-freebsd-x64" "4.43.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.43.0" + "@rollup/rollup-linux-arm-musleabihf" "4.43.0" + "@rollup/rollup-linux-arm64-gnu" "4.43.0" + "@rollup/rollup-linux-arm64-musl" "4.43.0" + "@rollup/rollup-linux-loongarch64-gnu" "4.43.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.43.0" + "@rollup/rollup-linux-riscv64-gnu" "4.43.0" + "@rollup/rollup-linux-riscv64-musl" "4.43.0" + "@rollup/rollup-linux-s390x-gnu" "4.43.0" + "@rollup/rollup-linux-x64-gnu" "4.43.0" + "@rollup/rollup-linux-x64-musl" "4.43.0" + "@rollup/rollup-win32-arm64-msvc" "4.43.0" + "@rollup/rollup-win32-ia32-msvc" "4.43.0" + "@rollup/rollup-win32-x64-msvc" "4.43.0" + fsevents "~2.3.2" + +run-applescript@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" + integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +rxjs@~7.8.0: + version "7.8.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-loader@16.0.4: + version "16.0.4" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.4.tgz#5c2afb755fbc0a45a004369efa11579518a39a45" + integrity sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg== + dependencies: + neo-async "^2.6.2" + +sass@1.83.1: + version "1.83.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.83.1.tgz#dee1ab94b47a6f9993d3195d36f556bcbda64846" + integrity sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA== + dependencies: + chokidar "^4.0.0" + immutable "^5.0.2" + source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" + +sax@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.2.tgz#0c10878bf4a73fd2b1dfd14b9462b26788c806ae" + integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +semver@7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +semver@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.0.0, semver@^7.1.1, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.1: + version "1.8.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== + +should-quote@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/should-quote/-/should-quote-1.0.0.tgz#18e58cb92a3fecb6e163cf92c8158847058589d7" + integrity sha512-mQN5Meec3CTPmykzwXfDGWDpi75HUD8NT21wRWaJ7oqxpFIhXq80Hiy4ziccUNOwzhWeFkT9/kNSZbaugL9jsA== + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.0.6: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sigstore@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-3.1.0.tgz#08dc6c0c425263e9fdab85ffdb6477550e2c511d" + integrity sha512-ZpzWAFHIFqyFE56dXqgX/DkDRZdz+rRcjoIk/RQU4IX0wiCv1l8S7ZrXDHcCc+uaf+6o7w3h2l3g6GYG5TKN9Q== + dependencies: + "@sigstore/bundle" "^3.1.0" + "@sigstore/core" "^2.0.0" + "@sigstore/protobuf-specs" "^0.4.0" + "@sigstore/sign" "^3.1.0" + "@sigstore/tuf" "^3.1.0" + "@sigstore/verify" "^2.1.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + +slice-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" + integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== + dependencies: + ansi-styles "^6.2.1" + is-fullwidth-code-point "^5.0.0" + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socket.io-adapter@~2.5.2: + version "2.5.5" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082" + integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg== + dependencies: + debug "~4.3.4" + ws "~8.17.1" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +socket.io@^4.4.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.8.1.tgz#fa0eaff965cc97fdf4245e8d4794618459f7558a" + integrity sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg== + dependencies: + accepts "~1.3.4" + base64id "~2.0.0" + cors "~2.8.5" + debug "~4.3.2" + engine.io "~6.6.0" + socket.io-adapter "~2.5.2" + socket.io-parser "~4.2.4" + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +socks-proxy-agent@^8.0.3: + version "8.0.5" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== + dependencies: + agent-base "^7.1.2" + debug "^4.3.4" + socks "^2.8.3" + +socks@^2.8.3: + version "2.8.5" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.5.tgz#bfe18f5ead1efc93f5ec90c79fa8bdccbcee2e64" + integrity sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-5.0.0.tgz#f593a916e1cc54471cfc8851b905c8a845fc7e38" + integrity sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA== + dependencies: + iconv-lite "^0.6.3" + source-map-js "^1.0.2" + +source-map-support@0.5.21, source-map-support@^0.5.5, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.21" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3" + integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +ssri@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-12.0.0.tgz#bcb4258417c702472f8191981d3c8a771fee6832" + integrity sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ== + dependencies: + minipass "^7.0.3" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +streamroller@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" + integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== + dependencies: + date-format "^4.0.14" + debug "^4.3.4" + fs-extra "^8.1.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string-width@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc" + integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== + dependencies: + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-json-comments@3.1.1, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-observable@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + +tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" + integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== + +tar@^6.1.11: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +tar@^7.4.3: + version "7.4.3" + resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571" + integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw== + dependencies: + "@isaacs/fs-minipass" "^4.0.0" + chownr "^3.0.0" + minipass "^7.1.2" + minizlib "^3.0.1" + mkdirp "^3.0.1" + yallist "^5.0.0" + +terser-webpack-plugin@^5.3.10: + version "5.3.14" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" + integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser@5.37.0: + version "5.37.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.37.0.tgz#38aa66d1cfc43d0638fab54e43ff8a4f72a21ba3" + integrity sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +terser@^5.31.1: + version "5.42.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.42.0.tgz#1db8493aa0f3f866e488ec0fcf7e0c28eb43a2f5" + integrity sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.14.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thingies@^1.20.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/thingies/-/thingies-1.21.0.tgz#e80fbe58fd6fdaaab8fad9b67bd0a5c943c445c1" + integrity sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tinyglobby@^0.2.12: + version "0.2.14" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d" + integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ== + dependencies: + fdir "^6.4.4" + picomatch "^4.0.2" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tree-dump@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.0.3.tgz#2f0e42e77354714418ed7ab44291e435ccdb0f80" + integrity sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg== + +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-api-utils@^1.3.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== + +ts-toolbelt@^9.0.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5" + integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== + +tslib@2.8.1, tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.5.2: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tuf-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-3.0.1.tgz#e3f07ed3d8e87afaa70607bd1ef801d5c1f57177" + integrity sha512-+68OP1ZzSF84rTckf3FA95vJ1Zlx/uaXyiiKyPd1pA4rZNkpEvDAKmsu1xUSmbF/chCRYgZ6UZkDwC7PmzmAyA== + dependencies: + "@tufjs/models" "3.0.1" + debug "^4.3.6" + make-fetch-happen "^14.0.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-assert@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213" + integrity sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg== + +typescript@~5.6.0: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +ua-parser-js@^0.7.30: + version "0.7.40" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.40.tgz#c87d83b7bb25822ecfa6397a0da5903934ea1562" + integrity sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ== + +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + +undici-types@~7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" + integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" + integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unicorn-magic@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz#4efd45c85a69e0dd576d25532fbfa22aa5c8a104" + integrity sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA== + +unique-filename@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-4.0.0.tgz#a06534d370e7c977a939cd1d11f7f0ab8f1fed13" + integrity sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ== + dependencies: + unique-slug "^5.0.0" + +unique-slug@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-5.0.0.tgz#ca72af03ad0dbab4dad8aa683f633878b1accda8" + integrity sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +validate-npm-package-license@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-6.0.1.tgz#7b928e5fe23996045a6de5b5a22eedb3611264dd" + integrity sha512-OaI//3H0J7ZkR1OqlhGA8cA+Cbk/2xFOQpJOt5+s27/ta9eZwpeervh4Mxh4w0im/kdgktowaqVNR7QOrUd7Yg== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vite@6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/vite/-/vite-6.0.11.tgz#224497e93e940b34c3357c9ebf2ec20803091ed8" + integrity sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg== + dependencies: + esbuild "^0.24.2" + postcss "^8.4.49" + rollup "^4.23.0" + optionalDependencies: + fsevents "~2.3.3" + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== + +watchpack@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +watchpack@^2.4.1: + version "2.4.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947" + integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +weak-lru-cache@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" + integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== + +webpack-dev-middleware@7.4.2, webpack-dev-middleware@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz#40e265a3d3d26795585cff8207630d3a8ff05877" + integrity sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA== + dependencies: + colorette "^2.0.10" + memfs "^4.6.0" + mime-types "^2.1.31" + on-finished "^2.4.1" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.0.tgz#68043886edaa3fd875ad20e01589990a79612f9c" + integrity sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA== + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" + ansi-html-community "^0.0.8" + bonjour-service "^1.2.1" + chokidar "^3.6.0" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + express "^4.21.2" + graceful-fs "^4.2.6" + http-proxy-middleware "^2.0.7" + ipaddr.js "^2.1.0" + launch-editor "^2.6.1" + open "^10.0.3" + p-retry "^6.2.0" + schema-utils "^4.2.0" + selfsigned "^2.4.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^7.4.2" + ws "^8.18.0" + +webpack-merge@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-6.0.1.tgz#50c776868e080574725abc5869bd6e4ef0a16c6a" + integrity sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.1" + +webpack-sources@^3.0.0, webpack-sources@^3.2.3: + version "3.3.2" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.2.tgz#0ab55ab0b380ce53c45ca40cb7b33bab3149ea85" + integrity sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA== + +webpack-subresource-integrity@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz#8b7606b033c6ccac14e684267cb7fb1f5c2a132a" + integrity sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q== + dependencies: + typed-assert "^1.0.8" + +webpack@5.97.1: + version "5.97.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.97.1.tgz#972a8320a438b56ff0f1d94ade9e82eac155fa58" + integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.14.0" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.1" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-5.0.0.tgz#d93f2d93f79834d4363c7d0c23e00d07c466c8d6" + integrity sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ== + dependencies: + isexe "^3.1.1" + +wildcard@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrap-ansi@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" + integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== + dependencies: + ansi-styles "^6.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^8.18.0: + version "8.18.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a" + integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== + +ws@~8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yallist@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533" + integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@17.7.2, yargs@^17.2.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yargs@^16.1.1: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.1.tgz#36d7c4739f775b3cbc28e6136e21aa057adec418" + integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg== + +yoctocolors-cjs@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" + integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== + +zone.js@~0.15.0: + version "0.15.1" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.15.1.tgz#1e109adb75f80e9e004ee8e0d4a0a52e0a336481" + integrity sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w== diff --git a/common.props b/common.props new file mode 100644 index 0000000..22d34c4 --- /dev/null +++ b/common.props @@ -0,0 +1,19 @@ + + + latest + 1.0.0 + $(NoWarn);CS1591 + app + + + + + $(NoWarn);0436 + + + + + + + + \ No newline at end of file diff --git a/etc/abp-studio/run-profiles/Default.abprun.json b/etc/abp-studio/run-profiles/Default.abprun.json new file mode 100644 index 0000000..1867b9b --- /dev/null +++ b/etc/abp-studio/run-profiles/Default.abprun.json @@ -0,0 +1,28 @@ +{ + "applications": { + "Acme.BookStore.HttpApi.Host": { + "type": "dotnet-project", + "launchUrl": "https://localhost:44380", + "path": "../../../src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj", + "kubernetesService": ".*-httpapihost$", + "healthCheckEndpoint": "/health-status", + "healthUiEndpoint": "/health-ui", + "execution": { + "order": 4 + } + }, + "Acme.BookStore.Angular": { + "type": "cli", + "workingDirectory": "../../../angular", + "startCommand": "./start.ps1", + "launchUrl": "http://localhost:4200", + "kubernetesService": ".*-angular$", + "execution": { + "order": 2 + } + } + }, + "containers": { + "serviceName": "BookStore-Containers", + } +} \ No newline at end of file diff --git a/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.abppkg b/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.abppkg new file mode 100644 index 0000000..4903279 --- /dev/null +++ b/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.application-contracts" +} \ No newline at end of file diff --git a/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.abppkg.analyze.json b/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.abppkg.analyze.json new file mode 100644 index 0000000..4cf1196 --- /dev/null +++ b/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.abppkg.analyze.json @@ -0,0 +1,118 @@ +{ + "name": "Acme.BookStore.Application.Contracts", + "hash": "", + "contents": [ + { + "namespace": "Acme.BookStore", + "dependsOnModules": [ + { + "declaringAssemblyName": "Acme.BookStore.Domain.Shared", + "namespace": "Acme.BookStore", + "name": "BookStoreDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.FeatureManagement.Application.Contracts", + "namespace": "Volo.Abp.FeatureManagement", + "name": "AbpFeatureManagementApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.SettingManagement.Application.Contracts", + "namespace": "Volo.Abp.SettingManagement", + "name": "AbpSettingManagementApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Identity.Pro.Application.Contracts", + "namespace": "Volo.Abp.Identity", + "name": "AbpIdentityApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Account.Pro.Public.Application.Contracts", + "namespace": "Volo.Abp.Account", + "name": "AbpAccountPublicApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Account.Pro.Admin.Application.Contracts", + "namespace": "Volo.Abp.Account", + "name": "AbpAccountAdminApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.AuditLogging.Application.Contracts", + "namespace": "Volo.Abp.AuditLogging", + "name": "AbpAuditLoggingApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.Application.Contracts", + "namespace": "Volo.Abp.OpenIddict", + "name": "AbpOpenIddictProApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.TextTemplateManagement.Application.Contracts", + "namespace": "Volo.Abp.TextTemplateManagement", + "name": "TextTemplateManagementApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.LanguageManagement.Application.Contracts", + "namespace": "Volo.Abp.LanguageManagement", + "name": "LanguageManagementApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Gdpr.Application.Contracts", + "namespace": "Volo.Abp.Gdpr", + "name": "AbpGdprApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.PermissionManagement.Application.Contracts", + "namespace": "Volo.Abp.PermissionManagement", + "name": "AbpPermissionManagementApplicationContractsModule" + } + ], + "implementingInterfaces": [ + { + "name": "IAbpModule", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IAbpModule" + }, + { + "name": "IOnPreApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" + }, + { + "name": "IOnApplicationInitialization", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationInitialization" + }, + { + "name": "IOnPostApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" + }, + { + "name": "IOnApplicationShutdown", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationShutdown" + }, + { + "name": "IPreConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPreConfigureServices" + }, + { + "name": "IPostConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPostConfigureServices" + } + ], + "contentType": "abpModule", + "name": "BookStoreApplicationContractsModule", + "summary": null + } + ] +} \ No newline at end of file diff --git a/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj b/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj new file mode 100644 index 0000000..f431207 --- /dev/null +++ b/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj @@ -0,0 +1,24 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + + + + + + + + + + + diff --git a/src/Acme.BookStore.Application.Contracts/BookStoreApplicationContractsModule.cs b/src/Acme.BookStore.Application.Contracts/BookStoreApplicationContractsModule.cs new file mode 100644 index 0000000..44c6070 --- /dev/null +++ b/src/Acme.BookStore.Application.Contracts/BookStoreApplicationContractsModule.cs @@ -0,0 +1,26 @@ +using Volo.Abp.Account; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore; + +[DependsOn( + typeof(BookStoreDomainSharedModule), + typeof(AbpFeatureManagementApplicationContractsModule), + typeof(AbpSettingManagementApplicationContractsModule), + typeof(AbpIdentityApplicationContractsModule), + typeof(AbpAccountApplicationContractsModule), + typeof(AbpTenantManagementApplicationContractsModule), + typeof(AbpPermissionManagementApplicationContractsModule) +)] +public class BookStoreApplicationContractsModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + BookStoreDtoExtensions.Configure(); + } +} diff --git a/src/Acme.BookStore.Application.Contracts/BookStoreDtoExtensions.cs b/src/Acme.BookStore.Application.Contracts/BookStoreDtoExtensions.cs new file mode 100644 index 0000000..96abbdb --- /dev/null +++ b/src/Acme.BookStore.Application.Contracts/BookStoreDtoExtensions.cs @@ -0,0 +1,28 @@ +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace Acme.BookStore; + +public static class BookStoreDtoExtensions +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + /* You can add extension properties to DTOs + * defined in the depended modules. + * + * Example: + * + * ObjectExtensionManager.Instance + * .AddOrUpdateProperty("Title"); + * + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Object-Extensions + */ + }); + } +} diff --git a/src/Acme.BookStore.Application.Contracts/Permissions/BookStorePermissionDefinitionProvider.cs b/src/Acme.BookStore.Application.Contracts/Permissions/BookStorePermissionDefinitionProvider.cs new file mode 100644 index 0000000..183eefd --- /dev/null +++ b/src/Acme.BookStore.Application.Contracts/Permissions/BookStorePermissionDefinitionProvider.cs @@ -0,0 +1,22 @@ +using Acme.BookStore.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; +using Volo.Abp.MultiTenancy; + +namespace Acme.BookStore.Permissions; + +public class BookStorePermissionDefinitionProvider : PermissionDefinitionProvider +{ + public override void Define(IPermissionDefinitionContext context) + { + var myGroup = context.AddGroup(BookStorePermissions.GroupName); + + //Define your own permissions here. Example: + //myGroup.AddPermission(BookStorePermissions.MyPermission1, L("Permission:MyPermission1")); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/src/Acme.BookStore.Application.Contracts/Permissions/BookStorePermissions.cs b/src/Acme.BookStore.Application.Contracts/Permissions/BookStorePermissions.cs new file mode 100644 index 0000000..c70f55c --- /dev/null +++ b/src/Acme.BookStore.Application.Contracts/Permissions/BookStorePermissions.cs @@ -0,0 +1,11 @@ +namespace Acme.BookStore.Permissions; + +public static class BookStorePermissions +{ + public const string GroupName = "BookStore"; + + + + //Add your own permission names. Example: + //public const string MyPermission1 = GroupName + ".MyPermission1"; +} diff --git a/src/Acme.BookStore.Application/Acme.BookStore.Application.abppkg b/src/Acme.BookStore.Application/Acme.BookStore.Application.abppkg new file mode 100644 index 0000000..412567a --- /dev/null +++ b/src/Acme.BookStore.Application/Acme.BookStore.Application.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.application" +} \ No newline at end of file diff --git a/src/Acme.BookStore.Application/Acme.BookStore.Application.abppkg.analyze.json b/src/Acme.BookStore.Application/Acme.BookStore.Application.abppkg.analyze.json new file mode 100644 index 0000000..d35a302 --- /dev/null +++ b/src/Acme.BookStore.Application/Acme.BookStore.Application.abppkg.analyze.json @@ -0,0 +1,123 @@ +{ + "name": "Acme.BookStore.Application", + "hash": "", + "contents": [ + { + "namespace": "Acme.BookStore", + "dependsOnModules": [ + { + "declaringAssemblyName": "Acme.BookStore.Domain", + "namespace": "Acme.BookStore", + "name": "BookStoreDomainModule" + }, + { + "declaringAssemblyName": "Acme.BookStore.Application.Contracts", + "namespace": "Acme.BookStore", + "name": "BookStoreApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.PermissionManagement.Application", + "namespace": "Volo.Abp.PermissionManagement", + "name": "AbpPermissionManagementApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.FeatureManagement.Application", + "namespace": "Volo.Abp.FeatureManagement", + "name": "AbpFeatureManagementApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Identity.Pro.Application", + "namespace": "Volo.Abp.Identity", + "name": "AbpIdentityApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Account.Pro.Public.Application", + "namespace": "Volo.Abp.Account", + "name": "AbpAccountPublicApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Account.Pro.Admin.Application", + "namespace": "Volo.Abp.Account", + "name": "AbpAccountAdminApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.AuditLogging.Application", + "namespace": "Volo.Abp.AuditLogging", + "name": "AbpAuditLoggingApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.TextTemplateManagement.Application", + "namespace": "Volo.Abp.TextTemplateManagement", + "name": "TextTemplateManagementApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.Application", + "namespace": "Volo.Abp.OpenIddict", + "name": "AbpOpenIddictProApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.LanguageManagement.Application", + "namespace": "Volo.Abp.LanguageManagement", + "name": "LanguageManagementApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Gdpr.Application", + "namespace": "Volo.Abp.Gdpr", + "name": "AbpGdprApplicationModule" + }, + { + "declaringAssemblyName": "Volo.Abp.SettingManagement.Application", + "namespace": "Volo.Abp.SettingManagement", + "name": "AbpSettingManagementApplicationModule" + } + ], + "implementingInterfaces": [ + { + "name": "IAbpModule", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IAbpModule" + }, + { + "name": "IOnPreApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" + }, + { + "name": "IOnApplicationInitialization", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationInitialization" + }, + { + "name": "IOnPostApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" + }, + { + "name": "IOnApplicationShutdown", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationShutdown" + }, + { + "name": "IPreConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPreConfigureServices" + }, + { + "name": "IPostConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPostConfigureServices" + } + ], + "contentType": "abpModule", + "name": "BookStoreApplicationModule", + "summary": null + } + ] +} \ No newline at end of file diff --git a/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj b/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj new file mode 100644 index 0000000..f05b59c --- /dev/null +++ b/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj @@ -0,0 +1,25 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + + + + + + + + + + + + diff --git a/src/Acme.BookStore.Application/BookStoreAppService.cs b/src/Acme.BookStore.Application/BookStoreAppService.cs new file mode 100644 index 0000000..a1e1d3b --- /dev/null +++ b/src/Acme.BookStore.Application/BookStoreAppService.cs @@ -0,0 +1,14 @@ +using Acme.BookStore.Localization; +using Volo.Abp.Application.Services; + +namespace Acme.BookStore; + +/* Inherit your application services from this class. + */ +public abstract class BookStoreAppService : ApplicationService +{ + protected BookStoreAppService() + { + LocalizationResource = typeof(BookStoreResource); + } +} diff --git a/src/Acme.BookStore.Application/BookStoreApplicationAutoMapperProfile.cs b/src/Acme.BookStore.Application/BookStoreApplicationAutoMapperProfile.cs new file mode 100644 index 0000000..82dea81 --- /dev/null +++ b/src/Acme.BookStore.Application/BookStoreApplicationAutoMapperProfile.cs @@ -0,0 +1,13 @@ +using AutoMapper; + +namespace Acme.BookStore; + +public class BookStoreApplicationAutoMapperProfile : Profile +{ + public BookStoreApplicationAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + } +} diff --git a/src/Acme.BookStore.Application/BookStoreApplicationModule.cs b/src/Acme.BookStore.Application/BookStoreApplicationModule.cs new file mode 100644 index 0000000..e2da205 --- /dev/null +++ b/src/Acme.BookStore.Application/BookStoreApplicationModule.cs @@ -0,0 +1,31 @@ +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.Account; +using Volo.Abp.Identity; +using Volo.Abp.AutoMapper; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Modularity; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore; + +[DependsOn( + typeof(BookStoreDomainModule), + typeof(BookStoreApplicationContractsModule), + typeof(AbpPermissionManagementApplicationModule), + typeof(AbpFeatureManagementApplicationModule), + typeof(AbpIdentityApplicationModule), + typeof(AbpAccountApplicationModule), + typeof(AbpTenantManagementApplicationModule), + typeof(AbpSettingManagementApplicationModule) + )] +public class BookStoreApplicationModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.AddMaps(); + }); + } +} diff --git a/src/Acme.BookStore.Application/Properties/AssemblyInfo.cs b/src/Acme.BookStore.Application/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ab4c46c --- /dev/null +++ b/src/Acme.BookStore.Application/Properties/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("Acme.BookStore.Application.Tests")] diff --git a/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.abppkg b/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.abppkg new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.abppkg @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj b/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj new file mode 100644 index 0000000..9b6d6f8 --- /dev/null +++ b/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj @@ -0,0 +1,46 @@ + + + + + + Exe + net9.0 + enable + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + Always + + + + PreserveNewest + Always + + + + diff --git a/src/Acme.BookStore.DbMigrator/BookStoreDbMigratorModule.cs b/src/Acme.BookStore.DbMigrator/BookStoreDbMigratorModule.cs new file mode 100644 index 0000000..3fdf918 --- /dev/null +++ b/src/Acme.BookStore.DbMigrator/BookStoreDbMigratorModule.cs @@ -0,0 +1,14 @@ +using Acme.BookStore.EntityFrameworkCore; +using Volo.Abp.Autofac; +using Volo.Abp.Modularity; + +namespace Acme.BookStore.DbMigrator; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(BookStoreEntityFrameworkCoreModule), + typeof(BookStoreApplicationContractsModule) +)] +public class BookStoreDbMigratorModule : AbpModule +{ +} diff --git a/src/Acme.BookStore.DbMigrator/DbMigratorHostedService.cs b/src/Acme.BookStore.DbMigrator/DbMigratorHostedService.cs new file mode 100644 index 0000000..10b7b4c --- /dev/null +++ b/src/Acme.BookStore.DbMigrator/DbMigratorHostedService.cs @@ -0,0 +1,51 @@ +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Acme.BookStore.Data; +using Serilog; +using Volo.Abp; +using Volo.Abp.Data; + +namespace Acme.BookStore.DbMigrator; + +public class DbMigratorHostedService : IHostedService +{ + private readonly IHostApplicationLifetime _hostApplicationLifetime; + private readonly IConfiguration _configuration; + + public DbMigratorHostedService(IHostApplicationLifetime hostApplicationLifetime, IConfiguration configuration) + { + _hostApplicationLifetime = hostApplicationLifetime; + _configuration = configuration; + } + + public async Task StartAsync(CancellationToken cancellationToken) + { + using (var application = await AbpApplicationFactory.CreateAsync(options => + { + options.Services.ReplaceConfiguration(_configuration); + options.UseAutofac(); + options.Services.AddLogging(c => c.AddSerilog()); + options.AddDataMigrationEnvironment(); + })) + { + await application.InitializeAsync(); + + await application + .ServiceProvider + .GetRequiredService() + .MigrateAsync(); + + await application.ShutdownAsync(); + + _hostApplicationLifetime.StopApplication(); + } + } + + public Task StopAsync(CancellationToken cancellationToken) + { + return Task.CompletedTask; + } +} diff --git a/src/Acme.BookStore.DbMigrator/Dockerfile b/src/Acme.BookStore.DbMigrator/Dockerfile new file mode 100644 index 0000000..d26272b --- /dev/null +++ b/src/Acme.BookStore.DbMigrator/Dockerfile @@ -0,0 +1,5 @@ +FROM mcr.microsoft.com/dotnet/aspnet:9.0 +COPY bin/Release/net9.0/publish/ app/ +WORKDIR /app +ENV ASPNETCORE_URLS=http://+:80 +ENTRYPOINT ["dotnet", "Acme.BookStore.DbMigrator.dll"] \ No newline at end of file diff --git a/src/Acme.BookStore.DbMigrator/Dockerfile.local b/src/Acme.BookStore.DbMigrator/Dockerfile.local new file mode 100644 index 0000000..97518ba --- /dev/null +++ b/src/Acme.BookStore.DbMigrator/Dockerfile.local @@ -0,0 +1,6 @@ + FROM mcr.microsoft.com/dotnet/aspnet:9.0 + USER $APP_UID + + COPY bin/Release/net9.0/publish/ app/ + WORKDIR /app + ENTRYPOINT ["dotnet", "Acme.BookStore.DbMigrator.dll"] \ No newline at end of file diff --git a/src/Acme.BookStore.DbMigrator/Program.cs b/src/Acme.BookStore.DbMigrator/Program.cs new file mode 100644 index 0000000..647893f --- /dev/null +++ b/src/Acme.BookStore.DbMigrator/Program.cs @@ -0,0 +1,39 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Serilog; +using Serilog.Events; + +namespace Acme.BookStore.DbMigrator; + +class Program +{ + static async Task Main(string[] args) + { + Log.Logger = new LoggerConfiguration() + .MinimumLevel.Information() + .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) + .MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning) +#if DEBUG + .MinimumLevel.Override("Acme.BookStore", LogEventLevel.Debug) +#else + .MinimumLevel.Override("Acme.BookStore", LogEventLevel.Information) +#endif + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .WriteTo.Async(c => c.Console()) + .CreateLogger(); + + await CreateHostBuilder(args).RunConsoleAsync(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .AddAppSettingsSecretsJson() + .ConfigureLogging((context, logging) => logging.ClearProviders()) + .ConfigureServices((hostContext, services) => + { + services.AddHostedService(); + }); +} diff --git a/src/Acme.BookStore.DbMigrator/appsettings.json b/src/Acme.BookStore.DbMigrator/appsettings.json new file mode 100644 index 0000000..42914e8 --- /dev/null +++ b/src/Acme.BookStore.DbMigrator/appsettings.json @@ -0,0 +1,16 @@ +{ + "ConnectionStrings": { + "Default": "Server=localhost,1433;Database=BookStore;user=sa;password=123Qwe**;TrustServerCertificate=true" + }, + "OpenIddict": { + "Applications": { + "BookStore_App": { + "ClientId": "BookStore_App", + "RootUrl": "http://localhost:4200" }, + "BookStore_Swagger": { + "ClientId": "BookStore_Swagger", + "RootUrl": "https://localhost:44380/" + } + } + } +} diff --git a/src/Acme.BookStore.DbMigrator/appsettings.secrets.json b/src/Acme.BookStore.DbMigrator/appsettings.secrets.json new file mode 100644 index 0000000..2c63c08 --- /dev/null +++ b/src/Acme.BookStore.DbMigrator/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} diff --git a/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.abppkg b/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.abppkg new file mode 100644 index 0000000..8b3de05 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.domain-shared" +} \ No newline at end of file diff --git a/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.abppkg.analyze.json b/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.abppkg.analyze.json new file mode 100644 index 0000000..9096531 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.abppkg.analyze.json @@ -0,0 +1,118 @@ +{ + "name": "Acme.BookStore.Domain.Shared", + "hash": "", + "contents": [ + { + "namespace": "Acme.BookStore", + "dependsOnModules": [ + { + "declaringAssemblyName": "Volo.Abp.AuditLogging.Domain.Shared", + "namespace": "Volo.Abp.AuditLogging", + "name": "AbpAuditLoggingDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.BackgroundJobs.Domain.Shared", + "namespace": "Volo.Abp.BackgroundJobs", + "name": "AbpBackgroundJobsDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.FeatureManagement.Domain.Shared", + "namespace": "Volo.Abp.FeatureManagement", + "name": "AbpFeatureManagementDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.PermissionManagement.Domain.Shared", + "namespace": "Volo.Abp.PermissionManagement", + "name": "AbpPermissionManagementDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.SettingManagement.Domain.Shared", + "namespace": "Volo.Abp.SettingManagement", + "name": "AbpSettingManagementDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Identity.Pro.Domain.Shared", + "namespace": "Volo.Abp.Identity", + "name": "AbpIdentityProDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.Domain.Shared", + "namespace": "Volo.Abp.OpenIddict", + "name": "AbpOpenIddictProDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.LanguageManagement.Domain.Shared", + "namespace": "Volo.Abp.LanguageManagement", + "name": "LanguageManagementDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.TextTemplateManagement.Domain.Shared", + "namespace": "Volo.Abp.TextTemplateManagement", + "name": "TextTemplateManagementDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Gdpr.Domain.Shared", + "namespace": "Volo.Abp.Gdpr", + "name": "AbpGdprDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.GlobalFeatures", + "namespace": "Volo.Abp.GlobalFeatures", + "name": "AbpGlobalFeaturesModule" + }, + { + "declaringAssemblyName": "Volo.Abp.BlobStoring.Database.Domain.Shared", + "namespace": "Volo.Abp.BlobStoring.Database", + "name": "BlobStoringDatabaseDomainSharedModule" + } + ], + "implementingInterfaces": [ + { + "name": "IAbpModule", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IAbpModule" + }, + { + "name": "IOnPreApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" + }, + { + "name": "IOnApplicationInitialization", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationInitialization" + }, + { + "name": "IOnPostApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" + }, + { + "name": "IOnApplicationShutdown", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationShutdown" + }, + { + "name": "IPreConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPreConfigureServices" + }, + { + "name": "IPostConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPostConfigureServices" + } + ], + "contentType": "abpModule", + "name": "BookStoreDomainSharedModule", + "summary": null + } + ] +} \ No newline at end of file diff --git a/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj b/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj new file mode 100644 index 0000000..4b3251d --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj @@ -0,0 +1,37 @@ + + + + + + net9.0 + enable + Acme.BookStore + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Acme.BookStore.Domain.Shared/BookStoreDomainErrorCodes.cs b/src/Acme.BookStore.Domain.Shared/BookStoreDomainErrorCodes.cs new file mode 100644 index 0000000..1f02e5c --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/BookStoreDomainErrorCodes.cs @@ -0,0 +1,6 @@ +namespace Acme.BookStore; + +public static class BookStoreDomainErrorCodes +{ + /* You can add your business exception error codes here, as constants */ +} diff --git a/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs b/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs new file mode 100644 index 0000000..565ad31 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs @@ -0,0 +1,82 @@ +using Acme.BookStore.Localization; +using Volo.Abp.AuditLogging; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Localization; +using Volo.Abp.Localization.ExceptionHandling; +using Volo.Abp.Validation.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.VirtualFileSystem; +using Volo.Abp.OpenIddict; +using Volo.Abp.BlobStoring.Database; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore; + +[DependsOn( + typeof(AbpAuditLoggingDomainSharedModule), + typeof(AbpBackgroundJobsDomainSharedModule), + typeof(AbpFeatureManagementDomainSharedModule), + typeof(AbpPermissionManagementDomainSharedModule), + typeof(AbpSettingManagementDomainSharedModule), + typeof(AbpIdentityDomainSharedModule), + typeof(AbpOpenIddictDomainSharedModule), + typeof(AbpTenantManagementDomainSharedModule), + typeof(BlobStoringDatabaseDomainSharedModule) + )] +public class BookStoreDomainSharedModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + BookStoreGlobalFeatureConfigurator.Configure(); + BookStoreModuleExtensionConfigurator.Configure(); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddBaseTypes(typeof(AbpValidationResource)) + .AddVirtualJson("/Localization/BookStore"); + + options.DefaultResourceType = typeof(BookStoreResource); + + options.Languages.Add(new LanguageInfo("en", "en", "English")); + options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (United Kingdom)")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + options.Languages.Add(new LanguageInfo("es", "es", "Español")); + options.Languages.Add(new LanguageInfo("ar", "ar", "العربية")); + options.Languages.Add(new LanguageInfo("hi", "hi", "हिन्दी")); + options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português (Brasil)")); + options.Languages.Add(new LanguageInfo("fr", "fr", "Français")); + options.Languages.Add(new LanguageInfo("ru", "ru", "Русский")); + options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch (Deuthschland)")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); + options.Languages.Add(new LanguageInfo("it", "it", "Italiano")); + options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština")); + options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar")); + options.Languages.Add(new LanguageInfo("ro-RO", "ro-RO", "Română (România)")); + options.Languages.Add(new LanguageInfo("sv", "sv", "Svenska")); + options.Languages.Add(new LanguageInfo("fi", "fi", "Suomi")); + options.Languages.Add(new LanguageInfo("sk", "sk", "Slovenčina")); + options.Languages.Add(new LanguageInfo("is", "is", "Íslenska")); + options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中z文")); + + }); + + Configure(options => + { + options.MapCodeNamespace("BookStore", typeof(BookStoreResource)); + }); + } +} diff --git a/src/Acme.BookStore.Domain.Shared/BookStoreGlobalFeatureConfigurator.cs b/src/Acme.BookStore.Domain.Shared/BookStoreGlobalFeatureConfigurator.cs new file mode 100644 index 0000000..b8bbb0c --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/BookStoreGlobalFeatureConfigurator.cs @@ -0,0 +1,20 @@ +using Volo.Abp.GlobalFeatures; +using Volo.Abp.Threading; + +namespace Acme.BookStore; + +public static class BookStoreGlobalFeatureConfigurator +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + /* You can configure (enable/disable) global features of the used modules here. + * Please refer to the documentation to learn more about the Global Features System: + * https://docs.abp.io/en/abp/latest/Global-Features + */ + }); + } +} diff --git a/src/Acme.BookStore.Domain.Shared/BookStoreModuleExtensionConfigurator.cs b/src/Acme.BookStore.Domain.Shared/BookStoreModuleExtensionConfigurator.cs new file mode 100644 index 0000000..9888f59 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/BookStoreModuleExtensionConfigurator.cs @@ -0,0 +1,71 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace Acme.BookStore; + +public static class BookStoreModuleExtensionConfigurator +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + ConfigureExistingProperties(); + ConfigureExtraProperties(); + }); + } + + private static void ConfigureExistingProperties() + { + /* You can change max lengths for properties of the + * entities defined in the modules used by your application. + * + * Example: Change user and role name max lengths + + AbpUserConsts.MaxNameLength = 99; + IdentityRoleConsts.MaxNameLength = 99; + + * Notice: It is not suggested to change property lengths + * unless you really need it. Go with the standard values wherever possible. + * + * If you are using EF Core, you will need to run the add-migration command after your changes. + */ + } + + private static void ConfigureExtraProperties() + { + /* You can configure extra properties for the + * entities defined in the modules used by your application. + * + * This class can be used to define these extra properties + * with a high level, easy to use API. + * + * Example: Add a new property to the user entity of the identity module + + ObjectExtensionManager.Instance.Modules() + .ConfigureIdentity(identity => + { + identity.ConfigureUser(user => + { + user.AddOrUpdateProperty( //property type: string + "SocialSecurityNumber", //property name + property => + { + //validation rules + property.Attributes.Add(new RequiredAttribute()); + property.Attributes.Add(new StringLengthAttribute(64) {MinimumLength = 4}); + + //...other configurations for this property + } + ); + }); + }); + + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Module-Entity-Extensions + */ + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/ar.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/ar.json new file mode 100644 index 0000000..dfb6c89 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/ar.json @@ -0,0 +1,42 @@ +{ + "culture": "ar", + "texts": { + "AppName": "BookStore", + "Menu:Home": "منزل، بيت", + "Menu:ContactUs": "اتصل بنا", + "Menu:ArticleSample": "عينة المادة", + "Home": "منزل، بيت", + "Welcome": "مرحبا", + "LongWelcomeMessage": "مرحبا بكم في التطبيق. هذا مشروع بدء التشغيل يعتمد على إطار عمل برنامج ABP. لمزيد من المعلومات قم بزيارة", + "Date": "تاريخ", + "Permission:Dashboard": "لوحة القيادة", + "Menu:Dashboard": "لوحة القيادة", + "Menu:HomePage": "الصفحة الرئيسية", + "Dashboard": "لوحة القيادة", + "ExternalProvider:Google": "جوجل", + "ExternalProvider:Google:ClientId": "معرف العميل", + "ExternalProvider:Google:ClientSecret": "سر العميل", + "ExternalProvider:Microsoft": "مايكروسوفت", + "ExternalProvider:Microsoft:ClientId": "معرف العميل", + "ExternalProvider:Microsoft:ClientSecret": "سر العميل", + "ExternalProvider:Twitter": "تويتر", + "ExternalProvider:Twitter:ConsumerKey": "مفتاح المستهلك", + "ExternalProvider:Twitter:ConsumerSecret": "سر المستهلك", + "NewsletterHeader": "اشترك في النشرة الإخبارية!", + "NewsletterInfo": "احصل على معلومات حول آخر الأحداث.", + "NewsletterPreference_Default": "النشرة الإخبارية الافتراضية", + "NewsletterPrivacyAcceptMessage": "أوافق على سياسة الخصوصية .", + "Language": "لغة", + "Search": "يبحث", + "LoadMore": "تحميل المزيد", + "Settings": "إعدادات", + "Theme": "سمة", + "DeviceTheme": "موضوع الجهاز", + "Dark": "مظلم", + "Light": "ضوء", + "Unspecified": "نظام", + "SeeAllUsers": "رؤية كافة المستخدمين", + "TakePhoto": "تصوير", + "ChoosePhoto": "اختر صورة" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/cs.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/cs.json new file mode 100644 index 0000000..96d3df1 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/cs.json @@ -0,0 +1,9 @@ +{ + "Culture": "cs", + "Texts": { + "AppName": "BookStore", + "Menu:Home": "Home", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit", + "Welcome": "Welcome" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/de-DE.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/de-DE.json new file mode 100644 index 0000000..91727da --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/de-DE.json @@ -0,0 +1,42 @@ +{ + "culture": "de-DE", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Home", + "Menu:ContactUs": "Kontaktiere uns", + "Menu:ArticleSample": "Artikelmuster", + "Home": "Home", + "Welcome": "Willkommen", + "LongWelcomeMessage": "Willkommen in der Anwendung. Dies ist ein Startup-Projekt basierend auf dem ABP-Framework. Weitere Informationen finden Sie unter", + "Date": "Datum", + "Permission:Dashboard": "Dashboard", + "Menu:Dashboard": "Dashboard", + "Menu:HomePage": "Startseite", + "Dashboard": "Dashboard", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "Kunden ID", + "ExternalProvider:Google:ClientSecret": "Client-Geheimnis", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "Kunden ID", + "ExternalProvider:Microsoft:ClientSecret": "Client-Geheimnis", + "ExternalProvider:Twitter": "Twitter", + "ExternalProvider:Twitter:ConsumerKey": "Verbraucherschlüssel", + "ExternalProvider:Twitter:ConsumerSecret": "Verbrauchergeheimnis", + "NewsletterHeader": "Abonnieren Sie den Newsletter!", + "NewsletterInfo": "Informieren Sie sich über aktuelle Ereignisse.", + "NewsletterPreference_Default": "Standard-Newsletter", + "NewsletterPrivacyAcceptMessage": "Ich akzeptiere die Datenschutzerklärung.", + "Language": "Sprache", + "Search": "Suchen", + "LoadMore": "Mehr laden", + "Settings": "Einstellungen", + "Theme": "Thema", + "DeviceTheme": "Gerätethema", + "Dark": "Dunkel", + "Light": "Licht", + "Unspecified": "System", + "SeeAllUsers": "Alle Benutzer anzeigen", + "TakePhoto": "Foto machen", + "ChoosePhoto": "Wähle ein Foto aus" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en-GB.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en-GB.json new file mode 100644 index 0000000..9ce52ca --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en-GB.json @@ -0,0 +1,9 @@ +{ + "Culture": "en-GB", + "Texts": { + "AppName": "BookStore", + "Menu:Home": "Home", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit", + "Welcome": "Welcome" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json new file mode 100644 index 0000000..90874f6 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json @@ -0,0 +1,9 @@ +{ + "Culture": "en", + "Texts": { + "AppName": "BookStore", + "Menu:Home": "Home", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit", + "Welcome": "Welcome" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/es.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/es.json new file mode 100644 index 0000000..43f20ea --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/es.json @@ -0,0 +1,42 @@ +{ + "culture": "es", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Hogar", + "Menu:ContactUs": "Contáctenos", + "Menu:ArticleSample": "Muestra de artículo", + "Home": "Hogar", + "Welcome": "Bienvenido", + "LongWelcomeMessage": "Bienvenido a la aplicacion. Este es un proyecto de inicio basado en el marco ABP. Para obtener mas informacion, visite", + "Date": "Fecha", + "Permission:Dashboard": "Panel de control", + "Menu:Dashboard": "Panel de control", + "Menu:HomePage": "Página de inicio", + "Dashboard": "Panel de control", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "ID de cliente", + "ExternalProvider:Google:ClientSecret": "Client Secret", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "ID de cliente", + "ExternalProvider:Microsoft:ClientSecret": "Client Secret", + "ExternalProvider:Twitter": "Twitter", + "ExternalProvider:Twitter:ConsumerKey": "Clave de consumidor", + "ExternalProvider:Twitter:ConsumerSecret": "Consumer Secret", + "NewsletterHeader": "Suscríbete a la newsletter!", + "NewsletterInfo": "Obtenga información sobre los últimos acontecimientos.", + "NewsletterPreference_Default": "Boletín de noticias predeterminado", + "NewsletterPrivacyAcceptMessage": "Acepto la Política de privacidad .", + "Language": "Idioma", + "Search": "Buscar", + "LoadMore": "Carga más", + "Settings": "Ajustes", + "Theme": "Tema", + "DeviceTheme": "Tema del dispositivo", + "Dark": "Oscuro", + "Light": "Luz", + "Unspecified": "Sistema", + "SeeAllUsers": "Ver todos los usuarios", + "TakePhoto": "Tomar foto", + "ChoosePhoto": "Escoge una foto" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/fi.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/fi.json new file mode 100644 index 0000000..306a774 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/fi.json @@ -0,0 +1,42 @@ +{ + "culture": "fi", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Koti", + "Menu:ContactUs": "Ota meihin yhteyttä", + "Menu:ArticleSample": "Artikkelinäyte", + "Home": "Koti", + "Welcome": "Tervetuloa", + "LongWelcomeMessage": "Tervetuloa sovellukseen. Tämä on ABP-kehykseen perustuva käynnistysprojekti. Lisätietoja on osoitteessa", + "Date": "Päivämäärä", + "Permission:Dashboard": "Kojelauta", + "Menu:Dashboard": "Kojelauta", + "Menu:HomePage": "Kotisivu", + "Dashboard": "Kojelauta", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "Asiakastunnus", + "ExternalProvider:Google:ClientSecret": "Asiakkaan salaisuus", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "Asiakastunnus", + "ExternalProvider:Microsoft:ClientSecret": "Asiakkaan salaisuus", + "ExternalProvider:Twitter": "Viserrys", + "ExternalProvider:Twitter:ConsumerKey": "Kuluttaja-avain", + "ExternalProvider:Twitter:ConsumerSecret": "Kuluttajan salaisuus", + "NewsletterHeader": "Tilaa uutiskirje!", + "NewsletterInfo": "Hanki tietoa viimeisimmistä tapahtumista.", + "NewsletterPreference_Default": "Oletusuutiskirje", + "NewsletterPrivacyAcceptMessage": "Hyväksyn tietosuojakäytännön .", + "Language": "Kieli", + "Search": "Hae", + "LoadMore": "Lataa lisää", + "Settings": "asetukset", + "Theme": "Teema", + "DeviceTheme": "Laitteen teema", + "Dark": "Tumma", + "Light": "Kevyt", + "Unspecified": "Järjestelmä", + "SeeAllUsers": "Katso Kaikki käyttäjät", + "TakePhoto": "Ota valokuva", + "ChoosePhoto": "Valitse Valokuva" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/fr.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/fr.json new file mode 100644 index 0000000..e498f7e --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/fr.json @@ -0,0 +1,42 @@ +{ + "culture": "fr", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Acceuil", + "Menu:ContactUs": "Nous contacter", + "Menu:ArticleSample": "Échantillon d'article", + "Home": "Acceuil", + "Welcome": "Bienvenue", + "LongWelcomeMessage": "Bienvenue dans l'application. Il s'agit d'un projet de démarrage basé sur le framework ABP. Pour plus d'informations, visitez", + "Date": "Date", + "Permission:Dashboard": "Tableau de bord", + "Menu:Dashboard": "Tableau de bord", + "Menu:HomePage": "Page d'accueil", + "Dashboard": "Tableau de bord", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "identité du client", + "ExternalProvider:Google:ClientSecret": "Secret du client", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "identité du client", + "ExternalProvider:Microsoft:ClientSecret": "Secret du client", + "ExternalProvider:Twitter": "Twitter", + "ExternalProvider:Twitter:ConsumerKey": "La clé du consommateur", + "ExternalProvider:Twitter:ConsumerSecret": "Secret du consommateur", + "NewsletterHeader": "Abonnez-vous à la newsletter!", + "NewsletterInfo": "Obtenez des informations sur les derniers événements.", + "NewsletterPreference_Default": "Newsletter par défaut", + "NewsletterPrivacyAcceptMessage": "J'accepte la Politique de confidentialité .", + "Language": "Langue", + "Search": "Recherche", + "LoadMore": "Charger plus", + "Settings": "Paramètres", + "Theme": "Thème", + "DeviceTheme": "Thème de l'appareil", + "Dark": "Sombre", + "Light": "Lumière", + "Unspecified": "Système", + "SeeAllUsers": "Voir tous les utilisateurs", + "TakePhoto": "Prendre une photo", + "ChoosePhoto": "Choisissez une photo" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/hi.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/hi.json new file mode 100644 index 0000000..c98acd5 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/hi.json @@ -0,0 +1,42 @@ +{ + "culture": "hi", + "texts": { + "AppName": "BookStore", + "Menu:Home": "घर", + "Menu:ContactUs": "संपर्क करें", + "Menu:ArticleSample": "आलेख नमूना", + "Home": "घर", + "Welcome": "स्वागत हे", + "LongWelcomeMessage": "आवेदन करने के लिए आपका स्वागत है। यह एबीपी ढांचे पर आधारित एक स्टार्टअप परियोजना है। अधिक जानकारी के लिए पर जाएँ।", + "Date": "दिनांक", + "Permission:Dashboard": "डैशबोर्ड", + "Menu:Dashboard": "डैशबोर्ड", + "Menu:HomePage": "मुख पृष्ठ", + "Dashboard": "डैशबोर्ड", + "ExternalProvider:Google": "गूगल", + "ExternalProvider:Google:ClientId": "ग्राहक ID", + "ExternalProvider:Google:ClientSecret": "ग्राहक गुप्त", + "ExternalProvider:Microsoft": "माइक्रोसॉफ्ट", + "ExternalProvider:Microsoft:ClientId": "ग्राहक ID", + "ExternalProvider:Microsoft:ClientSecret": "ग्राहक गुप्त", + "ExternalProvider:Twitter": "ट्विटर", + "ExternalProvider:Twitter:ConsumerKey": "उपभोक्ता कुंजी", + "ExternalProvider:Twitter:ConsumerSecret": "उपभोक्ता रहस्य", + "NewsletterHeader": "न्यूज़लेटर की सदस्यता लें!", + "NewsletterInfo": "नवीनतम घटनाओं के बारे में जानकारी प्राप्त करें।", + "NewsletterPreference_Default": "डिफ़ॉल्ट न्यूज़लैटर", + "NewsletterPrivacyAcceptMessage": "मैं गोपनीयता नीति स्वीकार करता हूं।", + "Language": "भाषा", + "Search": "खोज", + "LoadMore": "और लोड करें", + "Settings": "समायोजन", + "Theme": "विषय", + "DeviceTheme": "डिवाइस थीम", + "Dark": "अँधेरा", + "Light": "रोशनी", + "Unspecified": "प्रणाली", + "SeeAllUsers": "सभी उपयोगकर्ता देखें", + "TakePhoto": "फोटो लो", + "ChoosePhoto": "तस्विर का चयन करो" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/hu.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/hu.json new file mode 100644 index 0000000..0e38e37 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/hu.json @@ -0,0 +1,42 @@ +{ + "culture": "hu", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Kezdőlap", + "Menu:ContactUs": "Lépjen kapcsolatba velünk", + "Menu:ArticleSample": "Cikkminta", + "Home": "Kezdőlap", + "Welcome": "Üdvözöljük", + "LongWelcomeMessage": "Üdvözöljük az alkalmazásban. Ez egy ABP keretrendszeren alapuló startup projekt. További információért látogasson el az oldalra", + "Date": "dátum", + "Permission:Dashboard": "Irányítópult", + "Menu:Dashboard": "Irányítópult", + "Menu:HomePage": "Kezdőlap", + "Dashboard": "Irányítópult", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "Ügyfélazonosító", + "ExternalProvider:Google:ClientSecret": "Ügyfél titkos kulcs", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "Ügyfélazonosító", + "ExternalProvider:Microsoft:ClientSecret": "Ügyfél titkos kulcs", + "ExternalProvider:Twitter": "Twitter", + "ExternalProvider:Twitter:ConsumerKey": "Fogyasztói kulcs", + "ExternalProvider:Twitter:ConsumerSecret": "Fogyasztói titkos kulcs", + "NewsletterHeader": "Iratkozz fel a hírlevélre!", + "NewsletterInfo": "Tájékozódjon a legfrissebb eseményekről.", + "NewsletterPreference_Default": "Alapértelmezett hírlevél", + "NewsletterPrivacyAcceptMessage": "Elfogadom az Adatvédelmi szabályzatot .", + "Language": "Nyelv", + "Search": "Keresés", + "LoadMore": "Load More", + "Settings": "Beállítások", + "Theme": "Téma", + "DeviceTheme": "Eszköz téma", + "Dark": "Sötét", + "Light": "Fény", + "Unspecified": "Rendszer", + "SeeAllUsers": "Lásd: Összes felhasználó", + "TakePhoto": "Fotót készíteni", + "ChoosePhoto": "Válassz képet" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/is.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/is.json new file mode 100644 index 0000000..1ed7e68 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/is.json @@ -0,0 +1,9 @@ +{ + "Culture": "is", + "Texts": { + "AppName": "BookStore", + "Menu:Home": "Home", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit", + "Welcome": "Welcome" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/it.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/it.json new file mode 100644 index 0000000..42806bc --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/it.json @@ -0,0 +1,42 @@ +{ + "culture": "it", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Home", + "Menu:ContactUs": "Contattaci", + "Menu:ArticleSample": "Esempio di articolo", + "Home": "Home", + "Welcome": "Benvenuto", + "LongWelcomeMessage": "Benvenuto nell'applicazione. Questo è un progetto di avvio basato sul framework ABP. Per maggiori informazioni visita", + "Date": "Data", + "Permission:Dashboard": "Cruscotto", + "Menu:Dashboard": "Cruscotto", + "Menu:HomePage": "Pagina iniziale", + "Dashboard": "Cruscotto", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "Client ID", + "ExternalProvider:Google:ClientSecret": "Client Secret", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "Client ID", + "ExternalProvider:Microsoft:ClientSecret": "Client Secret", + "ExternalProvider:Twitter": "Twitter", + "ExternalProvider:Twitter:ConsumerKey": "Consumer Key", + "ExternalProvider:Twitter:ConsumerSecret": "Consumer Secret", + "NewsletterHeader": "Iscriviti alla newsletter!", + "NewsletterInfo": "Ottieni informazioni sugli ultimi avvenimenti.", + "NewsletterPreference_Default": "Newsletter predefinita", + "NewsletterPrivacyAcceptMessage": "Accetto la Informativa sulla privacy.", + "Language": "Lingua", + "Search": "Ricerca", + "LoadMore": "Carica altro", + "Settings": "Impostazioni", + "Theme": "Tema", + "DeviceTheme": "Tema del dispositivo", + "Dark": "Buio", + "Light": "Leggero", + "Unspecified": "Sistema", + "SeeAllUsers": "Visualizza tutti gli utenti", + "TakePhoto": "Fare foto", + "ChoosePhoto": "Scegli la foto" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/pt-BR.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/pt-BR.json new file mode 100644 index 0000000..4d3ae19 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/pt-BR.json @@ -0,0 +1,42 @@ +{ + "culture": "pt-BR", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Principal", + "Menu:ContactUs": "Entre em contato conosco", + "Menu:ArticleSample": "Amostra de Artigo", + "Home": "Casa", + "Welcome": "Seja bem-vindo!", + "LongWelcomeMessage": "Bem-vindo a esta aplicação. Este é um projeto inicial baseado no ABP framework. Para mais informações, visite", + "Date": "Data", + "Permission:Dashboard": "Painel", + "Menu:Dashboard": "Painel", + "Menu:HomePage": "Pagina inicial", + "Dashboard": "Painel", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "ID do Cliente", + "ExternalProvider:Google:ClientSecret": "Segredo do cliente", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "ID do Cliente", + "ExternalProvider:Microsoft:ClientSecret": "Segredo do cliente", + "ExternalProvider:Twitter": "Twitter", + "ExternalProvider:Twitter:ConsumerKey": "Chave do consumidor", + "ExternalProvider:Twitter:ConsumerSecret": "consumidor secreto", + "NewsletterHeader": "Assine a newsletter!", + "NewsletterInfo": "Obtenha informações sobre os últimos acontecimentos.", + "NewsletterPreference_Default": "Boletim informativo padrão", + "NewsletterPrivacyAcceptMessage": "Eu aceito a Política de Privacidade .", + "Language": "Linguagem", + "Search": "Procurar", + "LoadMore": "Carregue mais", + "Settings": "Configurações", + "Theme": "Tema", + "DeviceTheme": "Tema do dispositivo", + "Dark": "Escuro", + "Light": "Luz", + "Unspecified": "Sistema", + "SeeAllUsers": "Ver todos os usuários", + "TakePhoto": "Tirar fotos", + "ChoosePhoto": "Escolher Foto" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/ro-RO.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/ro-RO.json new file mode 100644 index 0000000..19a18cb --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/ro-RO.json @@ -0,0 +1,9 @@ +{ + "Culture": "ro-RO", + "Texts": { + "AppName": "BookStore", + "Menu:Home": "Home", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit", + "Welcome": "Welcome" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/ru.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/ru.json new file mode 100644 index 0000000..b97912e --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/ru.json @@ -0,0 +1,42 @@ +{ + "culture": "ru", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Дома", + "Menu:ContactUs": "Связаться с нами", + "Menu:ArticleSample": "Образец статьи", + "Home": "Дома", + "Welcome": "Добро пожаловать", + "LongWelcomeMessage": "Добро пожаловать в приложение. Это стартап-проект, основанный на структуре ABP. Для получения дополнительной информации посетите сайт", + "Date": "датировать", + "Permission:Dashboard": "Панель приборов", + "Menu:Dashboard": "Панель приборов", + "Menu:HomePage": "Домашняя страница", + "Dashboard": "Панель приборов", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "ID клиента", + "ExternalProvider:Google:ClientSecret": "Секрет клиента", + "ExternalProvider:Microsoft": "Майкрософт", + "ExternalProvider:Microsoft:ClientId": "ID клиента", + "ExternalProvider:Microsoft:ClientSecret": "Секрет клиента", + "ExternalProvider:Twitter": "Твиттер", + "ExternalProvider:Twitter:ConsumerKey": "Потребительский ключ", + "ExternalProvider:Twitter:ConsumerSecret": "Потребительский секрет", + "NewsletterHeader": "Подпишитесь на рассылку!", + "NewsletterInfo": "Получайте информацию о последних событиях.", + "NewsletterPreference_Default": "Информационный бюллетень по умолчанию", + "NewsletterPrivacyAcceptMessage": "Я принимаю Политику конфиденциальности.", + "Language": "Язык", + "Search": "Поиск", + "LoadMore": "Загрузи больше", + "Settings": "Настройки", + "Theme": "Тема", + "DeviceTheme": "Тема устройства", + "Dark": "Темный", + "Light": "Свет", + "Unspecified": "Система", + "SeeAllUsers": "Просмотреть всех пользователей", + "TakePhoto": "Сделать фотографию", + "ChoosePhoto": "Выбрать фото" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/sk.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/sk.json new file mode 100644 index 0000000..cfa4247 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/sk.json @@ -0,0 +1,42 @@ +{ + "culture": "sk", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Domov", + "Menu:ContactUs": "Kontaktujte nás", + "Menu:ArticleSample": "Ukážka článku", + "Home": "Domov", + "Welcome": "Vitajte", + "LongWelcomeMessage": "Vitajte v aplikácii. Toto je štartovací projekt založený na ABP frameworku. Viac informácií nájdete na stránke", + "Date": "Dátum", + "Permission:Dashboard": "Dashboard", + "Menu:Dashboard": "Dashboard", + "Menu:HomePage": "Domovská stránka", + "Dashboard": "Dashboard", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "Client ID", + "ExternalProvider:Google:ClientSecret": "Client Secret", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "Client ID", + "ExternalProvider:Microsoft:ClientSecret": "Client Secret", + "ExternalProvider:Twitter": "Twitter", + "ExternalProvider:Twitter:ConsumerKey": "Consumer Key", + "ExternalProvider:Twitter:ConsumerSecret": "Consumer Secret", + "NewsletterHeader": "Prihláste sa na odber noviniek!", + "NewsletterInfo": "Získajte informácie o najnovšiom dianí.", + "NewsletterPreference_Default": "Predvolený odber noviniek", + "NewsletterPrivacyAcceptMessage": "Súhlasím so Zásadami ochrany osobných údajov.", + "Language": "Jazyk", + "Search": "Vyhľadávanie", + "LoadMore": "Načítať viac", + "Settings": "nastavenie", + "Theme": "Téma", + "DeviceTheme": "Téma zariadenia", + "Dark": "Tmavý", + "Light": "Svetlo", + "Unspecified": "Systém", + "SeeAllUsers": "Pozrite si Všetci používatelia", + "TakePhoto": "Odfoť", + "ChoosePhoto": "Vyberte fotografiu" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/sv.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/sv.json new file mode 100644 index 0000000..f5c6717 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/sv.json @@ -0,0 +1,42 @@ +{ + "Culture": "sv", + "Texts": { + "AppName": "BookStore", + "Menu:ContactUs": "Kontakta oss", + "Menu:ArticleSample": "Artikelexempel", + "Home": "Hem", + "Date": "Datum", + "Permission:Dashboard": "Dashboard", + "Menu:Dashboard": "Dashboard", + "Menu:HomePage": "Hemsida", + "Dashboard": "Dashboard", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "Klient-ID", + "ExternalProvider:Google:ClientSecret": "Klienthemlighet", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "Klient-ID", + "ExternalProvider:Microsoft:ClientSecret": "Klienthemlighet", + "ExternalProvider:Twitter": "Twitter (X)", + "ExternalProvider:Twitter:ConsumerKey": "Konsumentnyckel", + "ExternalProvider:Twitter:ConsumerSecret": "Konsumenthemlighet", + "NewsletterHeader": "Prenumerera på nyhetsbrevet!", + "NewsletterInfo": "Få information om de senaste händelserna.", + "NewsletterPreference_Default": "Standardnyhetsbrev", + "NewsletterPrivacyAcceptMessage": "Jag accepterar Sekretesspolicy.", + "Language": "Språk", + "Search": "Söka", + "LoadMore": "Ladda mer", + "Settings": "Inställningar", + "Theme": "Tema", + "DeviceTheme": "Enhetstema", + "Dark": "Mörk", + "Light": "Ljus", + "Unspecified": "System", + "SeeAllUsers": "Se Alla användare", + "TakePhoto": "Ta foto", + "ChoosePhoto": "Välj Foto", + "Menu:Home": "Hem", + "LongWelcomeMessage": "Välkommen till ansökan. ", + "Welcome": "Välkomna" + } + } \ No newline at end of file diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/tr.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/tr.json new file mode 100644 index 0000000..fc1011c --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/tr.json @@ -0,0 +1,42 @@ +{ + "culture": "tr", + "texts": { + "AppName": "BookStore", + "Menu:Home": "Ana sayfa", + "Menu:ContactUs": "Bize Ulaşın", + "Menu:ArticleSample": "Yazı Örneği", + "Home": "Ana sayfa", + "Welcome": "Hoşgeldiniz", + "LongWelcomeMessage": "Uygulamaya hoşgeldiniz. Bu, ABP framework'ü üzerine bina edilmiş bir başlangıç projesidir. Daha fazla bilgi için ziyaret edebilirsiniz", + "Date": "Tarih", + "Permission:Dashboard": "Genel görünüm", + "Menu:Dashboard": "Genel görünüm", + "Menu:HomePage": "ana sayfa", + "Dashboard": "Genel görünüm", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "Client ID", + "ExternalProvider:Google:ClientSecret": "Client Secret", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "Client ID", + "ExternalProvider:Microsoft:ClientSecret": "Client Secret", + "ExternalProvider:Twitter": "Twitter", + "ExternalProvider:Twitter:ConsumerKey": "Consumer Key", + "ExternalProvider:Twitter:ConsumerSecret": "Consumer Secret", + "NewsletterHeader": "Bültene abone olun!", + "NewsletterInfo": "Son gelişmeler hakkında bilgi alın.", + "NewsletterPreference_Default": "Varsayılan Bülten", + "NewsletterPrivacyAcceptMessage": "Gizlilik Politikası'nı kabul ediyorum.", + "Language": "Dil", + "Search": "Ara", + "LoadMore": "Daha fazla yükle", + "Settings": "Ayarlar", + "Theme": "Tema", + "DeviceTheme": "Cihaz Teması", + "Dark": "Koyu", + "Light": "Açık", + "Unspecified": "Sistem", + "SeeAllUsers": "Tüm Kullanıcıları Gör", + "TakePhoto": "Fotoğraf Çek", + "ChoosePhoto": "Fotoğraf Seç" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hans.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hans.json new file mode 100644 index 0000000..fcdc1ee --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hans.json @@ -0,0 +1,42 @@ +{ + "culture": "zh-Hans", + "texts": { + "AppName": "BookStore", + "Menu:Home": "首页", + "Menu:ContactUs": "联系我们", + "Menu:ArticleSample": "文章示例", + "Home": "首页", + "Welcome": "欢迎", + "LongWelcomeMessage": "欢迎使用本应用程序。这是一个基于 ABP 框架的启动项目。欲了解更多信息,请访问", + "Date": "日期", + "Permission:Dashboard": "仪表板", + "Menu:Dashboard": "仪表板", + "Menu:HomePage": "主页", + "Dashboard": "仪表板", + "ExternalProvider:Google": "Google", + "ExternalProvider:Google:ClientId": "Client Id", + "ExternalProvider:Google:ClientSecret": "Client Secret", + "ExternalProvider:Microsoft": "Microsoft", + "ExternalProvider:Microsoft:ClientId": "Client Id", + "ExternalProvider:Microsoft:ClientSecret": "Client Secret", + "ExternalProvider:Twitter": "Twitter", + "ExternalProvider:Twitter:ConsumerKey": "Consumer Key", + "ExternalProvider:Twitter:ConsumerSecret": "Consumer Secret", + "NewsletterHeader": "订阅时事通讯!", + "NewsletterInfo": "了解最新动态。", + "NewsletterPreference_Default": "默认通讯", + "NewsletterPrivacyAcceptMessage": "我接受隐私政策。", + "Language": "语言", + "Search": "搜索", + "LoadMore": "加载更多", + "Settings": "设置", + "Theme": "主题", + "DeviceTheme": "设备主题", + "Dark": "Dark", + "Light": "Light", + "Unspecified": "System", + "SeeAllUsers": "查看所有用户", + "TakePhoto": "拍摄照片", + "ChoosePhoto": "选择照片" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hant.json b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hant.json new file mode 100644 index 0000000..a1818f0 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hant.json @@ -0,0 +1,9 @@ +{ + "Culture": "zh-Hant", + "Texts": { + "AppName": "BookStore", + "Menu:Home": "Home", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit", + "Welcome": "Welcome" + } +} diff --git a/src/Acme.BookStore.Domain.Shared/Localization/BookStoreResource.cs b/src/Acme.BookStore.Domain.Shared/Localization/BookStoreResource.cs new file mode 100644 index 0000000..17c4334 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/Localization/BookStoreResource.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Localization; + +namespace Acme.BookStore.Localization; + +[LocalizationResourceName("BookStore")] +public class BookStoreResource +{ + +} diff --git a/src/Acme.BookStore.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs b/src/Acme.BookStore.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs new file mode 100644 index 0000000..3493f97 --- /dev/null +++ b/src/Acme.BookStore.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs @@ -0,0 +1,10 @@ +namespace Acme.BookStore.MultiTenancy; + +public static class MultiTenancyConsts +{ + /* Enable/disable multi-tenancy easily in a single point. + * If you will never need to multi-tenancy, you can remove + * related modules and code parts, including this file. + */ + public const bool IsEnabled = true; +} diff --git a/src/Acme.BookStore.Domain/Acme.BookStore.Domain.abppkg b/src/Acme.BookStore.Domain/Acme.BookStore.Domain.abppkg new file mode 100644 index 0000000..1d574ef --- /dev/null +++ b/src/Acme.BookStore.Domain/Acme.BookStore.Domain.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.domain" +} \ No newline at end of file diff --git a/src/Acme.BookStore.Domain/Acme.BookStore.Domain.abppkg.analyze.json b/src/Acme.BookStore.Domain/Acme.BookStore.Domain.abppkg.analyze.json new file mode 100644 index 0000000..a41a0b5 --- /dev/null +++ b/src/Acme.BookStore.Domain/Acme.BookStore.Domain.abppkg.analyze.json @@ -0,0 +1,138 @@ +{ + "name": "Acme.BookStore.Domain", + "hash": "", + "contents": [ + { + "namespace": "Acme.BookStore", + "dependsOnModules": [ + { + "declaringAssemblyName": "Acme.BookStore.Domain.Shared", + "namespace": "Acme.BookStore", + "name": "BookStoreDomainSharedModule" + }, + { + "declaringAssemblyName": "Volo.Abp.AuditLogging.Domain", + "namespace": "Volo.Abp.AuditLogging", + "name": "AbpAuditLoggingDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Caching", + "namespace": "Volo.Abp.Caching", + "name": "AbpCachingModule" + }, + { + "declaringAssemblyName": "Volo.Abp.BackgroundJobs.Domain", + "namespace": "Volo.Abp.BackgroundJobs", + "name": "AbpBackgroundJobsDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.FeatureManagement.Domain", + "namespace": "Volo.Abp.FeatureManagement", + "name": "AbpFeatureManagementDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.PermissionManagement.Domain.Identity", + "namespace": "Volo.Abp.PermissionManagement.Identity", + "name": "AbpPermissionManagementDomainIdentityModule" + }, + { + "declaringAssemblyName": "Volo.Abp.PermissionManagement.Domain.OpenIddict", + "namespace": "Volo.Abp.PermissionManagement.OpenIddict", + "name": "AbpPermissionManagementDomainOpenIddictModule" + }, + { + "declaringAssemblyName": "Volo.Abp.SettingManagement.Domain", + "namespace": "Volo.Abp.SettingManagement", + "name": "AbpSettingManagementDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Emailing", + "namespace": "Volo.Abp.Emailing", + "name": "AbpEmailingModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Identity.Pro.Domain", + "namespace": "Volo.Abp.Identity", + "name": "AbpIdentityProDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.Domain", + "namespace": "Volo.Abp.OpenIddict", + "name": "AbpOpenIddictProDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.TextTemplateManagement.Domain", + "namespace": "Volo.Abp.TextTemplateManagement", + "name": "TextTemplateManagementDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.LanguageManagement.Domain", + "namespace": "Volo.Abp.LanguageManagement", + "name": "LanguageManagementDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Commercial.SuiteTemplates", + "namespace": "Volo.Abp.Commercial.SuiteTemplates", + "name": "VoloAbpCommercialSuiteTemplatesModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Gdpr.Domain", + "namespace": "Volo.Abp.Gdpr", + "name": "AbpGdprDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.BlobStoring.Database.Domain", + "namespace": "Volo.Abp.BlobStoring.Database", + "name": "BlobStoringDatabaseDomainModule" + } + ], + "implementingInterfaces": [ + { + "name": "IAbpModule", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IAbpModule" + }, + { + "name": "IOnPreApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" + }, + { + "name": "IOnApplicationInitialization", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationInitialization" + }, + { + "name": "IOnPostApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" + }, + { + "name": "IOnApplicationShutdown", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationShutdown" + }, + { + "name": "IPreConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPreConfigureServices" + }, + { + "name": "IPostConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPostConfigureServices" + } + ], + "contentType": "abpModule", + "name": "BookStoreDomainModule", + "summary": null + } + ] +} \ No newline at end of file diff --git a/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj b/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj new file mode 100644 index 0000000..47e68af --- /dev/null +++ b/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj @@ -0,0 +1,33 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Acme.BookStore.Domain/BookStoreConsts.cs b/src/Acme.BookStore.Domain/BookStoreConsts.cs new file mode 100644 index 0000000..a99dff6 --- /dev/null +++ b/src/Acme.BookStore.Domain/BookStoreConsts.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Identity; + +namespace Acme.BookStore; + +public static class BookStoreConsts +{ + public const string DbTablePrefix = "App"; + public const string? DbSchema = null; + public const string AdminEmailDefaultValue = IdentityDataSeedContributor.AdminEmailDefaultValue; + public const string AdminPasswordDefaultValue = IdentityDataSeedContributor.AdminPasswordDefaultValue; +} diff --git a/src/Acme.BookStore.Domain/BookStoreDomainModule.cs b/src/Acme.BookStore.Domain/BookStoreDomainModule.cs new file mode 100644 index 0000000..71cc386 --- /dev/null +++ b/src/Acme.BookStore.Domain/BookStoreDomainModule.cs @@ -0,0 +1,52 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Acme.BookStore.Localization; +using Acme.BookStore.MultiTenancy; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.PermissionManagement.Identity; +using Volo.Abp.SettingManagement; +using Volo.Abp.BlobStoring.Database; +using Volo.Abp.Caching; +using Volo.Abp.OpenIddict; +using Volo.Abp.PermissionManagement.OpenIddict; +using Volo.Abp.AuditLogging; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Emailing; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore; + +[DependsOn( + typeof(BookStoreDomainSharedModule), + typeof(AbpAuditLoggingDomainModule), + typeof(AbpCachingModule), + typeof(AbpBackgroundJobsDomainModule), + typeof(AbpFeatureManagementDomainModule), + typeof(AbpPermissionManagementDomainIdentityModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), + typeof(AbpSettingManagementDomainModule), + typeof(AbpEmailingModule), + typeof(AbpIdentityDomainModule), + typeof(AbpOpenIddictDomainModule), + typeof(AbpTenantManagementDomainModule), + typeof(BlobStoringDatabaseDomainModule) + )] +public class BookStoreDomainModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.IsEnabled = MultiTenancyConsts.IsEnabled; + }); + + +#if DEBUG + context.Services.Replace(ServiceDescriptor.Singleton()); +#endif + } +} diff --git a/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs b/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs new file mode 100644 index 0000000..30ef652 --- /dev/null +++ b/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs @@ -0,0 +1,226 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity; +using Volo.Abp.MultiTenancy; +using Acme.BookStore.MultiTenancy; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore.Data; + +public class BookStoreDbMigrationService : ITransientDependency +{ + public ILogger Logger { get; set; } + + private readonly IDataSeeder _dataSeeder; + private readonly IEnumerable _dbSchemaMigrators; + private readonly ITenantRepository _tenantRepository; + private readonly ICurrentTenant _currentTenant; + + public BookStoreDbMigrationService( + IDataSeeder dataSeeder, + ITenantRepository tenantRepository, + ICurrentTenant currentTenant, + IEnumerable dbSchemaMigrators) + { + _dataSeeder = dataSeeder; + _tenantRepository = tenantRepository; + _currentTenant = currentTenant; + _dbSchemaMigrators = dbSchemaMigrators; + + Logger = NullLogger.Instance; + } + + public async Task MigrateAsync() + { + var initialMigrationAdded = AddInitialMigrationIfNotExist(); + + if (initialMigrationAdded) + { + return; + } + + Logger.LogInformation("Started database migrations..."); + + await MigrateDatabaseSchemaAsync(); + await SeedDataAsync(); + + Logger.LogInformation($"Successfully completed host database migrations."); + + if (MultiTenancyConsts.IsEnabled) + { + + var tenants = await _tenantRepository.GetListAsync(includeDetails: true); + + var migratedDatabaseSchemas = new HashSet(); + foreach (var tenant in tenants) + { + using (_currentTenant.Change(tenant.Id)) + { + if (tenant.ConnectionStrings.Any()) + { + var tenantConnectionStrings = tenant.ConnectionStrings + .Select(x => x.Value) + .ToList(); + + if (!migratedDatabaseSchemas.IsSupersetOf(tenantConnectionStrings)) + { + await MigrateDatabaseSchemaAsync(tenant); + + migratedDatabaseSchemas.AddIfNotContains(tenantConnectionStrings); + } + } + + await SeedDataAsync(tenant); + } + + Logger.LogInformation($"Successfully completed {tenant.Name} tenant database migrations."); + } + + Logger.LogInformation("Successfully completed all database migrations."); + } + Logger.LogInformation("You can safely end this process..."); + } + + private async Task MigrateDatabaseSchemaAsync(Tenant? tenant = null) + { + Logger.LogInformation( + $"Migrating schema for {(tenant == null ? "host" : tenant.Name + " tenant")} database..."); + + foreach (var migrator in _dbSchemaMigrators) + { + await migrator.MigrateAsync(); + } + } + + private async Task SeedDataAsync(Tenant? tenant = null) + { + Logger.LogInformation($"Executing {(tenant == null ? "host" : tenant.Name + " tenant")} database seed..."); + + await _dataSeeder.SeedAsync(new DataSeedContext(tenant?.Id) + .WithProperty(IdentityDataSeedContributor.AdminEmailPropertyName, + BookStoreConsts.AdminEmailDefaultValue) + .WithProperty(IdentityDataSeedContributor.AdminPasswordPropertyName, + BookStoreConsts.AdminPasswordDefaultValue) + ); + } + + private bool AddInitialMigrationIfNotExist() + { + try + { + if (!DbMigrationsProjectExists()) + { + return false; + } + } + catch (Exception) + { + return false; + } + + try + { + if (!MigrationsFolderExists()) + { + AddInitialMigration(); + return true; + } + else + { + return false; + } + } + catch (Exception e) + { + Logger.LogWarning("Couldn't determinate if any migrations exist : " + e.Message); + return false; + } + } + + private bool DbMigrationsProjectExists() + { + var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath(); + + return dbMigrationsProjectFolder != null; + } + + private bool MigrationsFolderExists() + { + var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath(); + + return dbMigrationsProjectFolder != null && Directory.Exists(Path.Combine(dbMigrationsProjectFolder, "Migrations")); + } + + private void AddInitialMigration() + { + Logger.LogInformation("Creating initial migration..."); + + string argumentPrefix; + string fileName; + + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + argumentPrefix = "-c"; + fileName = "/bin/bash"; + } + else + { + argumentPrefix = "/C"; + fileName = "cmd.exe"; + } + + var procStartInfo = new ProcessStartInfo(fileName, + $"{argumentPrefix} \"abp create-migration-and-run-migrator \"{GetEntityFrameworkCoreProjectFolderPath()}\"\"" + ); + + try + { + Process.Start(procStartInfo); + } + catch (Exception) + { + throw new Exception("Couldn't run ABP CLI..."); + } + } + + private string? GetEntityFrameworkCoreProjectFolderPath() + { + var slnDirectoryPath = GetSolutionDirectoryPath(); + + if (slnDirectoryPath == null) + { + throw new Exception("Solution folder not found!"); + } + + var srcDirectoryPath = Path.Combine(slnDirectoryPath, "src"); + + return Directory.GetDirectories(srcDirectoryPath) + .FirstOrDefault(d => d.EndsWith(".EntityFrameworkCore")); + } + + private string? GetSolutionDirectoryPath() + { + var currentDirectory = new DirectoryInfo(Directory.GetCurrentDirectory()); + + while (currentDirectory != null && Directory.GetParent(currentDirectory.FullName) != null) + { + currentDirectory = Directory.GetParent(currentDirectory.FullName); + + if (currentDirectory != null && Directory.GetFiles(currentDirectory.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null) + { + return currentDirectory.FullName; + } + } + + return null; + } +} diff --git a/src/Acme.BookStore.Domain/Data/IBookStoreDbSchemaMigrator.cs b/src/Acme.BookStore.Domain/Data/IBookStoreDbSchemaMigrator.cs new file mode 100644 index 0000000..0b95dba --- /dev/null +++ b/src/Acme.BookStore.Domain/Data/IBookStoreDbSchemaMigrator.cs @@ -0,0 +1,8 @@ +using System.Threading.Tasks; + +namespace Acme.BookStore.Data; + +public interface IBookStoreDbSchemaMigrator +{ + Task MigrateAsync(); +} diff --git a/src/Acme.BookStore.Domain/Data/NullBookStoreDbSchemaMigrator.cs b/src/Acme.BookStore.Domain/Data/NullBookStoreDbSchemaMigrator.cs new file mode 100644 index 0000000..0e01b97 --- /dev/null +++ b/src/Acme.BookStore.Domain/Data/NullBookStoreDbSchemaMigrator.cs @@ -0,0 +1,15 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace Acme.BookStore.Data; + +/* This is used if database provider does't define + * IBookStoreDbSchemaMigrator implementation. + */ +public class NullBookStoreDbSchemaMigrator : IBookStoreDbSchemaMigrator, ITransientDependency +{ + public Task MigrateAsync() + { + return Task.CompletedTask; + } +} diff --git a/src/Acme.BookStore.Domain/Identity/ChangeIdentityPasswordPolicySettingDefinitionProvider.cs b/src/Acme.BookStore.Domain/Identity/ChangeIdentityPasswordPolicySettingDefinitionProvider.cs new file mode 100644 index 0000000..0642a59 --- /dev/null +++ b/src/Acme.BookStore.Domain/Identity/ChangeIdentityPasswordPolicySettingDefinitionProvider.cs @@ -0,0 +1,34 @@ +using Volo.Abp.Identity.Settings; +using Volo.Abp.Settings; + +namespace Acme.BookStore.Identity; + +public class ChangeIdentityPasswordPolicySettingDefinitionProvider : SettingDefinitionProvider +{ + public override void Define(ISettingDefinitionContext context) + { + var requireNonAlphanumeric = context.GetOrNull(IdentitySettingNames.Password.RequireNonAlphanumeric); + if (requireNonAlphanumeric != null) + { + requireNonAlphanumeric.DefaultValue = false.ToString(); + } + + var requireLowercase = context.GetOrNull(IdentitySettingNames.Password.RequireLowercase); + if (requireLowercase != null) + { + requireLowercase.DefaultValue = false.ToString(); + } + + var requireUppercase = context.GetOrNull(IdentitySettingNames.Password.RequireUppercase); + if (requireUppercase != null) + { + requireUppercase.DefaultValue = false.ToString(); + } + + var requireDigit = context.GetOrNull(IdentitySettingNames.Password.RequireDigit); + if (requireDigit != null) + { + requireDigit.DefaultValue = false.ToString(); + } + } +} diff --git a/src/Acme.BookStore.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/src/Acme.BookStore.Domain/OpenIddict/OpenIddictDataSeedContributor.cs new file mode 100644 index 0000000..4381843 --- /dev/null +++ b/src/Acme.BookStore.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -0,0 +1,366 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Threading.Tasks; +using JetBrains.Annotations; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Localization; +using OpenIddict.Abstractions; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.OpenIddict.Applications; +using Volo.Abp.OpenIddict.Scopes; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; + +namespace Acme.BookStore.OpenIddict; + +/* Creates initial data that is needed to property run the application + * and make client-to-server communication possible. + */ +public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly IConfiguration _configuration; + private readonly IOpenIddictApplicationRepository _openIddictApplicationRepository; + private readonly IAbpApplicationManager _applicationManager; + private readonly IOpenIddictScopeRepository _openIddictScopeRepository; + private readonly IOpenIddictScopeManager _scopeManager; + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IStringLocalizer L; + + public OpenIddictDataSeedContributor( + IConfiguration configuration, + IOpenIddictApplicationRepository openIddictApplicationRepository, + IAbpApplicationManager applicationManager, + IOpenIddictScopeRepository openIddictScopeRepository, + IOpenIddictScopeManager scopeManager, + IPermissionDataSeeder permissionDataSeeder, + IStringLocalizer l) + { + _configuration = configuration; + _openIddictApplicationRepository = openIddictApplicationRepository; + _applicationManager = applicationManager; + _openIddictScopeRepository = openIddictScopeRepository; + _scopeManager = scopeManager; + _permissionDataSeeder = permissionDataSeeder; + L = l; + } + + [UnitOfWork] + public virtual async Task SeedAsync(DataSeedContext context) + { + await CreateScopesAsync(); + await CreateApplicationsAsync(); + } + + private async Task CreateScopesAsync() + { + if (await _openIddictScopeRepository.FindByNameAsync("BookStore") == null) + { + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor { + Name = "BookStore", DisplayName = "BookStore API", Resources = { "BookStore" } + }); + } + } + + private async Task CreateApplicationsAsync() + { + var commonScopes = new List { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles, + "BookStore" + }; + + var configurationSection = _configuration.GetSection("OpenIddict:Applications"); + + + //Console Test / Angular Client + var consoleAndAngularClientId = configurationSection["BookStore_App:ClientId"]; + if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) + { + var consoleAndAngularClientRootUrl = configurationSection["BookStore_App:RootUrl"]?.TrimEnd('/'); + await CreateApplicationAsync( + applicationType: OpenIddictConstants.ApplicationTypes.Web, + name: consoleAndAngularClientId!, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Console Test / Angular Application", + secret: null, + grantTypes: new List { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.RefreshToken, + "LinkLogin", + "Impersonation" + }, + scopes: commonScopes, + redirectUris: new List { consoleAndAngularClientRootUrl }, + postLogoutRedirectUris: new List { consoleAndAngularClientRootUrl }, + clientUri: consoleAndAngularClientRootUrl, + logoUri: "/images/clients/angular.svg" + ); + } + + + + + + + + // Swagger Client + var swaggerClientId = configurationSection["BookStore_Swagger:ClientId"]; + if (!swaggerClientId.IsNullOrWhiteSpace()) + { + var swaggerRootUrl = configurationSection["BookStore_Swagger:RootUrl"]?.TrimEnd('/'); + + await CreateApplicationAsync( + applicationType: OpenIddictConstants.ApplicationTypes.Web, + name: swaggerClientId!, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Swagger Application", + secret: null, + grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, }, + scopes: commonScopes, + redirectUris: new List { $"{swaggerRootUrl}/swagger/oauth2-redirect.html" }, + clientUri: swaggerRootUrl.EnsureEndsWith('/') + "swagger", + logoUri: "/images/clients/swagger.svg" + ); + } + + + } + + private async Task CreateApplicationAsync( + [NotNull] string applicationType, + [NotNull] string name, + [NotNull] string type, + [NotNull] string consentType, + string displayName, + string? secret, + List grantTypes, + List scopes, + List? redirectUris = null, + List? postLogoutRedirectUris = null, + List? permissions = null, + string? clientUri = null, + string? logoUri = null) + { + if (!string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Public, + StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["NoClientSecretCanBeSetForPublicApplications"]); + } + + if (string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Confidential, + StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["TheClientSecretIsRequiredForConfidentialApplications"]); + } + + var client = await _openIddictApplicationRepository.FindByClientIdAsync(name); + + var application = new AbpApplicationDescriptor { + ApplicationType = applicationType, + ClientId = name, + ClientType = type, + ClientSecret = secret, + ConsentType = consentType, + DisplayName = displayName, + ClientUri = clientUri, + LogoUri = logoUri, + }; + + Check.NotNullOrEmpty(grantTypes, nameof(grantTypes)); + Check.NotNullOrEmpty(scopes, nameof(scopes)); + + if (new[] { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }.All( + grantTypes.Contains)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken); + + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeToken); + } + } + + if (!redirectUris.IsNullOrEmpty() || !postLogoutRedirectUris.IsNullOrEmpty()) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.EndSession); + } + + var buildInGrantTypes = new[] { + OpenIddictConstants.GrantTypes.Implicit, OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.DeviceCode, OpenIddictConstants.GrantTypes.RefreshToken + }; + + foreach (var grantType in grantTypes) + { + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Code); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.ClientCredentials || + grantType == OpenIddictConstants.GrantTypes.Password || + grantType == OpenIddictConstants.GrantTypes.RefreshToken || + grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token); + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Revocation); + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Introspection); + } + + if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit); + } + + if (grantType == OpenIddictConstants.GrantTypes.Password) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password); + } + + if (grantType == OpenIddictConstants.GrantTypes.RefreshToken) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken); + } + + if (grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.DeviceCode); + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.DeviceAuthorization); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken); + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Token); + } + } + + if (!buildInGrantTypes.Contains(grantType)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.GrantType + grantType); + } + } + + var buildInScopes = new[] { + OpenIddictConstants.Permissions.Scopes.Address, OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles + }; + + foreach (var scope in scopes) + { + if (buildInScopes.Contains(scope)) + { + application.Permissions.Add(scope); + } + else + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope); + } + } + + if (!redirectUris.IsNullOrEmpty()) + { + foreach (var redirectUri in redirectUris!.Where(redirectUri => !redirectUri.IsNullOrWhiteSpace())) + { + if (!Uri.TryCreate(redirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidRedirectUri", redirectUri]); + } + + if (application.RedirectUris.All(x => x != uri)) + { + application.RedirectUris.Add(uri); + } + } + + } + + if (!postLogoutRedirectUris.IsNullOrEmpty()) + { + foreach (var postLogoutRedirectUri in postLogoutRedirectUris!.Where(postLogoutRedirectUri => !postLogoutRedirectUri.IsNullOrWhiteSpace())) + { + if (!Uri.TryCreate(postLogoutRedirectUri, UriKind.Absolute, out var uri) || + !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidPostLogoutRedirectUri", postLogoutRedirectUri]); + } + + if (application.PostLogoutRedirectUris.All(x => x != uri)) + { + application.PostLogoutRedirectUris.Add(uri); + } + } + } + + if (permissions != null) + { + await _permissionDataSeeder.SeedAsync( + ClientPermissionValueProvider.ProviderName, + name, + permissions, + null + ); + } + + if (client == null) + { + await _applicationManager.CreateAsync(application); + return; + } + + if (!HasSameRedirectUris(client, application)) + { + client.RedirectUris = JsonSerializer.Serialize(application.RedirectUris.Select(q => q.ToString().RemovePostFix("/"))); + client.PostLogoutRedirectUris = JsonSerializer.Serialize(application.PostLogoutRedirectUris.Select(q => q.ToString().RemovePostFix("/"))); + + await _applicationManager.UpdateAsync(client.ToModel()); + } + + if (!HasSameScopes(client, application)) + { + client.Permissions = JsonSerializer.Serialize(application.Permissions.Select(q => q.ToString())); + await _applicationManager.UpdateAsync(client.ToModel()); + } + } + + private bool HasSameRedirectUris(OpenIddictApplication existingClient, AbpApplicationDescriptor application) + { + return existingClient.RedirectUris == JsonSerializer.Serialize(application.RedirectUris.Select(q => q.ToString().RemovePostFix("/"))); + } + + private bool HasSameScopes(OpenIddictApplication existingClient, AbpApplicationDescriptor application) + { + return existingClient.Permissions == JsonSerializer.Serialize(application.Permissions.Select(q => q.ToString().TrimEnd('/'))); + } +} diff --git a/src/Acme.BookStore.Domain/Properties/AssemblyInfo.cs b/src/Acme.BookStore.Domain/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..94d836f --- /dev/null +++ b/src/Acme.BookStore.Domain/Properties/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("Acme.BookStore.Domain.Tests")] +[assembly:InternalsVisibleToAttribute("Acme.BookStore.TestBase")] diff --git a/src/Acme.BookStore.Domain/Settings/BookStoreSettingDefinitionProvider.cs b/src/Acme.BookStore.Domain/Settings/BookStoreSettingDefinitionProvider.cs new file mode 100644 index 0000000..10ab315 --- /dev/null +++ b/src/Acme.BookStore.Domain/Settings/BookStoreSettingDefinitionProvider.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Settings; + +namespace Acme.BookStore.Settings; + +public class BookStoreSettingDefinitionProvider : SettingDefinitionProvider +{ + public override void Define(ISettingDefinitionContext context) + { + //Define your own settings here. Example: + //context.Add(new SettingDefinition(BookStoreSettings.MySetting1)); + } +} diff --git a/src/Acme.BookStore.Domain/Settings/BookStoreSettings.cs b/src/Acme.BookStore.Domain/Settings/BookStoreSettings.cs new file mode 100644 index 0000000..b1aaea3 --- /dev/null +++ b/src/Acme.BookStore.Domain/Settings/BookStoreSettings.cs @@ -0,0 +1,9 @@ +namespace Acme.BookStore.Settings; + +public static class BookStoreSettings +{ + private const string Prefix = "BookStore"; + + //Add your own setting names here. Example: + //public const string MySetting1 = Prefix + ".MySetting1"; +} diff --git a/src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.abppkg b/src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.abppkg new file mode 100644 index 0000000..e1c64f0 --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.ef" +} \ No newline at end of file diff --git a/src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.abppkg.analyze.json b/src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.abppkg.analyze.json new file mode 100644 index 0000000..0a741a9 --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.abppkg.analyze.json @@ -0,0 +1,226 @@ +{ + "name": "Acme.BookStore.EntityFrameworkCore", + "hash": "", + "contents": [ + { + "namespace": "Acme.BookStore.EntityFrameworkCore", + "dependsOnModules": [ + { + "declaringAssemblyName": "Acme.BookStore.Domain", + "namespace": "Acme.BookStore", + "name": "BookStoreDomainModule" + }, + { + "declaringAssemblyName": "Volo.Abp.PermissionManagement.EntityFrameworkCore", + "namespace": "Volo.Abp.PermissionManagement.EntityFrameworkCore", + "name": "AbpPermissionManagementEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.SettingManagement.EntityFrameworkCore", + "namespace": "Volo.Abp.SettingManagement.EntityFrameworkCore", + "name": "AbpSettingManagementEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.EntityFrameworkCore.SqlServer", + "namespace": "Volo.Abp.EntityFrameworkCore.SqlServer", + "name": "AbpEntityFrameworkCoreSqlServerModule" + }, + { + "declaringAssemblyName": "Volo.Abp.BackgroundJobs.EntityFrameworkCore", + "namespace": "Volo.Abp.BackgroundJobs.EntityFrameworkCore", + "name": "AbpBackgroundJobsEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.AuditLogging.EntityFrameworkCore", + "namespace": "Volo.Abp.AuditLogging.EntityFrameworkCore", + "name": "AbpAuditLoggingEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.FeatureManagement.EntityFrameworkCore", + "namespace": "Volo.Abp.FeatureManagement.EntityFrameworkCore", + "name": "AbpFeatureManagementEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Identity.Pro.EntityFrameworkCore", + "namespace": "Volo.Abp.Identity.EntityFrameworkCore", + "name": "AbpIdentityProEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.EntityFrameworkCore", + "namespace": "Volo.Abp.OpenIddict.EntityFrameworkCore", + "name": "AbpOpenIddictProEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.LanguageManagement.EntityFrameworkCore", + "namespace": "Volo.Abp.LanguageManagement.EntityFrameworkCore", + "name": "LanguageManagementEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.TextTemplateManagement.EntityFrameworkCore", + "namespace": "Volo.Abp.TextTemplateManagement.EntityFrameworkCore", + "name": "TextTemplateManagementEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Gdpr.EntityFrameworkCore", + "namespace": "Volo.Abp.Gdpr", + "name": "AbpGdprEntityFrameworkCoreModule" + }, + { + "declaringAssemblyName": "Volo.Abp.BlobStoring.Database.EntityFrameworkCore", + "namespace": "Volo.Abp.BlobStoring.Database.EntityFrameworkCore", + "name": "BlobStoringDatabaseEntityFrameworkCoreModule" + } + ], + "implementingInterfaces": [ + { + "name": "IAbpModule", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IAbpModule" + }, + { + "name": "IOnPreApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" + }, + { + "name": "IOnApplicationInitialization", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationInitialization" + }, + { + "name": "IOnPostApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" + }, + { + "name": "IOnApplicationShutdown", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationShutdown" + }, + { + "name": "IPreConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPreConfigureServices" + }, + { + "name": "IPostConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPostConfigureServices" + } + ], + "contentType": "abpModule", + "name": "BookStoreEntityFrameworkCoreModule", + "summary": null + }, + { + "namespace": "Acme.BookStore.EntityFrameworkCore", + "connectionStringName": "Default", + "databaseTables": [], + "replacedDbContexts": [ + { + "name": "ITenantManagementDbContext", + "namespace": "Volo.Abp.TenantManagement.EntityFrameworkCore", + "declaringAssemblyName": "Volo.Abp.TenantManagement.EntityFrameworkCore", + "fullName": "Volo.Abp.TenantManagement.EntityFrameworkCore.ITenantManagementDbContext" + }, + { + "name": "IIdentityDbContext", + "namespace": "Volo.Abp.Identity.EntityFrameworkCore", + "declaringAssemblyName": "Volo.Abp.Identity.EntityFrameworkCore", + "fullName": "Volo.Abp.Identity.EntityFrameworkCore.IIdentityDbContext" + } + ], + "modelBuilderExtensionMethods": [], + "implementingInterfaces": [ + { + "name": "IInfrastructure", + "namespace": "Microsoft.EntityFrameworkCore.Infrastructure", + "declaringAssemblyName": "Microsoft.EntityFrameworkCore", + "fullName": "Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure" + }, + { + "name": "IDbContextDependencies", + "namespace": "Microsoft.EntityFrameworkCore.Internal", + "declaringAssemblyName": "Microsoft.EntityFrameworkCore", + "fullName": "Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies" + }, + { + "name": "IDbSetCache", + "namespace": "Microsoft.EntityFrameworkCore.Internal", + "declaringAssemblyName": "Microsoft.EntityFrameworkCore", + "fullName": "Microsoft.EntityFrameworkCore.Internal.IDbSetCache" + }, + { + "name": "IDbContextPoolable", + "namespace": "Microsoft.EntityFrameworkCore.Internal", + "declaringAssemblyName": "Microsoft.EntityFrameworkCore", + "fullName": "Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable" + }, + { + "name": "IResettableService", + "namespace": "Microsoft.EntityFrameworkCore.Infrastructure", + "declaringAssemblyName": "Microsoft.EntityFrameworkCore", + "fullName": "Microsoft.EntityFrameworkCore.Infrastructure.IResettableService" + }, + { + "name": "IDisposable", + "namespace": "System", + "declaringAssemblyName": "System.Private.CoreLib", + "fullName": "System.IDisposable" + }, + { + "name": "IAsyncDisposable", + "namespace": "System", + "declaringAssemblyName": "System.Private.CoreLib", + "fullName": "System.IAsyncDisposable" + }, + { + "name": "IAbpEfCoreDbContext", + "namespace": "Volo.Abp.EntityFrameworkCore", + "declaringAssemblyName": "Volo.Abp.EntityFrameworkCore", + "fullName": "Volo.Abp.EntityFrameworkCore.IAbpEfCoreDbContext" + }, + { + "name": "IEfCoreDbContext", + "namespace": "Volo.Abp.EntityFrameworkCore", + "declaringAssemblyName": "Volo.Abp.EntityFrameworkCore", + "fullName": "Volo.Abp.EntityFrameworkCore.IEfCoreDbContext" + }, + { + "name": "IAbpEfCoreDbFunctionContext", + "namespace": "Volo.Abp.EntityFrameworkCore.GlobalFilters", + "declaringAssemblyName": "Volo.Abp.EntityFrameworkCore", + "fullName": "Volo.Abp.EntityFrameworkCore.GlobalFilters.IAbpEfCoreDbFunctionContext" + }, + { + "name": "ITransientDependency", + "namespace": "Volo.Abp.DependencyInjection", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.DependencyInjection.ITransientDependency" + }, + { + "name": "IIdentityProDbContext", + "namespace": "Volo.Abp.Identity.EntityFrameworkCore", + "declaringAssemblyName": "Volo.Abp.Identity.Pro.EntityFrameworkCore", + "fullName": "Volo.Abp.Identity.EntityFrameworkCore.IIdentityProDbContext" + }, + { + "name": "IIdentityDbContext", + "namespace": "Volo.Abp.Identity.EntityFrameworkCore", + "declaringAssemblyName": "Volo.Abp.Identity.EntityFrameworkCore", + "fullName": "Volo.Abp.Identity.EntityFrameworkCore.IIdentityDbContext" + } + ], + "contentType": "efCoreDbContext", + "name": "BookStoreDbContext", + "summary": null + } + ] +} \ No newline at end of file diff --git a/src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.csproj b/src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.csproj new file mode 100644 index 0000000..4013f40 --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/Acme.BookStore.EntityFrameworkCore.csproj @@ -0,0 +1,38 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + + + + + + + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers + compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native + + + + diff --git a/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContext.cs b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContext.cs new file mode 100644 index 0000000..047362f --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContext.cs @@ -0,0 +1,91 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.AuditLogging.EntityFrameworkCore; +using Volo.Abp.BackgroundJobs.EntityFrameworkCore; +using Volo.Abp.BlobStoring.Database.EntityFrameworkCore; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.Modeling; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; +using Volo.Abp.Identity; +using Volo.Abp.Identity.EntityFrameworkCore; +using Volo.Abp.PermissionManagement.EntityFrameworkCore; +using Volo.Abp.SettingManagement.EntityFrameworkCore; +using Volo.Abp.OpenIddict.EntityFrameworkCore; +using Volo.Abp.TenantManagement; +using Volo.Abp.TenantManagement.EntityFrameworkCore; + +namespace Acme.BookStore.EntityFrameworkCore; + +[ReplaceDbContext(typeof(IIdentityDbContext))] +[ReplaceDbContext(typeof(ITenantManagementDbContext))] +[ConnectionStringName("Default")] +public class BookStoreDbContext : + AbpDbContext, + ITenantManagementDbContext, + IIdentityDbContext +{ + /* Add DbSet properties for your Aggregate Roots / Entities here. */ + + + #region Entities from the modules + + /* Notice: We only implemented IIdentityProDbContext and ISaasDbContext + * and replaced them for this DbContext. This allows you to perform JOIN + * queries for the entities of these modules over the repositories easily. You + * typically don't need that for other modules. But, if you need, you can + * implement the DbContext interface of the needed module and use ReplaceDbContext + * attribute just like IIdentityProDbContext and ISaasDbContext. + * + * More info: Replacing a DbContext of a module ensures that the related module + * uses this DbContext on runtime. Otherwise, it will use its own DbContext class. + */ + + // Identity + public DbSet Users { get; set; } + public DbSet Roles { get; set; } + public DbSet ClaimTypes { get; set; } + public DbSet OrganizationUnits { get; set; } + public DbSet SecurityLogs { get; set; } + public DbSet LinkUsers { get; set; } + public DbSet UserDelegations { get; set; } + public DbSet Sessions { get; set; } + + // Tenant Management + public DbSet Tenants { get; set; } + public DbSet TenantConnectionStrings { get; set; } + + #endregion + + public BookStoreDbContext(DbContextOptions options) + : base(options) + { + + } + + protected override void OnModelCreating(ModelBuilder builder) + { + base.OnModelCreating(builder); + + /* Include modules to your migration db context */ + + builder.ConfigurePermissionManagement(); + builder.ConfigureSettingManagement(); + builder.ConfigureBackgroundJobs(); + builder.ConfigureAuditLogging(); + builder.ConfigureFeatureManagement(); + builder.ConfigureIdentity(); + builder.ConfigureOpenIddict(); + builder.ConfigureTenantManagement(); + builder.ConfigureBlobStoring(); + + /* Configure your own tables/entities inside here */ + + //builder.Entity(b => + //{ + // b.ToTable(BookStoreConsts.DbTablePrefix + "YourEntities", BookStoreConsts.DbSchema); + // b.ConfigureByConvention(); //auto configure for the base class props + // //... + //}); + } +} diff --git a/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContextFactory.cs b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContextFactory.cs new file mode 100644 index 0000000..8ce25c4 --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContextFactory.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; + +namespace Acme.BookStore.EntityFrameworkCore; + +/* This class is needed for EF Core console commands + * (like Add-Migration and Update-Database commands) */ +public class BookStoreDbContextFactory : IDesignTimeDbContextFactory +{ + public BookStoreDbContext CreateDbContext(string[] args) + { + var configuration = BuildConfiguration(); + + BookStoreEfCoreEntityExtensionMappings.Configure(); + + var builder = new DbContextOptionsBuilder() + .UseSqlServer(configuration.GetConnectionString("Default")); + + return new BookStoreDbContext(builder.Options); + } + + private static IConfigurationRoot BuildConfiguration() + { + var builder = new ConfigurationBuilder() + .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../Acme.BookStore.DbMigrator/")) + .AddJsonFile("appsettings.json", optional: false); + + return builder.Build(); + } +} diff --git a/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreEfCoreEntityExtensionMappings.cs b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreEfCoreEntityExtensionMappings.cs new file mode 100644 index 0000000..6805d9b --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreEfCoreEntityExtensionMappings.cs @@ -0,0 +1,44 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace Acme.BookStore.EntityFrameworkCore; + +public static class BookStoreEfCoreEntityExtensionMappings +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + BookStoreGlobalFeatureConfigurator.Configure(); + BookStoreModuleExtensionConfigurator.Configure(); + + OneTimeRunner.Run(() => + { + /* You can configure extra properties for the + * entities defined in the modules used by your application. + * + * This class can be used to map these extra properties to table fields in the database. + * + * USE THIS CLASS ONLY TO CONFIGURE EF CORE RELATED MAPPING. + * USE BookStoreModuleExtensionConfigurator CLASS (in the Domain.Shared project) + * FOR A HIGH LEVEL API TO DEFINE EXTRA PROPERTIES TO ENTITIES OF THE USED MODULES + * + * Example: Map a property to a table field: + + ObjectExtensionManager.Instance + .MapEfCoreProperty( + "MyProperty", + (entityBuilder, propertyBuilder) => + { + propertyBuilder.HasMaxLength(128); + } + ); + + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Extending-Entities + */ + }); + } +} diff --git a/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreEntityFrameworkCoreModule.cs b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreEntityFrameworkCoreModule.cs new file mode 100644 index 0000000..c57096c --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreEntityFrameworkCoreModule.cs @@ -0,0 +1,65 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Uow; +using Volo.Abp.AuditLogging.EntityFrameworkCore; +using Volo.Abp.BackgroundJobs.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.SqlServer; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; +using Volo.Abp.Identity.EntityFrameworkCore; +using Volo.Abp.OpenIddict.EntityFrameworkCore; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.EntityFrameworkCore; +using Volo.Abp.SettingManagement.EntityFrameworkCore; +using Volo.Abp.BlobStoring.Database.EntityFrameworkCore; +using Volo.Abp.TenantManagement.EntityFrameworkCore; +using Volo.Abp.Studio; + +namespace Acme.BookStore.EntityFrameworkCore; + +[DependsOn( + typeof(BookStoreDomainModule), + typeof(AbpPermissionManagementEntityFrameworkCoreModule), + typeof(AbpSettingManagementEntityFrameworkCoreModule), + typeof(AbpEntityFrameworkCoreSqlServerModule), + typeof(AbpBackgroundJobsEntityFrameworkCoreModule), + typeof(AbpAuditLoggingEntityFrameworkCoreModule), + typeof(AbpFeatureManagementEntityFrameworkCoreModule), + typeof(AbpIdentityEntityFrameworkCoreModule), + typeof(AbpOpenIddictEntityFrameworkCoreModule), + typeof(AbpTenantManagementEntityFrameworkCoreModule), + typeof(BlobStoringDatabaseEntityFrameworkCoreModule) + )] +public class BookStoreEntityFrameworkCoreModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + + BookStoreEfCoreEntityExtensionMappings.Configure(); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAbpDbContext(options => + { + /* Remove "includeAllEntities: true" to create + * default repositories only for aggregate roots */ + options.AddDefaultRepositories(includeAllEntities: true); + }); + + if (AbpStudioAnalyzeHelper.IsInAnalyzeMode) + { + return; + } + + Configure(options => + { + /* The main point to change your DBMS. + * See also BookStoreDbContextFactory for EF Core tooling. */ + + options.UseSqlServer(); + + }); + + } +} diff --git a/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreBookStoreDbSchemaMigrator.cs b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreBookStoreDbSchemaMigrator.cs new file mode 100644 index 0000000..3f0c6ac --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreBookStoreDbSchemaMigrator.cs @@ -0,0 +1,33 @@ +using System; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Acme.BookStore.Data; +using Volo.Abp.DependencyInjection; + +namespace Acme.BookStore.EntityFrameworkCore; + +public class EntityFrameworkCoreBookStoreDbSchemaMigrator + : IBookStoreDbSchemaMigrator, ITransientDependency +{ + private readonly IServiceProvider _serviceProvider; + + public EntityFrameworkCoreBookStoreDbSchemaMigrator(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + public async Task MigrateAsync() + { + /* We intentionally resolving the BookStoreDbContext + * from IServiceProvider (instead of directly injecting it) + * to properly get the connection string of the current tenant in the + * current scope. + */ + + await _serviceProvider + .GetRequiredService() + .Database + .MigrateAsync(); + } +} diff --git a/src/Acme.BookStore.EntityFrameworkCore/Migrations/20250617072419_Initial.Designer.cs b/src/Acme.BookStore.EntityFrameworkCore/Migrations/20250617072419_Initial.Designer.cs new file mode 100644 index 0000000..c4ebf7c --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/Migrations/20250617072419_Initial.Designer.cs @@ -0,0 +1,2052 @@ +// +using System; +using Acme.BookStore.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Acme.BookStore.Migrations +{ + [DbContext(typeof(BookStoreDbContext))] + [Migration("20250617072419_Initial")] + partial class Initial + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "9.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime2") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("nvarchar(max)"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime2"); + + b.Property("NextTryTime") + .HasColumnType("datetime2"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContainerId") + .HasColumnType("uniqueidentifier"); + + b.Property("Content") + .HasMaxLength(2147483647) + .HasColumnType("varbinary(max)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ContainerId"); + + b.HasIndex("TenantId", "ContainerId", "Name"); + + b.ToTable("AbpBlobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name"); + + b.ToTable("AbpBlobContainers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AllowedProviders") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsAvailableToHost") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ValueType") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatures", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatureGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySession", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Device") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("DeviceInfo") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IpAddresses") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.Property("LastAccessed") + .HasColumnType("datetime2"); + + b.Property("SessionId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("SignedIn") + .HasColumnType("datetime2"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("Device"); + + b.HasIndex("SessionId"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSessions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("bit"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ClientUri") + .HasColumnType("nvarchar(max)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasColumnType("nvarchar(max)"); + + b.Property("Permissions") + .HasColumnType("nvarchar(max)"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); + + b.Property("Settings") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Resources") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.SettingDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultValue") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsEncrypted") + .HasColumnType("bit"); + + b.Property("IsInherited") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpSettingDefinitions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => + { + b.HasOne("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", null) + .WithMany() + .HasForeignKey("ContainerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Acme.BookStore.EntityFrameworkCore/Migrations/20250617072419_Initial.cs b/src/Acme.BookStore.EntityFrameworkCore/Migrations/20250617072419_Initial.cs new file mode 100644 index 0000000..703885d --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/Migrations/20250617072419_Initial.cs @@ -0,0 +1,1209 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Acme.BookStore.Migrations +{ + /// + public partial class Initial : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AbpAuditLogs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationName = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + UserId = table.Column(type: "uniqueidentifier", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + TenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ImpersonatorUserId = table.Column(type: "uniqueidentifier", nullable: true), + ImpersonatorUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ImpersonatorTenantId = table.Column(type: "uniqueidentifier", nullable: true), + ImpersonatorTenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ExecutionTime = table.Column(type: "datetime2", nullable: false), + ExecutionDuration = table.Column(type: "int", nullable: false), + ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ClientName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + CorrelationId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + HttpMethod = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), + Url = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + Exceptions = table.Column(type: "nvarchar(max)", nullable: true), + Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + HttpStatusCode = table.Column(type: "int", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpBackgroundJobs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationName = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + JobName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + JobArgs = table.Column(type: "nvarchar(max)", maxLength: 1048576, nullable: false), + TryCount = table.Column(type: "smallint", nullable: false, defaultValue: (short)0), + CreationTime = table.Column(type: "datetime2", nullable: false), + NextTryTime = table.Column(type: "datetime2", nullable: false), + LastTryTime = table.Column(type: "datetime2", nullable: true), + IsAbandoned = table.Column(type: "bit", nullable: false, defaultValue: false), + Priority = table.Column(type: "tinyint", nullable: false, defaultValue: (byte)15), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpBackgroundJobs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpBlobContainers", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpBlobContainers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpClaimTypes", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Required = table.Column(type: "bit", nullable: false), + IsStatic = table.Column(type: "bit", nullable: false), + Regex = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ValueType = table.Column(type: "int", nullable: false), + CreationTime = table.Column(type: "datetime2", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpClaimTypes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpFeatureGroups", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatureGroups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpFeatures", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + GroupName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ParentName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + IsVisibleToClients = table.Column(type: "bit", nullable: false), + IsAvailableToHost = table.Column(type: "bit", nullable: false), + AllowedProviders = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ValueType = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatures", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpFeatureValues", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Value = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatureValues", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpLinkUsers", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), + SourceTenantId = table.Column(type: "uniqueidentifier", nullable: true), + TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), + TargetTenantId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpLinkUsers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpOrganizationUnits", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ParentId = table.Column(type: "uniqueidentifier", nullable: true), + Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), + DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpOrganizationUnits", x => x.Id); + table.ForeignKey( + name: "FK_AbpOrganizationUnits_AbpOrganizationUnits_ParentId", + column: x => x.ParentId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissionGrants", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGrants", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissionGroups", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGroups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + GroupName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ParentName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsEnabled = table.Column(type: "bit", nullable: false), + MultiTenancySide = table.Column(type: "tinyint", nullable: false), + Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + StateCheckers = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpRoles", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsDefault = table.Column(type: "bit", nullable: false), + IsStatic = table.Column(type: "bit", nullable: false), + IsPublic = table.Column(type: "bit", nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + CreationTime = table.Column(type: "datetime2", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpRoles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSecurityLogs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ApplicationName = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + Identity = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + Action = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + UserId = table.Column(type: "uniqueidentifier", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + TenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + CorrelationId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSecurityLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSessions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + SessionId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Device = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + DeviceInfo = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + UserId = table.Column(type: "uniqueidentifier", nullable: false), + ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + IpAddresses = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), + SignedIn = table.Column(type: "datetime2", nullable: false), + LastAccessed = table.Column(type: "datetime2", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSessions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSettingDefinitions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), + IsVisibleToClients = table.Column(type: "bit", nullable: false), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), + IsInherited = table.Column(type: "bit", nullable: false), + IsEncrypted = table.Column(type: "bit", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSettingDefinitions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSettings", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Value = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: false), + ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSettings", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpTenants", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + NormalizedName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpTenants", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpUserDelegations", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), + TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), + StartTime = table.Column(type: "datetime2", nullable: false), + EndTime = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserDelegations", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpUsers", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + Surname = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + Email = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedEmail = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + EmailConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), + PasswordHash = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + SecurityStamp = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsExternal = table.Column(type: "bit", nullable: false, defaultValue: false), + PhoneNumber = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), + PhoneNumberConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), + IsActive = table.Column(type: "bit", nullable: false), + TwoFactorEnabled = table.Column(type: "bit", nullable: false, defaultValue: false), + LockoutEnd = table.Column(type: "datetimeoffset", nullable: true), + LockoutEnabled = table.Column(type: "bit", nullable: false, defaultValue: false), + AccessFailedCount = table.Column(type: "int", nullable: false, defaultValue: 0), + ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUsers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictApplications", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), + Permissions = table.Column(type: "nvarchar(max)", nullable: true), + PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Requirements = table.Column(type: "nvarchar(max)", nullable: true), + Settings = table.Column(type: "nvarchar(max)", nullable: true), + ClientUri = table.Column(type: "nvarchar(max)", nullable: true), + LogoUri = table.Column(type: "nvarchar(max)", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictApplications", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictScopes", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Descriptions = table.Column(type: "nvarchar(max)", nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Resources = table.Column(type: "nvarchar(max)", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictScopes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpAuditLogActions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + AuditLogId = table.Column(type: "uniqueidentifier", nullable: false), + ServiceName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + MethodName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Parameters = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), + ExecutionTime = table.Column(type: "datetime2", nullable: false), + ExecutionDuration = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogActions", x => x.Id); + table.ForeignKey( + name: "FK_AbpAuditLogActions_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityChanges", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + AuditLogId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ChangeTime = table.Column(type: "datetime2", nullable: false), + ChangeType = table.Column(type: "tinyint", nullable: false), + EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityChanges_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpBlobs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ContainerId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Content = table.Column(type: "varbinary(max)", maxLength: 2147483647, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpBlobs", x => x.Id); + table.ForeignKey( + name: "FK_AbpBlobs_AbpBlobContainers_ContainerId", + column: x => x.ContainerId, + principalTable: "AbpBlobContainers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpOrganizationUnitRoles", + columns: table => new + { + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + OrganizationUnitId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpOrganizationUnitRoles", x => new { x.OrganizationUnitId, x.RoleId }); + table.ForeignKey( + name: "FK_AbpOrganizationUnitRoles_AbpOrganizationUnits_OrganizationUnitId", + column: x => x.OrganizationUnitId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpOrganizationUnitRoles_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpRoleClaims", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ClaimType = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ClaimValue = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AbpRoleClaims_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpTenantConnectionStrings", + columns: table => new + { + TenantId = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + Value = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpTenantConnectionStrings", x => new { x.TenantId, x.Name }); + table.ForeignKey( + name: "FK_AbpTenantConnectionStrings_AbpTenants_TenantId", + column: x => x.TenantId, + principalTable: "AbpTenants", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserClaims", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + UserId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ClaimType = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ClaimValue = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AbpUserClaims_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserLogins", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + LoginProvider = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ProviderKey = table.Column(type: "nvarchar(196)", maxLength: 196, nullable: false), + ProviderDisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserLogins", x => new { x.UserId, x.LoginProvider }); + table.ForeignKey( + name: "FK_AbpUserLogins_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserOrganizationUnits", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + OrganizationUnitId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserOrganizationUnits", x => new { x.OrganizationUnitId, x.UserId }); + table.ForeignKey( + name: "FK_AbpUserOrganizationUnits_AbpOrganizationUnits_OrganizationUnitId", + column: x => x.OrganizationUnitId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpUserOrganizationUnits_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserRoles", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserRoles", x => new { x.UserId, x.RoleId }); + table.ForeignKey( + name: "FK_AbpUserRoles_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpUserRoles_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserTokens", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + LoginProvider = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AbpUserTokens_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictAuthorizations", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Scopes = table.Column(type: "nvarchar(max)", nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictAuthorizations", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictAuthorizations_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityPropertyChanges", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + EntityChangeId = table.Column(type: "uniqueidentifier", nullable: false), + NewValue = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + OriginalValue = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + PropertyName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + PropertyTypeFullName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityPropertyChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityPropertyChanges_AbpEntityChanges_EntityChangeId", + column: x => x.EntityChangeId, + principalTable: "AbpEntityChanges", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + AuthorizationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + ExpirationDate = table.Column(type: "datetime2", nullable: true), + Payload = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedemptionDate = table.Column(type: "datetime2", nullable: true), + ReferenceId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictTokens", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictAuthorizations_AuthorizationId", + column: x => x.AuthorizationId, + principalTable: "OpenIddictAuthorizations", + principalColumn: "Id"); + }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_AuditLogId", + table: "AbpAuditLogActions", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_TenantId_ServiceName_MethodName_ExecutionTime", + table: "AbpAuditLogActions", + columns: new[] { "TenantId", "ServiceName", "MethodName", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_UserId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "UserId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpBackgroundJobs_IsAbandoned_NextTryTime", + table: "AbpBackgroundJobs", + columns: new[] { "IsAbandoned", "NextTryTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpBlobContainers_TenantId_Name", + table: "AbpBlobContainers", + columns: new[] { "TenantId", "Name" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpBlobs_ContainerId", + table: "AbpBlobs", + column: "ContainerId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpBlobs_TenantId_ContainerId_Name", + table: "AbpBlobs", + columns: new[] { "TenantId", "ContainerId", "Name" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_AuditLogId", + table: "AbpEntityChanges", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_TenantId_EntityTypeFullName_EntityId", + table: "AbpEntityChanges", + columns: new[] { "TenantId", "EntityTypeFullName", "EntityId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityPropertyChanges_EntityChangeId", + table: "AbpEntityPropertyChanges", + column: "EntityChangeId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatureGroups_Name", + table: "AbpFeatureGroups", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatures_GroupName", + table: "AbpFeatures", + column: "GroupName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatures_Name", + table: "AbpFeatures", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatureValues_Name_ProviderName_ProviderKey", + table: "AbpFeatureValues", + columns: new[] { "Name", "ProviderName", "ProviderKey" }, + unique: true, + filter: "[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpLinkUsers_SourceUserId_SourceTenantId_TargetUserId_TargetTenantId", + table: "AbpLinkUsers", + columns: new[] { "SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId" }, + unique: true, + filter: "[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnitRoles_RoleId_OrganizationUnitId", + table: "AbpOrganizationUnitRoles", + columns: new[] { "RoleId", "OrganizationUnitId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnits_Code", + table: "AbpOrganizationUnits", + column: "Code"); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnits_ParentId", + table: "AbpOrganizationUnits", + column: "ParentId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGrants_TenantId_Name_ProviderName_ProviderKey", + table: "AbpPermissionGrants", + columns: new[] { "TenantId", "Name", "ProviderName", "ProviderKey" }, + unique: true, + filter: "[TenantId] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGroups_Name", + table: "AbpPermissionGroups", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissions_GroupName", + table: "AbpPermissions", + column: "GroupName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissions_Name", + table: "AbpPermissions", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpRoleClaims_RoleId", + table: "AbpRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpRoles_NormalizedName", + table: "AbpRoles", + column: "NormalizedName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_Action", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "Action" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_ApplicationName", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "ApplicationName" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_Identity", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "Identity" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_UserId", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "UserId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSessions_Device", + table: "AbpSessions", + column: "Device"); + + migrationBuilder.CreateIndex( + name: "IX_AbpSessions_SessionId", + table: "AbpSessions", + column: "SessionId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpSessions_TenantId_UserId", + table: "AbpSessions", + columns: new[] { "TenantId", "UserId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSettingDefinitions_Name", + table: "AbpSettingDefinitions", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpSettings_Name_ProviderName_ProviderKey", + table: "AbpSettings", + columns: new[] { "Name", "ProviderName", "ProviderKey" }, + unique: true, + filter: "[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpTenants_Name", + table: "AbpTenants", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_AbpTenants_NormalizedName", + table: "AbpTenants", + column: "NormalizedName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserClaims_UserId", + table: "AbpUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserLogins_LoginProvider_ProviderKey", + table: "AbpUserLogins", + columns: new[] { "LoginProvider", "ProviderKey" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserOrganizationUnits_UserId_OrganizationUnitId", + table: "AbpUserOrganizationUnits", + columns: new[] { "UserId", "OrganizationUnitId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserRoles_RoleId_UserId", + table: "AbpUserRoles", + columns: new[] { "RoleId", "UserId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_Email", + table: "AbpUsers", + column: "Email"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_NormalizedEmail", + table: "AbpUsers", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_NormalizedUserName", + table: "AbpUsers", + column: "NormalizedUserName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_UserName", + table: "AbpUsers", + column: "UserName"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictApplications_ClientId", + table: "OpenIddictApplications", + column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictAuthorizations_ApplicationId_Status_Subject_Type", + table: "OpenIddictAuthorizations", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictScopes_Name", + table: "OpenIddictScopes", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_ApplicationId_Status_Subject_Type", + table: "OpenIddictTokens", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_AuthorizationId", + table: "OpenIddictTokens", + column: "AuthorizationId"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_ReferenceId", + table: "OpenIddictTokens", + column: "ReferenceId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpAuditLogActions"); + + migrationBuilder.DropTable( + name: "AbpBackgroundJobs"); + + migrationBuilder.DropTable( + name: "AbpBlobs"); + + migrationBuilder.DropTable( + name: "AbpClaimTypes"); + + migrationBuilder.DropTable( + name: "AbpEntityPropertyChanges"); + + migrationBuilder.DropTable( + name: "AbpFeatureGroups"); + + migrationBuilder.DropTable( + name: "AbpFeatures"); + + migrationBuilder.DropTable( + name: "AbpFeatureValues"); + + migrationBuilder.DropTable( + name: "AbpLinkUsers"); + + migrationBuilder.DropTable( + name: "AbpOrganizationUnitRoles"); + + migrationBuilder.DropTable( + name: "AbpPermissionGrants"); + + migrationBuilder.DropTable( + name: "AbpPermissionGroups"); + + migrationBuilder.DropTable( + name: "AbpPermissions"); + + migrationBuilder.DropTable( + name: "AbpRoleClaims"); + + migrationBuilder.DropTable( + name: "AbpSecurityLogs"); + + migrationBuilder.DropTable( + name: "AbpSessions"); + + migrationBuilder.DropTable( + name: "AbpSettingDefinitions"); + + migrationBuilder.DropTable( + name: "AbpSettings"); + + migrationBuilder.DropTable( + name: "AbpTenantConnectionStrings"); + + migrationBuilder.DropTable( + name: "AbpUserClaims"); + + migrationBuilder.DropTable( + name: "AbpUserDelegations"); + + migrationBuilder.DropTable( + name: "AbpUserLogins"); + + migrationBuilder.DropTable( + name: "AbpUserOrganizationUnits"); + + migrationBuilder.DropTable( + name: "AbpUserRoles"); + + migrationBuilder.DropTable( + name: "AbpUserTokens"); + + migrationBuilder.DropTable( + name: "OpenIddictScopes"); + + migrationBuilder.DropTable( + name: "OpenIddictTokens"); + + migrationBuilder.DropTable( + name: "AbpBlobContainers"); + + migrationBuilder.DropTable( + name: "AbpEntityChanges"); + + migrationBuilder.DropTable( + name: "AbpTenants"); + + migrationBuilder.DropTable( + name: "AbpOrganizationUnits"); + + migrationBuilder.DropTable( + name: "AbpRoles"); + + migrationBuilder.DropTable( + name: "AbpUsers"); + + migrationBuilder.DropTable( + name: "OpenIddictAuthorizations"); + + migrationBuilder.DropTable( + name: "AbpAuditLogs"); + + migrationBuilder.DropTable( + name: "OpenIddictApplications"); + } + } +} diff --git a/src/Acme.BookStore.EntityFrameworkCore/Migrations/BookStoreDbContextModelSnapshot.cs b/src/Acme.BookStore.EntityFrameworkCore/Migrations/BookStoreDbContextModelSnapshot.cs new file mode 100644 index 0000000..5c2ab24 --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/Migrations/BookStoreDbContextModelSnapshot.cs @@ -0,0 +1,2049 @@ +// +using System; +using Acme.BookStore.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Acme.BookStore.Migrations +{ + [DbContext(typeof(BookStoreDbContext))] + partial class BookStoreDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "9.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime2") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("nvarchar(max)"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime2"); + + b.Property("NextTryTime") + .HasColumnType("datetime2"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContainerId") + .HasColumnType("uniqueidentifier"); + + b.Property("Content") + .HasMaxLength(2147483647) + .HasColumnType("varbinary(max)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ContainerId"); + + b.HasIndex("TenantId", "ContainerId", "Name"); + + b.ToTable("AbpBlobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name"); + + b.ToTable("AbpBlobContainers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AllowedProviders") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsAvailableToHost") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ValueType") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatures", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatureGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySession", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Device") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("DeviceInfo") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IpAddresses") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.Property("LastAccessed") + .HasColumnType("datetime2"); + + b.Property("SessionId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("SignedIn") + .HasColumnType("datetime2"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("Device"); + + b.HasIndex("SessionId"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSessions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("bit"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ClientUri") + .HasColumnType("nvarchar(max)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasColumnType("nvarchar(max)"); + + b.Property("Permissions") + .HasColumnType("nvarchar(max)"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); + + b.Property("Settings") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Resources") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.SettingDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultValue") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsEncrypted") + .HasColumnType("bit"); + + b.Property("IsInherited") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpSettingDefinitions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => + { + b.HasOne("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", null) + .WithMany() + .HasForeignKey("ContainerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Acme.BookStore.EntityFrameworkCore/Properties/AssemblyInfo.cs b/src/Acme.BookStore.EntityFrameworkCore/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9f5a215 --- /dev/null +++ b/src/Acme.BookStore.EntityFrameworkCore/Properties/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("Acme.BookStore.EntityFrameworkCore.Tests")] diff --git a/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.abppkg b/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.abppkg new file mode 100644 index 0000000..7deef5e --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api-client" +} \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.abppkg.analyze.json b/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.abppkg.analyze.json new file mode 100644 index 0000000..6a02546 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.abppkg.analyze.json @@ -0,0 +1,118 @@ +{ + "name": "Acme.BookStore.HttpApi.Client", + "hash": "", + "contents": [ + { + "namespace": "Acme.BookStore", + "dependsOnModules": [ + { + "declaringAssemblyName": "Acme.BookStore.Application.Contracts", + "namespace": "Acme.BookStore", + "name": "BookStoreApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.PermissionManagement.HttpApi.Client", + "namespace": "Volo.Abp.PermissionManagement", + "name": "AbpPermissionManagementHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.FeatureManagement.HttpApi.Client", + "namespace": "Volo.Abp.FeatureManagement", + "name": "AbpFeatureManagementHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Identity.Pro.HttpApi.Client", + "namespace": "Volo.Abp.Identity", + "name": "AbpIdentityHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Account.Pro.Admin.HttpApi.Client", + "namespace": "Volo.Abp.Account", + "name": "AbpAccountAdminHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Account.Pro.Public.HttpApi.Client", + "namespace": "Volo.Abp.Account", + "name": "AbpAccountPublicHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.AuditLogging.HttpApi.Client", + "namespace": "Volo.Abp.AuditLogging", + "name": "AbpAuditLoggingHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.HttpApi.Client", + "namespace": "Volo.Abp.OpenIddict", + "name": "AbpOpenIddictProHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.TextTemplateManagement.HttpApi.Client", + "namespace": "Volo.Abp.TextTemplateManagement", + "name": "TextTemplateManagementHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.LanguageManagement.HttpApi.Client", + "namespace": "Volo.Abp.LanguageManagement", + "name": "LanguageManagementHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Gdpr.HttpApi.Client", + "namespace": "Volo.Abp.Gdpr", + "name": "AbpGdprHttpApiClientModule" + }, + { + "declaringAssemblyName": "Volo.Abp.SettingManagement.HttpApi.Client", + "namespace": "Volo.Abp.SettingManagement", + "name": "AbpSettingManagementHttpApiClientModule" + } + ], + "implementingInterfaces": [ + { + "name": "IAbpModule", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IAbpModule" + }, + { + "name": "IOnPreApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" + }, + { + "name": "IOnApplicationInitialization", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationInitialization" + }, + { + "name": "IOnPostApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" + }, + { + "name": "IOnApplicationShutdown", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationShutdown" + }, + { + "name": "IPreConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPreConfigureServices" + }, + { + "name": "IPostConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPostConfigureServices" + } + ], + "contentType": "abpModule", + "name": "BookStoreHttpApiClientModule", + "summary": null + } + ] +} \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj b/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj new file mode 100644 index 0000000..cdad611 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj @@ -0,0 +1,32 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Acme.BookStore.HttpApi.Client/BookStoreHttpApiClientModule.cs b/src/Acme.BookStore.HttpApi.Client/BookStoreHttpApiClientModule.cs new file mode 100644 index 0000000..f7f7e55 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Client/BookStoreHttpApiClientModule.cs @@ -0,0 +1,38 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.VirtualFileSystem; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore; + +[DependsOn( + typeof(BookStoreApplicationContractsModule), + typeof(AbpPermissionManagementHttpApiClientModule), + typeof(AbpFeatureManagementHttpApiClientModule), + typeof(AbpAccountHttpApiClientModule), + typeof(AbpIdentityHttpApiClientModule), + typeof(AbpTenantManagementHttpApiClientModule), + typeof(AbpSettingManagementHttpApiClientModule) +)] +public class BookStoreHttpApiClientModule : AbpModule +{ + public const string RemoteServiceName = "Default"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddHttpClientProxies( + typeof(BookStoreApplicationContractsModule).Assembly, + RemoteServiceName + ); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.abppkg b/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.abppkg new file mode 100644 index 0000000..d5b2efb --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.abppkg @@ -0,0 +1,3 @@ +{ + "role": "host.http-api" +} diff --git a/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj b/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj new file mode 100644 index 0000000..a35af32 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj @@ -0,0 +1,56 @@ + + + + + + net9.0 + enable + InProcess + Acme.BookStore + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Acme.BookStore.HttpApi.Host/BookStoreBrandingProvider.cs b/src/Acme.BookStore.HttpApi.Host/BookStoreBrandingProvider.cs new file mode 100644 index 0000000..8ecdc23 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/BookStoreBrandingProvider.cs @@ -0,0 +1,19 @@ +using Microsoft.Extensions.Localization; +using Acme.BookStore.Localization; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Ui.Branding; + +namespace Acme.BookStore; + +[Dependency(ReplaceServices = true)] +public class BookStoreBrandingProvider : DefaultBrandingProvider +{ + private IStringLocalizer _localizer; + + public BookStoreBrandingProvider(IStringLocalizer localizer) + { + _localizer = localizer; + } + + public override string AppName => _localizer["AppName"]; +} diff --git a/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs b/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs new file mode 100644 index 0000000..6041538 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs @@ -0,0 +1,280 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Security.Cryptography.X509Certificates; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.HttpOverrides; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.AspNetCore.Extensions.DependencyInjection; +using OpenIddict.Validation.AspNetCore; +using OpenIddict.Server.AspNetCore; +using Acme.BookStore.EntityFrameworkCore; +using Acme.BookStore.MultiTenancy; +using Acme.BookStore.HealthChecks; +using Microsoft.OpenApi.Models; +using Volo.Abp; +using Volo.Abp.Studio; +using Volo.Abp.Account; +using Volo.Abp.Account.Web; +using Volo.Abp.AspNetCore.MultiTenancy; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Autofac; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.VirtualFileSystem; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling; +using Microsoft.AspNetCore.Hosting; +using Volo.Abp.AspNetCore.Serilog; +using Volo.Abp.Identity; +using Volo.Abp.OpenIddict; +using Volo.Abp.Swashbuckle; +using Volo.Abp.Studio.Client.AspNetCore; +using Volo.Abp.Security.Claims; + +namespace Acme.BookStore; + +[DependsOn( + typeof(BookStoreHttpApiModule), + typeof(AbpStudioClientAspNetCoreModule), + typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), + typeof(AbpAutofacModule), + typeof(AbpAspNetCoreMultiTenancyModule), + typeof(BookStoreApplicationModule), + typeof(BookStoreEntityFrameworkCoreModule), + typeof(AbpAccountWebOpenIddictModule), + typeof(AbpSwashbuckleModule), + typeof(AbpAspNetCoreSerilogModule) + )] +public class BookStoreHttpApiHostModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("BookStore"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); + + if (!hostingEnvironment.IsDevelopment()) + { + PreConfigure(options => + { + options.AddDevelopmentEncryptionAndSigningCertificate = false; + }); + + PreConfigure(serverBuilder => + { + serverBuilder.AddProductionEncryptionAndSigningCertificate("openiddict.pfx", configuration["AuthServer:CertificatePassPhrase"]!); + serverBuilder.SetIssuer(new Uri(configuration["AuthServer:Authority"]!)); + }); + } + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + if (!configuration.GetValue("App:DisablePII")) + { + Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true; + Microsoft.IdentityModel.Logging.IdentityModelEventSource.LogCompleteSecurityArtifact = true; + } + + if (!configuration.GetValue("AuthServer:RequireHttpsMetadata")) + { + Configure(options => + { + options.DisableTransportSecurityRequirement = true; + }); + + Configure(options => + { + options.ForwardedHeaders = ForwardedHeaders.XForwardedProto; + }); + } + + ConfigureAuthentication(context); + ConfigureUrls(configuration); + ConfigureBundles(); + ConfigureConventionalControllers(); + ConfigureHealthChecks(context); + ConfigureSwagger(context, configuration); + ConfigureVirtualFileSystem(context); + ConfigureCors(context, configuration); + } + + private void ConfigureAuthentication(ServiceConfigurationContext context) + { + context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + context.Services.Configure(options => + { + options.IsDynamicClaimsEnabled = true; + }); + } + + private void ConfigureUrls(IConfiguration configuration) + { + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + options.Applications["Angular"].RootUrl = configuration["App:AngularUrl"]; + options.Applications["Angular"].Urls[AccountUrlNames.PasswordReset] = "account/reset-password"; + options.RedirectAllowedUrls.AddRange(configuration["App:RedirectAllowedUrls"]?.Split(',') ?? Array.Empty()); + }); + } + + private void ConfigureBundles() + { + Configure(options => + { + options.StyleBundles.Configure( + LeptonXLiteThemeBundles.Styles.Global, + bundle => + { + bundle.AddFiles("/global-styles.css"); + } + ); + + options.ScriptBundles.Configure( + LeptonXLiteThemeBundles.Scripts.Global, + bundle => + { + bundle.AddFiles("/global-scripts.js"); + } + ); + }); + } + + + private void ConfigureVirtualFileSystem(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Acme.BookStore.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Acme.BookStore.Domain")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Acme.BookStore.Application.Contracts")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Acme.BookStore.Application")); + }); + } + } + + private void ConfigureConventionalControllers() + { + Configure(options => + { + options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly); + }); + } + + private static void ConfigureSwagger(ServiceConfigurationContext context, IConfiguration configuration) + { + context.Services.AddAbpSwaggerGenWithOidc( + configuration["AuthServer:Authority"]!, + ["BookStore"], + [AbpSwaggerOidcFlows.AuthorizationCode], + null, + options => + { + options.SwaggerDoc("v1", new OpenApiInfo { Title = "BookStore API", Version = "v1" }); + options.DocInclusionPredicate((docName, description) => true); + options.CustomSchemaIds(type => type.FullName); + }); + } + + private void ConfigureCors(ServiceConfigurationContext context, IConfiguration configuration) + { + context.Services.AddCors(options => + { + options.AddDefaultPolicy(builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"]? + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.Trim().RemovePostFix("/")) + .ToArray() ?? Array.Empty() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); + } + + private void ConfigureHealthChecks(ServiceConfigurationContext context) + { + context.Services.AddBookStoreHealthChecks(); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + var env = context.GetEnvironment(); + + app.UseForwardedHeaders(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseAbpRequestLocalization(); + + if (!env.IsDevelopment()) + { + app.UseErrorPage(); + } + + app.UseRouting(); + app.MapAbpStaticAssets(); + app.UseAbpStudioLink(); + app.UseAbpSecurityHeaders(); + app.UseCors(); + app.UseAuthentication(); + app.UseAbpOpenIddictValidation(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseUnitOfWork(); + app.UseDynamicClaims(); + app.UseAuthorization(); + + app.UseSwagger(); + app.UseAbpSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "BookStore API"); + + var configuration = context.ServiceProvider.GetRequiredService(); + options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); + }); + app.UseAuditing(); + app.UseAbpSerilogEnrichers(); + app.UseConfiguredEndpoints(); + } +} diff --git a/src/Acme.BookStore.HttpApi.Host/Dockerfile b/src/Acme.BookStore.HttpApi.Host/Dockerfile new file mode 100644 index 0000000..b77a6a9 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/Dockerfile @@ -0,0 +1,5 @@ +FROM mcr.microsoft.com/dotnet/aspnet:9.0 +COPY bin/Release/net9.0/publish/ app/ +WORKDIR /app +ENV ASPNETCORE_URLS=http://+:80 +ENTRYPOINT ["dotnet", "Acme.BookStore.HttpApi.Host.dll"] \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Host/Dockerfile.local b/src/Acme.BookStore.HttpApi.Host/Dockerfile.local new file mode 100644 index 0000000..4fc6d7b --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/Dockerfile.local @@ -0,0 +1,18 @@ +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base +USER $APP_UID +EXPOSE 8080 +EXPOSE 8081 + +COPY bin/Release/net9.0/publish/ app/ +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +WORKDIR /src +RUN dotnet dev-certs https -v -ep openiddict.pfx -p 04d612a5-1d46-4efc-a0fa-530c324729bb +RUN chmod 644 openiddict.pfx + +FROM base AS final +WORKDIR /app +COPY --from=build /src . + +ENTRYPOINT ["dotnet", "Acme.BookStore.HttpApi.Host.dll"] \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Host/HealthChecks/BookStoreDatabaseCheck.cs b/src/Acme.BookStore.HttpApi.Host/HealthChecks/BookStoreDatabaseCheck.cs new file mode 100644 index 0000000..03fbc0a --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/HealthChecks/BookStoreDatabaseCheck.cs @@ -0,0 +1,32 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Diagnostics.HealthChecks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity; + +namespace Acme.BookStore.HealthChecks; + +public class BookStoreDatabaseCheck : IHealthCheck, ITransientDependency +{ + protected readonly IIdentityRoleRepository IdentityRoleRepository; + + public BookStoreDatabaseCheck(IIdentityRoleRepository identityRoleRepository) + { + IdentityRoleRepository = identityRoleRepository; + } + + public async Task CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default) + { + try + { + await IdentityRoleRepository.GetListAsync(sorting: nameof(IdentityRole.Id), maxResultCount: 1, cancellationToken: cancellationToken); + + return HealthCheckResult.Healthy($"Could connect to database and get record."); + } + catch (Exception e) + { + return HealthCheckResult.Unhealthy($"Error when trying to get database record. ", e); + } + } +} diff --git a/src/Acme.BookStore.HttpApi.Host/HealthChecks/HealthChecksBuilderExtensions.cs b/src/Acme.BookStore.HttpApi.Host/HealthChecks/HealthChecksBuilderExtensions.cs new file mode 100644 index 0000000..86c87bc --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/HealthChecks/HealthChecksBuilderExtensions.cs @@ -0,0 +1,76 @@ +using System; +using HealthChecks.UI.Client; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.DependencyInjection; + +namespace Acme.BookStore.HealthChecks; + +public static class HealthChecksBuilderExtensions +{ + public static void AddBookStoreHealthChecks(this IServiceCollection services) + { + // Add your health checks here + var healthChecksBuilder = services.AddHealthChecks(); + healthChecksBuilder.AddCheck("BookStore DbContext Check", tags: new string[] { "database" }); + + services.ConfigureHealthCheckEndpoint("/health-status"); + + var configuration = services.GetConfiguration(); + var healthCheckUrl = configuration["App:HealthCheckUrl"]; + + if (string.IsNullOrEmpty(healthCheckUrl)) + { + healthCheckUrl = "/health-status"; + } + + var healthChecksUiBuilder = services.AddHealthChecksUI(settings => + { + settings.AddHealthCheckEndpoint("BookStore Health Status", configuration["App:HealthUiCheckUrl"] ?? healthCheckUrl); + }); + + // Set your HealthCheck UI Storage here + healthChecksUiBuilder.AddInMemoryStorage(); + + services.MapHealthChecksUiEndpoints(options => + { + options.UIPath = "/health-ui"; + options.ApiPath = "/health-api"; + }); + } + + private static IServiceCollection ConfigureHealthCheckEndpoint(this IServiceCollection services, string path) + { + services.Configure(options => + { + options.EndpointConfigureActions.Add(endpointContext => + { + endpointContext.Endpoints.MapHealthChecks( + new PathString(path.EnsureStartsWith('/')), + new HealthCheckOptions + { + Predicate = _ => true, + ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse, + AllowCachingResponses = false, + }); + }); + }); + + return services; + } + + private static IServiceCollection MapHealthChecksUiEndpoints(this IServiceCollection services, Action? setupOption = null) + { + services.Configure(routerOptions => + { + routerOptions.EndpointConfigureActions.Add(endpointContext => + { + endpointContext.Endpoints.MapHealthChecksUI(setupOption); + }); + }); + + return services; + } +} diff --git a/src/Acme.BookStore.HttpApi.Host/Pages/Index.cshtml b/src/Acme.BookStore.HttpApi.Host/Pages/Index.cshtml new file mode 100644 index 0000000..25be189 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/Pages/Index.cshtml @@ -0,0 +1,127 @@ +@page +@using Microsoft.AspNetCore.Mvc.Localization +@using Microsoft.AspNetCore.Http.Extensions +@using Acme.BookStore.Localization +@using Acme.BookStore.Pages +@using Volo.Abp.Account.Localization +@using Volo.Abp.Users +@using Volo.Abp.AspNetCore.Mvc.UI.Theming +@using Volo.Abp.Ui.Branding +@model IndexModel +@inject IHtmlLocalizer L +@inject IHtmlLocalizer AccountLocalizer +@inject ICurrentUser CurrentUser +@inject IBrandingProvider BrandingProvider +@inject ITheme Theme +@{ + Layout = Theme.GetEmptyLayout(); +} + +

+
+ + + + + +
+
diff --git a/src/Acme.BookStore.HttpApi.Host/Pages/Index.cshtml.cs b/src/Acme.BookStore.HttpApi.Host/Pages/Index.cshtml.cs new file mode 100644 index 0000000..82b5dfb --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/Pages/Index.cshtml.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Globalization; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; +using Volo.Abp.Localization; +using Volo.Abp.OpenIddict.Applications; + +namespace Acme.BookStore.Pages; + +public class IndexModel : AbpPageModel +{ + public List? Applications { get; protected set; } + + public IReadOnlyList? Languages { get; protected set; } + + public string? CurrentLanguage { get; protected set; } + + protected IOpenIddictApplicationRepository OpenIdApplicationRepository { get; } + + protected ILanguageProvider LanguageProvider { get; } + + public IndexModel(IOpenIddictApplicationRepository openIdApplicationmRepository, ILanguageProvider languageProvider) + { + OpenIdApplicationRepository = openIdApplicationmRepository; + LanguageProvider = languageProvider; + } + + public async Task OnGetAsync() + { + Applications = await OpenIdApplicationRepository.GetListAsync(); + + Languages = await LanguageProvider.GetLanguagesAsync(); + CurrentLanguage = CultureInfo.CurrentCulture.DisplayName; + } +} diff --git a/src/Acme.BookStore.HttpApi.Host/Pages/_ViewImports.cshtml b/src/Acme.BookStore.HttpApi.Host/Pages/_ViewImports.cshtml new file mode 100644 index 0000000..c1da1f5 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Host/Program.cs b/src/Acme.BookStore.HttpApi.Host/Program.cs new file mode 100644 index 0000000..08f7008 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/Program.cs @@ -0,0 +1,63 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; +using Serilog.Events; + +namespace Acme.BookStore; + +public class Program +{ + public async static Task Main(string[] args) + { + Log.Logger = new LoggerConfiguration() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .WriteTo.Async(c => c.Console()) + .CreateBootstrapLogger(); + + try + { + Log.Information("Starting Acme.BookStore.HttpApi.Host."); + var builder = WebApplication.CreateBuilder(args); + builder.Host + .AddAppSettingsSecretsJson() + .UseAutofac() + .UseSerilog((context, services, loggerConfiguration) => + { + loggerConfiguration + #if DEBUG + .MinimumLevel.Debug() + #else + .MinimumLevel.Information() + #endif + .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .WriteTo.Async(c => c.Console()) + .WriteTo.Async(c => c.AbpStudio(services)); + }); + await builder.AddApplicationAsync(); + var app = builder.Build(); + await app.InitializeApplicationAsync(); + await app.RunAsync(); + return 0; + } + catch (Exception ex) + { + if (ex is HostAbortedException) + { + throw; + } + + Log.Fatal(ex, "Host terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } + } +} diff --git a/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json b/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json new file mode 100644 index 0000000..3f87106 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "https://localhost:44380", + "sslPort": 44380 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Acme.BookStore.HttpApi.Host": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:44380", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Host/abp.resourcemapping.js b/src/Acme.BookStore.HttpApi.Host/abp.resourcemapping.js new file mode 100644 index 0000000..4a2ad45 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/abp.resourcemapping.js @@ -0,0 +1,11 @@ +module.exports = { + aliases: { + + }, + clean: [ + + ], + mappings: { + + } +}; diff --git a/src/Acme.BookStore.HttpApi.Host/appsettings.Development.json b/src/Acme.BookStore.HttpApi.Host/appsettings.Development.json new file mode 100644 index 0000000..2c63c08 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/appsettings.Development.json @@ -0,0 +1,2 @@ +{ +} diff --git a/src/Acme.BookStore.HttpApi.Host/appsettings.json b/src/Acme.BookStore.HttpApi.Host/appsettings.json new file mode 100644 index 0000000..c77f4eb --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/appsettings.json @@ -0,0 +1,28 @@ +{ + "App": { + "SelfUrl": "https://localhost:44380", + "AngularUrl": "http://localhost:4200", + "CorsOrigins": "https://*.BookStore.com,http://localhost:4200", + "RedirectAllowedUrls": "http://localhost:4200", + "DisablePII": false, + "HealthCheckUrl": "/health-status" + }, + "ConnectionStrings": { + "Default": "Server=localhost,1433;Database=BookStore;user=sa;password=123Qwe**;TrustServerCertificate=true" + }, + "AuthServer": { + "Authority": "https://localhost:44380", + "RequireHttpsMetadata": true, + "SwaggerClientId": "BookStore_Swagger", + "CertificatePassPhrase": "04d612a5-1d46-4efc-a0fa-530c324729bb" + }, + "StringEncryption": { + "DefaultPassPhrase": "dU2Wd0uHmqy8o74R" + }, + "vaultsetting": { + "token": "hvs.hAMzTj712JyYxscMP7JussQi", + "url": "https://vault.testsvk.site:8200", + "path": "check/value/text", + "mp": "kv" + } +} \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Host/package.json b/src/Acme.BookStore.HttpApi.Host/package.json new file mode 100644 index 0000000..5caead1 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/package.json @@ -0,0 +1,8 @@ +{ + "version": "1.0.0", + "name": "my-app", + "private": true, + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~4.2.0" + } +} diff --git a/src/Acme.BookStore.HttpApi.Host/web.config b/src/Acme.BookStore.HttpApi.Host/web.config new file mode 100644 index 0000000..b5d508a --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/web.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/Acme.BookStore.HttpApi.Host/wwwroot/global-scripts.js b/src/Acme.BookStore.HttpApi.Host/wwwroot/global-scripts.js new file mode 100644 index 0000000..e8136b0 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/wwwroot/global-scripts.js @@ -0,0 +1 @@ +/* Your Global Scripts */ diff --git a/src/Acme.BookStore.HttpApi.Host/wwwroot/global-styles.css b/src/Acme.BookStore.HttpApi.Host/wwwroot/global-styles.css new file mode 100644 index 0000000..9525cfe --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/wwwroot/global-styles.css @@ -0,0 +1,7 @@ +:root { + --lpx-logo: url('/images/logo/leptonxlite/logo-light.png'); + --lpx-logo-icon: url('/images/logo/leptonxlite/logo-light-thumbnail.png'); +} +:root .abp-account-layout .lpx-brand-logo{ + --lpx-logo: url('/images/logo/leptonxlite/logo-dark.png'); +} diff --git a/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/angular.svg b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/angular.svg new file mode 100644 index 0000000..468c4ba --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/angular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/aspnetcore.svg b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/aspnetcore.svg new file mode 100644 index 0000000..82a2ef8 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/aspnetcore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/blazor.svg b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/blazor.svg new file mode 100644 index 0000000..2f5a30c --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/blazor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/swagger.svg b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/swagger.svg new file mode 100644 index 0000000..908edf5 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/clients/swagger.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-dark-thumbnail.png b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-dark-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..9734a07a4d4539d3081bb897ffc8d5e75dab8798 GIT binary patch literal 10695 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 iRGz-n4VZ}kM?W?F&FYYBo literal 0 HcmV?d00001 diff --git a/src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-dark.png b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a3bbe82224deec74650461230f66d609eda717e3 GIT binary patch literal 38171 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 MU)LDY2zE;NA05R;CIA2c literal 0 HcmV?d00001 diff --git a/src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-light.png b/src/Acme.BookStore.HttpApi.Host/wwwroot/images/logo/leptonxlite/logo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..761fb4443d597661e7700574e52b787d7ed7255b GIT binary patch literal 33228 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 nuxmBTJ6Y+ll0437Z literal 0 HcmV?d00001 diff --git a/src/Acme.BookStore.HttpApi.Host/yarn.lock b/src/Acme.BookStore.HttpApi.Host/yarn.lock new file mode 100644 index 0000000..2268de5 --- /dev/null +++ b/src/Acme.BookStore.HttpApi.Host/yarn.lock @@ -0,0 +1,306 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@abp/aspnetcore.mvc.ui.theme.leptonxlite@~4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-4.2.0.tgz#4355360fcd241015d0851bbdf23ab0fa91faf279" + integrity sha512-NuFeHaofqNXs5/KGlv41lOSfbUqm7sEtwHfLSfvdQCZBmcfCrDTHG26a4OsSmEfjt1UO6VH4Sx70r4pr2QM6lg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0.tgz#791f419e8e0fab229e3f93f7a90edcd259100206" + integrity sha512-Mrs+kQg0S5OyRsPBwXQTqOq2DBWDdot7emETcX/gatv26GFbRe3nTOk1E+VWD/nsxHEOKTSE8LClC6TgkMxD8Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~9.2.0" + "@abp/bootstrap" "~9.2.0" + "@abp/bootstrap-datepicker" "~9.2.0" + "@abp/bootstrap-daterangepicker" "~9.2.0" + "@abp/datatables.net-bs5" "~9.2.0" + "@abp/font-awesome" "~9.2.0" + "@abp/jquery-form" "~9.2.0" + "@abp/jquery-validation-unobtrusive" "~9.2.0" + "@abp/lodash" "~9.2.0" + "@abp/luxon" "~9.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0" + "@abp/moment" "~9.2.0" + "@abp/select2" "~9.2.0" + "@abp/sweetalert2" "~9.2.0" + "@abp/timeago" "~9.2.0" + +"@abp/aspnetcore.mvc.ui@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0.tgz#e3e703ea46caf04cc966ea0af6deb64427a90d4c" + integrity sha512-VHH68/7Bw7r8p70T9grnVISgYPe2t3m9199S/wAXGtpGHML/lbHhDflWbm7y1MHcrmCfaXy42O9SmTHV25BJhA== + dependencies: + ansi-colors "^4.1.3" + +"@abp/bootstrap-datepicker@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0.tgz#271ff68e2cee7b4ffe5a60406561a05948d6bbe6" + integrity sha512-V8o1cn1MKXE5GH1ZpBHiWWilzxjHIp4IS6rNoCDBSnaQcVvRku9KPI8tPNQSf+4x3jBfHDV9aOBDbDGTQ6J2yw== + dependencies: + bootstrap-datepicker "^1.10.0" + +"@abp/bootstrap-daterangepicker@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0.tgz#a239f8c2efce57d2e2beca70ceeede52d1b177d5" + integrity sha512-Cd9naCyepTvmUotkR1VyOBqUMgyeSXnOVWR7HxXm+jugKtnWRzrztZB6UyfnNzzjc1RMOyiAUEjzitKSJrXeoA== + dependencies: + bootstrap-daterangepicker "^3.1.0" + +"@abp/bootstrap@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0.tgz#08859288b8372ea111a240b507047b144d6caca9" + integrity sha512-L3EZQza2c/5VmvZkLsf0EOuaMi8fseyyiwlFN65i1hpcDwhOLcaqnxMneeaSJ+Dy4xczJT+oBml9D9OSTuzmkA== + dependencies: + "@abp/core" "~9.2.0" + bootstrap "^5.3.3" + +"@abp/core@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0.tgz#db08fd34cfc891e94eb9e59ed3c0d0e6ef45c51a" + integrity sha512-3iESoHFj8I2xK81dwQVpCI6C1bc87VfWKyJE3/IUv4zWvG4QvI0aKhe1wxocmJqTjjowPUA3/fa2hvpfqPs2Bw== + dependencies: + "@abp/utils" "~9.2.0" + +"@abp/datatables.net-bs5@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0.tgz#eab201c959727c27aaab30dc5bd8159249d8b54b" + integrity sha512-bmK6GKffXzYbfkDIlN27D7mohnYsXoODEiHqhZnBdIzeSJyHwrwRPRVbO1EcBn1SEBHjGJp3S69Z6gDbRs018g== + dependencies: + "@abp/datatables.net" "~9.2.0" + datatables.net-bs5 "^2.1.8" + +"@abp/datatables.net@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0.tgz#e4880fe074d86d3c5dbd7f48c86244790fc376c2" + integrity sha512-bKaaa+tl0Pt4oNaV+X8pBbvsHc2mPYoL7yuAs+LN8ZLwBdsGoUw7RNhLQ63O3tuYdHuaHhI/mx23X6JThr0SYw== + dependencies: + "@abp/jquery" "~9.2.0" + datatables.net "^2.1.8" + +"@abp/font-awesome@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0.tgz#3e359da2510cbc0e5b9e46e9cb3664baf285722e" + integrity sha512-HRGg6XK3bCxFdVvEBnBKyLamqMUrenj//E4JuKOs8DtGLVH0jTyh8TwUT5/E/pI+POV7HEOpv9WpSB2p8pfsAg== + dependencies: + "@abp/core" "~9.2.0" + "@fortawesome/fontawesome-free" "^6.6.0" + +"@abp/jquery-form@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0.tgz#40fac992584c26e6c54f66e7f68f8abf8944a626" + integrity sha512-B7Shq1itQjsnzdU1kjLpGHWjkSGFhIM2iF5BNMkqcylG3Yq1Se4+8QPoJpn/soilmtX8gbO2fx8TOejfIazXIw== + dependencies: + "@abp/jquery" "~9.2.0" + jquery-form "^4.3.0" + +"@abp/jquery-validation-unobtrusive@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0.tgz#c2df51d024d48e71f0e7fb8d4207a8b2855393f4" + integrity sha512-c1cPfWVdo+gpaMoegAkw0DzGL2fy/1ylEi/shb95MAGt3iyECVx+X+R/XOxbVHKVI57D4d5IGj6cXYBhdKkvAw== + dependencies: + "@abp/jquery-validation" "~9.2.0" + jquery-validation-unobtrusive "^4.0.0" + +"@abp/jquery-validation@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0.tgz#97688d2e3c25699d4368ebf7234e04943aa5e6ab" + integrity sha512-UO+T6SqXBrh0ODwvMm840CGbE2fdYNo5oqJL4V4JbHv9uz7MH+k0bB1DK7mFb94iDM7QcglLzIfcN4hLRV7arw== + dependencies: + "@abp/jquery" "~9.2.0" + jquery-validation "^1.21.0" + +"@abp/jquery@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0.tgz#38c249be6eda0cdc899cc8a1f20e5152c39ae9a0" + integrity sha512-sIe3Zk+8549ytydCtDlECZ930PapW/2J0652two/sJwYG/SGUGxYQbw3QnJGFTcL9TFwcWwRj5iWX0gWrLEIyA== + dependencies: + "@abp/core" "~9.2.0" + jquery "~3.7.1" + +"@abp/lodash@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0.tgz#7fa4c9e956c766e34ec4677d2102a6d00f899a4b" + integrity sha512-2elXj/eWw875tF9ixbOm3uqXCxGaG5gL9Tub5k7cP+XhFpNBOYijNaXdN8SeDSxr83WDVWdrk//OQL8BF7XPdw== + dependencies: + "@abp/core" "~9.2.0" + lodash "^4.17.21" + +"@abp/luxon@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0.tgz#865db7b60dba4029134fb4a4b5eaa08c723dcea8" + integrity sha512-LWjczvzu1gFIq0/2fRz+bJW2+zsmXAmfz0I+lZ3wmqUdkViqAqwTa+5NMIl2tC92u4Dv3LGXKtH37Jw8m+XjTg== + dependencies: + "@abp/core" "~9.2.0" + luxon "^3.5.0" + +"@abp/malihu-custom-scrollbar-plugin@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0.tgz#09722b1e7ca34b96e2a68368db0e96cdf9ab0e6c" + integrity sha512-kfDf/1RwGtAlos/7BW+7xbh3LtJ4VG0Z4mxS+b2HsywAwlt/kE5FltfBj2ResQb030bsGNl7A5JglV9Pv1UlPw== + dependencies: + "@abp/core" "~9.2.0" + malihu-custom-scrollbar-plugin "^3.1.5" + +"@abp/moment@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0.tgz#137d688af4df195742061ac2b8a2bf460a027071" + integrity sha512-15aTjYAxHK+upkiZ94XCe8CoSPKMl1D8f6GXJIfwPkuYZ+na4ma17qBu4P8bFsc4gu3ngxYiLHRSzYzr4oCSYQ== + dependencies: + moment "^2.30.1" + +"@abp/select2@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0.tgz#c96d869be0d3298ed7c0888288ea9829e6266cd4" + integrity sha512-V+qx9hw3oe7o0WbG03ZgAjbqRJPVuedzrdy7ExEdueTc6LRP/WEgbVpXhsNISObtouE6Dadwp3iXYSExgNUC6A== + dependencies: + "@abp/core" "~9.2.0" + select2 "^4.0.13" + +"@abp/sweetalert2@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0.tgz#826d6dd0b70c35a7401cc884fb1e82af99a0305d" + integrity sha512-0r338ayjaL9uzmLKE8oHpcMgJeVgVoMYfhQAPINeQHv1TPXuYCLo0aoRNoLsfmUo3ayYBBa3zOrugFIVis7Q6A== + dependencies: + "@abp/core" "~9.2.0" + sweetalert2 "^11.14.1" + +"@abp/timeago@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0.tgz#79bbe6dd32b0ee7df2e8ebd05274a0ecc7882ba7" + integrity sha512-hEUi5re5N1YkDSpaUaUtXF1Mz4YyiEvNzVADbKRz11kbR4ZAFzcvVqsQLeNo7qnuFLfJNAtuzyjkuxwL75kmaA== + dependencies: + "@abp/jquery" "~9.2.0" + timeago "^1.6.7" + +"@abp/utils@~9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0.tgz#bf32ced1175e45fbe010c3cb806c7cd37f85089c" + integrity sha512-aciBuXhzlaqe+o7mNt536bCk425cmxY5BE0wwl13u3pX3LfWYWLEgwl8GS0aeI11TS1/7+1N85RJELyz/+y0hQ== + dependencies: + just-compare "^2.3.0" + +"@fortawesome/fontawesome-free@^6.6.0": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz#8249de9b7e22fcb3ceb5e66090c30a1d5492b81a" + integrity sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA== + +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +bootstrap-datepicker@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz#61612bbe8bf0a69a5bce32bbcdda93ebb6ccf24a" + integrity sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg== + dependencies: + jquery ">=3.4.0 <4.0.0" + +bootstrap-daterangepicker@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz#632e6fb2de4b6360c5c0a9d5f6adb9aace051fe8" + integrity sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g== + dependencies: + jquery ">=1.10" + moment "^2.9.0" + +bootstrap@^5.3.3: + version "5.3.6" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.6.tgz#fbd91ebaff093f5b191a1c01a8c866d24f9fa6e1" + integrity sha512-jX0GAcRzvdwISuvArXn3m7KZscWWFAf1MKBcnzaN02qWMb3jpMoUX4/qgeiGzqyIb4ojulRzs89UCUmGcFSzTA== + +datatables.net-bs5@^2.1.8: + version "2.3.2" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.2.tgz#cffb8007a9f752a997bc70c0dbe9f545edfd18eb" + integrity sha512-1rh0ZTLoiziIQ4oAtgr+IOYVgJfAIceDnbDe535u8kv191pBAdTrKF6ovQO98Xy9mDXLdLNB7QCrLiV/sgPoQw== + dependencies: + datatables.net "2.3.2" + jquery ">=1.7" + +datatables.net@2.3.2, datatables.net@^2.1.8: + version "2.3.2" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.2.tgz#6821f6288e6ad3cb6879c33e0e7e11d4091d330b" + integrity sha512-31TzwIQM0+pr2ZOEOEH6dsHd/WSAl5GDDGPezOHPI3mM2NK4lcDyOoG8xXeWmSbVfbi852LNK5C84fpp4Q+qxg== + dependencies: + jquery ">=1.7" + +jquery-form@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/jquery-form/-/jquery-form-4.3.0.tgz#7d3961c314a1f2d15298f4af1d3943f54f4149c6" + integrity sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ== + dependencies: + jquery ">=1.7.2" + +jquery-mousewheel@>=3.0.6: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.2.2.tgz#48c833f6260ee0c46d438a999e7d0060ec9eed0b" + integrity sha512-JP71xTAg08ZY3hcs9ZbYUZ5i+dkSsz4yRl/zpWkAmtzc+kMs5EfPkpkINSidiLYMaR0MTo3DfFGF9WIezMsFQQ== + dependencies: + jquery ">=1.2.6" + +jquery-validation-unobtrusive@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.0.0.tgz#dfcf25a558496a2c883db6021d10f5398d15f99d" + integrity sha512-1ervYFFv6LX/rp7ktuLnMakHNG0piNRDyROI8Ir3hL1vPIwylAehB1AY3BPrYJnzW3WmwWryZq+Bz4sazZK9iQ== + dependencies: + jquery "^3.6.0" + jquery-validation ">=1.19" + +jquery-validation@>=1.19, jquery-validation@^1.21.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.21.0.tgz#78fc05ab76020912a246af3661b3f54a438bca93" + integrity sha512-xNot0rlUIgu7duMcQ5qb6MGkGL/Z1PQaRJQoZAURW9+a/2PGOUxY36o/WyNeP2T9R6jvWB8Z9lUVvvQWI/Zs5w== + +jquery@>=1.10, jquery@>=1.2.6, "jquery@>=1.5.0 <4.0", jquery@>=1.7, jquery@>=1.7.2, "jquery@>=3.4.0 <4.0.0", jquery@^3.6.0, jquery@~3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" + integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== + +just-compare@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/just-compare/-/just-compare-2.3.0.tgz#a2adcc1d1940536263275f5a1ef1298bcacfeda7" + integrity sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +luxon@^3.5.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.6.1.tgz#d283ffc4c0076cb0db7885ec6da1c49ba97e47b0" + integrity sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ== + +malihu-custom-scrollbar-plugin@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz#310cecc5e59415a1c29e9dfb5d2b6e01d66a29ef" + integrity sha512-lwW3LgI+CNDMPnP4ED2la6oYxWMkCXlnhex+s2wuOLhFDFGnGmQuTQVdRK9bvDLpxs10sGlfErVufJy9ztfgJQ== + dependencies: + jquery-mousewheel ">=3.0.6" + +moment@^2.30.1, moment@^2.9.0: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + +select2@^4.0.13: + version "4.0.13" + resolved "https://registry.yarnpkg.com/select2/-/select2-4.0.13.tgz#0dbe377df3f96167c4c1626033e924372d8ef44d" + integrity sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw== + +sweetalert2@^11.14.1: + version "11.22.0" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.22.0.tgz#da67f7e7e635d0392548a4e3dd1f56979d4a3698" + integrity sha512-pSMuRGDULhh+wrFkO22O0YsIXxs8yFE0O+WVYXcqc/sTa1oRnf0JlR+vfQIRY1QM1UeFfnCjyw6DYnG75/oxiQ== + +timeago@^1.6.7: + version "1.6.7" + resolved "https://registry.yarnpkg.com/timeago/-/timeago-1.6.7.tgz#afd467c29a911e697fc22a81888c7c3022783cb5" + integrity sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ== + dependencies: + jquery ">=1.5.0 <4.0" diff --git a/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.abppkg b/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.abppkg new file mode 100644 index 0000000..515bfe6 --- /dev/null +++ b/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api" +} \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.abppkg.analyze.json b/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.abppkg.analyze.json new file mode 100644 index 0000000..a426f7f --- /dev/null +++ b/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.abppkg.analyze.json @@ -0,0 +1,118 @@ +{ + "name": "Acme.BookStore.HttpApi", + "hash": "", + "contents": [ + { + "namespace": "Acme.BookStore", + "dependsOnModules": [ + { + "declaringAssemblyName": "Acme.BookStore.Application.Contracts", + "namespace": "Acme.BookStore", + "name": "BookStoreApplicationContractsModule" + }, + { + "declaringAssemblyName": "Volo.Abp.PermissionManagement.HttpApi", + "namespace": "Volo.Abp.PermissionManagement.HttpApi", + "name": "AbpPermissionManagementHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.SettingManagement.HttpApi", + "namespace": "Volo.Abp.SettingManagement", + "name": "AbpSettingManagementHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Identity.Pro.HttpApi", + "namespace": "Volo.Abp.Identity", + "name": "AbpIdentityHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Account.Pro.Admin.HttpApi", + "namespace": "Volo.Abp.Account", + "name": "AbpAccountAdminHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.TextTemplateManagement.HttpApi", + "namespace": "Volo.Abp.TextTemplateManagement", + "name": "TextTemplateManagementHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.AuditLogging.HttpApi", + "namespace": "Volo.Abp.AuditLogging", + "name": "AbpAuditLoggingHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.HttpApi", + "namespace": "Volo.Abp.OpenIddict", + "name": "AbpOpenIddictProHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.LanguageManagement.HttpApi", + "namespace": "Volo.Abp.LanguageManagement", + "name": "LanguageManagementHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Gdpr.HttpApi", + "namespace": "Volo.Abp.Gdpr", + "name": "AbpGdprHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.Account.Pro.Public.HttpApi", + "namespace": "Volo.Abp.Account", + "name": "AbpAccountPublicHttpApiModule" + }, + { + "declaringAssemblyName": "Volo.Abp.FeatureManagement.HttpApi", + "namespace": "Volo.Abp.FeatureManagement", + "name": "AbpFeatureManagementHttpApiModule" + } + ], + "implementingInterfaces": [ + { + "name": "IAbpModule", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IAbpModule" + }, + { + "name": "IOnPreApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" + }, + { + "name": "IOnApplicationInitialization", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationInitialization" + }, + { + "name": "IOnPostApplicationInitialization", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" + }, + { + "name": "IOnApplicationShutdown", + "namespace": "Volo.Abp", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.IOnApplicationShutdown" + }, + { + "name": "IPreConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPreConfigureServices" + }, + { + "name": "IPostConfigureServices", + "namespace": "Volo.Abp.Modularity", + "declaringAssemblyName": "Volo.Abp.Core", + "fullName": "Volo.Abp.Modularity.IPostConfigureServices" + } + ], + "contentType": "abpModule", + "name": "BookStoreHttpApiModule", + "summary": null + } + ] +} \ No newline at end of file diff --git a/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.csproj b/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.csproj new file mode 100644 index 0000000..ad77a4b --- /dev/null +++ b/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.csproj @@ -0,0 +1,28 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + + + + + + + + + + + + + + + diff --git a/src/Acme.BookStore.HttpApi/BookStoreHttpApiModule.cs b/src/Acme.BookStore.HttpApi/BookStoreHttpApiModule.cs new file mode 100644 index 0000000..edebc74 --- /dev/null +++ b/src/Acme.BookStore.HttpApi/BookStoreHttpApiModule.cs @@ -0,0 +1,41 @@ +using Localization.Resources.AbpUi; +using Acme.BookStore.Localization; +using Volo.Abp.Account; +using Volo.Abp.SettingManagement; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.HttpApi; +using Volo.Abp.Localization; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore; + + [DependsOn( + typeof(BookStoreApplicationContractsModule), + typeof(AbpPermissionManagementHttpApiModule), + typeof(AbpSettingManagementHttpApiModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpIdentityHttpApiModule), + typeof(AbpTenantManagementHttpApiModule), + typeof(AbpFeatureManagementHttpApiModule) + )] +public class BookStoreHttpApiModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + ConfigureLocalization(); + } + + private void ConfigureLocalization() + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpUiResource) + ); + }); + } +} diff --git a/src/Acme.BookStore.HttpApi/Controllers/BookStoreController.cs b/src/Acme.BookStore.HttpApi/Controllers/BookStoreController.cs new file mode 100644 index 0000000..a8866e9 --- /dev/null +++ b/src/Acme.BookStore.HttpApi/Controllers/BookStoreController.cs @@ -0,0 +1,14 @@ +using Acme.BookStore.Localization; +using Volo.Abp.AspNetCore.Mvc; + +namespace Acme.BookStore.Controllers; + +/* Inherit your controllers from this class. + */ +public abstract class BookStoreController : AbpControllerBase +{ + protected BookStoreController() + { + LocalizationResource = typeof(BookStoreResource); + } +} diff --git a/src/Acme.BookStore.HttpApi/Controllers/CheckController.cs b/src/Acme.BookStore.HttpApi/Controllers/CheckController.cs new file mode 100644 index 0000000..d61d8c5 --- /dev/null +++ b/src/Acme.BookStore.HttpApi/Controllers/CheckController.cs @@ -0,0 +1,40 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; +using VaultSharp; +using VaultSharp.V1.AuthMethods; +using VaultSharp.V1.AuthMethods.Token; +using YamlDotNet.Core.Tokens; + +namespace Acme.BookStore.Controllers; + +[Route("api/[controller]")] +public class CheckController : Controller +{ + private readonly IConfiguration _configuration; + + public CheckController(IConfiguration configuration) + { + this._configuration = configuration; + } + + [HttpGet("GetVal")] + public async Task GetValueAsync() + { + var authMethod = new TokenAuthMethodInfo(_configuration.GetValue("vaultsetting:token")); + var vaultClientSettings = new VaultClientSettings(_configuration.GetValue("vaultsetting:url"), authMethod); + var vaultClient = new VaultClient(vaultClientSettings); + var result = await vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync(_configuration.GetValue("vaultsetting:path"), mountPoint: _configuration.GetValue("vaultsetting:mp")); + + return result.Data.Data.TryGetValue("testvalue", out var value) + ? value.ToString() ?? "" + : _configuration.GetConnectionString("Default") ?? ""; + } +} diff --git a/src/Acme.BookStore.HttpApi/Models/Test/TestModel.cs b/src/Acme.BookStore.HttpApi/Models/Test/TestModel.cs new file mode 100644 index 0000000..f8ca625 --- /dev/null +++ b/src/Acme.BookStore.HttpApi/Models/Test/TestModel.cs @@ -0,0 +1,10 @@ +using System; + +namespace Acme.BookStore.Models.Test; + +public class TestModel +{ + public string? Name { get; set; } + + public DateTime BirthDate { get; set; } +} diff --git a/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.abppkg b/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.abppkg new file mode 100644 index 0000000..a686451 --- /dev/null +++ b/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj b/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj new file mode 100644 index 0000000..229a457 --- /dev/null +++ b/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj @@ -0,0 +1,20 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + + + + + + + diff --git a/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestBase.cs b/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestBase.cs new file mode 100644 index 0000000..41a1e6c --- /dev/null +++ b/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestBase.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Modularity; + +namespace Acme.BookStore; + +public abstract class BookStoreApplicationTestBase : BookStoreTestBase + where TStartupModule : IAbpModule +{ + +} diff --git a/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestModule.cs b/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestModule.cs new file mode 100644 index 0000000..dd94190 --- /dev/null +++ b/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestModule.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Modularity; + +namespace Acme.BookStore; + +[DependsOn( + typeof(BookStoreApplicationModule), + typeof(BookStoreDomainTestModule) +)] +public class BookStoreApplicationTestModule : AbpModule +{ + +} diff --git a/test/Acme.BookStore.Application.Tests/Samples/SampleAppServiceTests.cs b/test/Acme.BookStore.Application.Tests/Samples/SampleAppServiceTests.cs new file mode 100644 index 0000000..c1e6fa6 --- /dev/null +++ b/test/Acme.BookStore.Application.Tests/Samples/SampleAppServiceTests.cs @@ -0,0 +1,34 @@ +using Shouldly; +using System.Threading.Tasks; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Xunit; + +namespace Acme.BookStore.Samples; + +/* This is just an example test class. + * Normally, you don't test code of the modules you are using + * (like IIdentityUserAppService here). + * Only test your own application services. + */ +public abstract class SampleAppServiceTests : BookStoreApplicationTestBase + where TStartupModule : IAbpModule +{ + private readonly IIdentityUserAppService _userAppService; + + protected SampleAppServiceTests() + { + _userAppService = GetRequiredService(); + } + + [Fact] + public async Task Initial_Data_Should_Contain_Admin_User() + { + //Act + var result = await _userAppService.GetListAsync(new GetIdentityUsersInput()); + + //Assert + result.TotalCount.ShouldBeGreaterThan(0); + result.Items.ShouldContain(u => u.UserName == "admin"); + } +} diff --git a/test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.abppkg b/test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.abppkg new file mode 100644 index 0000000..a686451 --- /dev/null +++ b/test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.csproj b/test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.csproj new file mode 100644 index 0000000..1dc3edf --- /dev/null +++ b/test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.csproj @@ -0,0 +1,20 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + + + + + + + diff --git a/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestBase.cs b/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestBase.cs new file mode 100644 index 0000000..fab79f8 --- /dev/null +++ b/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestBase.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Modularity; + +namespace Acme.BookStore; + +/* Inherit from this class for your domain layer tests. */ +public abstract class BookStoreDomainTestBase : BookStoreTestBase + where TStartupModule : IAbpModule +{ + +} diff --git a/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestModule.cs b/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestModule.cs new file mode 100644 index 0000000..a3a77ea --- /dev/null +++ b/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestModule.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Modularity; + +namespace Acme.BookStore; + +[DependsOn( + typeof(BookStoreDomainModule), + typeof(BookStoreTestBaseModule) +)] +public class BookStoreDomainTestModule : AbpModule +{ + +} diff --git a/test/Acme.BookStore.Domain.Tests/Samples/SampleDomainTests.cs b/test/Acme.BookStore.Domain.Tests/Samples/SampleDomainTests.cs new file mode 100644 index 0000000..e608ba3 --- /dev/null +++ b/test/Acme.BookStore.Domain.Tests/Samples/SampleDomainTests.cs @@ -0,0 +1,46 @@ +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Xunit; + +namespace Acme.BookStore.Samples; + +/* This is just an example test class. + * Normally, you don't test code of the modules you are using + * (like IdentityUserManager here). + * Only test your own domain services. + */ +public abstract class SampleDomainTests : BookStoreDomainTestBase + where TStartupModule : IAbpModule +{ + private readonly IIdentityUserRepository _identityUserRepository; + private readonly IdentityUserManager _identityUserManager; + + protected SampleDomainTests() + { + _identityUserRepository = GetRequiredService(); + _identityUserManager = GetRequiredService(); + } + + [Fact] + public async Task Should_Set_Email_Of_A_User() + { + IdentityUser adminUser; + + /* Need to manually start Unit Of Work because + * FirstOrDefaultAsync should be executed while db connection / context is available. + */ + await WithUnitOfWorkAsync(async () => + { + adminUser = await _identityUserRepository + .FindByNormalizedUserNameAsync("ADMIN"); + + await _identityUserManager.SetEmailAsync(adminUser, "newemail@abp.io"); + await _identityUserRepository.UpdateAsync(adminUser); + }); + + adminUser = await _identityUserRepository.FindByNormalizedUserNameAsync("ADMIN"); + adminUser.Email.ShouldBe("newemail@abp.io"); + } +} diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/Acme.BookStore.EntityFrameworkCore.Tests.abppkg b/test/Acme.BookStore.EntityFrameworkCore.Tests/Acme.BookStore.EntityFrameworkCore.Tests.abppkg new file mode 100644 index 0000000..a686451 --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/Acme.BookStore.EntityFrameworkCore.Tests.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/Acme.BookStore.EntityFrameworkCore.Tests.csproj b/test/Acme.BookStore.EntityFrameworkCore.Tests/Acme.BookStore.EntityFrameworkCore.Tests.csproj new file mode 100644 index 0000000..d2b7f03 --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/Acme.BookStore.EntityFrameworkCore.Tests.csproj @@ -0,0 +1,21 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + + + + + + + + diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Applications/EfCoreSampleAppServiceTests.cs b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Applications/EfCoreSampleAppServiceTests.cs new file mode 100644 index 0000000..5959406 --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Applications/EfCoreSampleAppServiceTests.cs @@ -0,0 +1,10 @@ +using Acme.BookStore.Samples; +using Xunit; + +namespace Acme.BookStore.EntityFrameworkCore.Applications; + +[Collection(BookStoreTestConsts.CollectionDefinitionName)] +public class EfCoreSampleAppServiceTests : SampleAppServiceTests +{ + +} diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreCollection.cs b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreCollection.cs new file mode 100644 index 0000000..07af60d --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreCollection.cs @@ -0,0 +1,9 @@ +using Xunit; + +namespace Acme.BookStore.EntityFrameworkCore; + +[CollectionDefinition(BookStoreTestConsts.CollectionDefinitionName)] +public class BookStoreEntityFrameworkCoreCollection : ICollectionFixture +{ + +} diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreCollectionFixtureBase.cs b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreCollectionFixtureBase.cs new file mode 100644 index 0000000..fff19f4 --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreCollectionFixtureBase.cs @@ -0,0 +1,9 @@ +using Acme.BookStore.EntityFrameworkCore; +using Xunit; + +namespace Acme.BookStore.EntityFrameworkCore; + +public class BookStoreEntityFrameworkCoreCollectionFixtureBase : ICollectionFixture +{ + +} diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreFixture.cs b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreFixture.cs new file mode 100644 index 0000000..1493bf1 --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreFixture.cs @@ -0,0 +1,11 @@ +using System; + +namespace Acme.BookStore.EntityFrameworkCore; + +public class BookStoreEntityFrameworkCoreFixture : IDisposable +{ + public void Dispose() + { + + } +} diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreTestBase.cs b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreTestBase.cs new file mode 100644 index 0000000..0d3786f --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreTestBase.cs @@ -0,0 +1,8 @@ +using Volo.Abp; + +namespace Acme.BookStore.EntityFrameworkCore; + +public abstract class BookStoreEntityFrameworkCoreTestBase : BookStoreTestBase +{ + +} diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreTestModule.cs b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreTestModule.cs new file mode 100644 index 0000000..c6685bb --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/BookStoreEntityFrameworkCoreTestModule.cs @@ -0,0 +1,77 @@ +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.Sqlite; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; + +namespace Acme.BookStore.EntityFrameworkCore; + +[DependsOn( + typeof(BookStoreApplicationTestModule), + typeof(BookStoreEntityFrameworkCoreModule), + typeof(AbpEntityFrameworkCoreSqliteModule) +)] +public class BookStoreEntityFrameworkCoreTestModule : AbpModule +{ + private SqliteConnection? _sqliteConnection; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.SaveStaticFeaturesToDatabase = false; + options.IsDynamicFeatureStoreEnabled = false; + }); + Configure(options => + { + options.SaveStaticPermissionsToDatabase = false; + options.IsDynamicPermissionStoreEnabled = false; + }); + context.Services.AddAlwaysDisableUnitOfWorkTransaction(); + + ConfigureInMemorySqlite(context.Services); + + } + + private void ConfigureInMemorySqlite(IServiceCollection services) + { + _sqliteConnection = CreateDatabaseAndGetConnection(); + + services.Configure(options => + { + options.Configure(context => + { + context.DbContextOptions.UseSqlite(_sqliteConnection); + }); + }); + } + + public override void OnApplicationShutdown(ApplicationShutdownContext context) + { + _sqliteConnection?.Dispose(); + } + + private static SqliteConnection CreateDatabaseAndGetConnection() + { + var connection = new SqliteConnection("Data Source=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + + using (var context = new BookStoreDbContext(options)) + { + context.GetService().CreateTables(); + } + + return connection; + } +} diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Domains/EfCoreSampleDomainTests.cs b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Domains/EfCoreSampleDomainTests.cs new file mode 100644 index 0000000..e144ede --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Domains/EfCoreSampleDomainTests.cs @@ -0,0 +1,10 @@ +using Acme.BookStore.Samples; +using Xunit; + +namespace Acme.BookStore.EntityFrameworkCore.Domains; + +[Collection(BookStoreTestConsts.CollectionDefinitionName)] +public class EfCoreSampleDomainTests : SampleDomainTests +{ + +} diff --git a/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs new file mode 100644 index 0000000..d83dda5 --- /dev/null +++ b/test/Acme.BookStore.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs @@ -0,0 +1,40 @@ +using System; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Identity; +using Xunit; + +namespace Acme.BookStore.EntityFrameworkCore.Samples; + +/* This is just an example test class. + * Normally, you don't test ABP framework code + * Only test your custom repository methods. + */ +[Collection(BookStoreTestConsts.CollectionDefinitionName)] +public class SampleRepositoryTests : BookStoreEntityFrameworkCoreTestBase +{ + private readonly IRepository _appUserRepository; + + public SampleRepositoryTests() + { + _appUserRepository = GetRequiredService>(); + } + + [Fact] + public async Task Should_Query_AppUser() + { + /* Need to manually start Unit Of Work because + * FirstOrDefaultAsync should be executed while db connection / context is available. + */ + await WithUnitOfWorkAsync(async () => + { + //Act + var adminUser = await _appUserRepository + .FirstOrDefaultAsync(u => u.UserName == "admin"); + + //Assert + adminUser.ShouldNotBeNull(); + }); + } +} diff --git a/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.abppkg b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.abppkg new file mode 100644 index 0000000..a686451 --- /dev/null +++ b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.csproj b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.csproj new file mode 100644 index 0000000..ea4e073 --- /dev/null +++ b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.csproj @@ -0,0 +1,36 @@ + + + + Exe + net9.0 + enable + + + + + + PreserveNewest + Always + + + + PreserveNewest + Always + + + + + + + + + + + + + + + + + + diff --git a/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/BookStoreConsoleApiClientModule.cs b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/BookStoreConsoleApiClientModule.cs new file mode 100644 index 0000000..7cf8c7b --- /dev/null +++ b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/BookStoreConsoleApiClientModule.cs @@ -0,0 +1,30 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Polly; +using Volo.Abp.Autofac; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.IdentityModel; +using Volo.Abp.Modularity; + +namespace Acme.BookStore.HttpApi.Client.ConsoleTestApp; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(BookStoreHttpApiClientModule), + typeof(AbpHttpClientIdentityModelModule) + )] +public class BookStoreConsoleApiClientModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(options => + { + options.ProxyClientBuildActions.Add((remoteServiceName, clientBuilder) => + { + clientBuilder.AddTransientHttpErrorPolicy( + policyBuilder => policyBuilder.WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(Math.Pow(2, i))) + ); + }); + }); + } +} diff --git a/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs new file mode 100644 index 0000000..a2b29c6 --- /dev/null +++ b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity; +using Volo.Abp.Account; + +namespace Acme.BookStore.HttpApi.Client.ConsoleTestApp; + +public class ClientDemoService : ITransientDependency +{ + private readonly IProfileAppService _profileAppService; + private readonly IIdentityUserAppService _identityUserAppService; + + public ClientDemoService( + IProfileAppService profileAppService, + IIdentityUserAppService identityUserAppService) + { + _profileAppService = profileAppService; + _identityUserAppService = identityUserAppService; + } + + public async Task RunAsync() + { + var profileDto = await _profileAppService.GetAsync(); + Console.WriteLine($"UserName : {profileDto.UserName}"); + Console.WriteLine($"Email : {profileDto.Email}"); + Console.WriteLine($"Name : {profileDto.Name}"); + Console.WriteLine($"Surname : {profileDto.Surname}"); + Console.WriteLine(); + + var resultDto = await _identityUserAppService.GetListAsync(new GetIdentityUsersInput()); + Console.WriteLine($"Total users: {resultDto.TotalCount}"); + foreach (var identityUserDto in resultDto.Items) + { + Console.WriteLine($"- [{identityUserDto.Id}] {identityUserDto.Name}"); + } + } +} diff --git a/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Program.cs b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Program.cs new file mode 100644 index 0000000..cdce3aa --- /dev/null +++ b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Program.cs @@ -0,0 +1,33 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; + +namespace Acme.BookStore.HttpApi.Client.ConsoleTestApp; + +class Program +{ + static async Task Main(string[] args) + { + using (var application = await AbpApplicationFactory.CreateAsync(options => + { + var builder = new ConfigurationBuilder(); + builder.AddJsonFile("appsettings.json", false); + builder.AddJsonFile("appsettings.secrets.json", true); + options.Services.ReplaceConfiguration(builder.Build()); + options.UseAutofac(); + })) + { + await application.InitializeAsync(); + + var demo = application.ServiceProvider.GetRequiredService(); + await demo.RunAsync(); + + Console.WriteLine("Press ENTER to stop application..."); + Console.ReadLine(); + + await application.ShutdownAsync(); + } + } +} diff --git a/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.json b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.json new file mode 100644 index 0000000..b4c5534 --- /dev/null +++ b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.json @@ -0,0 +1,17 @@ +{ + "RemoteServices": { + "Default": { + "BaseUrl": "https://localhost:44380/" + } + }, + "IdentityClients": { + "Default": { + "GrantType": "password", + "ClientId": "BookStore_App", + "UserName": "admin", + "UserPassword": "1q2w3E*", + "Authority": "https://localhost:44380/", + "Scope": "BookStore" + } + } +} diff --git a/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json new file mode 100644 index 0000000..2c63c08 --- /dev/null +++ b/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} diff --git a/test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.abppkg b/test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.abppkg new file mode 100644 index 0000000..a686451 --- /dev/null +++ b/test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.abppkg @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.csproj b/test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.csproj new file mode 100644 index 0000000..5727950 --- /dev/null +++ b/test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.csproj @@ -0,0 +1,45 @@ + + + + + + net9.0 + enable + Acme.BookStore + + + + + + PreserveNewest + true + PreserveNewest + + + + PreserveNewest + Always + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers + + + + + + + + diff --git a/test/Acme.BookStore.TestBase/BookStoreTestBase.cs b/test/Acme.BookStore.TestBase/BookStoreTestBase.cs new file mode 100644 index 0000000..48e98e2 --- /dev/null +++ b/test/Acme.BookStore.TestBase/BookStoreTestBase.cs @@ -0,0 +1,67 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Modularity; +using Volo.Abp.Uow; +using Volo.Abp.Testing; + +namespace Acme.BookStore; + +public abstract class BookStoreTestBase : AbpIntegratedTest + where TStartupModule : IAbpModule +{ + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } + + protected override void BeforeAddApplication(IServiceCollection services) + { + var builder = new ConfigurationBuilder(); + builder.AddJsonFile("appsettings.json", false); + builder.AddJsonFile("appsettings.secrets.json", true); + services.ReplaceConfiguration(builder.Build()); + } + + protected virtual Task WithUnitOfWorkAsync(Func func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func action) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + await action(); + + await uow.CompleteAsync(); + } + } + } + + protected virtual Task WithUnitOfWorkAsync(Func> func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func> func) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + var result = await func(); + await uow.CompleteAsync(); + return result; + } + } + } +} diff --git a/test/Acme.BookStore.TestBase/BookStoreTestBaseModule.cs b/test/Acme.BookStore.TestBase/BookStoreTestBaseModule.cs new file mode 100644 index 0000000..5823efe --- /dev/null +++ b/test/Acme.BookStore.TestBase/BookStoreTestBaseModule.cs @@ -0,0 +1,47 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Authorization; +using Volo.Abp.Autofac; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Data; +using Volo.Abp.Modularity; +using Volo.Abp.Threading; + +namespace Acme.BookStore; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpTestBaseModule), + typeof(AbpAuthorizationModule), + typeof(AbpBackgroundJobsAbstractionsModule) +)] +public class BookStoreTestBaseModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.IsJobExecutionEnabled = false; + }); + + context.Services.AddAlwaysAllowAuthorization(); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + SeedTestData(context); + } + + private static void SeedTestData(ApplicationInitializationContext context) + { + AsyncHelper.RunSync(async () => + { + using (var scope = context.ServiceProvider.CreateScope()) + { + await scope.ServiceProvider + .GetRequiredService() + .SeedAsync(); + } + }); + } +} diff --git a/test/Acme.BookStore.TestBase/BookStoreTestConsts.cs b/test/Acme.BookStore.TestBase/BookStoreTestConsts.cs new file mode 100644 index 0000000..f2519f3 --- /dev/null +++ b/test/Acme.BookStore.TestBase/BookStoreTestConsts.cs @@ -0,0 +1,6 @@ +namespace Acme.BookStore; + +public static class BookStoreTestConsts +{ + public const string CollectionDefinitionName = "BookStore collection"; +} diff --git a/test/Acme.BookStore.TestBase/BookStoreTestDataBuilder.cs b/test/Acme.BookStore.TestBase/BookStoreTestDataBuilder.cs new file mode 100644 index 0000000..7ce7376 --- /dev/null +++ b/test/Acme.BookStore.TestBase/BookStoreTestDataBuilder.cs @@ -0,0 +1,26 @@ +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.MultiTenancy; + +namespace Acme.BookStore; + +public class BookStoreTestDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly ICurrentTenant _currentTenant; + + public BookStoreTestDataSeedContributor(ICurrentTenant currentTenant) + { + _currentTenant = currentTenant; + } + + public Task SeedAsync(DataSeedContext context) + { + /* Seed additional test data... */ + + using (_currentTenant.Change(context?.TenantId)) + { + return Task.CompletedTask; + } + } +} diff --git a/test/Acme.BookStore.TestBase/Security/FakeCurrentPrincipalAccessor.cs b/test/Acme.BookStore.TestBase/Security/FakeCurrentPrincipalAccessor.cs new file mode 100644 index 0000000..8471488 --- /dev/null +++ b/test/Acme.BookStore.TestBase/Security/FakeCurrentPrincipalAccessor.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Security.Claims; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Security.Claims; + +namespace Acme.BookStore.Security; + +[Dependency(ReplaceServices = true)] +public class FakeCurrentPrincipalAccessor : ThreadCurrentPrincipalAccessor +{ + protected override ClaimsPrincipal GetClaimsPrincipal() + { + return GetPrincipal(); + } + + private ClaimsPrincipal GetPrincipal() + { + return new ClaimsPrincipal(new ClaimsIdentity(new List + { + new Claim(AbpClaimTypes.UserId, "2e701e62-0953-4dd3-910b-dc6cc93ccb0d"), + new Claim(AbpClaimTypes.UserName, "admin"), + new Claim(AbpClaimTypes.Email, "admin@abp.io") + })); + } +} diff --git a/test/Acme.BookStore.TestBase/appsettings.json b/test/Acme.BookStore.TestBase/appsettings.json new file mode 100644 index 0000000..0db3279 --- /dev/null +++ b/test/Acme.BookStore.TestBase/appsettings.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/test/Acme.BookStore.TestBase/appsettings.secrets.json b/test/Acme.BookStore.TestBase/appsettings.secrets.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/test/Acme.BookStore.TestBase/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file