From 834866663a3c7e96ee94e4ad65bfca95a7b0cee7 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 25 Feb 2024 18:05:10 +0000 Subject: [PATCH] Inits the workflow configuration --- .../Workflow/INominativeQuery.cs | 9 +- .../Billing/NominativeServiceCommand.cs | 7 +- .../Properties/launchSettings.json | 12 + .../Account/ForgotPasswordViewModel.cs | 2 +- .../Blogspot/FileSystemApiController.cs | 2 +- .../Blogspot/FileSystemStream.cs | 2 +- .../Business/BillingController.cs | 2 +- .../Business/FrontOfficeApiController.cs | 17 +- .../HairCut/HairCutController.cs | 2 +- src/Yavsc/Config.cs | 36 +- .../Accounting/AccountController.cs | 28 +- .../Accounting/ManageController.cs | 2 +- .../AdministrationController.cs | 4 +- .../Contracting/ActivityController.cs | 6 +- .../Contracting/CommandController.cs | 2 +- .../Contracting/CommandFormsController.cs | 2 +- .../Controllers/Contracting/DoController.cs | 2 +- .../Contracting/FrontOfficeController.cs | 4 +- .../Haircut/HairCutCommandController.cs | 2 +- src/Yavsc/Controllers/IT/GitController.cs | 2 +- src/Yavsc/Controllers/IT/ProjectController.cs | 4 +- src/Yavsc/Helpers/EventHelpers.cs | 2 +- src/Yavsc/Helpers/FileSystemHelpers.cs | 14 +- src/Yavsc/Helpers/GoogleOAuthHelpers.cs | 4 +- src/Yavsc/Helpers/PayPalHelpers.cs | 17 +- src/Yavsc/Helpers/TeXHelpers.cs | 2 +- src/Yavsc/HostingExtensions.cs | 350 + src/Yavsc/Hubs/ChatHub.cs | 16 +- src/Yavsc/Models/ApplicationDbContext.cs | 16 +- src/Yavsc/Pages/Account/AccessDenied.cshtml | 10 + .../Pages/Account/AccessDenied.cshtml.cs | 13 + .../Pages/Account/ForgotPassword/Index.cshtml | 26 + .../Account/ForgotPassword/Index.cshtml.cs | 113 + src/Yavsc/Pages/Account/Login/Index.cshtml | 136 + src/Yavsc/Pages/Account/Login/Index.cshtml.cs | 216 + src/Yavsc/Pages/Account/Login/InputModel.cs | 17 + src/Yavsc/Pages/Account/Login/LoginOptions.cs | 12 + src/Yavsc/Pages/Account/Login/ViewModel.cs | 28 + src/Yavsc/Pages/Account/Logout/Index.cshtml | 17 + .../Pages/Account/Logout/Index.cshtml.cs | 104 + .../Pages/Account/Logout/LoggedOut.cshtml | 30 + .../Pages/Account/Logout/LoggedOut.cshtml.cs | 36 + .../Account/Logout/LoggedOutViewModel.cs | 15 + .../Pages/Account/Logout/LogoutOptions.cs | 11 + .../{Views => Pages}/Activity/Create.cshtml | 0 .../{Views => Pages}/Activity/Delete.cshtml | 0 .../{Views => Pages}/Activity/Details.cshtml | 0 .../{Views => Pages}/Activity/Edit.cshtml | 0 .../{Views => Pages}/Activity/Index.cshtml | 0 src/Yavsc/Pages/Ciba/All.cshtml | 48 + src/Yavsc/Pages/Ciba/All.cshtml.cs | 28 + src/Yavsc/Pages/Ciba/Consent.cshtml | 98 + src/Yavsc/Pages/Ciba/Consent.cshtml.cs | 228 + src/Yavsc/Pages/Ciba/ConsentOptions.cs | 14 + src/Yavsc/Pages/Ciba/Index.cshtml | 30 + src/Yavsc/Pages/Ciba/Index.cshtml.cs | 42 + src/Yavsc/Pages/Ciba/InputModel.cs | 12 + src/Yavsc/Pages/Ciba/ViewModel.cs | 34 + src/Yavsc/Pages/Ciba/_ScopeListItem.cshtml | 47 + src/Yavsc/Pages/Consent/ConsentOptions.cs | 14 + src/Yavsc/Pages/Consent/Index.cshtml | 107 + src/Yavsc/Pages/Consent/Index.cshtml.cs | 236 + src/Yavsc/Pages/Consent/InputModel.cs | 13 + src/Yavsc/Pages/Consent/ViewModel.cs | 33 + src/Yavsc/Pages/Consent/_ScopeListItem.cshtml | 47 + src/Yavsc/Pages/Device/DeviceOptions.cs | 15 + src/Yavsc/Pages/Device/Index.cshtml | 141 + src/Yavsc/Pages/Device/Index.cshtml.cs | 220 + src/Yavsc/Pages/Device/InputModel.cs | 14 + src/Yavsc/Pages/Device/Success.cshtml | 12 + src/Yavsc/Pages/Device/Success.cshtml.cs | 16 + src/Yavsc/Pages/Device/ViewModel.cs | 25 + src/Yavsc/Pages/Device/_ScopeListItem.cshtml | 35 + src/Yavsc/Pages/Diagnostics/Index.cshtml | 67 + src/Yavsc/Pages/Diagnostics/Index.cshtml.cs | 34 + src/Yavsc/Pages/Diagnostics/ViewModel.cs | 32 + src/Yavsc/Pages/Extensions.cs | 42 + src/Yavsc/Pages/ExternalLogin/Callback.cshtml | 19 + .../Pages/ExternalLogin/Callback.cshtml.cs | 203 + .../Pages/ExternalLogin/Challenge.cshtml | 19 + .../Pages/ExternalLogin/Challenge.cshtml.cs | 48 + src/Yavsc/Pages/Grants/Index.cshtml | 90 + src/Yavsc/Pages/Grants/Index.cshtml.cs | 82 + src/Yavsc/Pages/Grants/ViewModel.cs | 22 + src/Yavsc/Pages/Home/Error/Index.cshtml | 35 + src/Yavsc/Pages/Home/Error/Index.cshtml.cs | 40 + src/Yavsc/Pages/Home/Error/ViewModel.cs | 20 + src/Yavsc/Pages/IdentityServerSuppressions.cs | 22 + src/Yavsc/Pages/Index.cshtml | 46 + src/Yavsc/Pages/Index.cshtml.cs | 27 + src/Yavsc/Pages/Log.cs | 87 + src/Yavsc/Pages/Redirect/Index.cshtml | 14 + src/Yavsc/Pages/Redirect/Index.cshtml.cs | 25 + src/Yavsc/Pages/SecurityHeadersAttribute.cs | 57 + .../Pages/ServerSideSessions/Index.cshtml | 147 + .../Pages/ServerSideSessions/Index.cshtml.cs | 67 + src/Yavsc/Pages/Shared/_Layout.cshtml | 29 + src/Yavsc/Pages/Shared/_Nav.cshtml | 43 + .../Pages/Shared/_ValidationSummary.cshtml | 7 + src/Yavsc/Pages/Telemetry.cs | 142 + src/Yavsc/Pages/_ViewImports.cshtml | 40 + src/Yavsc/Pages/_ViewStart.cshtml | 3 + src/Yavsc/Program.cs | 13 +- ...sc.Resources.YavscLocalisation.Designer.cs | 4 +- src/Yavsc/Services/ChatHubConnexionManager.cs | 5 +- .../Services/GoogleApis/CalendarManager.cs | 4 +- .../DataProtectionSettings.cs | 0 src/Yavsc/Startup.cs | 77 + src/Yavsc/Startup/Startup.FileServer.cs | 99 - src/Yavsc/Startup/Startup.SanityChecks.cs | 40 - src/Yavsc/Startup/Startup.WebSockets.cs | 17 - src/Yavsc/Startup/Startup.Workflow.cs | 103 - src/Yavsc/Startup/Startup.cs | 417 - src/Yavsc/ViewComponents/BillViewComponent.cs | 10 +- src/Yavsc/Views/Command/Create.cshtml | 2 +- src/Yavsc/Views/Manage/SetActivity.cshtml | 2 +- src/Yavsc/Views/Manage/SetAddress.cshtml | 2 +- src/Yavsc/Views/Project/Delete.cshtml | 8 +- src/Yavsc/Views/Project/Details.cshtml | 8 +- src/Yavsc/Views/Project/Edit.cshtml | 4 +- src/Yavsc/Views/Project/Index.cshtml | 8 +- src/Yavsc/Views/Shared/_Layout.cshtml | 2 +- .../Views/Shared/_MapScriptsPartial.cshtml | 2 +- src/Yavsc/Yavsc.csproj | 28 +- ...-key-4AC79F6000E1D28FCECAAEAF16AB0335.json | 1 + ...-key-60A9276B16276CDD75FB4BEF8B781BA8.json | 1 + src/Yavsc/sql.pgsql | 6 + .../album-rtl/index.html | 256 + .../bootstrap-5.0.2-examples/album/index.html | 256 + .../assets/brand/bootstrap-logo-white.svg | 1 + .../assets/brand/bootstrap-logo.svg | 1 + .../assets/dist/css/bootstrap.min.css | 7 + .../assets/dist/css/bootstrap.min.css.map | 1 + .../assets/dist/css/bootstrap.rtl.min.css | 7 + .../assets/dist/css/bootstrap.rtl.min.css.map | 1 + .../assets/dist/js/bootstrap.bundle.min.js | 7 + .../dist/js/bootstrap.bundle.min.js.map | 1 + .../blog-rtl/index.html | 244 + .../bootstrap-5.0.2-examples/blog/blog.css | 103 + .../blog/blog.rtl.css | 103 + .../bootstrap-5.0.2-examples/blog/index.html | 297 + .../carousel-rtl/index.html | 214 + .../carousel/carousel.css | 93 + .../carousel/carousel.rtl.css | 89 + .../carousel/index.html | 214 + .../cheatsheet-rtl/index.html | 1760 +++ .../cheatsheet/cheatsheet.css | 169 + .../cheatsheet/cheatsheet.js | 73 + .../cheatsheet/cheatsheet.rtl.css | 162 + .../cheatsheet/index.html | 1745 +++ .../checkout-rtl/index.html | 267 + .../checkout/form-validation.css | 3 + .../checkout/form-validation.js | 20 + .../checkout/index.html | 268 + .../bootstrap-5.0.2-examples/cover/cover.css | 53 + .../bootstrap-5.0.2-examples/cover/index.html | 68 + .../dashboard-rtl/dashboard.js | 53 + .../dashboard-rtl/index.html | 285 + .../dashboard/dashboard.css | 100 + .../dashboard/dashboard.js | 53 + .../dashboard/dashboard.rtl.css | 96 + .../dashboard/index.html | 285 + .../features/features.css | 61 + .../features/index.html | 326 + .../features/unsplash-photo-1.jpg | Bin 0 -> 10451 bytes .../features/unsplash-photo-2.jpg | Bin 0 -> 113018 bytes .../features/unsplash-photo-3.jpg | Bin 0 -> 40607 bytes .../bootstrap-5.0.2-examples/grid/grid.css | 13 + .../bootstrap-5.0.2-examples/grid/index.html | 223 + .../headers/headers.css | 32 + .../headers/index.html | 333 + .../heroes/bootstrap-docs.png | Bin 0 -> 371399 bytes .../heroes/bootstrap-themes.png | Bin 0 -> 278159 bytes .../heroes/heroes.css | 11 + .../heroes/index.html | 163 + .../jumbotron/index.html | 81 + .../masonry/index.html | 143 + .../navbar-bottom/index.html | 80 + .../navbar-fixed/index.html | 79 + .../navbar-fixed/navbar-top-fixed.css | 5 + .../navbar-static/index.html | 79 + .../navbar-static/navbar-top.css | 4 + .../navbars/index.html | 455 + .../navbars/navbar.css | 7 + .../offcanvas-navbar/index.html | 181 + .../offcanvas-navbar/offcanvas.css | 67 + .../offcanvas-navbar/offcanvas.js | 7 + .../offcanvas/index.html | 12 + .../pricing/index.html | 223 + .../pricing/pricing.css | 11 + .../product/index.html | 187 + .../product/product.css | 69 + .../sidebars/index.html | 427 + .../sidebars/sidebars.css | 89 + .../sidebars/sidebars.js | 8 + .../sign-in/index.html | 67 + .../sign-in/signin.css | 39 + .../starter-template/index.html | 90 + .../starter-template/starter-template.css | 18 + .../sticky-footer-navbar/index.html | 89 + .../sticky-footer-navbar.css | 7 + .../sticky-footer/index.html | 58 + .../sticky-footer/sticky-footer.css | 9 + .../site.scssc | Bin 0 -> 5479 bytes src/Yavsc/wwwroot/css/site.css | 34 +- src/Yavsc/wwwroot/css/site.css.map | 7 + src/Yavsc/wwwroot/css/site.min.css | 1 + src/Yavsc/wwwroot/css/site.scss | 25 + src/Yavsc/wwwroot/favicon-1.ico | Bin 0 -> 16958 bytes src/Yavsc/wwwroot/favicon-duende.ico | Bin 0 -> 5430 bytes src/Yavsc/wwwroot/favicon.ico | Bin 5430 -> 16958 bytes .../it/{sofwarelibre.svg => free-sofware.svg} | 0 src/Yavsc/wwwroot/js/bootstrap.js | 2363 ---- src/Yavsc/wwwroot/js/bootstrap.min.js | 792 -- src/Yavsc/wwwroot/js/signin-redirect.js | 1 + src/Yavsc/wwwroot/js/signout-redirect.js | 6 + src/Yavsc/wwwroot/lib/bootstrap/LICENSE | 4 +- src/Yavsc/wwwroot/lib/bootstrap/README.md | 186 +- .../lib/bootstrap/dist/css/bootstrap-grid.css | 4997 ------- .../bootstrap/dist/css/bootstrap-grid.css.map | 1 - .../bootstrap/dist/css/bootstrap-grid.min.css | 7 - .../dist/css/bootstrap-grid.min.css.map | 1 - .../bootstrap/dist/css/bootstrap-grid.rtl.css | 4996 ------- .../dist/css/bootstrap-grid.rtl.css.map | 1 - .../dist/css/bootstrap-grid.rtl.min.css | 7 - .../dist/css/bootstrap-grid.rtl.min.css.map | 1 - .../bootstrap/dist/css/bootstrap-reboot.css | 427 - .../dist/css/bootstrap-reboot.css.map | 1 - .../dist/css/bootstrap-reboot.min.css | 8 - .../dist/css/bootstrap-reboot.min.css.map | 1 - .../dist/css/bootstrap-reboot.rtl.css | 424 - .../dist/css/bootstrap-reboot.rtl.css.map | 1 - .../dist/css/bootstrap-reboot.rtl.min.css | 8 - .../dist/css/bootstrap-reboot.rtl.min.css.map | 1 - .../bootstrap/dist/css/bootstrap-theme.css | 587 - .../dist/css/bootstrap-theme.css.map | 1 - .../dist/css/bootstrap-theme.min.css | 5 - .../dist/css/bootstrap-utilities.css | 4866 ------- .../dist/css/bootstrap-utilities.css.map | 1 - .../dist/css/bootstrap-utilities.min.css | 7 - .../dist/css/bootstrap-utilities.min.css.map | 1 - .../dist/css/bootstrap-utilities.rtl.css | 4857 ------- .../dist/css/bootstrap-utilities.rtl.css.map | 1 - .../dist/css/bootstrap-utilities.rtl.min.css | 7 - .../css/bootstrap-utilities.rtl.min.css.map | 1 - .../lib/bootstrap/dist/css/bootstrap.css | 11221 ---------------- .../lib/bootstrap/dist/css/bootstrap.css.map | 1 - .../lib/bootstrap/dist/css/bootstrap.min.css | 4 +- .../bootstrap/dist/css/bootstrap.min.css.map | 2 +- .../lib/bootstrap/dist/css/bootstrap.rtl.css | 11197 --------------- .../bootstrap/dist/css/bootstrap.rtl.css.map | 1 - .../bootstrap/dist/css/bootstrap.rtl.min.css | 4 +- .../dist/css/bootstrap.rtl.min.css.map | 2 +- .../lib/bootstrap/dist/js/bootstrap.bundle.js | 6780 ---------- .../bootstrap/dist/js/bootstrap.bundle.js.map | 1 - .../bootstrap/dist/js/bootstrap.bundle.min.js | 4 +- .../dist/js/bootstrap.bundle.min.js.map | 2 +- .../lib/bootstrap/dist/js/bootstrap.esm.js | 4977 ------- .../bootstrap/dist/js/bootstrap.esm.js.map | 1 - .../bootstrap/dist/js/bootstrap.esm.min.js | 7 - .../dist/js/bootstrap.esm.min.js.map | 1 - .../lib/bootstrap/dist/js/bootstrap.js | 5026 ------- .../lib/bootstrap/dist/js/bootstrap.js.map | 1 - .../lib/bootstrap/dist/js/bootstrap.min.js | 7 - .../bootstrap/dist/js/bootstrap.min.js.map | 1 - .../wwwroot/lib/bootstrap/dist/js/npm.js | 13 - .../wwwroot/lib/bootstrap4-glyphicons/LICENSE | 201 + .../css/bootstrap-glyphicons.css | 809 ++ .../css/bootstrap-glyphicons.min.css | 6 + .../glyphicons-halflings-regular.eot | Bin .../glyphicons-halflings-regular.svg | 0 .../glyphicons-halflings-regular.ttf | Bin .../glyphicons-halflings-regular.woff | Bin .../glyphicons-halflings-regular.woff2 | Bin .../maps/glyphicons-fontawesome.css | 2947 ++++ .../maps/glyphicons-fontawesome.less | 3891 ++++++ .../maps/glyphicons-fontawesome.min.css | 1 + src/Yavsc/wwwroot/lib/jquery/LICENSE.txt | 5 +- src/Yavsc/wwwroot/lib/jquery/README.md | 62 + src/Yavsc/wwwroot/lib/jquery/dist/jquery.js | 227 +- .../wwwroot/lib/jquery/dist/jquery.min.js | 4 +- .../wwwroot/lib/jquery/dist/jquery.min.map | 2 +- .../wwwroot/lib/jquery/dist/jquery.slim.js | 8777 ++++++++++++ .../lib/jquery/dist/jquery.slim.min.js | 2 + .../lib/jquery/dist/jquery.slim.min.map | 1 + src/Yavsc/wwwroot/logo.svg | 1126 ++ 286 files changed, 33660 insertions(+), 64632 deletions(-) create mode 100644 src/Yavsc.Server/Properties/launchSettings.json create mode 100644 src/Yavsc/HostingExtensions.cs create mode 100644 src/Yavsc/Pages/Account/AccessDenied.cshtml create mode 100644 src/Yavsc/Pages/Account/AccessDenied.cshtml.cs create mode 100644 src/Yavsc/Pages/Account/ForgotPassword/Index.cshtml create mode 100644 src/Yavsc/Pages/Account/ForgotPassword/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Account/Login/Index.cshtml create mode 100644 src/Yavsc/Pages/Account/Login/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Account/Login/InputModel.cs create mode 100644 src/Yavsc/Pages/Account/Login/LoginOptions.cs create mode 100644 src/Yavsc/Pages/Account/Login/ViewModel.cs create mode 100644 src/Yavsc/Pages/Account/Logout/Index.cshtml create mode 100644 src/Yavsc/Pages/Account/Logout/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Account/Logout/LoggedOut.cshtml create mode 100644 src/Yavsc/Pages/Account/Logout/LoggedOut.cshtml.cs create mode 100644 src/Yavsc/Pages/Account/Logout/LoggedOutViewModel.cs create mode 100644 src/Yavsc/Pages/Account/Logout/LogoutOptions.cs rename src/Yavsc/{Views => Pages}/Activity/Create.cshtml (100%) rename src/Yavsc/{Views => Pages}/Activity/Delete.cshtml (100%) rename src/Yavsc/{Views => Pages}/Activity/Details.cshtml (100%) rename src/Yavsc/{Views => Pages}/Activity/Edit.cshtml (100%) rename src/Yavsc/{Views => Pages}/Activity/Index.cshtml (100%) create mode 100644 src/Yavsc/Pages/Ciba/All.cshtml create mode 100644 src/Yavsc/Pages/Ciba/All.cshtml.cs create mode 100644 src/Yavsc/Pages/Ciba/Consent.cshtml create mode 100644 src/Yavsc/Pages/Ciba/Consent.cshtml.cs create mode 100644 src/Yavsc/Pages/Ciba/ConsentOptions.cs create mode 100644 src/Yavsc/Pages/Ciba/Index.cshtml create mode 100644 src/Yavsc/Pages/Ciba/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Ciba/InputModel.cs create mode 100644 src/Yavsc/Pages/Ciba/ViewModel.cs create mode 100644 src/Yavsc/Pages/Ciba/_ScopeListItem.cshtml create mode 100644 src/Yavsc/Pages/Consent/ConsentOptions.cs create mode 100644 src/Yavsc/Pages/Consent/Index.cshtml create mode 100644 src/Yavsc/Pages/Consent/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Consent/InputModel.cs create mode 100644 src/Yavsc/Pages/Consent/ViewModel.cs create mode 100644 src/Yavsc/Pages/Consent/_ScopeListItem.cshtml create mode 100644 src/Yavsc/Pages/Device/DeviceOptions.cs create mode 100644 src/Yavsc/Pages/Device/Index.cshtml create mode 100644 src/Yavsc/Pages/Device/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Device/InputModel.cs create mode 100644 src/Yavsc/Pages/Device/Success.cshtml create mode 100644 src/Yavsc/Pages/Device/Success.cshtml.cs create mode 100644 src/Yavsc/Pages/Device/ViewModel.cs create mode 100644 src/Yavsc/Pages/Device/_ScopeListItem.cshtml create mode 100644 src/Yavsc/Pages/Diagnostics/Index.cshtml create mode 100644 src/Yavsc/Pages/Diagnostics/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Diagnostics/ViewModel.cs create mode 100644 src/Yavsc/Pages/Extensions.cs create mode 100644 src/Yavsc/Pages/ExternalLogin/Callback.cshtml create mode 100644 src/Yavsc/Pages/ExternalLogin/Callback.cshtml.cs create mode 100644 src/Yavsc/Pages/ExternalLogin/Challenge.cshtml create mode 100644 src/Yavsc/Pages/ExternalLogin/Challenge.cshtml.cs create mode 100644 src/Yavsc/Pages/Grants/Index.cshtml create mode 100644 src/Yavsc/Pages/Grants/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Grants/ViewModel.cs create mode 100644 src/Yavsc/Pages/Home/Error/Index.cshtml create mode 100644 src/Yavsc/Pages/Home/Error/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Home/Error/ViewModel.cs create mode 100644 src/Yavsc/Pages/IdentityServerSuppressions.cs create mode 100644 src/Yavsc/Pages/Index.cshtml create mode 100644 src/Yavsc/Pages/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Log.cs create mode 100644 src/Yavsc/Pages/Redirect/Index.cshtml create mode 100644 src/Yavsc/Pages/Redirect/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/SecurityHeadersAttribute.cs create mode 100644 src/Yavsc/Pages/ServerSideSessions/Index.cshtml create mode 100644 src/Yavsc/Pages/ServerSideSessions/Index.cshtml.cs create mode 100644 src/Yavsc/Pages/Shared/_Layout.cshtml create mode 100644 src/Yavsc/Pages/Shared/_Nav.cshtml create mode 100644 src/Yavsc/Pages/Shared/_ValidationSummary.cshtml create mode 100644 src/Yavsc/Pages/Telemetry.cs create mode 100644 src/Yavsc/Pages/_ViewImports.cshtml create mode 100644 src/Yavsc/Pages/_ViewStart.cshtml rename src/Yavsc/{Startup => Settings}/DataProtectionSettings.cs (100%) create mode 100644 src/Yavsc/Startup.cs delete mode 100644 src/Yavsc/Startup/Startup.FileServer.cs delete mode 100644 src/Yavsc/Startup/Startup.SanityChecks.cs delete mode 100644 src/Yavsc/Startup/Startup.WebSockets.cs delete mode 100644 src/Yavsc/Startup/Startup.Workflow.cs delete mode 100755 src/Yavsc/Startup/Startup.cs create mode 100644 src/Yavsc/keys/is-signing-key-4AC79F6000E1D28FCECAAEAF16AB0335.json create mode 100644 src/Yavsc/keys/is-signing-key-60A9276B16276CDD75FB4BEF8B781BA8.json create mode 100644 src/Yavsc/sql.pgsql create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/album-rtl/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/album/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo-white.svg create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo.svg create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css.map create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.rtl.min.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.rtl.min.css.map create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/js/bootstrap.bundle.min.js create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/js/bootstrap.bundle.min.js.map create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/blog-rtl/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/blog/blog.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/blog/blog.rtl.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/blog/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel-rtl/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.rtl.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet-rtl/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.js create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.rtl.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout-rtl/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.js create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cover/cover.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cover/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/dashboard.js create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.js create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.rtl.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/features.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-1.jpg create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-2.jpg create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-3.jpg create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/grid/grid.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/grid/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/headers/headers.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/headers/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-docs.png create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-themes.png create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/heroes/heroes.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/heroes/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/jumbotron/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/masonry/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/navbar-bottom/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/navbar-fixed/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/navbar-fixed/navbar-top-fixed.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/navbar-static/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/navbar-static/navbar-top.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/navbars/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/navbars/navbar.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/offcanvas.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/offcanvas.js create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/offcanvas/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/pricing/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/pricing/pricing.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/product/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/product/product.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/sidebars/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/sidebars/sidebars.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/sidebars/sidebars.js create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/sign-in/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/sign-in/signin.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/starter-template/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/starter-template/starter-template.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/sticky-footer-navbar/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/sticky-footer-navbar/sticky-footer-navbar.css create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/sticky-footer/index.html create mode 100644 src/Yavsc/wwwroot/bootstrap-5.0.2-examples/sticky-footer/sticky-footer.css create mode 100644 src/Yavsc/wwwroot/css/.sass-cache/f72b97d2a2f775ae72a70903abdc00c6553756a7/site.scssc create mode 100644 src/Yavsc/wwwroot/css/site.css.map create mode 100644 src/Yavsc/wwwroot/css/site.min.css create mode 100644 src/Yavsc/wwwroot/css/site.scss create mode 100644 src/Yavsc/wwwroot/favicon-1.ico create mode 100644 src/Yavsc/wwwroot/favicon-duende.ico rename src/Yavsc/wwwroot/images/it/{sofwarelibre.svg => free-sofware.svg} (100%) delete mode 100644 src/Yavsc/wwwroot/js/bootstrap.js delete mode 100644 src/Yavsc/wwwroot/js/bootstrap.min.js create mode 100644 src/Yavsc/wwwroot/js/signin-redirect.js create mode 100644 src/Yavsc/wwwroot/js/signout-redirect.js delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.js delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map delete mode 100644 src/Yavsc/wwwroot/lib/bootstrap/dist/js/npm.js create mode 100644 src/Yavsc/wwwroot/lib/bootstrap4-glyphicons/LICENSE create mode 100644 src/Yavsc/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.css create mode 100644 src/Yavsc/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css rename src/Yavsc/wwwroot/lib/{bootstrap/dist/fonts => bootstrap4-glyphicons/fonts/glyphicons}/glyphicons-halflings-regular.eot (100%) rename src/Yavsc/wwwroot/lib/{bootstrap/dist/fonts => bootstrap4-glyphicons/fonts/glyphicons}/glyphicons-halflings-regular.svg (100%) rename src/Yavsc/wwwroot/lib/{bootstrap/dist/fonts => bootstrap4-glyphicons/fonts/glyphicons}/glyphicons-halflings-regular.ttf (100%) rename src/Yavsc/wwwroot/lib/{bootstrap/dist/fonts => bootstrap4-glyphicons/fonts/glyphicons}/glyphicons-halflings-regular.woff (100%) rename src/Yavsc/wwwroot/lib/{bootstrap/dist/fonts => bootstrap4-glyphicons/fonts/glyphicons}/glyphicons-halflings-regular.woff2 (100%) create mode 100644 src/Yavsc/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.css create mode 100644 src/Yavsc/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.less create mode 100644 src/Yavsc/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.min.css create mode 100644 src/Yavsc/wwwroot/lib/jquery/README.md create mode 100644 src/Yavsc/wwwroot/lib/jquery/dist/jquery.slim.js create mode 100644 src/Yavsc/wwwroot/lib/jquery/dist/jquery.slim.min.js create mode 100644 src/Yavsc/wwwroot/lib/jquery/dist/jquery.slim.min.map create mode 100644 src/Yavsc/wwwroot/logo.svg diff --git a/src/Yavsc.Abstract/Workflow/INominativeQuery.cs b/src/Yavsc.Abstract/Workflow/INominativeQuery.cs index e50770e2..2d6a1d8d 100644 --- a/src/Yavsc.Abstract/Workflow/INominativeQuery.cs +++ b/src/Yavsc.Abstract/Workflow/INominativeQuery.cs @@ -2,9 +2,10 @@ using System; namespace Yavsc.Abstract.Workflow { - public interface IDecidableQuery: IQuery + public interface IDecidableQuery: IBaseTrackedEntity, IQuery { - bool Rejected { get; set; } - DateTime RejectedAt { get; set; } + bool Decided { get; set; } + bool Accepted { get; set; } + } -} \ No newline at end of file +} diff --git a/src/Yavsc.Server/Models/Billing/NominativeServiceCommand.cs b/src/Yavsc.Server/Models/Billing/NominativeServiceCommand.cs index c0c167ef..e7e29088 100644 --- a/src/Yavsc.Server/Models/Billing/NominativeServiceCommand.cs +++ b/src/Yavsc.Server/Models/Billing/NominativeServiceCommand.cs @@ -13,7 +13,7 @@ namespace Yavsc.Models.Billing using Yavsc.Abstract.Workflow; using Yavsc.Services; - public abstract class NominativeServiceCommand : IBaseTrackedEntity, IDecidableQuery, IIdentified + public abstract class NominativeServiceCommand : IDecidableQuery, IIdentified { public string GetInvoiceId() { return GetType().Name + "/" + Id; } @@ -78,9 +78,8 @@ namespace Yavsc.Models.Billing [ForeignKey("ActivityCode"),JsonIgnore,Display(Name="Domaine d'activité")] public virtual Activity Context  { get; set ; } - public bool Rejected { get; set; } + public bool Decided { get; set; } - public DateTime RejectedAt { get; set; } public abstract System.Collections.Generic.List GetBillItems(); @@ -103,6 +102,6 @@ namespace Yavsc.Models.Billing [Display(Name = "Acquittement de la facture")] public virtual PayPalPayment Regularisation { get; set; } - + public bool Accepted { get; set; } } } diff --git a/src/Yavsc.Server/Properties/launchSettings.json b/src/Yavsc.Server/Properties/launchSettings.json new file mode 100644 index 00000000..6f874f1a --- /dev/null +++ b/src/Yavsc.Server/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "SelfHost": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:5001" + } + } +} \ No newline at end of file diff --git a/src/Yavsc.Server/ViewModels/Account/ForgotPasswordViewModel.cs b/src/Yavsc.Server/ViewModels/Account/ForgotPasswordViewModel.cs index 623179d8..ded3d55a 100644 --- a/src/Yavsc.Server/ViewModels/Account/ForgotPasswordViewModel.cs +++ b/src/Yavsc.Server/ViewModels/Account/ForgotPasswordViewModel.cs @@ -8,6 +8,6 @@ namespace Yavsc.ViewModels.Account { [YaRequired] [YaStringLength(512)] - public string LoginOrEmail { get; set; } + public string? LoginOrEmail { get; set; } } } diff --git a/src/Yavsc/ApiControllers/Blogspot/FileSystemApiController.cs b/src/Yavsc/ApiControllers/Blogspot/FileSystemApiController.cs index ec0583cf..af85d263 100644 --- a/src/Yavsc/ApiControllers/Blogspot/FileSystemApiController.cs +++ b/src/Yavsc/ApiControllers/Blogspot/FileSystemApiController.cs @@ -130,7 +130,7 @@ namespace Yavsc.ApiControllers u => u.Id == uid ); try { - if (Startup.UserFilesOptions.FileProvider.GetFileInfo(Path.Combine(user.UserName, query.id)).Exists) + if (Config.UserFilesOptions.FileProvider.GetFileInfo(Path.Combine(user.UserName, query.id)).Exists) { var result = user.MoveUserFile(query.id, query.to); if (!result.Done) return new BadRequestObjectResult(result); diff --git a/src/Yavsc/ApiControllers/Blogspot/FileSystemStream.cs b/src/Yavsc/ApiControllers/Blogspot/FileSystemStream.cs index 39c6beac..af80fe7d 100644 --- a/src/Yavsc/ApiControllers/Blogspot/FileSystemStream.cs +++ b/src/Yavsc/ApiControllers/Blogspot/FileSystemStream.cs @@ -49,7 +49,7 @@ namespace Yavsc.ApiControllers string url = string.Format( "{0}/{1}/{2}", - Startup.UserFilesOptions.RequestPath.ToUriComponent(), + Config.UserFilesOptions.RequestPath.ToUriComponent(), userName, filename ); diff --git a/src/Yavsc/ApiControllers/Business/BillingController.cs b/src/Yavsc/ApiControllers/Business/BillingController.cs index 9a17bea1..2a27f418 100644 --- a/src/Yavsc/ApiControllers/Business/BillingController.cs +++ b/src/Yavsc/ApiControllers/Business/BillingController.cs @@ -32,7 +32,7 @@ namespace Yavsc.ApiControllers public BillingController( IAuthorizationService authorizationService, ILoggerFactory loggerFactory, - IStringLocalizer SR, + IStringLocalizer SR, ApplicationDbContext context, IOptions googleSettings, IYavscMessageSender GCMSender, diff --git a/src/Yavsc/ApiControllers/Business/FrontOfficeApiController.cs b/src/Yavsc/ApiControllers/Business/FrontOfficeApiController.cs index fd23428a..1f770dd9 100644 --- a/src/Yavsc/ApiControllers/Business/FrontOfficeApiController.cs +++ b/src/Yavsc/ApiControllers/Business/FrontOfficeApiController.cs @@ -34,10 +34,23 @@ namespace Yavsc.ApiControllers if (queryId == 0) return BadRequest("queryId"); var billing = BillingService.GetBillable(dbContext, billingCode, queryId); if (billing == null) return BadRequest(); - billing.Rejected = true; - billing.RejectedAt = DateTime.Now; + billing.Decided = true; + billing.Accepted = false; dbContext.SaveChanges(); return Ok(); } + [HttpPost("query/reject")] + public IActionResult AcceptQuery(string billingCode, long queryId) + { + if (billingCode == null) return BadRequest("billingCode"); + if (queryId == 0) return BadRequest("queryId"); + var billing = BillingService.GetBillable(dbContext, billingCode, queryId); + if (billing == null) return BadRequest(); + billing.Accepted = true; + billing.Decided = true; + dbContext.SaveChanges(); + return Ok(); + + } } } diff --git a/src/Yavsc/ApiControllers/HairCut/HairCutController.cs b/src/Yavsc/ApiControllers/HairCut/HairCutController.cs index 10dcb7f3..569efcdb 100644 --- a/src/Yavsc/ApiControllers/HairCut/HairCutController.cs +++ b/src/Yavsc/ApiControllers/HairCut/HairCutController.cs @@ -166,7 +166,7 @@ namespace Yavsc.ApiControllers if (payment==null) { _logger.LogError("Error doing SetExpressCheckout, aborting."); - _logger.LogError(JsonConvert.SerializeObject(Startup.PayPalSettings)); + _logger.LogError(JsonConvert.SerializeObject(Config.PayPalSettings)); return new StatusCodeResult(500); } switch (payment.Ack) diff --git a/src/Yavsc/Config.cs b/src/Yavsc/Config.cs index 4b4e9ccf..02bd9098 100644 --- a/src/Yavsc/Config.cs +++ b/src/Yavsc/Config.cs @@ -1,9 +1,37 @@ using Duende.IdentityServer.Models; +using Yavsc.Settings; namespace Yavsc; public static class Config { + public static string Authority { get; set; } + + public static IConfigurationRoot? GoogleWebClientConfiguration { get; set; } + public static GoogleServiceAccount? GServiceAccount { get; set; } + + public static SiteSettings SiteSetup { get; set; } + public static FileServerOptions UserFilesOptions { get; set; } + public static FileServerOptions GitOptions { get; set; } + public static string AvatarsDirName { set; get; } + public static string GitDirName { set; get; } + + public static GoogleAuthSettings GoogleSettings { get; set; } + public static SmtpSettings SmtpSetup { get; set; } + public static string Temp { get; set; } + public static FileServerOptions AvatarsOptions { get; set; } + public static string UserBillsDirName { set; get; } + public static string UserFilesDirName { set; get; } + + + + /// + /// Lists Available user profile classes, + /// populated at startup, using reflexion. + /// + public static List ProfileTypes = new List(); + + public static IEnumerable IdentityResources => new IdentityResource[] { @@ -41,12 +69,14 @@ public static class Config AllowedGrantTypes = GrantTypes.Code, - RedirectUris = { "https://localhost:5001/signin-oidc" }, - FrontChannelLogoutUri = "https://localhost:5001/signout-oidc", - PostLogoutRedirectUris = { "https://localhost:5001/signout-callback-oidc" }, + RedirectUris = { "https://localhost:5003/signin-oidc" }, + FrontChannelLogoutUri = "https://localhost:5003/signout-oidc", + PostLogoutRedirectUris = { "https://localhost:5003/signout-callback-oidc" }, AllowOfflineAccess = true, AllowedScopes = { "openid", "profile", "scope2" } }, }; + + public static PayPalSettings PayPalSettings { get; set; } } diff --git a/src/Yavsc/Controllers/Accounting/AccountController.cs b/src/Yavsc/Controllers/Accounting/AccountController.cs index fdd975fa..902ca337 100644 --- a/src/Yavsc/Controllers/Accounting/AccountController.cs +++ b/src/Yavsc/Controllers/Accounting/AccountController.cs @@ -1,20 +1,17 @@ using System.Web; - using System.Security.Claims; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; -using Yavsc.Models; -using Yavsc.Services; -using Yavsc.ViewModels.Account; using Microsoft.Extensions.Localization; -using Newtonsoft.Json; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; +using Newtonsoft.Json; +using Yavsc.Models; +using Yavsc.ViewModels.Account; using Yavsc.Helpers; using Yavsc.Abstract.Manage; -using Microsoft.AspNetCore.Identity.UI.Services; using Yavsc.Interface; namespace Yavsc.Controllers @@ -37,7 +34,6 @@ namespace Yavsc.Controllers // TwilioSettings _twilioSettings; readonly ApplicationDbContext _dbContext; - public AccountController( UserManager userManager, @@ -45,7 +41,7 @@ namespace Yavsc.Controllers ITrueEmailSender emailSender, IOptions siteSettings, ILoggerFactory loggerFactory, IOptions twilioSettings, - IStringLocalizer localizer, + IStringLocalizer localizer, ApplicationDbContext dbContext) { _userManager = userManager; @@ -205,7 +201,7 @@ namespace Yavsc.Controllers return BadRequest(); } // Note: this still is not the redirect uri given to the third party provider, at building the challenge. - var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { model.ReturnUrl }, protocol:"https", host: Startup.Authority); + var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { model.ReturnUrl }, protocol:"https", host: Config.Authority); var properties = _signInManager.ConfigureExternalAuthenticationProperties(model.Provider, redirectUrl); // var properties = new AuthenticationProperties{RedirectUri=ReturnUrl}; return new ChallengeResult(model.Provider, properties); @@ -238,14 +234,14 @@ namespace Yavsc.Controllers if (result.Succeeded) { _logger.LogInformation(3, "User created a new account with password."); - await _emailSender.SendEmailAsync(Startup.SiteSetup.Owner.Name, Startup.SiteSetup.Owner.EMail, + await _emailSender.SendEmailAsync(Config.SiteSetup.Owner.Name, Config.SiteSetup.Owner.EMail, $"[{_siteSettings.Title}] Inscription avec mot de passe: {user.UserName} ", $"{user.Id}/{user.UserName}/{user.Email}"); // TODO user.DiskQuota = Startup.SiteSetup.UserFiles.Quota; // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 // Send an email with this link var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); - var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code }, protocol: "https", host: Startup.Authority); + var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code }, protocol: "https", host: Config.Authority); await _emailSender.SendEmailAsync(model.UserName, model.Email, _localizer["ConfirmYourAccountTitle"], string.Format(_localizer["ConfirmYourAccountBody"], _siteSettings.Title, callbackUrl, _siteSettings.Slogan, _siteSettings.Audience)); // No, wait for more than a login pass submission: @@ -292,7 +288,7 @@ namespace Yavsc.Controllers { var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Action("ConfirmEmail", "Account", - new { userId = user.Id, code }, protocol: "https", host: Startup.Authority); + new { userId = user.Id, code }, protocol: "https", host: Config.Authority); var res = await _emailSender.SendEmailAsync(user.UserName, user.Email, this._localizer["ConfirmYourAccountTitle"], string.Format(this._localizer["ConfirmYourAccountBody"], @@ -305,7 +301,7 @@ namespace Yavsc.Controllers { var code = await _userManager.GenerateTwoFactorTokenAsync(user, provider); var callbackUrl = Url.Action("VerifyCode", "Account", - new { userId = user.Id, code, provider }, protocol: "https", host: Startup.Authority); + new { userId = user.Id, code, provider }, protocol: "https", host: Config.Authority); var res = await _emailSender.SendEmailAsync(user.UserName, user.Email, this._localizer["AccountEmailFactorTitle"], string.Format(this._localizer["AccountEmailFactorBody"], @@ -416,8 +412,8 @@ namespace Yavsc.Controllers var result = await _userManager.CreateAsync(user); if (result.Succeeded) { - throw new NotImplementedException(); - // info.ProviderDisplayName = info.Claims.First(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name")?.Value; + + info.ProviderDisplayName = info.Principal.Claims.First(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name")?.Value; result = await _userManager.AddLoginAsync(user, info); if (result.Succeeded) @@ -425,7 +421,7 @@ namespace Yavsc.Controllers await _signInManager.SignInAsync(user, isPersistent: false); - await _emailSender.SendEmailAsync(Startup.SiteSetup.Owner.Name, Startup.SiteSetup.Owner.EMail, + await _emailSender.SendEmailAsync(Config.SiteSetup.Owner.Name, Config.SiteSetup.Owner.EMail, $"[{_siteSettings.Title}] Inscription via {info.LoginProvider}: {user.UserName} ", $"{user.Id}/{user.UserName}/{user.Email}"); _logger.LogInformation(6, "User created an account using {Name} provider.", info.LoginProvider); diff --git a/src/Yavsc/Controllers/Accounting/ManageController.cs b/src/Yavsc/Controllers/Accounting/ManageController.cs index 9e6150cb..9e4002a0 100644 --- a/src/Yavsc/Controllers/Accounting/ManageController.cs +++ b/src/Yavsc/Controllers/Accounting/ManageController.cs @@ -49,7 +49,7 @@ namespace Yavsc.Controllers IOptions googleSettings, IOptions paypalSettings, IOptions cinfoSettings, - IStringLocalizer SR, + IStringLocalizer SR, ICalendarManager calendarManager, ILoggerFactory loggerFactory) { diff --git a/src/Yavsc/Controllers/Administration/AdministrationController.cs b/src/Yavsc/Controllers/Administration/AdministrationController.cs index eda0891f..c50de9e1 100644 --- a/src/Yavsc/Controllers/Administration/AdministrationController.cs +++ b/src/Yavsc/Controllers/Administration/AdministrationController.cs @@ -102,7 +102,7 @@ namespace Yavsc.Controllers var youAreAdmin = await _userManager.IsInRoleAsync( await _userManager.FindByIdAsync(User.GetUserId()), Constants.AdminGroupName); - throw new NotImplementedException(); + var roles = _roleManager.Roles.Select(x => new RoleInfo { Id = x.Id, Name = x.Name @@ -110,7 +110,6 @@ namespace Yavsc.Controllers var assembly = GetType().Assembly; ViewBag.ThisAssembly = assembly.FullName; ViewBag.RunTimeVersion = assembly.ImageRuntimeVersion; - ViewBag.HostContextFullName = Startup.HostingFullName; return View(new AdminViewModel { Roles = roles.ToArray(), @@ -120,7 +119,6 @@ namespace Yavsc.Controllers }); } - [Authorize("AdministratorOnly")] public IActionResult Enroll(string roleName) { diff --git a/src/Yavsc/Controllers/Contracting/ActivityController.cs b/src/Yavsc/Controllers/Contracting/ActivityController.cs index 091d6cb2..a593fa8d 100644 --- a/src/Yavsc/Controllers/Contracting/ActivityController.cs +++ b/src/Yavsc/Controllers/Contracting/ActivityController.cs @@ -14,11 +14,11 @@ namespace Yavsc.Controllers public class ActivityController : Controller { private readonly ApplicationDbContext _context; - readonly IStringLocalizer SR; + readonly IStringLocalizer SR; readonly ILogger logger; public ActivityController(ApplicationDbContext context, - IStringLocalizer SR, + IStringLocalizer SR, ILoggerFactory loggerFactory) { _context = context; @@ -35,7 +35,7 @@ namespace Yavsc.Controllers private void SetSettingClasseInfo(string currentCode = null) { - var items = Startup.ProfileTypes.Select( + var items = Config.ProfileTypes.Select( pt => new SelectListItem { Text = SR[pt.FullName], diff --git a/src/Yavsc/Controllers/Contracting/CommandController.cs b/src/Yavsc/Controllers/Contracting/CommandController.cs index b6a37dd1..270eac7e 100644 --- a/src/Yavsc/Controllers/Contracting/CommandController.cs +++ b/src/Yavsc/Controllers/Contracting/CommandController.cs @@ -35,7 +35,7 @@ namespace Yavsc.Controllers IYavscMessageSender messageSender, UserManager userManager, ICalendarManager calendarManager, - IStringLocalizer localizer, + IStringLocalizer localizer, ITrueEmailSender emailSender, IOptions smtpSettings, IOptions siteSettings, diff --git a/src/Yavsc/Controllers/Contracting/CommandFormsController.cs b/src/Yavsc/Controllers/Contracting/CommandFormsController.cs index 851d4fec..44d8efc6 100644 --- a/src/Yavsc/Controllers/Contracting/CommandFormsController.cs +++ b/src/Yavsc/Controllers/Contracting/CommandFormsController.cs @@ -49,7 +49,7 @@ namespace Yavsc.Controllers private void SetViewBag(CommandForm commandForm = null) { ViewBag.ActivityCode = new SelectList(_context.Activities, "Code", "Name", commandForm?.ActivityCode); - ViewBag.ActionName = Startup.Forms.Select(c => new SelectListItem { Value = c, Text = c, Selected = (commandForm?.ActionName == c) }); + ViewBag.ActionName = _context.CommandForm.Select(c => new SelectListItem { Value = c.Id.ToString(), Text = c.Title, Selected = commandForm.Id == c.Id }); } // POST: CommandForms/Create [HttpPost] diff --git a/src/Yavsc/Controllers/Contracting/DoController.cs b/src/Yavsc/Controllers/Contracting/DoController.cs index 01b33638..9db529da 100644 --- a/src/Yavsc/Controllers/Contracting/DoController.cs +++ b/src/Yavsc/Controllers/Contracting/DoController.cs @@ -60,7 +60,7 @@ namespace Yavsc.Controllers } bool hasConfigurableSettings = (userActivity.Does.SettingsClassName != null); var settings = await billing.GetPerformerSettingsAsync(activityCode,id); - ViewBag.ProfileType = Startup.ProfileTypes.Single(t=>t.FullName==userActivity.Does.SettingsClassName); + ViewBag.ProfileType = Config.ProfileTypes.Single(t=>t.FullName==userActivity.Does.SettingsClassName); var gift = new UserActivityViewModel { Declaration = userActivity, diff --git a/src/Yavsc/Controllers/Contracting/FrontOfficeController.cs b/src/Yavsc/Controllers/Contracting/FrontOfficeController.cs index 59156051..55a04fb0 100644 --- a/src/Yavsc/Controllers/Contracting/FrontOfficeController.cs +++ b/src/Yavsc/Controllers/Contracting/FrontOfficeController.cs @@ -24,7 +24,7 @@ namespace Yavsc.Controllers UserManager userManager, IBillingService billing, ILoggerFactory loggerFactory, - IStringLocalizer SR) + IStringLocalizer SR) { _context = context; _userManager = userManager; @@ -92,7 +92,7 @@ namespace Yavsc.Controllers [Authorize, Route("Estimate-{id}.pdf")] public IActionResult EstimatePdf(long id) { - ViewBag.TempDir = Startup.SiteSetup.TempDir; + ViewBag.TempDir = Config.SiteSetup.TempDir; ViewBag.BillsDir = AbstractFileSystemHelpers.UserBillsDirName; var estimate = _context.Estimates.Include(x => x.Query) .Include(x => x.Query.Client) diff --git a/src/Yavsc/Controllers/Haircut/HairCutCommandController.cs b/src/Yavsc/Controllers/Haircut/HairCutCommandController.cs index 7f2d97f6..67377386 100644 --- a/src/Yavsc/Controllers/Haircut/HairCutCommandController.cs +++ b/src/Yavsc/Controllers/Haircut/HairCutCommandController.cs @@ -34,7 +34,7 @@ namespace Yavsc.Controllers IOptions googleSettings, IYavscMessageSender GCMSender, UserManager userManager, - IStringLocalizer localizer, + IStringLocalizer localizer, ITrueEmailSender emailSender, IOptions smtpSettings, IOptions siteSettings, diff --git a/src/Yavsc/Controllers/IT/GitController.cs b/src/Yavsc/Controllers/IT/GitController.cs index 8ad9631b..2e83bfe4 100644 --- a/src/Yavsc/Controllers/IT/GitController.cs +++ b/src/Yavsc/Controllers/IT/GitController.cs @@ -33,7 +33,7 @@ namespace Yavsc.Controllers return NotFound(); } */ - var info = Startup.GitOptions.FileProvider.GetFileInfo(path); + var info = Config.GitOptions.FileProvider.GetFileInfo(path); if (!info.Exists) return NotFound(); var stream = info.CreateReadStream(); diff --git a/src/Yavsc/Controllers/IT/ProjectController.cs b/src/Yavsc/Controllers/IT/ProjectController.cs index 36105a68..242ae4c9 100644 --- a/src/Yavsc/Controllers/IT/ProjectController.cs +++ b/src/Yavsc/Controllers/IT/ProjectController.cs @@ -16,11 +16,11 @@ namespace Yavsc.Controllers public class ProjectController : Controller { private readonly ApplicationDbContext _context; - readonly IStringLocalizer _localizer; + readonly IStringLocalizer _localizer; readonly IStringLocalizer _bugLocalizer; public ProjectController(ApplicationDbContext context, - IStringLocalizer localizer, + IStringLocalizer localizer, IStringLocalizer bugLocalizer ) { diff --git a/src/Yavsc/Helpers/EventHelpers.cs b/src/Yavsc/Helpers/EventHelpers.cs index 56cf047f..1205a38f 100644 --- a/src/Yavsc/Helpers/EventHelpers.cs +++ b/src/Yavsc/Helpers/EventHelpers.cs @@ -50,7 +50,7 @@ namespace Yavsc.Helpers } public static string GetSender(this ApplicationUser user) { - return user.UserName+" ["+user.Id+"@"+Startup.Authority+"]"; + return user.UserName+" ["+user.Id+"@"+Config.Authority+"]"; } public static HairCutQueryEvent CreateEvent(this HairMultiCutQuery query, IStringLocalizer SR, BrusherProfile bpr) diff --git a/src/Yavsc/Helpers/FileSystemHelpers.cs b/src/Yavsc/Helpers/FileSystemHelpers.cs index 8f103521..0ab69340 100644 --- a/src/Yavsc/Helpers/FileSystemHelpers.cs +++ b/src/Yavsc/Helpers/FileSystemHelpers.cs @@ -21,7 +21,7 @@ namespace Yavsc.Helpers FileName = AbstractFileSystemHelpers.SignFileNameFormat("pro", billingCode, estimateId) }; - var destFileName = Path.Combine(Startup.SiteSetup.Bills, item.FileName); + var destFileName = Path.Combine(Config.SiteSetup.Bills, item.FileName); var fi = new FileInfo(destFileName); if (fi.Exists) item.Overriden = true; @@ -44,7 +44,7 @@ namespace Yavsc.Helpers /// private static void CreateAvatars(this ApplicationUser user, Bitmap source) { - var dir = Startup.SiteSetup.Avatars; + var dir = Config.SiteSetup.Avatars; var name = user.UserName + ".png"; var smallname = user.UserName + ".s.png"; var xsmallname = user.UserName + ".xs.png"; @@ -235,12 +235,12 @@ namespace Yavsc.Helpers public static HtmlString FileLink(this RemoteFileInfo info, string username, string subpath) { return new HtmlString( - $"{Startup.UserFilesOptions.RequestPath}/{username}/{subpath}/{info.Name}" ); + $"{Config.UserFilesOptions.RequestPath}/{username}/{subpath}/{info.Name}" ); } public static RemoteFileInfo FileInfo(this ApplicationUser user, string path) { - IFileInfo info = Startup.UserFilesOptions.FileProvider.GetFileInfo($"{user.UserName}/{path}"); + IFileInfo info = Config.UserFilesOptions.FileProvider.GetFileInfo($"{user.UserName}/{path}"); if (!info.Exists) return null; return new RemoteFileInfo{ Name = info.Name, Size = info.Length, LastModified = info.LastModified.UtcDateTime }; @@ -253,7 +253,7 @@ namespace Yavsc.Helpers FileName = user.UserName + ".png" }; - var destFileName = Path.Combine(Startup.SiteSetup.Avatars, item.FileName); + var destFileName = Path.Combine(Config.SiteSetup.Avatars, item.FileName); var fi = new FileInfo(destFileName); if (fi.Exists) item.Overriden = true; @@ -289,7 +289,7 @@ namespace Yavsc.Helpers } } - item.DestDir = Startup.AvatarsOptions.RequestPath.ToUriComponent(); + item.DestDir = Config.AvatarsOptions.RequestPath.ToUriComponent(); user.Avatar = $"{item.DestDir}/{item.FileName}"; return item; } @@ -298,7 +298,7 @@ namespace Yavsc.Helpers { if (flow.DifferedFileName==null) return null; // no server-side backup for this stream - return $"{Startup.UserFilesOptions.RequestPath}/{flow.Owner.UserName}/live/"+GetFileName(flow); + return $"{Config.UserFilesOptions.RequestPath}/{flow.Owner.UserName}/live/"+GetFileName(flow); } public static string GetFileName (this LiveFlow flow) diff --git a/src/Yavsc/Helpers/GoogleOAuthHelpers.cs b/src/Yavsc/Helpers/GoogleOAuthHelpers.cs index a468aba1..1e62b037 100644 --- a/src/Yavsc/Helpers/GoogleOAuthHelpers.cs +++ b/src/Yavsc/Helpers/GoogleOAuthHelpers.cs @@ -110,8 +110,8 @@ namespace Yavsc.Helpers try { using (var m = new SimpleJsonPostMethod(ep)) { return await m.Invoke( - new { refresh_token= oldResponse.RefreshToken, client_id=Startup.GoogleWebClientConfiguration["web:client_id"], - client_secret=Startup.GoogleWebClientConfiguration["web:client_secret"], + new { refresh_token= oldResponse.RefreshToken, client_id=Config.GoogleWebClientConfiguration["web:client_id"], + client_secret=Config.GoogleWebClientConfiguration["web:client_secret"], grant_type="refresh_token" } ); } diff --git a/src/Yavsc/Helpers/PayPalHelpers.cs b/src/Yavsc/Helpers/PayPalHelpers.cs index 45e310ab..abd70849 100644 --- a/src/Yavsc/Helpers/PayPalHelpers.cs +++ b/src/Yavsc/Helpers/PayPalHelpers.cs @@ -22,22 +22,23 @@ namespace Yavsc.Helpers if (payPalProperties==null) { payPalProperties = new Dictionary(); + var paypalSettings = Config.PayPalSettings; // Don't do: // payPalProperties.Add("mode", Startup.PayPalSettings.Mode); // Instead, set the endpoint parameter. - if (Startup.PayPalSettings.Mode == "production") { + if (paypalSettings.Mode == "production") { // use nvp end point: https://api-3t.paypal.com/nvp payPalProperties.Add("endpoint", "https://api-3t.paypal.com/nvp"); } else { payPalProperties.Add("endpoint", "https://api-3t.sandbox.paypal.com/nvp"); } - payPalProperties.Add("clientId", Startup.PayPalSettings.ClientId); - payPalProperties.Add("clientSecret", Startup.PayPalSettings.ClientSecret); + payPalProperties.Add("clientId", paypalSettings.ClientId); + payPalProperties.Add("clientSecret", paypalSettings.ClientSecret); int numClient = 0; - if (Startup.PayPalSettings.Accounts!=null) - foreach (var account in Startup.PayPalSettings.Accounts) { + if (paypalSettings.Accounts!=null) + foreach (var account in paypalSettings.Accounts) { numClient++; payPalProperties.Add ($"account{numClient}.apiUsername",account.ApiUsername); payPalProperties.Add ($"account{numClient}.apiPassword",account.ApiPassword); @@ -106,8 +107,8 @@ namespace Yavsc.Helpers var d = new SetExpressCheckoutRequestDetailsType(); - logger.LogInformation($"Creating express checkout for {Startup.PayPalSettings.MerchantAccountUserName} : "+JsonConvert.SerializeObject(coreq)); - var response = PayPalService.SetExpressCheckout( coreq, Startup.PayPalSettings.MerchantAccountUserName ); + logger.LogInformation($"Creating express checkout for {Config.PayPalSettings.MerchantAccountUserName} : "+JsonConvert.SerializeObject(coreq)); + var response = PayPalService.SetExpressCheckout( coreq, Config.PayPalSettings.MerchantAccountUserName ); return response; } @@ -125,7 +126,7 @@ namespace Yavsc.Helpers Token = token } }; - return PayPalService.GetExpressCheckoutDetails(req,Startup.PayPalSettings.Accounts[0].ApiUsername); + return PayPalService.GetExpressCheckoutDetails(req,Config.PayPalSettings.Accounts[0].ApiUsername); } public static async Task ConfirmPayment( this ApplicationDbContext context, diff --git a/src/Yavsc/Helpers/TeXHelpers.cs b/src/Yavsc/Helpers/TeXHelpers.cs index 6ed7ff17..9e7ed330 100644 --- a/src/Yavsc/Helpers/TeXHelpers.cs +++ b/src/Yavsc/Helpers/TeXHelpers.cs @@ -122,7 +122,7 @@ namespace Yavsc.Helpers { string errorMsg = null; var billdir = Model.DestDir; - var tempdir = Startup.SiteSetup.TempDir; + var tempdir = Config.SiteSetup.TempDir; string name = Model.BaseFileName; string fullname = new FileInfo( System.IO.Path.Combine(tempdir, name)).FullName; diff --git a/src/Yavsc/HostingExtensions.cs b/src/Yavsc/HostingExtensions.cs new file mode 100644 index 00000000..ac382851 --- /dev/null +++ b/src/Yavsc/HostingExtensions.cs @@ -0,0 +1,350 @@ +using System.Globalization; +using Duende.IdentityServer; +using Google.Apis.Util.Store; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Localization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.AspNetCore.StaticFiles; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.FileProviders; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Options; +using Microsoft.Net.Http.Headers; +using Newtonsoft.Json; +using Yavsc.Abstract.Workflow; +using Yavsc.Billing; +using Yavsc.Helpers; +using Yavsc.Interface; +using Yavsc.Models; +using Yavsc.Models.Billing; +using Yavsc.Models.Haircut; +using Yavsc.Models.Workflow; +using Yavsc.Services; +using Yavsc.Settings; + +namespace Yavsc; + +internal static class HostingExtensions +{ + + public static IApplicationBuilder ConfigureFileServerApp(this IApplicationBuilder app, + bool enableDirectoryBrowsing = false) + { + + var userFilesDirInfo = new DirectoryInfo(Config.SiteSetup.Blog); + AbstractFileSystemHelpers.UserFilesDirName = userFilesDirInfo.FullName; + + if (!userFilesDirInfo.Exists) userFilesDirInfo.Create(); + + Config.UserFilesOptions = new FileServerOptions() + { + FileProvider = new PhysicalFileProvider(AbstractFileSystemHelpers.UserFilesDirName), + RequestPath = PathString.FromUriComponent(Constants.UserFilesPath), + EnableDirectoryBrowsing = enableDirectoryBrowsing, + }; + Config.UserFilesOptions.EnableDefaultFiles = true; + Config.UserFilesOptions.StaticFileOptions.ServeUnknownFileTypes = true; + + var avatarsDirInfo = new DirectoryInfo(Config.SiteSetup.Avatars); + if (!avatarsDirInfo.Exists) avatarsDirInfo.Create(); + Config.AvatarsDirName = avatarsDirInfo.FullName; + + Config.AvatarsOptions = new FileServerOptions() + { + FileProvider = new PhysicalFileProvider(Config.AvatarsDirName), + RequestPath = PathString.FromUriComponent(Constants.AvatarsPath), + EnableDirectoryBrowsing = enableDirectoryBrowsing + }; + + + var gitdirinfo = new DirectoryInfo(Config.SiteSetup.GitRepository); + Config.GitDirName = gitdirinfo.FullName; + if (!gitdirinfo.Exists) gitdirinfo.Create(); + Config.GitOptions = new FileServerOptions() + { + FileProvider = new PhysicalFileProvider(Config.GitDirName), + RequestPath = PathString.FromUriComponent(Constants.GitPath), + EnableDirectoryBrowsing = enableDirectoryBrowsing, + }; + Config.GitOptions.DefaultFilesOptions.DefaultFileNames.Add("index.md"); + Config.GitOptions.StaticFileOptions.ServeUnknownFileTypes = true; + + app.UseFileServer(Config.UserFilesOptions); + + app.UseFileServer(Config.AvatarsOptions); + + app.UseFileServer(Config.GitOptions); + app.UseStaticFiles(); + return app; + } + public static void ConfigureWorkflow() + { + foreach (var a in System.AppDomain.CurrentDomain.GetAssemblies()) + { + foreach (var c in a.GetTypes()) + { + if (c.IsClass && !c.IsAbstract && + c.GetInterface("ISpecializationSettings") != null) + { + Config.ProfileTypes.Add(c); + } + } + } + + foreach (var propertyInfo in typeof(ApplicationDbContext).GetProperties()) + { + foreach (var attr in propertyInfo.CustomAttributes) + { + // something like a DbSet? + if (typeof(Yavsc.Attributes.ActivitySettingsAttribute).IsAssignableFrom(attr.AttributeType)) + { + BillingService.UserSettings.Add(propertyInfo); + } + } + } + + RegisterBilling(BillingCodes.Brush, new Func + ( ( db, id) => + { + var query = db.HairCutQueries.Include(q=>q.Prestation).Include(q=>q.Regularisation).Single(q=>q.Id == id) ; + query.SelectedProfile = db.BrusherProfile.Single(b=>b.UserId == query.PerformerId); + return query; + })) ; + + RegisterBilling(BillingCodes.MBrush,new Func + ( (db, id) => db.HairMultiCutQueries.Include(q=>q.Regularisation).Single(q=>q.Id == id))); + + RegisterBilling(BillingCodes.Rdv, new Func + ( (db, id) => db.RdvQueries.Include(q=>q.Regularisation).Single(q=>q.Id == id))); + } + public static void RegisterBilling(string code, Func getter) where T : IBillable + { + BillingService.Billing.Add(code,getter) ; + BillingService.GlobalBillingMap.Add(typeof(T).Name,code); + } + + public static WebApplication ConfigureServices(this WebApplicationBuilder builder) + { + IConfigurationBuilder configurationBuilder = new ConfigurationBuilder() + .AddEnvironmentVariables() + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: true) + .AddEnvironmentVariables(); + IConfigurationRoot configuration = configurationBuilder.Build(); + + string? googleClientFile = configuration["Authentication:Google:GoogleWebClientJson"]; + string? googleServiceAccountJsonFile = configuration["Authentication:Google:GoogleServiceAccountJson"]; + if (googleClientFile != null) + { + Config.GoogleWebClientConfiguration = new ConfigurationBuilder().AddJsonFile(googleClientFile).Build(); + } + + if (googleServiceAccountJsonFile != null) + { + FileInfo safile = new FileInfo(googleServiceAccountJsonFile); + Config.GServiceAccount = JsonConvert.DeserializeObject(safile.OpenText().ReadToEnd()); + } + + + builder.Services.AddRazorPages(); + + builder.Services.AddDbContext(options => + options.UseNpgsql(builder.Configuration.GetConnectionString("Default"))); + + builder.Services.AddIdentity() + .AddEntityFrameworkStores() + .AddDefaultTokenProviders(); + + builder.Services + .AddIdentityServer(options => + { + options.Events.RaiseErrorEvents = true; + options.Events.RaiseInformationEvents = true; + options.Events.RaiseFailureEvents = true; + options.Events.RaiseSuccessEvents = true; + + // see https://docs.duendesoftware.com/identityserver/v6/fundamentals/resources/ + options.EmitStaticAudienceClaim = true; + }) + .AddInMemoryIdentityResources(Config.IdentityResources) + .AddInMemoryApiScopes(Config.ApiScopes) + .AddInMemoryClients(Config.Clients) + .AddAspNetIdentity().AddServerSideSessions(); + + builder.Services.AddAuthentication() + .AddGoogle(options => + { + options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme; + + // register your IdentityServer with Google at https://console.developers.google.com + // enable the Google+ API + // set the redirect URI to https://localhost:5001/signin-google + options.ClientId = "325408689282-6bekh7p3guj4k0f3301a6frf025cnrk1.apps.googleusercontent.com"; + options.ClientSecret = "XV1DLrq8cQE2JI4gZP3h6d8y"; + }); +builder.Services.Configure(options => + { + CultureInfo[] supportedCultures = new[] + { + new CultureInfo("en"), + new CultureInfo("fr"), + new CultureInfo("pt") + }; + + CultureInfo[] supportedUICultures = new[] + { + new CultureInfo("fr"), + new CultureInfo("en"), + new CultureInfo("pt") + }; + + // You must explicitly state which cultures your application supports. + // These are the cultures the app supports for formatting numbers, dates, etc. + options.SupportedCultures = supportedCultures; + + // These are the cultures the app supports for UI strings, i.e. we have localized resources for. + options.SupportedUICultures = supportedUICultures; + + options.RequestCultureProviders = new List + { + new QueryStringRequestCultureProvider { Options = options }, + new CookieRequestCultureProvider { Options = options, CookieName="ASPNET_CULTURE" }, + new AcceptLanguageHeaderRequestCultureProvider { Options = options } + }; + }); + + builder.Services.AddSignalR(); + + builder.Services.AddOptions(); + + _ = builder.Services.AddCors(options => + { + options.AddPolicy("CorsPolicy", builder => + { + _ = builder.WithOrigins("*"); + }); + }); + + + // Add the system clock service + _ = builder.Services.AddSingleton(); + + _ = builder.Services.AddSingleton(); + _ = builder.Services.AddSingleton(); + _ = builder.Services.AddTransient(); + +builder.Services.AddMvc(config => + { + /* var policy = new AuthorizationPolicyBuilder() + .RequireAuthenticatedUser() + .Build(); + config.Filters.Add(new AuthorizeFilter(policy)); */ + config.Filters.Add(new ProducesAttribute("application/json")); + // config.ModelBinders.Insert(0,new MyDateTimeModelBinder()); + // config.ModelBinders.Insert(0,new MyDecimalModelBinder()); + config.EnableEndpointRouting = true; + }).AddFormatterMappings( + config => config.SetMediaTypeMappingForFormat("text/pdf", + new MediaTypeHeaderValue("text/pdf")) + ).AddFormatterMappings( + config => config.SetMediaTypeMappingForFormat("text/x-tex", + new MediaTypeHeaderValue("text/x-tex")) + ) + .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, + options => + { + options.ResourcesPath = "Resources"; + }).AddDataAnnotationsLocalization(); + +var services = builder.Services; + + _ = services.AddTransient(); + _ = services.AddTransient(); + _ = services.AddTransient(); + _ = services.AddTransient(); + _ = services.AddTransient((sp) => new FileDataStore("googledatastore", false)); + _ = services.AddTransient(); + + + // TODO for SMS: services.AddTransient(); + + _ = services.AddLocalization(options => + { + options.ResourcesPath = "Resources"; + }); + var dataDir = new DirectoryInfo(configuration["Site:DataDir"]); + // Add session related services. + + services.AddDataProtection().PersistKeysToFileSystem(dataDir); + services.AddAuthorization(options => + { + + options.AddPolicy("AdministratorOnly", policy => + { + _ = policy.RequireClaim("http://schemas.microsoft.com/ws/2008/06/identity/claims/role", Constants.AdminGroupName); + }); + + options.AddPolicy("FrontOffice", policy => policy.RequireRole(Constants.FrontOfficeGroupName)); + options.AddPolicy("Bearer", new AuthorizationPolicyBuilder() + .AddAuthenticationSchemes("Bearer") + .RequireAuthenticatedUser().Build()); + // options.AddPolicy("EmployeeId", policy => policy.RequireClaim("EmployeeId", "123", "456")); + // options.AddPolicy("BuildingEntry", policy => policy.Requirements.Add(new OfficeEntryRequirement())); + options.AddPolicy("Authenticated", policy => policy.RequireAuthenticatedUser()); + }); + _ = services.AddControllersWithViews() + .AddNewtonsoftJson(); + LoadGoogleConfig(configuration); + + + return builder.Build(); + } + public static WebApplication ConfigurePipeline(this WebApplication app) + { + + if (app.Environment.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + app.UseStaticFiles(); + app.UseRouting(); + app.UseIdentityServer(); + app.UseAuthorization(); + app.MapRazorPages() + .RequireAuthorization(); + ConfigureWorkflow(); + var services = app.Services; + ILoggerFactory loggerFactory = services.GetRequiredService(); + var siteSettings = services.GetRequiredService>(); + var smtpSettings = services.GetRequiredService>(); + var payPalSettings = services.GetRequiredService>(); + var googleAuthSettings = services.GetRequiredService>(); + var authorizationService = services.GetRequiredService(); + var localization = services.GetRequiredService>(); + Startup.Configure(app, siteSettings, smtpSettings, authorizationService, + payPalSettings, googleAuthSettings, localization, loggerFactory, + app.Environment.EnvironmentName ); + app.ConfigureFileServerApp(); + return app; + } + + static void LoadGoogleConfig(IConfigurationRoot configuration) + { + string? googleClientFile = configuration["Authentication:Google:GoogleWebClientJson"]; + string? googleServiceAccountJsonFile = configuration["Authentication:Google:GoogleServiceAccountJson"]; + if (googleClientFile != null) + { + Config.GoogleWebClientConfiguration = new ConfigurationBuilder().AddJsonFile(googleClientFile).Build(); + } + + if (googleServiceAccountJsonFile != null) + { + FileInfo safile = new FileInfo(googleServiceAccountJsonFile); + Config.GServiceAccount = JsonConvert.DeserializeObject(safile.OpenText().ReadToEnd()); + } + } +} diff --git a/src/Yavsc/Hubs/ChatHub.cs b/src/Yavsc/Hubs/ChatHub.cs index be1444ab..056c06e0 100644 --- a/src/Yavsc/Hubs/ChatHub.cs +++ b/src/Yavsc/Hubs/ChatHub.cs @@ -44,17 +44,15 @@ namespace Yavsc public HubInputValidator InputValidator { get; } - public ChatHub() + public ChatHub(ApplicationDbContext dbContext, + ILoggerFactory loggerFactory, + IStringLocalizerFactory stringLocalizerFactory, + IConnexionManager connexionManager) { - var scope = Startup.Services.GetRequiredService().CreateScope(); - - _dbContext = scope.ServiceProvider.GetService(); - var loggerFactory = scope.ServiceProvider.GetService(); - - var stringLocFactory = scope.ServiceProvider.GetService(); - _localizer = stringLocFactory.Create(typeof(ChatHub)); + _dbContext = dbContext; + _localizer = stringLocalizerFactory.Create(typeof(ChatHub)); - _cxManager = scope.ServiceProvider.GetService(); + _cxManager = connexionManager; _cxManager.SetErrorHandler ((context, error) => { NotifyUser(NotificationTypes.Error, context, error); diff --git a/src/Yavsc/Models/ApplicationDbContext.cs b/src/Yavsc/Models/ApplicationDbContext.cs index 49259bf9..0a5dfd6f 100644 --- a/src/Yavsc/Models/ApplicationDbContext.cs +++ b/src/Yavsc/Models/ApplicationDbContext.cs @@ -42,6 +42,14 @@ namespace Yavsc.Models public class ApplicationDbContext : IdentityDbContext { + public ApplicationDbContext() + { + + } + public ApplicationDbContext(DbContextOptions options) : base(options) + { + + } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); @@ -89,15 +97,7 @@ namespace Yavsc.Models protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - if (!string.IsNullOrWhiteSpace(Startup.ConnectionString)) - { - optionsBuilder.UseNpgsql(Startup.ConnectionString); - return; - } - var appSetup = (string) AppDomain.CurrentDomain.GetData(Constants.YavscConnectionStringEnvName); - - if (!string.IsNullOrWhiteSpace(appSetup)) { optionsBuilder.UseNpgsql(appSetup); diff --git a/src/Yavsc/Pages/Account/AccessDenied.cshtml b/src/Yavsc/Pages/Account/AccessDenied.cshtml new file mode 100644 index 00000000..068c01d3 --- /dev/null +++ b/src/Yavsc/Pages/Account/AccessDenied.cshtml @@ -0,0 +1,10 @@ +@page +@model Yavsc.Pages.Account.AccessDeniedModel +@{ +} +
+
+

Access Denied

+

You do not have permission to access that resource.

+
+
diff --git a/src/Yavsc/Pages/Account/AccessDenied.cshtml.cs b/src/Yavsc/Pages/Account/AccessDenied.cshtml.cs new file mode 100644 index 00000000..b8297157 --- /dev/null +++ b/src/Yavsc/Pages/Account/AccessDenied.cshtml.cs @@ -0,0 +1,13 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Account; + +public class AccessDeniedModel : PageModel +{ + public void OnGet() + { + } +} diff --git a/src/Yavsc/Pages/Account/ForgotPassword/Index.cshtml b/src/Yavsc/Pages/Account/ForgotPassword/Index.cshtml new file mode 100644 index 00000000..28a185d5 --- /dev/null +++ b/src/Yavsc/Pages/Account/ForgotPassword/Index.cshtml @@ -0,0 +1,26 @@ +@page +@model Yavsc.Pages.ForgotPassword.Index + +

Forgot your password

+ +
+

Enter your user name or e-mail.

+
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/src/Yavsc/Pages/Account/ForgotPassword/Index.cshtml.cs b/src/Yavsc/Pages/Account/ForgotPassword/Index.cshtml.cs new file mode 100644 index 00000000..092b8d2a --- /dev/null +++ b/src/Yavsc/Pages/Account/ForgotPassword/Index.cshtml.cs @@ -0,0 +1,113 @@ + +using System.Web; +using Duende.IdentityServer.Services; +using Duende.IdentityServer.Stores; +using Google.Apis.Calendar.v3.Data; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Options; +using Yavsc.Helpers; +using Yavsc.Interface; +using Yavsc.Models; +using Yavsc.ViewModels.Account; + +namespace Yavsc.Pages.ForgotPassword; + +[SecurityHeaders] +[AllowAnonymous] +public class Index : PageModel +{ + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly IIdentityServerInteractionService _interaction; + private readonly IAuthenticationSchemeProvider _schemeProvider; + private readonly IIdentityProviderStore _identityProviderStore; + private readonly IEventService _events; + private readonly ApplicationDbContext _dbContext; + private readonly ILogger _logger; + private readonly SiteSettings _siteSettings; + private readonly ITrueEmailSender _emailSender; + private readonly IStringLocalizer _localizer; + + [BindProperty] + public ForgotPasswordViewModel Input { get; set; } + + public Index( + IIdentityServerInteractionService interaction, + IAuthenticationSchemeProvider schemeProvider, + IIdentityProviderStore identityProviderStore, + IEventService events, + UserManager userManager, + SignInManager signInManager, + ApplicationDbContext applicationDbContext, + ILoggerFactory loggerFactory, + ITrueEmailSender emailSender, + IStringLocalizer localizer, + IOptions siteSettings + ) + { + _userManager = userManager; + _signInManager = signInManager; + _interaction = interaction; + _schemeProvider = schemeProvider; + _identityProviderStore = identityProviderStore; + _events = events; + _dbContext = applicationDbContext; + _logger = loggerFactory.CreateLogger(); + _siteSettings = siteSettings.Value; + _emailSender = emailSender; + _localizer = localizer; + } + + public async Task OnGet() + { + return Page(); + } + + public async Task OnPost() + { + ApplicationUser user; + // Username should not contain any '@' + if (Input.LoginOrEmail.Contains('@')) + { + user = await _userManager.FindByEmailAsync(Input.LoginOrEmail); + } + else + { + user = await _dbContext.Users.FirstOrDefaultAsync(u => u.UserName == Input.LoginOrEmail); + } + + // Don't reveal that the user does not exist or is not confirmed + if (user == null) + { + _logger.LogWarning($"ForgotPassword: Email or User name {Input.LoginOrEmail} not found"); + return Redirect("ForgotPasswordConfirmation"); + } + // We cannot require the email to be confimed, + // or a lot of non confirmed email never be able to finalyze + // registration. + if (!await _userManager.IsEmailConfirmedAsync(user)) + { + _logger.LogWarning($"ForgotPassword: Email {Input.LoginOrEmail} not confirmed"); + // don't break this recovery process here ... + // or else e-mail won't ever be validated, since user lost his password. + // don't return View("ForgotPasswordConfirmation"); + } + + // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 + // Send an email with this link + var code = await _userManager.GeneratePasswordResetTokenAsync(user); + var callbackUrl = _siteSettings.Audience + "/Account/ResetPassword/" + + HttpUtility.UrlEncode(user.Id) + "/" + HttpUtility.UrlEncode(code); + + var sent = await _emailSender.SendEmailAsync(user.UserName, user.Email, _localizer["Reset Password"], + _localizer["Please reset your password by "] + " following this link"); + return Page(); + } +} diff --git a/src/Yavsc/Pages/Account/Login/Index.cshtml b/src/Yavsc/Pages/Account/Login/Index.cshtml new file mode 100644 index 00000000..c8aa3034 --- /dev/null +++ b/src/Yavsc/Pages/Account/Login/Index.cshtml @@ -0,0 +1,136 @@ +@page +@model Yavsc.Pages.Login.Index + + diff --git a/src/Yavsc/Pages/Account/Login/Index.cshtml.cs b/src/Yavsc/Pages/Account/Login/Index.cshtml.cs new file mode 100644 index 00000000..e0f0b3d5 --- /dev/null +++ b/src/Yavsc/Pages/Account/Login/Index.cshtml.cs @@ -0,0 +1,216 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer; +using Duende.IdentityServer.Events; +using Duende.IdentityServer.Models; +using Duende.IdentityServer.Services; +using Duende.IdentityServer.Stores; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Yavsc.Models; + +namespace Yavsc.Pages.Login; + +[SecurityHeaders] +[AllowAnonymous] +public class Index : PageModel +{ + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly IIdentityServerInteractionService _interaction; + private readonly IEventService _events; + private readonly IAuthenticationSchemeProvider _schemeProvider; + private readonly IIdentityProviderStore _identityProviderStore; + + public ViewModel View { get; set; } = default!; + + [BindProperty] + public InputModel Input { get; set; } = default!; + + public Index( + IIdentityServerInteractionService interaction, + IAuthenticationSchemeProvider schemeProvider, + IIdentityProviderStore identityProviderStore, + IEventService events, + UserManager userManager, + SignInManager signInManager) + { + _userManager = userManager; + _signInManager = signInManager; + _interaction = interaction; + _schemeProvider = schemeProvider; + _identityProviderStore = identityProviderStore; + _events = events; + } + + public async Task OnGet(string? returnUrl) + { + await BuildModelAsync(returnUrl); + + if (View.IsExternalLoginOnly) + { + // we only have one option for logging in and it's an external provider + return RedirectToPage("/ExternalLogin/Challenge", new { scheme = View.ExternalLoginScheme, returnUrl }); + } + + return Page(); + } + + public async Task OnPost() + { + // check if we are in the context of an authorization request + var context = await _interaction.GetAuthorizationContextAsync(Input.ReturnUrl); + + // the user clicked the "cancel" button + if (Input.Button != "login") + { + if (context != null) + { + // This "can't happen", because if the ReturnUrl was null, then the context would be null + ArgumentNullException.ThrowIfNull(Input.ReturnUrl, nameof(Input.ReturnUrl)); + + // if the user cancels, send a result back into IdentityServer as if they + // denied the consent (even if this client does not require consent). + // this will send back an access denied OIDC error response to the client. + await _interaction.DenyAuthorizationAsync(context, AuthorizationError.AccessDenied); + + // we can trust model.ReturnUrl since GetAuthorizationContextAsync returned non-null + if (context.IsNativeClient()) + { + // The client is native, so this change in how to + // return the response is for better UX for the end user. + return this.LoadingPage(Input.ReturnUrl); + } + + return Redirect(Input.ReturnUrl ?? "~/"); + } + else + { + // since we don't have a valid context, then we just go back to the home page + return Redirect("~/"); + } + } + + if (ModelState.IsValid) + { + var result = await _signInManager.PasswordSignInAsync(Input.Username!, Input.Password!, Input.RememberLogin, lockoutOnFailure: true); + if (result.Succeeded) + { + var user = await _userManager.FindByNameAsync(Input.Username!); + await _events.RaiseAsync(new UserLoginSuccessEvent(user!.UserName, user.Id, user.UserName, clientId: context?.Client.ClientId)); + Telemetry.Metrics.UserLogin(context?.Client.ClientId, IdentityServerConstants.LocalIdentityProvider); + + if (context != null) + { + // This "can't happen", because if the ReturnUrl was null, then the context would be null + ArgumentNullException.ThrowIfNull(Input.ReturnUrl, nameof(Input.ReturnUrl)); + + if (context.IsNativeClient()) + { + // The client is native, so this change in how to + // return the response is for better UX for the end user. + return this.LoadingPage(Input.ReturnUrl); + } + + // we can trust model.ReturnUrl since GetAuthorizationContextAsync returned non-null + return Redirect(Input.ReturnUrl ?? "~/"); + } + + // request for a local page + if (Url.IsLocalUrl(Input.ReturnUrl)) + { + return Redirect(Input.ReturnUrl); + } + else if (string.IsNullOrEmpty(Input.ReturnUrl)) + { + return Redirect("~/"); + } + else + { + // user might have clicked on a malicious link - should be logged + throw new ArgumentException("invalid return URL"); + } + } + + const string error = "invalid credentials"; + await _events.RaiseAsync(new UserLoginFailureEvent(Input.Username, error, clientId:context?.Client.ClientId)); + Telemetry.Metrics.UserLoginFailure(context?.Client.ClientId, IdentityServerConstants.LocalIdentityProvider, error); + ModelState.AddModelError(string.Empty, LoginOptions.InvalidCredentialsErrorMessage); + } + + // something went wrong, show form with error + await BuildModelAsync(Input.ReturnUrl); + return Page(); + } + + private async Task BuildModelAsync(string? returnUrl) + { + Input = new InputModel + { + ReturnUrl = returnUrl + }; + + var context = await _interaction.GetAuthorizationContextAsync(returnUrl); + if (context?.IdP != null && await _schemeProvider.GetSchemeAsync(context.IdP) != null) + { + var local = context.IdP == Duende.IdentityServer.IdentityServerConstants.LocalIdentityProvider; + + // this is meant to short circuit the UI and only trigger the one external IdP + View = new ViewModel + { + EnableLocalLogin = local, + }; + + Input.Username = context.LoginHint; + + if (!local) + { + View.ExternalProviders = new[] { new ViewModel.ExternalProvider ( authenticationScheme: context.IdP ) }; + } + + return; + } + + var schemes = await _schemeProvider.GetAllSchemesAsync(); + + var providers = schemes + .Where(x => x.DisplayName != null) + .Select(x => new ViewModel.ExternalProvider + ( + authenticationScheme: x.Name, + displayName: x.DisplayName ?? x.Name + )).ToList(); + + var dynamicSchemes = (await _identityProviderStore.GetAllSchemeNamesAsync()) + .Where(x => x.Enabled) + .Select(x => new ViewModel.ExternalProvider + ( + authenticationScheme: x.Scheme, + displayName: x.DisplayName ?? x.Scheme + )); + providers.AddRange(dynamicSchemes); + + + var allowLocal = true; + var client = context?.Client; + if (client != null) + { + allowLocal = client.EnableLocalLogin; + if (client.IdentityProviderRestrictions != null && client.IdentityProviderRestrictions.Count != 0) + { + providers = providers.Where(provider => client.IdentityProviderRestrictions.Contains(provider.AuthenticationScheme)).ToList(); + } + } + + View = new ViewModel + { + AllowRememberLogin = LoginOptions.AllowRememberLogin, + EnableLocalLogin = allowLocal && LoginOptions.AllowLocalLogin, + ExternalProviders = providers.ToArray() + }; + } +} diff --git a/src/Yavsc/Pages/Account/Login/InputModel.cs b/src/Yavsc/Pages/Account/Login/InputModel.cs new file mode 100644 index 00000000..29dca8ef --- /dev/null +++ b/src/Yavsc/Pages/Account/Login/InputModel.cs @@ -0,0 +1,17 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using System.ComponentModel.DataAnnotations; + +namespace Yavsc.Pages.Login; + +public class InputModel +{ + [Required] + public string? Username { get; set; } + [Required] + public string? Password { get; set; } + public bool RememberLogin { get; set; } + public string? ReturnUrl { get; set; } + public string? Button { get; set; } +} diff --git a/src/Yavsc/Pages/Account/Login/LoginOptions.cs b/src/Yavsc/Pages/Account/Login/LoginOptions.cs new file mode 100644 index 00000000..698f5256 --- /dev/null +++ b/src/Yavsc/Pages/Account/Login/LoginOptions.cs @@ -0,0 +1,12 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Login; + +public static class LoginOptions +{ + public static readonly bool AllowLocalLogin = true; + public static readonly bool AllowRememberLogin = true; + public static readonly TimeSpan RememberMeLoginDuration = TimeSpan.FromDays(30); + public static readonly string InvalidCredentialsErrorMessage = "Invalid username or password"; +} diff --git a/src/Yavsc/Pages/Account/Login/ViewModel.cs b/src/Yavsc/Pages/Account/Login/ViewModel.cs new file mode 100644 index 00000000..f4f19a81 --- /dev/null +++ b/src/Yavsc/Pages/Account/Login/ViewModel.cs @@ -0,0 +1,28 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Login; + +public class ViewModel +{ + public bool AllowRememberLogin { get; set; } = true; + public bool EnableLocalLogin { get; set; } = true; + + public IEnumerable ExternalProviders { get; set; } = Enumerable.Empty(); + public IEnumerable VisibleExternalProviders => ExternalProviders.Where(x => !String.IsNullOrWhiteSpace(x.DisplayName)); + + public bool IsExternalLoginOnly => EnableLocalLogin == false && ExternalProviders?.Count() == 1; + public string? ExternalLoginScheme => IsExternalLoginOnly ? ExternalProviders?.SingleOrDefault()?.AuthenticationScheme : null; + + public class ExternalProvider + { + public ExternalProvider(string authenticationScheme, string? displayName = null) + { + AuthenticationScheme = authenticationScheme; + DisplayName = displayName; + } + + public string? DisplayName { get; set; } + public string AuthenticationScheme { get; set; } + } +} diff --git a/src/Yavsc/Pages/Account/Logout/Index.cshtml b/src/Yavsc/Pages/Account/Logout/Index.cshtml new file mode 100644 index 00000000..8a31356d --- /dev/null +++ b/src/Yavsc/Pages/Account/Logout/Index.cshtml @@ -0,0 +1,17 @@ +@page +@model Yavsc.Pages.Logout.Index + +
+
+

Logout

+

Would you like to logout of IdentityServer?

+
+ +
+ + +
+ +
+
+
diff --git a/src/Yavsc/Pages/Account/Logout/Index.cshtml.cs b/src/Yavsc/Pages/Account/Logout/Index.cshtml.cs new file mode 100644 index 00000000..2a34967c --- /dev/null +++ b/src/Yavsc/Pages/Account/Logout/Index.cshtml.cs @@ -0,0 +1,104 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Events; +using Duende.IdentityServer.Extensions; +using Duende.IdentityServer.Services; +using IdentityModel; +using Yavsc.Models; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Logout; + +[SecurityHeaders] +[AllowAnonymous] +public class Index : PageModel +{ + private readonly SignInManager _signInManager; + private readonly IIdentityServerInteractionService _interaction; + private readonly IEventService _events; + + [BindProperty] + public string? LogoutId { get; set; } + + public Index(SignInManager signInManager, IIdentityServerInteractionService interaction, IEventService events) + { + _signInManager = signInManager; + _interaction = interaction; + _events = events; + } + + public async Task OnGet(string? logoutId) + { + LogoutId = logoutId; + + var showLogoutPrompt = LogoutOptions.ShowLogoutPrompt; + + if (User.Identity?.IsAuthenticated != true) + { + // if the user is not authenticated, then just show logged out page + showLogoutPrompt = false; + } + else + { + var context = await _interaction.GetLogoutContextAsync(LogoutId); + if (context?.ShowSignoutPrompt == false) + { + // it's safe to automatically sign-out + showLogoutPrompt = false; + } + } + + if (showLogoutPrompt == false) + { + // if the request for logout was properly authenticated from IdentityServer, then + // we don't need to show the prompt and can just log the user out directly. + return await OnPost(); + } + + return Page(); + } + + public async Task OnPost() + { + if (User.Identity?.IsAuthenticated == true) + { + // if there's no current logout context, we need to create one + // this captures necessary info from the current logged in user + // this can still return null if there is no context needed + LogoutId ??= await _interaction.CreateLogoutContextAsync(); + + // delete local authentication cookie + await _signInManager.SignOutAsync(); + + // see if we need to trigger federated logout + var idp = User.FindFirst(JwtClaimTypes.IdentityProvider)?.Value; + + // raise the logout event + await _events.RaiseAsync(new UserLogoutSuccessEvent(User.GetSubjectId(), User.GetDisplayName())); + Telemetry.Metrics.UserLogout(idp); + + // if it's a local login we can ignore this workflow + if (idp != null && idp != Duende.IdentityServer.IdentityServerConstants.LocalIdentityProvider) + { + // we need to see if the provider supports external logout + if (await HttpContext.GetSchemeSupportsSignOutAsync(idp)) + { + // build a return URL so the upstream provider will redirect back + // to us after the user has logged out. this allows us to then + // complete our single sign-out processing. + var url = Url.Page("/Account/Logout/Loggedout", new { logoutId = LogoutId }); + + // this triggers a redirect to the external provider for sign-out + return SignOut(new AuthenticationProperties { RedirectUri = url }, idp); + } + } + } + + return RedirectToPage("/Account/Logout/LoggedOut", new { logoutId = LogoutId }); + } +} diff --git a/src/Yavsc/Pages/Account/Logout/LoggedOut.cshtml b/src/Yavsc/Pages/Account/Logout/LoggedOut.cshtml new file mode 100644 index 00000000..44d8e158 --- /dev/null +++ b/src/Yavsc/Pages/Account/Logout/LoggedOut.cshtml @@ -0,0 +1,30 @@ +@page +@model Yavsc.Pages.Logout.LoggedOut + +
+

+ Logout + You are now logged out +

+ + @if (Model.View.PostLogoutRedirectUri != null) + { +
+ Click here to return to the + @Model.View.ClientName application. +
+ } + + @if (Model.View.SignOutIframeUrl != null) + { + + } +
+ +@section scripts +{ + @if (Model.View.AutomaticRedirectAfterSignOut) + { + + } +} diff --git a/src/Yavsc/Pages/Account/Logout/LoggedOut.cshtml.cs b/src/Yavsc/Pages/Account/Logout/LoggedOut.cshtml.cs new file mode 100644 index 00000000..a15fb67e --- /dev/null +++ b/src/Yavsc/Pages/Account/Logout/LoggedOut.cshtml.cs @@ -0,0 +1,36 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Logout; + +[SecurityHeaders] +[AllowAnonymous] +public class LoggedOut : PageModel +{ + private readonly IIdentityServerInteractionService _interactionService; + + public LoggedOutViewModel View { get; set; } = default!; + + public LoggedOut(IIdentityServerInteractionService interactionService) + { + _interactionService = interactionService; + } + + public async Task OnGet(string? logoutId) + { + // get context information (client name, post logout redirect URI and iframe for federated signout) + var logout = await _interactionService.GetLogoutContextAsync(logoutId); + + View = new LoggedOutViewModel + { + AutomaticRedirectAfterSignOut = LogoutOptions.AutomaticRedirectAfterSignOut, + PostLogoutRedirectUri = logout?.PostLogoutRedirectUri, + ClientName = String.IsNullOrEmpty(logout?.ClientName) ? logout?.ClientId : logout?.ClientName, + SignOutIframeUrl = logout?.SignOutIFrameUrl + }; + } +} diff --git a/src/Yavsc/Pages/Account/Logout/LoggedOutViewModel.cs b/src/Yavsc/Pages/Account/Logout/LoggedOutViewModel.cs new file mode 100644 index 00000000..87868902 --- /dev/null +++ b/src/Yavsc/Pages/Account/Logout/LoggedOutViewModel.cs @@ -0,0 +1,15 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Logout; + +public class LoggedOutViewModel +{ + public string? PostLogoutRedirectUri { get; set; } + public string? ClientName { get; set; } + public string? SignOutIframeUrl { get; set; } + public bool AutomaticRedirectAfterSignOut { get; set; } +} diff --git a/src/Yavsc/Pages/Account/Logout/LogoutOptions.cs b/src/Yavsc/Pages/Account/Logout/LogoutOptions.cs new file mode 100644 index 00000000..8e34591d --- /dev/null +++ b/src/Yavsc/Pages/Account/Logout/LogoutOptions.cs @@ -0,0 +1,11 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + + +namespace Yavsc.Pages.Logout; + +public static class LogoutOptions +{ + public static readonly bool ShowLogoutPrompt = true; + public static readonly bool AutomaticRedirectAfterSignOut = false; +} diff --git a/src/Yavsc/Views/Activity/Create.cshtml b/src/Yavsc/Pages/Activity/Create.cshtml similarity index 100% rename from src/Yavsc/Views/Activity/Create.cshtml rename to src/Yavsc/Pages/Activity/Create.cshtml diff --git a/src/Yavsc/Views/Activity/Delete.cshtml b/src/Yavsc/Pages/Activity/Delete.cshtml similarity index 100% rename from src/Yavsc/Views/Activity/Delete.cshtml rename to src/Yavsc/Pages/Activity/Delete.cshtml diff --git a/src/Yavsc/Views/Activity/Details.cshtml b/src/Yavsc/Pages/Activity/Details.cshtml similarity index 100% rename from src/Yavsc/Views/Activity/Details.cshtml rename to src/Yavsc/Pages/Activity/Details.cshtml diff --git a/src/Yavsc/Views/Activity/Edit.cshtml b/src/Yavsc/Pages/Activity/Edit.cshtml similarity index 100% rename from src/Yavsc/Views/Activity/Edit.cshtml rename to src/Yavsc/Pages/Activity/Edit.cshtml diff --git a/src/Yavsc/Views/Activity/Index.cshtml b/src/Yavsc/Pages/Activity/Index.cshtml similarity index 100% rename from src/Yavsc/Views/Activity/Index.cshtml rename to src/Yavsc/Pages/Activity/Index.cshtml diff --git a/src/Yavsc/Pages/Ciba/All.cshtml b/src/Yavsc/Pages/Ciba/All.cshtml new file mode 100644 index 00000000..59f53037 --- /dev/null +++ b/src/Yavsc/Pages/Ciba/All.cshtml @@ -0,0 +1,48 @@ +@page +@model Yavsc.Pages.Ciba.AllModel +@{ +} + +
+
+
+
+
+

Pending Backchannel Login Requests

+
+
+ @if (Model.Logins.Any()) + { + + + + + + + + + + + @foreach (var login in Model.Logins) + { + + + + + + + } + +
IdClient IdBinding Message
@login.InternalId@login.Client.ClientId@login.BindingMessage + Process +
+ } + else + { +
No Pending Login Requests
+ } +
+
+
+
+
diff --git a/src/Yavsc/Pages/Ciba/All.cshtml.cs b/src/Yavsc/Pages/Ciba/All.cshtml.cs new file mode 100644 index 00000000..e065eb56 --- /dev/null +++ b/src/Yavsc/Pages/Ciba/All.cshtml.cs @@ -0,0 +1,28 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Models; +using Duende.IdentityServer.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Ciba; + +[SecurityHeaders] +[Authorize] +public class AllModel : PageModel +{ + public IEnumerable Logins { get; set; } = default!; + + private readonly IBackchannelAuthenticationInteractionService _backchannelAuthenticationInteraction; + + public AllModel(IBackchannelAuthenticationInteractionService backchannelAuthenticationInteractionService) + { + _backchannelAuthenticationInteraction = backchannelAuthenticationInteractionService; + } + + public async Task OnGet() + { + Logins = await _backchannelAuthenticationInteraction.GetPendingLoginRequestsForCurrentUserAsync(); + } +} diff --git a/src/Yavsc/Pages/Ciba/Consent.cshtml b/src/Yavsc/Pages/Ciba/Consent.cshtml new file mode 100644 index 00000000..6ebe44ab --- /dev/null +++ b/src/Yavsc/Pages/Ciba/Consent.cshtml @@ -0,0 +1,98 @@ +@page +@model Yavsc.Pages.Ciba.Consent +@{ +} + + diff --git a/src/Yavsc/Pages/Ciba/Consent.cshtml.cs b/src/Yavsc/Pages/Ciba/Consent.cshtml.cs new file mode 100644 index 00000000..cbfd1f3f --- /dev/null +++ b/src/Yavsc/Pages/Ciba/Consent.cshtml.cs @@ -0,0 +1,228 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Events; +using Duende.IdentityServer.Extensions; +using Duende.IdentityServer.Models; +using Duende.IdentityServer.Services; +using Duende.IdentityServer.Validation; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Ciba; + +[Authorize] +[SecurityHeaders] +public class Consent : PageModel +{ + private readonly IBackchannelAuthenticationInteractionService _interaction; + private readonly IEventService _events; + private readonly ILogger _logger; + + public Consent( + IBackchannelAuthenticationInteractionService interaction, + IEventService events, + ILogger logger) + { + _interaction = interaction; + _events = events; + _logger = logger; + } + + public ViewModel View { get; set; } = default!; + + [BindProperty] + public InputModel Input { get; set; } = default!; + + public async Task OnGet(string? id) + { + if (!await SetViewModelAsync(id)) + { + return RedirectToPage("/Home/Error/Index"); + } + + Input = new InputModel + { + Id = id + }; + + return Page(); + } + + public async Task OnPost() + { + // validate return url is still valid + var request = await _interaction.GetLoginRequestByInternalIdAsync(Input.Id ?? throw new ArgumentNullException(nameof(Input.Id))); + if (request == null || request.Subject.GetSubjectId() != User.GetSubjectId()) + { + _logger.InvalidId(Input.Id); + return RedirectToPage("/Home/Error/Index"); + } + + CompleteBackchannelLoginRequest? result = null; + + // user clicked 'no' - send back the standard 'access_denied' response + if (Input.Button == "no") + { + result = new CompleteBackchannelLoginRequest(Input.Id); + + // emit event + await _events.RaiseAsync(new ConsentDeniedEvent(User.GetSubjectId(), request.Client.ClientId, request.ValidatedResources.RawScopeValues)); + Telemetry.Metrics.ConsentDenied(request.Client.ClientId, request.ValidatedResources.ParsedScopes.Select(s => s.ParsedName)); + } + // user clicked 'yes' - validate the data + else if (Input.Button == "yes") + { + // if the user consented to some scope, build the response model + if (Input.ScopesConsented.Any()) + { + var scopes = Input.ScopesConsented; + if (ConsentOptions.EnableOfflineAccess == false) + { + scopes = scopes.Where(x => x != Duende.IdentityServer.IdentityServerConstants.StandardScopes.OfflineAccess); + } + + result = new CompleteBackchannelLoginRequest(Input.Id) + { + ScopesValuesConsented = scopes.ToArray(), + Description = Input.Description + }; + + // emit event + await _events.RaiseAsync(new ConsentGrantedEvent(User.GetSubjectId(), request.Client.ClientId, request.ValidatedResources.RawScopeValues, result.ScopesValuesConsented, false)); + Telemetry.Metrics.ConsentGranted(request.Client.ClientId, result.ScopesValuesConsented, false); + var denied = request.ValidatedResources.ParsedScopes.Select(s => s.ParsedName).Except(result.ScopesValuesConsented); + Telemetry.Metrics.ConsentDenied(request.Client.ClientId, denied); + } + else + { + ModelState.AddModelError("", ConsentOptions.MustChooseOneErrorMessage); + } + } + else + { + ModelState.AddModelError("", ConsentOptions.InvalidSelectionErrorMessage); + } + + if (result != null) + { + // communicate outcome of consent back to identityserver + await _interaction.CompleteLoginRequestAsync(result); + + return RedirectToPage("/Ciba/All"); + } + + // we need to redisplay the consent UI + if (!await SetViewModelAsync(Input.Id)) + { + return RedirectToPage("/Home/Error/Index"); + } + return Page(); + } + + private async Task SetViewModelAsync(string? id) + { + ArgumentNullException.ThrowIfNull(id); + + var request = await _interaction.GetLoginRequestByInternalIdAsync(id); + if (request != null && request.Subject.GetSubjectId() == User.GetSubjectId()) + { + View = CreateConsentViewModel(request); + return true; + } + else + { + _logger.NoMatchingBackchannelLoginRequest(id); + return false; + } + } + + private ViewModel CreateConsentViewModel(BackchannelUserLoginRequest request) + { + var vm = new ViewModel + { + ClientName = request.Client.ClientName ?? request.Client.ClientId, + ClientUrl = request.Client.ClientUri, + ClientLogoUrl = request.Client.LogoUri, + BindingMessage = request.BindingMessage + }; + + vm.IdentityScopes = request.ValidatedResources.Resources.IdentityResources + .Select(x => CreateScopeViewModel(x, Input == null || Input.ScopesConsented.Contains(x.Name))) + .ToArray(); + + var resourceIndicators = request.RequestedResourceIndicators ?? Enumerable.Empty(); + var apiResources = request.ValidatedResources.Resources.ApiResources.Where(x => resourceIndicators.Contains(x.Name)); + + var apiScopes = new List(); + foreach (var parsedScope in request.ValidatedResources.ParsedScopes) + { + var apiScope = request.ValidatedResources.Resources.FindApiScope(parsedScope.ParsedName); + if (apiScope != null) + { + var scopeVm = CreateScopeViewModel(parsedScope, apiScope, Input == null || Input.ScopesConsented.Contains(parsedScope.RawValue)); + scopeVm.Resources = apiResources.Where(x => x.Scopes.Contains(parsedScope.ParsedName)) + .Select(x => new ResourceViewModel + { + Name = x.Name, + DisplayName = x.DisplayName ?? x.Name, + }).ToArray(); + apiScopes.Add(scopeVm); + } + } + if (ConsentOptions.EnableOfflineAccess && request.ValidatedResources.Resources.OfflineAccess) + { + apiScopes.Add(GetOfflineAccessScope(Input == null || Input.ScopesConsented.Contains(Duende.IdentityServer.IdentityServerConstants.StandardScopes.OfflineAccess))); + } + vm.ApiScopes = apiScopes; + + return vm; + } + + private static ScopeViewModel CreateScopeViewModel(IdentityResource identity, bool check) + { + return new ScopeViewModel + { + Name = identity.Name, + Value = identity.Name, + DisplayName = identity.DisplayName ?? identity.Name, + Description = identity.Description, + Emphasize = identity.Emphasize, + Required = identity.Required, + Checked = check || identity.Required + }; + } + + private static ScopeViewModel CreateScopeViewModel(ParsedScopeValue parsedScopeValue, ApiScope apiScope, bool check) + { + var displayName = apiScope.DisplayName ?? apiScope.Name; + if (!String.IsNullOrWhiteSpace(parsedScopeValue.ParsedParameter)) + { + displayName += ":" + parsedScopeValue.ParsedParameter; + } + + return new ScopeViewModel + { + Name = parsedScopeValue.ParsedName, + Value = parsedScopeValue.RawValue, + DisplayName = displayName, + Description = apiScope.Description, + Emphasize = apiScope.Emphasize, + Required = apiScope.Required, + Checked = check || apiScope.Required + }; + } + + private static ScopeViewModel GetOfflineAccessScope(bool check) + { + return new ScopeViewModel + { + Value = Duende.IdentityServer.IdentityServerConstants.StandardScopes.OfflineAccess, + DisplayName = ConsentOptions.OfflineAccessDisplayName, + Description = ConsentOptions.OfflineAccessDescription, + Emphasize = true, + Checked = check + }; + } +} diff --git a/src/Yavsc/Pages/Ciba/ConsentOptions.cs b/src/Yavsc/Pages/Ciba/ConsentOptions.cs new file mode 100644 index 00000000..31a2db3e --- /dev/null +++ b/src/Yavsc/Pages/Ciba/ConsentOptions.cs @@ -0,0 +1,14 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Ciba; + +public static class ConsentOptions +{ + public static readonly bool EnableOfflineAccess = true; + public static readonly string OfflineAccessDisplayName = "Offline Access"; + public static readonly string OfflineAccessDescription = "Access to your applications and resources, even when you are offline"; + + public static readonly string MustChooseOneErrorMessage = "You must pick at least one permission"; + public static readonly string InvalidSelectionErrorMessage = "Invalid selection"; +} diff --git a/src/Yavsc/Pages/Ciba/Index.cshtml b/src/Yavsc/Pages/Ciba/Index.cshtml new file mode 100644 index 00000000..80ea17fe --- /dev/null +++ b/src/Yavsc/Pages/Ciba/Index.cshtml @@ -0,0 +1,30 @@ +@page +@model Yavsc.Pages.Ciba.IndexModel +@{ +} + +
+
+ @if (Model.LoginRequest.Client.LogoUri != null) + { + + } +

+ @Model.LoginRequest.Client.ClientName + is requesting your permission +

+ +

+ Verify that this identifier matches what the client is displaying: + @Model.LoginRequest.BindingMessage +

+ +

+ Do you wish to continue? +

+ + +
+
diff --git a/src/Yavsc/Pages/Ciba/Index.cshtml.cs b/src/Yavsc/Pages/Ciba/Index.cshtml.cs new file mode 100644 index 00000000..e8b151fd --- /dev/null +++ b/src/Yavsc/Pages/Ciba/Index.cshtml.cs @@ -0,0 +1,42 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Models; +using Duende.IdentityServer.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Ciba; + +[AllowAnonymous] +[SecurityHeaders] +public class IndexModel : PageModel +{ + public BackchannelUserLoginRequest LoginRequest { get; set; } = default!; + + private readonly IBackchannelAuthenticationInteractionService _backchannelAuthenticationInteraction; + private readonly ILogger _logger; + + public IndexModel(IBackchannelAuthenticationInteractionService backchannelAuthenticationInteractionService, ILogger logger) + { + _backchannelAuthenticationInteraction = backchannelAuthenticationInteractionService; + _logger = logger; + } + + public async Task OnGet(string id) + { + var result = await _backchannelAuthenticationInteraction.GetLoginRequestByInternalIdAsync(id); + if (result == null) + { + _logger.InvalidBackchannelLoginId(id); + return RedirectToPage("/Home/Error/Index"); + } + else + { + LoginRequest = result; + } + + return Page(); + } +} diff --git a/src/Yavsc/Pages/Ciba/InputModel.cs b/src/Yavsc/Pages/Ciba/InputModel.cs new file mode 100644 index 00000000..224b8131 --- /dev/null +++ b/src/Yavsc/Pages/Ciba/InputModel.cs @@ -0,0 +1,12 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Ciba; + +public class InputModel +{ + public string? Button { get; set; } + public IEnumerable ScopesConsented { get; set; } = new List(); + public string? Id { get; set; } + public string? Description { get; set; } +} diff --git a/src/Yavsc/Pages/Ciba/ViewModel.cs b/src/Yavsc/Pages/Ciba/ViewModel.cs new file mode 100644 index 00000000..baee1cdb --- /dev/null +++ b/src/Yavsc/Pages/Ciba/ViewModel.cs @@ -0,0 +1,34 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Ciba; + +public class ViewModel +{ + public string? ClientName { get; set; } + public string? ClientUrl { get; set; } + public string? ClientLogoUrl { get; set; } + + public string? BindingMessage { get; set; } + + public IEnumerable IdentityScopes { get; set; } = Enumerable.Empty(); + public IEnumerable ApiScopes { get; set; } = Enumerable.Empty(); +} + +public class ScopeViewModel +{ + public string? Name { get; set; } + public string? Value { get; set; } + public string? DisplayName { get; set; } + public string? Description { get; set; } + public bool Emphasize { get; set; } + public bool Required { get; set; } + public bool Checked { get; set; } + public IEnumerable Resources { get; set; } = Enumerable.Empty(); +} + +public class ResourceViewModel +{ + public string? Name { get; set; } + public string? DisplayName { get; set; } +} diff --git a/src/Yavsc/Pages/Ciba/_ScopeListItem.cshtml b/src/Yavsc/Pages/Ciba/_ScopeListItem.cshtml new file mode 100644 index 00000000..91280078 --- /dev/null +++ b/src/Yavsc/Pages/Ciba/_ScopeListItem.cshtml @@ -0,0 +1,47 @@ +@using Yavsc.Pages.Ciba +@model ScopeViewModel + +
  • + + @if (Model.Required) + { + (required) + } + @if (Model.Description != null) + { + + } + @if (Model.Resources?.Any() == true) + { + + } +
  • diff --git a/src/Yavsc/Pages/Consent/ConsentOptions.cs b/src/Yavsc/Pages/Consent/ConsentOptions.cs new file mode 100644 index 00000000..b0bff1ab --- /dev/null +++ b/src/Yavsc/Pages/Consent/ConsentOptions.cs @@ -0,0 +1,14 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Consent; + +public static class ConsentOptions +{ + public static readonly bool EnableOfflineAccess = true; + public static readonly string OfflineAccessDisplayName = "Offline Access"; + public static readonly string OfflineAccessDescription = "Access to your applications and resources, even when you are offline"; + + public static readonly string MustChooseOneErrorMessage = "You must pick at least one permission"; + public static readonly string InvalidSelectionErrorMessage = "Invalid selection"; +} diff --git a/src/Yavsc/Pages/Consent/Index.cshtml b/src/Yavsc/Pages/Consent/Index.cshtml new file mode 100644 index 00000000..526a3a5f --- /dev/null +++ b/src/Yavsc/Pages/Consent/Index.cshtml @@ -0,0 +1,107 @@ +@page +@model Yavsc.Pages.Consent.Index +@{ +} + + diff --git a/src/Yavsc/Pages/Consent/Index.cshtml.cs b/src/Yavsc/Pages/Consent/Index.cshtml.cs new file mode 100644 index 00000000..0d3c4029 --- /dev/null +++ b/src/Yavsc/Pages/Consent/Index.cshtml.cs @@ -0,0 +1,236 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Events; +using Duende.IdentityServer.Extensions; +using Duende.IdentityServer.Models; +using Duende.IdentityServer.Services; +using Duende.IdentityServer.Validation; +using IdentityModel; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Consent; + +[Authorize] +[SecurityHeaders] +public class Index : PageModel +{ + private readonly IIdentityServerInteractionService _interaction; + private readonly IEventService _events; + private readonly ILogger _logger; + + public Index( + IIdentityServerInteractionService interaction, + IEventService events, + ILogger logger) + { + _interaction = interaction; + _events = events; + _logger = logger; + } + + public ViewModel View { get; set; } = default!; + + [BindProperty] + public InputModel Input { get; set; } = default!; + + public async Task OnGet(string? returnUrl) + { + if (!await SetViewModelAsync(returnUrl)) + { + return RedirectToPage("/Home/Error/Index"); + } + + Input = new InputModel + { + ReturnUrl = returnUrl, + }; + + return Page(); + } + + public async Task OnPost() + { + // validate return url is still valid + var request = await _interaction.GetAuthorizationContextAsync(Input.ReturnUrl); + if (request == null) return RedirectToPage("/Home/Error/Index"); + + ConsentResponse? grantedConsent = null; + + // user clicked 'no' - send back the standard 'access_denied' response + if (Input.Button == "no") + { + grantedConsent = new ConsentResponse { Error = AuthorizationError.AccessDenied }; + + // emit event + await _events.RaiseAsync(new ConsentDeniedEvent(User.GetSubjectId(), request.Client.ClientId, request.ValidatedResources.RawScopeValues)); + Telemetry.Metrics.ConsentDenied(request.Client.ClientId, request.ValidatedResources.ParsedScopes.Select(s => s.ParsedName)); + } + // user clicked 'yes' - validate the data + else if (Input.Button == "yes") + { + // if the user consented to some scope, build the response model + if (Input.ScopesConsented.Any()) + { + var scopes = Input.ScopesConsented; + if (ConsentOptions.EnableOfflineAccess == false) + { + scopes = scopes.Where(x => x != Duende.IdentityServer.IdentityServerConstants.StandardScopes.OfflineAccess); + } + + grantedConsent = new ConsentResponse + { + RememberConsent = Input.RememberConsent, + ScopesValuesConsented = scopes.ToArray(), + Description = Input.Description + }; + + // emit event + await _events.RaiseAsync(new ConsentGrantedEvent(User.GetSubjectId(), request.Client.ClientId, request.ValidatedResources.RawScopeValues, grantedConsent.ScopesValuesConsented, grantedConsent.RememberConsent)); + Telemetry.Metrics.ConsentGranted(request.Client.ClientId, grantedConsent.ScopesValuesConsented, grantedConsent.RememberConsent); + var denied = request.ValidatedResources.ParsedScopes.Select(s => s.ParsedName).Except(grantedConsent.ScopesValuesConsented); + Telemetry.Metrics.ConsentDenied(request.Client.ClientId, denied); + } + else + { + ModelState.AddModelError("", ConsentOptions.MustChooseOneErrorMessage); + } + } + else + { + ModelState.AddModelError("", ConsentOptions.InvalidSelectionErrorMessage); + } + + if (grantedConsent != null) + { + ArgumentNullException.ThrowIfNull(Input.ReturnUrl, nameof(Input.ReturnUrl)); + + // communicate outcome of consent back to identityserver + await _interaction.GrantConsentAsync(request, grantedConsent); + + // redirect back to authorization endpoint + if (request.IsNativeClient() == true) + { + // The client is native, so this change in how to + // return the response is for better UX for the end user. + return this.LoadingPage(Input.ReturnUrl); + } + + return Redirect(Input.ReturnUrl); + } + + // we need to redisplay the consent UI + if (!await SetViewModelAsync(Input.ReturnUrl)) + { + return RedirectToPage("/Home/Error/Index"); + } + return Page(); + } + + private async Task SetViewModelAsync(string? returnUrl) + { + ArgumentNullException.ThrowIfNull(returnUrl); + + var request = await _interaction.GetAuthorizationContextAsync(returnUrl); + if (request != null) + { + View = CreateConsentViewModel(request); + return true; + } + else + { + _logger.NoConsentMatchingRequest(returnUrl); + return false; + } + } + + private ViewModel CreateConsentViewModel(AuthorizationRequest request) + { + var vm = new ViewModel + { + ClientName = request.Client.ClientName ?? request.Client.ClientId, + ClientUrl = request.Client.ClientUri, + ClientLogoUrl = request.Client.LogoUri, + AllowRememberConsent = request.Client.AllowRememberConsent + }; + + vm.IdentityScopes = request.ValidatedResources.Resources.IdentityResources + .Select(x => CreateScopeViewModel(x, Input == null || Input.ScopesConsented.Contains(x.Name))) + .ToArray(); + + var resourceIndicators = request.Parameters.GetValues(OidcConstants.AuthorizeRequest.Resource) ?? Enumerable.Empty(); + var apiResources = request.ValidatedResources.Resources.ApiResources.Where(x => resourceIndicators.Contains(x.Name)); + + var apiScopes = new List(); + foreach (var parsedScope in request.ValidatedResources.ParsedScopes) + { + var apiScope = request.ValidatedResources.Resources.FindApiScope(parsedScope.ParsedName); + if (apiScope != null) + { + var scopeVm = CreateScopeViewModel(parsedScope, apiScope, Input == null || Input.ScopesConsented.Contains(parsedScope.RawValue)); + scopeVm.Resources = apiResources.Where(x => x.Scopes.Contains(parsedScope.ParsedName)) + .Select(x => new ResourceViewModel + { + Name = x.Name, + DisplayName = x.DisplayName ?? x.Name, + }).ToArray(); + apiScopes.Add(scopeVm); + } + } + if (ConsentOptions.EnableOfflineAccess && request.ValidatedResources.Resources.OfflineAccess) + { + apiScopes.Add(CreateOfflineAccessScope(Input == null || Input.ScopesConsented.Contains(Duende.IdentityServer.IdentityServerConstants.StandardScopes.OfflineAccess))); + } + vm.ApiScopes = apiScopes; + + return vm; + } + + private static ScopeViewModel CreateScopeViewModel(IdentityResource identity, bool check) + { + return new ScopeViewModel + { + Name = identity.Name, + Value = identity.Name, + DisplayName = identity.DisplayName ?? identity.Name, + Description = identity.Description, + Emphasize = identity.Emphasize, + Required = identity.Required, + Checked = check || identity.Required + }; + } + + private static ScopeViewModel CreateScopeViewModel(ParsedScopeValue parsedScopeValue, ApiScope apiScope, bool check) + { + var displayName = apiScope.DisplayName ?? apiScope.Name; + if (!String.IsNullOrWhiteSpace(parsedScopeValue.ParsedParameter)) + { + displayName += ":" + parsedScopeValue.ParsedParameter; + } + + return new ScopeViewModel + { + Name = parsedScopeValue.ParsedName, + Value = parsedScopeValue.RawValue, + DisplayName = displayName, + Description = apiScope.Description, + Emphasize = apiScope.Emphasize, + Required = apiScope.Required, + Checked = check || apiScope.Required + }; + } + + private static ScopeViewModel CreateOfflineAccessScope(bool check) + { + return new ScopeViewModel + { + Value = Duende.IdentityServer.IdentityServerConstants.StandardScopes.OfflineAccess, + DisplayName = ConsentOptions.OfflineAccessDisplayName, + Description = ConsentOptions.OfflineAccessDescription, + Emphasize = true, + Checked = check + }; + } +} diff --git a/src/Yavsc/Pages/Consent/InputModel.cs b/src/Yavsc/Pages/Consent/InputModel.cs new file mode 100644 index 00000000..90c1f21c --- /dev/null +++ b/src/Yavsc/Pages/Consent/InputModel.cs @@ -0,0 +1,13 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Consent; + +public class InputModel +{ + public string? Button { get; set; } + public IEnumerable ScopesConsented { get; set; } = new List(); + public bool RememberConsent { get; set; } = true; + public string? ReturnUrl { get; set; } + public string? Description { get; set; } +} diff --git a/src/Yavsc/Pages/Consent/ViewModel.cs b/src/Yavsc/Pages/Consent/ViewModel.cs new file mode 100644 index 00000000..851f758b --- /dev/null +++ b/src/Yavsc/Pages/Consent/ViewModel.cs @@ -0,0 +1,33 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Consent; + +public class ViewModel +{ + public string? ClientName { get; set; } + public string? ClientUrl { get; set; } + public string? ClientLogoUrl { get; set; } + public bool AllowRememberConsent { get; set; } + + public IEnumerable IdentityScopes { get; set; } = Enumerable.Empty(); + public IEnumerable ApiScopes { get; set; } = Enumerable.Empty(); +} + +public class ScopeViewModel +{ + public string? Name { get; set; } + public string? Value { get; set; } + public string? DisplayName { get; set; } + public string? Description { get; set; } + public bool Emphasize { get; set; } + public bool Required { get; set; } + public bool Checked { get; set; } + public IEnumerable Resources { get; set; } = Enumerable.Empty(); +} + +public class ResourceViewModel +{ + public string? Name { get; set; } + public string? DisplayName { get; set; } +} diff --git a/src/Yavsc/Pages/Consent/_ScopeListItem.cshtml b/src/Yavsc/Pages/Consent/_ScopeListItem.cshtml new file mode 100644 index 00000000..df8e7983 --- /dev/null +++ b/src/Yavsc/Pages/Consent/_ScopeListItem.cshtml @@ -0,0 +1,47 @@ +@using Yavsc.Pages.Consent +@model ScopeViewModel + +
  • + + @if (Model.Required) + { + (required) + } + @if (Model.Description != null) + { + + } + @if (Model.Resources?.Any() == true) + { + + } +
  • diff --git a/src/Yavsc/Pages/Device/DeviceOptions.cs b/src/Yavsc/Pages/Device/DeviceOptions.cs new file mode 100644 index 00000000..7b56d5e1 --- /dev/null +++ b/src/Yavsc/Pages/Device/DeviceOptions.cs @@ -0,0 +1,15 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Device; + +public static class DeviceOptions +{ + public static readonly bool EnableOfflineAccess = true; + public static readonly string OfflineAccessDisplayName = "Offline Access"; + public static readonly string OfflineAccessDescription = "Access to your applications and resources, even when you are offline"; + + public static readonly string InvalidUserCode = "Invalid user code"; + public static readonly string MustChooseOneErrorMessage = "You must pick at least one permission"; + public static readonly string InvalidSelectionErrorMessage = "Invalid selection"; +} diff --git a/src/Yavsc/Pages/Device/Index.cshtml b/src/Yavsc/Pages/Device/Index.cshtml new file mode 100644 index 00000000..110b1e7a --- /dev/null +++ b/src/Yavsc/Pages/Device/Index.cshtml @@ -0,0 +1,141 @@ +@page +@model Yavsc.Pages.Device.Index +@{ +} + +@if (Model.Input.UserCode == null) +{ + @*We need to collect the user code*@ +
    +
    +

    User Code

    +

    Please enter the code displayed on your device.

    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + + +
    + + +
    +
    +
    +
    +} +else +{ + @*collect consent for the user code provided*@ +
    +
    + @if (Model.View.ClientLogoUrl != null) + { + + } +

    + @Model.View.ClientName + is requesting your permission +

    +

    Please confirm that the authorization request matches the code: @Model.Input.UserCode.

    +

    Uncheck the permissions you do not wish to grant.

    +
    + +
    +
    + +
    +
    + +
    + +
    +
    + @if (Model.View.IdentityScopes.Any()) + { +
    +
    +
    + + Personal Information +
    +
      + @foreach (var scope in Model.View.IdentityScopes) + { + + } +
    +
    +
    + } + + @if (Model.View.ApiScopes.Any()) + { +
    +
    +
    + + Application Access +
    +
      + @foreach (var scope in Model.View.ApiScopes) + { + + } +
    +
    +
    + } + +
    +
    +
    + + Description +
    +
    + +
    +
    +
    + + @if (Model.View.AllowRememberConsent) + { +
    +
    + + +
    +
    + } +
    +
    + +
    +
    + + +
    +
    + @if (Model.View.ClientUrl != null) + { + + + @Model.View.ClientName + + } +
    +
    +
    +
    +} diff --git a/src/Yavsc/Pages/Device/Index.cshtml.cs b/src/Yavsc/Pages/Device/Index.cshtml.cs new file mode 100644 index 00000000..d5174b4a --- /dev/null +++ b/src/Yavsc/Pages/Device/Index.cshtml.cs @@ -0,0 +1,220 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Configuration; +using Duende.IdentityServer.Events; +using Duende.IdentityServer.Extensions; +using Duende.IdentityServer.Models; +using Duende.IdentityServer.Services; +using Duende.IdentityServer.Validation; +using Yavsc.Pages.Consent; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Options; + +namespace Yavsc.Pages.Device; + +[SecurityHeaders] +[Authorize] +public class Index : PageModel +{ + private readonly IDeviceFlowInteractionService _interaction; + private readonly IEventService _events; + private readonly IOptions _options; + private readonly ILogger _logger; + + public Index( + IDeviceFlowInteractionService interaction, + IEventService eventService, + IOptions options, + ILogger logger) + { + _interaction = interaction; + _events = eventService; + _options = options; + _logger = logger; + } + + public ViewModel View { get; set; } = default!; + + [BindProperty] + public InputModel Input { get; set; } = default!; + + public async Task OnGet(string? userCode) + { + if (String.IsNullOrWhiteSpace(userCode)) + { + return Page(); + } + + if (!await SetViewModelAsync(userCode)) + { + ModelState.AddModelError("", DeviceOptions.InvalidUserCode); + return Page(); + } + + Input = new InputModel { + UserCode = userCode, + }; + + return Page(); + } + + public async Task OnPost() + { + var request = await _interaction.GetAuthorizationContextAsync(Input.UserCode ?? throw new ArgumentNullException(nameof(Input.UserCode))); + if (request == null) return RedirectToPage("/Home/Error/Index"); + + ConsentResponse? grantedConsent = null; + + // user clicked 'no' - send back the standard 'access_denied' response + if (Input.Button == "no") + { + grantedConsent = new ConsentResponse + { + Error = AuthorizationError.AccessDenied + }; + + // emit event + await _events.RaiseAsync(new ConsentDeniedEvent(User.GetSubjectId(), request.Client.ClientId, request.ValidatedResources.RawScopeValues)); + Telemetry.Metrics.ConsentDenied(request.Client.ClientId, request.ValidatedResources.ParsedScopes.Select(s => s.ParsedName)); + } + // user clicked 'yes' - validate the data + else if (Input.Button == "yes") + { + // if the user consented to some scope, build the response model + if (Input.ScopesConsented.Any()) + { + var scopes = Input.ScopesConsented; + if (ConsentOptions.EnableOfflineAccess == false) + { + scopes = scopes.Where(x => x != Duende.IdentityServer.IdentityServerConstants.StandardScopes.OfflineAccess); + } + + grantedConsent = new ConsentResponse + { + RememberConsent = Input.RememberConsent, + ScopesValuesConsented = scopes.ToArray(), + Description = Input.Description + }; + + // emit event + await _events.RaiseAsync(new ConsentGrantedEvent(User.GetSubjectId(), request.Client.ClientId, request.ValidatedResources.RawScopeValues, grantedConsent.ScopesValuesConsented, grantedConsent.RememberConsent)); + Telemetry.Metrics.ConsentGranted(request.Client.ClientId, grantedConsent.ScopesValuesConsented, grantedConsent.RememberConsent); + var denied = request.ValidatedResources.ParsedScopes.Select(s => s.ParsedName).Except(grantedConsent.ScopesValuesConsented); + Telemetry.Metrics.ConsentDenied(request.Client.ClientId, denied); + } + else + { + ModelState.AddModelError("", ConsentOptions.MustChooseOneErrorMessage); + } + } + else + { + ModelState.AddModelError("", ConsentOptions.InvalidSelectionErrorMessage); + } + + if (grantedConsent != null) + { + // communicate outcome of consent back to identityserver + await _interaction.HandleRequestAsync(Input.UserCode, grantedConsent); + + // indicate that's it ok to redirect back to authorization endpoint + return RedirectToPage("/Device/Success"); + } + + // we need to redisplay the consent UI + if (!await SetViewModelAsync(Input.UserCode)) + { + return RedirectToPage("/Home/Error/Index"); + } + return Page(); + } + + + private async Task SetViewModelAsync(string userCode) + { + var request = await _interaction.GetAuthorizationContextAsync(userCode); + if (request != null) + { + View = CreateConsentViewModel(request); + return true; + } + else + { + View = new ViewModel(); + return false; + } + } + + private ViewModel CreateConsentViewModel(DeviceFlowAuthorizationRequest request) + { + var vm = new ViewModel + { + ClientName = request.Client.ClientName ?? request.Client.ClientId, + ClientUrl = request.Client.ClientUri, + ClientLogoUrl = request.Client.LogoUri, + AllowRememberConsent = request.Client.AllowRememberConsent + }; + + vm.IdentityScopes = request.ValidatedResources.Resources.IdentityResources.Select(x => CreateScopeViewModel(x, Input == null || Input.ScopesConsented.Contains(x.Name))).ToArray(); + + var apiScopes = new List(); + foreach (var parsedScope in request.ValidatedResources.ParsedScopes) + { + var apiScope = request.ValidatedResources.Resources.FindApiScope(parsedScope.ParsedName); + if (apiScope != null) + { + var scopeVm = CreateScopeViewModel(parsedScope, apiScope, Input == null || Input.ScopesConsented.Contains(parsedScope.RawValue)); + apiScopes.Add(scopeVm); + } + } + if (DeviceOptions.EnableOfflineAccess && request.ValidatedResources.Resources.OfflineAccess) + { + apiScopes.Add(GetOfflineAccessScope(Input == null || Input.ScopesConsented.Contains(Duende.IdentityServer.IdentityServerConstants.StandardScopes.OfflineAccess))); + } + vm.ApiScopes = apiScopes; + + return vm; + } + + private static ScopeViewModel CreateScopeViewModel(IdentityResource identity, bool check) + { + return new ScopeViewModel + { + Value = identity.Name, + DisplayName = identity.DisplayName ?? identity.Name, + Description = identity.Description, + Emphasize = identity.Emphasize, + Required = identity.Required, + Checked = check || identity.Required + }; + } + + private static ScopeViewModel CreateScopeViewModel(ParsedScopeValue parsedScopeValue, ApiScope apiScope, bool check) + { + return new ScopeViewModel + { + Value = parsedScopeValue.RawValue, + // todo: use the parsed scope value in the display? + DisplayName = apiScope.DisplayName ?? apiScope.Name, + Description = apiScope.Description, + Emphasize = apiScope.Emphasize, + Required = apiScope.Required, + Checked = check || apiScope.Required + }; + } + + private static ScopeViewModel GetOfflineAccessScope(bool check) + { + return new ScopeViewModel + { + Value = Duende.IdentityServer.IdentityServerConstants.StandardScopes.OfflineAccess, + DisplayName = DeviceOptions.OfflineAccessDisplayName, + Description = DeviceOptions.OfflineAccessDescription, + Emphasize = true, + Checked = check + }; + } +} diff --git a/src/Yavsc/Pages/Device/InputModel.cs b/src/Yavsc/Pages/Device/InputModel.cs new file mode 100644 index 00000000..7fe79e37 --- /dev/null +++ b/src/Yavsc/Pages/Device/InputModel.cs @@ -0,0 +1,14 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Device; + +public class InputModel +{ + public string? Button { get; set; } + public IEnumerable ScopesConsented { get; set; } = new List(); + public bool RememberConsent { get; set; } = true; + public string? ReturnUrl { get; set; } + public string? Description { get; set; } + public string? UserCode { get; set; } +} diff --git a/src/Yavsc/Pages/Device/Success.cshtml b/src/Yavsc/Pages/Device/Success.cshtml new file mode 100644 index 00000000..ff4688d2 --- /dev/null +++ b/src/Yavsc/Pages/Device/Success.cshtml @@ -0,0 +1,12 @@ +@page +@model Yavsc.Pages.Device.SuccessModel +@{ +} + + +
    +
    +

    Success

    +

    You have successfully authorized the device

    +
    +
    diff --git a/src/Yavsc/Pages/Device/Success.cshtml.cs b/src/Yavsc/Pages/Device/Success.cshtml.cs new file mode 100644 index 00000000..b7a1e18e --- /dev/null +++ b/src/Yavsc/Pages/Device/Success.cshtml.cs @@ -0,0 +1,16 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Device; + +[SecurityHeaders] +[Authorize] +public class SuccessModel : PageModel +{ + public void OnGet() + { + } +} diff --git a/src/Yavsc/Pages/Device/ViewModel.cs b/src/Yavsc/Pages/Device/ViewModel.cs new file mode 100644 index 00000000..11b8bc5d --- /dev/null +++ b/src/Yavsc/Pages/Device/ViewModel.cs @@ -0,0 +1,25 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Device; + +public class ViewModel +{ + public string? ClientName { get; set; } + public string? ClientUrl { get; set; } + public string? ClientLogoUrl { get; set; } + public bool AllowRememberConsent { get; set; } + + public IEnumerable IdentityScopes { get; set; } = Enumerable.Empty(); + public IEnumerable ApiScopes { get; set; } = Enumerable.Empty(); +} + +public class ScopeViewModel +{ + public string? Value { get; set; } + public string? DisplayName { get; set; } + public string? Description { get; set; } + public bool Emphasize { get; set; } + public bool Required { get; set; } + public bool Checked { get; set; } +} diff --git a/src/Yavsc/Pages/Device/_ScopeListItem.cshtml b/src/Yavsc/Pages/Device/_ScopeListItem.cshtml new file mode 100644 index 00000000..2f12a173 --- /dev/null +++ b/src/Yavsc/Pages/Device/_ScopeListItem.cshtml @@ -0,0 +1,35 @@ +@using Yavsc.Pages.Device +@model ScopeViewModel + +
  • + + @if (Model.Required) + { + (required) + } + @if (Model.Description != null) + { + + } +
  • diff --git a/src/Yavsc/Pages/Diagnostics/Index.cshtml b/src/Yavsc/Pages/Diagnostics/Index.cshtml new file mode 100644 index 00000000..f6407a45 --- /dev/null +++ b/src/Yavsc/Pages/Diagnostics/Index.cshtml @@ -0,0 +1,67 @@ +@page +@model Yavsc.Pages.Diagnostics.Index + +
    +
    +

    Authentication Cookie

    +
    + +
    +
    +
    +
    +

    Claims

    +
    +
    + @if(Model.View.AuthenticateResult.Principal != null) + { +
    + @foreach (var claim in Model.View.AuthenticateResult.Principal.Claims) + { +
    @claim.Type
    +
    @claim.Value
    + } +
    + } +
    +
    +
    + +
    +
    +
    +

    Properties

    +
    +
    +
    + @if (Model.View.AuthenticateResult.Properties != null) + { + @foreach (var prop in Model.View.AuthenticateResult.Properties.Items) + { +
    @prop.Key
    +
    @prop.Value
    + } + } + @if (Model.View.Clients.Any()) + { +
    Clients
    +
    + @{ + var clients = Model.View.Clients.ToArray(); + for(var i = 0; i < clients.Length; i++) + { + @clients[i] + if (i < clients.Length - 1) + { + , + } + } + } +
    + } +
    +
    +
    +
    +
    +
    diff --git a/src/Yavsc/Pages/Diagnostics/Index.cshtml.cs b/src/Yavsc/Pages/Diagnostics/Index.cshtml.cs new file mode 100644 index 00000000..602dde31 --- /dev/null +++ b/src/Yavsc/Pages/Diagnostics/Index.cshtml.cs @@ -0,0 +1,34 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.AspNetCore.Authorization; + +namespace Yavsc.Pages.Diagnostics; + +[SecurityHeaders] +[Authorize] +public class Index : PageModel +{ + public ViewModel View { get; set; } = default!; + + public async Task OnGet() + { + var localAddresses = new List { "127.0.0.1", "::1" }; + if(HttpContext.Connection.LocalIpAddress != null) + { + localAddresses.Add(HttpContext.Connection.LocalIpAddress.ToString()); + } + + if (!localAddresses.Contains(HttpContext.Connection.RemoteIpAddress?.ToString())) + { + return NotFound(); + } + + View = new ViewModel(await HttpContext.AuthenticateAsync()); + + return Page(); + } +} diff --git a/src/Yavsc/Pages/Diagnostics/ViewModel.cs b/src/Yavsc/Pages/Diagnostics/ViewModel.cs new file mode 100644 index 00000000..85eaab03 --- /dev/null +++ b/src/Yavsc/Pages/Diagnostics/ViewModel.cs @@ -0,0 +1,32 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using IdentityModel; +using Microsoft.AspNetCore.Authentication; +using System.Text; +using System.Text.Json; + +namespace Yavsc.Pages.Diagnostics; + +public class ViewModel +{ + public ViewModel(AuthenticateResult result) + { + AuthenticateResult = result; + + if (result?.Properties?.Items.TryGetValue("client_list", out var encoded) == true) + { + if (encoded != null) + { + var bytes = Base64Url.Decode(encoded); + var value = Encoding.UTF8.GetString(bytes); + Clients = JsonSerializer.Deserialize(value) ?? Enumerable.Empty(); + return; + } + } + Clients = Enumerable.Empty(); + } + + public AuthenticateResult AuthenticateResult { get; } + public IEnumerable Clients { get; } +} diff --git a/src/Yavsc/Pages/Extensions.cs b/src/Yavsc/Pages/Extensions.cs new file mode 100644 index 00000000..bb2679ef --- /dev/null +++ b/src/Yavsc/Pages/Extensions.cs @@ -0,0 +1,42 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Models; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages; + +public static class Extensions +{ + /// + /// Determines if the authentication scheme support signout. + /// + internal static async Task GetSchemeSupportsSignOutAsync(this HttpContext context, string scheme) + { + var provider = context.RequestServices.GetRequiredService(); + var handler = await provider.GetHandlerAsync(context, scheme); + return (handler is IAuthenticationSignOutHandler); + } + + /// + /// Checks if the redirect URI is for a native client. + /// + internal static bool IsNativeClient(this AuthorizationRequest context) + { + return !context.RedirectUri.StartsWith("https", StringComparison.Ordinal) + && !context.RedirectUri.StartsWith("http", StringComparison.Ordinal); + } + + /// + /// Renders a loading page that is used to redirect back to the redirectUri. + /// + internal static IActionResult LoadingPage(this PageModel page, string? redirectUri) + { + page.HttpContext.Response.StatusCode = 200; + page.HttpContext.Response.Headers["Location"] = ""; + + return page.RedirectToPage("/Redirect/Index", new { RedirectUri = redirectUri }); + } +} diff --git a/src/Yavsc/Pages/ExternalLogin/Callback.cshtml b/src/Yavsc/Pages/ExternalLogin/Callback.cshtml new file mode 100644 index 00000000..78d997ec --- /dev/null +++ b/src/Yavsc/Pages/ExternalLogin/Callback.cshtml @@ -0,0 +1,19 @@ +@page +@model Yavsc.Pages.ExternalLogin.Callback + +@{ + Layout = null; +} + + + + + + + + +
    + +
    + + diff --git a/src/Yavsc/Pages/ExternalLogin/Callback.cshtml.cs b/src/Yavsc/Pages/ExternalLogin/Callback.cshtml.cs new file mode 100644 index 00000000..3d104dec --- /dev/null +++ b/src/Yavsc/Pages/ExternalLogin/Callback.cshtml.cs @@ -0,0 +1,203 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using System.Security.Claims; +using Duende.IdentityServer; +using Duende.IdentityServer.Events; +using Duende.IdentityServer.Services; +using IdentityModel; +using Yavsc.Models; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.ExternalLogin; + +[AllowAnonymous] +[SecurityHeaders] +public class Callback : PageModel +{ + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly IIdentityServerInteractionService _interaction; + private readonly ILogger _logger; + private readonly IEventService _events; + + public Callback( + IIdentityServerInteractionService interaction, + IEventService events, + ILogger logger, + UserManager userManager, + SignInManager signInManager) + { + _userManager = userManager; + _signInManager = signInManager; + _interaction = interaction; + _logger = logger; + _events = events; + } + + public async Task OnGet() + { + // read external identity from the temporary cookie + var result = await HttpContext.AuthenticateAsync(IdentityServerConstants.ExternalCookieAuthenticationScheme); + if (result.Succeeded != true) + { + throw new InvalidOperationException($"External authentication error: { result.Failure }"); + } + + var externalUser = result.Principal ?? + throw new InvalidOperationException("External authentication produced a null Principal"); + + if (_logger.IsEnabled(LogLevel.Debug)) + { + var externalClaims = externalUser.Claims.Select(c => $"{c.Type}: {c.Value}"); + _logger.ExternalClaims(externalClaims); + } + + // lookup our user and external provider info + // try to determine the unique id of the external user (issued by the provider) + // the most common claim type for that are the sub claim and the NameIdentifier + // depending on the external provider, some other claim type might be used + var userIdClaim = externalUser.FindFirst(JwtClaimTypes.Subject) ?? + externalUser.FindFirst(ClaimTypes.NameIdentifier) ?? + throw new InvalidOperationException("Unknown userid"); + + var provider = result.Properties.Items["scheme"] ?? throw new InvalidOperationException("Null scheme in authentiation properties"); + var providerUserId = userIdClaim.Value; + + // find external user + var user = await _userManager.FindByLoginAsync(provider, providerUserId); + if (user == null) + { + // this might be where you might initiate a custom workflow for user registration + // in this sample we don't show how that would be done, as our sample implementation + // simply auto-provisions new external user + user = await AutoProvisionUserAsync(provider, providerUserId, externalUser.Claims); + } + + // this allows us to collect any additional claims or properties + // for the specific protocols used and store them in the local auth cookie. + // this is typically used to store data needed for signout from those protocols. + var additionalLocalClaims = new List(); + var localSignInProps = new AuthenticationProperties(); + CaptureExternalLoginContext(result, additionalLocalClaims, localSignInProps); + + // issue authentication cookie for user + await _signInManager.SignInWithClaimsAsync(user, localSignInProps, additionalLocalClaims); + + // delete temporary cookie used during external authentication + await HttpContext.SignOutAsync(IdentityServerConstants.ExternalCookieAuthenticationScheme); + + // retrieve return URL + var returnUrl = result.Properties.Items["returnUrl"] ?? "~/"; + + // check if external login is in the context of an OIDC request + var context = await _interaction.GetAuthorizationContextAsync(returnUrl); + await _events.RaiseAsync(new UserLoginSuccessEvent(provider, providerUserId, user.Id, user.UserName, true, context?.Client.ClientId)); + Telemetry.Metrics.UserLogin(context?.Client.ClientId, provider!); + + if (context != null) + { + if (context.IsNativeClient()) + { + // The client is native, so this change in how to + // return the response is for better UX for the end user. + return this.LoadingPage(returnUrl); + } + } + + return Redirect(returnUrl); + } + + [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1851:Possible multiple enumerations of 'IEnumerable' collection", Justification = "")] + private async Task AutoProvisionUserAsync(string provider, string providerUserId, IEnumerable claims) + { + var sub = Guid.NewGuid().ToString(); + + var user = new ApplicationUser + { + Id = sub, + UserName = sub, // don't need a username, since the user will be using an external provider to login + }; + + // email + var email = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.Email)?.Value ?? + claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value; + if (email != null) + { + user.Email = email; + } + + // create a list of claims that we want to transfer into our store + var filtered = new List(); + + // user's display name + var name = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.Name)?.Value ?? + claims.FirstOrDefault(x => x.Type == ClaimTypes.Name)?.Value; + if (name != null) + { + filtered.Add(new Claim(JwtClaimTypes.Name, name)); + } + else + { + var first = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.GivenName)?.Value ?? + claims.FirstOrDefault(x => x.Type == ClaimTypes.GivenName)?.Value; + var last = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.FamilyName)?.Value ?? + claims.FirstOrDefault(x => x.Type == ClaimTypes.Surname)?.Value; + if (first != null && last != null) + { + filtered.Add(new Claim(JwtClaimTypes.Name, first + " " + last)); + } + else if (first != null) + { + filtered.Add(new Claim(JwtClaimTypes.Name, first)); + } + else if (last != null) + { + filtered.Add(new Claim(JwtClaimTypes.Name, last)); + } + } + + var identityResult = await _userManager.CreateAsync(user); + if (!identityResult.Succeeded) throw new InvalidOperationException(identityResult.Errors.First().Description); + + if (filtered.Count != 0) + { + identityResult = await _userManager.AddClaimsAsync(user, filtered); + if (!identityResult.Succeeded) throw new InvalidOperationException(identityResult.Errors.First().Description); + } + + identityResult = await _userManager.AddLoginAsync(user, new UserLoginInfo(provider, providerUserId, provider)); + if (!identityResult.Succeeded) throw new InvalidOperationException(identityResult.Errors.First().Description); + + return user; + } + + // if the external login is OIDC-based, there are certain things we need to preserve to make logout work + // this will be different for WS-Fed, SAML2p or other protocols + private static void CaptureExternalLoginContext(AuthenticateResult externalResult, List localClaims, AuthenticationProperties localSignInProps) + { + ArgumentNullException.ThrowIfNull(externalResult.Principal, nameof(externalResult.Principal)); + + // capture the idp used to login, so the session knows where the user came from + localClaims.Add(new Claim(JwtClaimTypes.IdentityProvider, externalResult.Properties?.Items["scheme"] ?? "unknown identity provider")); + + // if the external system sent a session id claim, copy it over + // so we can use it for single sign-out + var sid = externalResult.Principal.Claims.FirstOrDefault(x => x.Type == JwtClaimTypes.SessionId); + if (sid != null) + { + localClaims.Add(new Claim(JwtClaimTypes.SessionId, sid.Value)); + } + + // if the external provider issued an id_token, we'll keep it for signout + var idToken = externalResult.Properties?.GetTokenValue("id_token"); + if (idToken != null) + { + localSignInProps.StoreTokens(new[] { new AuthenticationToken { Name = "id_token", Value = idToken } }); + } + } +} diff --git a/src/Yavsc/Pages/ExternalLogin/Challenge.cshtml b/src/Yavsc/Pages/ExternalLogin/Challenge.cshtml new file mode 100644 index 00000000..7d17fe30 --- /dev/null +++ b/src/Yavsc/Pages/ExternalLogin/Challenge.cshtml @@ -0,0 +1,19 @@ +@page +@model Yavsc.Pages.ExternalLogin.Challenge + +@{ + Layout = null; +} + + + + + + + + +
    + +
    + + diff --git a/src/Yavsc/Pages/ExternalLogin/Challenge.cshtml.cs b/src/Yavsc/Pages/ExternalLogin/Challenge.cshtml.cs new file mode 100644 index 00000000..aa628b78 --- /dev/null +++ b/src/Yavsc/Pages/ExternalLogin/Challenge.cshtml.cs @@ -0,0 +1,48 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Services; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.ExternalLogin; + +[AllowAnonymous] +[SecurityHeaders] +public class Challenge : PageModel +{ + private readonly IIdentityServerInteractionService _interactionService; + + public Challenge(IIdentityServerInteractionService interactionService) + { + _interactionService = interactionService; + } + + public IActionResult OnGet(string scheme, string? returnUrl) + { + if (string.IsNullOrEmpty(returnUrl)) returnUrl = "~/"; + + // validate returnUrl - either it is a valid OIDC URL or back to a local page + if (Url.IsLocalUrl(returnUrl) == false && _interactionService.IsValidReturnUrl(returnUrl) == false) + { + // user might have clicked on a malicious link - should be logged + throw new ArgumentException("invalid return URL"); + } + + // start challenge and roundtrip the return URL and scheme + var props = new AuthenticationProperties + { + RedirectUri = Url.Page("/externallogin/callback"), + + Items = + { + { "returnUrl", returnUrl }, + { "scheme", scheme }, + } + }; + + return Challenge(props, scheme); + } +} diff --git a/src/Yavsc/Pages/Grants/Index.cshtml b/src/Yavsc/Pages/Grants/Index.cshtml new file mode 100644 index 00000000..50b76485 --- /dev/null +++ b/src/Yavsc/Pages/Grants/Index.cshtml @@ -0,0 +1,90 @@ +@page +@model Yavsc.Pages.Grants.Index +@{ +} + +
    +
    +

    Client Application Permissions

    +

    Below is the list of applications you have given permission to and the resources they have access to.

    +
    + + @if (!Model.View.Grants.Any()) + { +
    +
    +
    + You have not given access to any applications +
    +
    +
    + } + else + { + foreach (var grant in Model.View.Grants) + { +
    +
    +
    +
    + @if (grant.ClientLogoUrl != null) + { + + } + @grant.ClientName +
    + +
    +
    + + +
    +
    +
    +
    + +
      + @if (grant.Description != null) + { +
    • + @grant.Description +
    • + } +
    • + @grant.Created.ToString("yyyy-MM-dd") +
    • + @if (grant.Expires.HasValue) + { +
    • + @grant.Expires.Value.ToString("yyyy-MM-dd") +
    • + } + @if (grant.IdentityGrantNames.Any()) + { +
    • + +
        + @foreach (var name in grant.IdentityGrantNames) + { +
      • @name
      • + } +
      +
    • + } + @if (grant.ApiGrantNames.Any()) + { +
    • + +
        + @foreach (var name in grant.ApiGrantNames) + { +
      • @name
      • + } +
      +
    • + } +
    +
    + } + } +
    diff --git a/src/Yavsc/Pages/Grants/Index.cshtml.cs b/src/Yavsc/Pages/Grants/Index.cshtml.cs new file mode 100644 index 00000000..95dec497 --- /dev/null +++ b/src/Yavsc/Pages/Grants/Index.cshtml.cs @@ -0,0 +1,82 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Events; +using Duende.IdentityServer.Extensions; +using Duende.IdentityServer.Services; +using Duende.IdentityServer.Stores; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Grants; + +[SecurityHeaders] +[Authorize] +public class Index : PageModel +{ + private readonly IIdentityServerInteractionService _interaction; + private readonly IClientStore _clients; + private readonly IResourceStore _resources; + private readonly IEventService _events; + + public Index(IIdentityServerInteractionService interaction, + IClientStore clients, + IResourceStore resources, + IEventService events) + { + _interaction = interaction; + _clients = clients; + _resources = resources; + _events = events; + } + + public ViewModel View { get; set; } = default!; + + public async Task OnGet() + { + var grants = await _interaction.GetAllUserGrantsAsync(); + + var list = new List(); + foreach (var grant in grants) + { + var client = await _clients.FindClientByIdAsync(grant.ClientId); + if (client != null) + { + var resources = await _resources.FindResourcesByScopeAsync(grant.Scopes); + + var item = new GrantViewModel() + { + ClientId = client.ClientId, + ClientName = client.ClientName ?? client.ClientId, + ClientLogoUrl = client.LogoUri, + ClientUrl = client.ClientUri, + Description = grant.Description, + Created = grant.CreationTime, + Expires = grant.Expiration, + IdentityGrantNames = resources.IdentityResources.Select(x => x.DisplayName ?? x.Name).ToArray(), + ApiGrantNames = resources.ApiScopes.Select(x => x.DisplayName ?? x.Name).ToArray() + }; + + list.Add(item); + } + } + + View = new ViewModel + { + Grants = list + }; + } + + [BindProperty] + public string? ClientId { get; set; } + + public async Task OnPost() + { + await _interaction.RevokeUserConsentAsync(ClientId); + await _events.RaiseAsync(new GrantsRevokedEvent(User.GetSubjectId(), ClientId)); + Telemetry.Metrics.GrantsRevoked(ClientId); + + return RedirectToPage("/Grants/Index"); + } +} diff --git a/src/Yavsc/Pages/Grants/ViewModel.cs b/src/Yavsc/Pages/Grants/ViewModel.cs new file mode 100644 index 00000000..64ba1c5c --- /dev/null +++ b/src/Yavsc/Pages/Grants/ViewModel.cs @@ -0,0 +1,22 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages.Grants; + +public class ViewModel +{ + public IEnumerable Grants { get; set; } = Enumerable.Empty(); +} + +public class GrantViewModel +{ + public string? ClientId { get; set; } + public string? ClientName { get; set; } + public string? ClientUrl { get; set; } + public string? ClientLogoUrl { get; set; } + public string? Description { get; set; } + public DateTime Created { get; set; } + public DateTime? Expires { get; set; } + public IEnumerable IdentityGrantNames { get; set; } = Enumerable.Empty(); + public IEnumerable ApiGrantNames { get; set; } = Enumerable.Empty(); +} diff --git a/src/Yavsc/Pages/Home/Error/Index.cshtml b/src/Yavsc/Pages/Home/Error/Index.cshtml new file mode 100644 index 00000000..24932210 --- /dev/null +++ b/src/Yavsc/Pages/Home/Error/Index.cshtml @@ -0,0 +1,35 @@ +@page +@model Yavsc.Pages.Error.Index + +
    +
    +

    Error

    +
    + +
    +
    +
    + Sorry, there was an error + + @if (Model.View.Error != null) + { + + + : @Model.View.Error.Error + + + + if (Model.View.Error.ErrorDescription != null) + { +
    @Model.View.Error.ErrorDescription
    + } + } +
    + + @if (Model?.View?.Error?.RequestId != null) + { +
    Request Id: @Model.View.Error.RequestId
    + } +
    +
    +
    diff --git a/src/Yavsc/Pages/Home/Error/Index.cshtml.cs b/src/Yavsc/Pages/Home/Error/Index.cshtml.cs new file mode 100644 index 00000000..ee770434 --- /dev/null +++ b/src/Yavsc/Pages/Home/Error/Index.cshtml.cs @@ -0,0 +1,40 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Error; + +[AllowAnonymous] +[SecurityHeaders] +public class Index : PageModel +{ + private readonly IIdentityServerInteractionService _interaction; + private readonly IWebHostEnvironment _environment; + + public ViewModel View { get; set; } = new(); + + public Index(IIdentityServerInteractionService interaction, IWebHostEnvironment environment) + { + _interaction = interaction; + _environment = environment; + } + + public async Task OnGet(string? errorId) + { + // retrieve error details from identityserver + var message = await _interaction.GetErrorContextAsync(errorId); + if (message != null) + { + View.Error = message; + + if (!_environment.IsDevelopment()) + { + // only show in development + message.ErrorDescription = null; + } + } + } +} diff --git a/src/Yavsc/Pages/Home/Error/ViewModel.cs b/src/Yavsc/Pages/Home/Error/ViewModel.cs new file mode 100644 index 00000000..02879c34 --- /dev/null +++ b/src/Yavsc/Pages/Home/Error/ViewModel.cs @@ -0,0 +1,20 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Models; + +namespace Yavsc.Pages.Error; + +public class ViewModel +{ + public ViewModel() + { + } + + public ViewModel(string error) + { + Error = new ErrorMessage { Error = error }; + } + + public ErrorMessage? Error { get; set; } +} diff --git a/src/Yavsc/Pages/IdentityServerSuppressions.cs b/src/Yavsc/Pages/IdentityServerSuppressions.cs new file mode 100644 index 00000000..3d69e2c7 --- /dev/null +++ b/src/Yavsc/Pages/IdentityServerSuppressions.cs @@ -0,0 +1,22 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +// global/shared +[assembly: SuppressMessage("Design", "CA1054:URI-like parameters should not be strings", Justification = "Consistent with the IdentityServer APIs")] +[assembly: SuppressMessage("Design", "CA1056:URI-like properties should not be strings", Justification = "Consistent with the IdentityServer APIs")] +[assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "No need for ConfigureAwait in ASP.NET Core application code, as there is no SynchronizationContext.")] + +// page specific +[assembly: SuppressMessage("Design", "CA1002:Do not expose generic lists", Justification = "TestUsers are not designed to be extended", Scope = "member", Target = "~P:Yavsc.TestUsers.Users")] +[assembly: SuppressMessage("Design", "CA1034:Nested types should not be visible", Justification = "ExternalProvider is nested by design", Scope = "type", Target = "~T:Yavsc.Pages.Login.ViewModel.ExternalProvider")] +[assembly: SuppressMessage("Naming", "CA1716:Identifiers should not match keywords", Justification = "This namespace is just for organization, and won't be referenced elsewhere", Scope = "namespace", Target = "~N:Yavsc.Pages.Error")] +[assembly: SuppressMessage("Naming", "CA1724:Type names should not match namespaces", Justification = "Namespaces of pages are not likely to be used elsewhere, so there is little chance of confusion", Scope = "type", Target = "~T:Yavsc.Pages.Ciba.Consent")] +[assembly: SuppressMessage("Naming", "CA1724:Type names should not match namespaces", Justification = "Namespaces of pages are not likely to be used elsewhere, so there is little chance of confusion", Scope = "type", Target = "~T:Yavsc.Pages.Extensions")] +[assembly: SuppressMessage("Performance", "CA1805:Do not initialize unnecessarily", Justification = "This is for clarity and consistency with the surrounding code", Scope = "member", Target = "~F:Yavsc.Pages.Logout.LogoutOptions.AutomaticRedirectAfterSignOut")] diff --git a/src/Yavsc/Pages/Index.cshtml b/src/Yavsc/Pages/Index.cshtml new file mode 100644 index 00000000..c45bd3f0 --- /dev/null +++ b/src/Yavsc/Pages/Index.cshtml @@ -0,0 +1,46 @@ +@page +@model Yavsc.Pages.Home.Index + +
    +

    + + Welcome to Duende IdentityServer + (version @Model.Version) +

    + +
      +
    • + IdentityServer publishes a + discovery document + where you can find metadata and links to all the endpoints, key material, etc. +
    • +
    • + Click here to see the claims for your current session. +
    • +
    • + Click here to manage your stored grants. +
    • +
    • + Click here to view the server side sessions. +
    • +
    • + Click here to view your pending CIBA login requests. +
    • +
    • + Here are links to the + source code repository, + and ready to use samples. +
    • +
    + + @if(Model.License != null) + { +

    License

    +
    +
    Serial Number
    +
    @Model.License.SerialNumber
    +
    Expiration
    +
    @Model.License.Expiration!.Value.ToLongDateString()
    +
    + } +
    diff --git a/src/Yavsc/Pages/Index.cshtml.cs b/src/Yavsc/Pages/Index.cshtml.cs new file mode 100644 index 00000000..d6a8361a --- /dev/null +++ b/src/Yavsc/Pages/Index.cshtml.cs @@ -0,0 +1,27 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer; +using System.Reflection; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Home; + +[AllowAnonymous] +public class Index : PageModel +{ + public Index(IdentityServerLicense? license = null) + { + License = license; + } + + public string Version + { + get => typeof(Duende.IdentityServer.Hosting.IdentityServerMiddleware).Assembly + .GetCustomAttribute() + ?.InformationalVersion.Split('+').First() + ?? "unavailable"; + } + public IdentityServerLicense? License { get; } +} diff --git a/src/Yavsc/Pages/Log.cs b/src/Yavsc/Pages/Log.cs new file mode 100644 index 00000000..ac1bbbd0 --- /dev/null +++ b/src/Yavsc/Pages/Log.cs @@ -0,0 +1,87 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +namespace Yavsc.Pages; + +internal static class Log +{ + private static readonly Action _invalidId = LoggerMessage.Define( + LogLevel.Error, + EventIds.InvalidId, + "Invalid id {Id}"); + + public static void InvalidId(this ILogger logger, string? id) + { + _invalidId(logger, id, null); + } + + private static readonly Action _invalidBackchannelLoginId = LoggerMessage.Define( + LogLevel.Warning, + EventIds.InvalidBackchannelLoginId, + "Invalid backchannel login id {Id}"); + + public static void InvalidBackchannelLoginId(this ILogger logger, string? id) + { + _invalidBackchannelLoginId(logger, id, null); + } + + private static Action, Exception?> _externalClaims = LoggerMessage.Define>( + LogLevel.Debug, + EventIds.ExternalClaims, + "External claims: {Claims}"); + + public static void ExternalClaims(this ILogger logger, IEnumerable claims) + { + _externalClaims(logger, claims, null); + } + + private static Action _noMatchingBackchannelLoginRequest = LoggerMessage.Define( + LogLevel.Error, + EventIds.NoMatchingBackchannelLoginRequest, + "No backchannel login request matching id: {Id}"); + + public static void NoMatchingBackchannelLoginRequest(this ILogger logger, string id) + { + _noMatchingBackchannelLoginRequest(logger, id, null); + } + + private static Action _noConsentMatchingRequest = LoggerMessage.Define( + LogLevel.Error, + EventIds.NoConsentMatchingRequest, + "No consent request matching request: {ReturnUrl}"); + + public static void NoConsentMatchingRequest(this ILogger logger, string returnUrl) + { + _noConsentMatchingRequest(logger, returnUrl, null); + } + + +} + +internal static class EventIds +{ + private const int UIEventsStart = 10000; + + ////////////////////////////// + // Consent + ////////////////////////////// + private const int ConsentEventsStart = UIEventsStart + 1000; + public const int InvalidId = ConsentEventsStart + 0; + public const int NoConsentMatchingRequest = ConsentEventsStart + 1; + + ////////////////////////////// + // External Login + ////////////////////////////// + private const int ExternalLoginEventsStart = UIEventsStart + 2000; + public const int ExternalClaims = ExternalLoginEventsStart + 0; + + ////////////////////////////// + // CIBA + ////////////////////////////// + private const int CibaEventsStart = UIEventsStart + 3000; + public const int InvalidBackchannelLoginId = CibaEventsStart + 0; + public const int NoMatchingBackchannelLoginRequest = CibaEventsStart + 1; + + + +} diff --git a/src/Yavsc/Pages/Redirect/Index.cshtml b/src/Yavsc/Pages/Redirect/Index.cshtml new file mode 100644 index 00000000..e6271a3a --- /dev/null +++ b/src/Yavsc/Pages/Redirect/Index.cshtml @@ -0,0 +1,14 @@ +@page +@model Yavsc.Pages.Redirect.IndexModel +@{ +} + +
    +
    +

    You are now being returned to the application

    +

    Once complete, you may close this tab.

    +
    +
    + + + diff --git a/src/Yavsc/Pages/Redirect/Index.cshtml.cs b/src/Yavsc/Pages/Redirect/Index.cshtml.cs new file mode 100644 index 00000000..3e1b52b4 --- /dev/null +++ b/src/Yavsc/Pages/Redirect/Index.cshtml.cs @@ -0,0 +1,25 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.Redirect; + +[AllowAnonymous] +public class IndexModel : PageModel +{ + public string? RedirectUri { get; set; } + + public IActionResult OnGet(string? redirectUri) + { + if (!Url.IsLocalUrl(redirectUri)) + { + return RedirectToPage("/Home/Error/Index"); + } + + RedirectUri = redirectUri; + return Page(); + } +} diff --git a/src/Yavsc/Pages/SecurityHeadersAttribute.cs b/src/Yavsc/Pages/SecurityHeadersAttribute.cs new file mode 100644 index 00000000..60ac1040 --- /dev/null +++ b/src/Yavsc/Pages/SecurityHeadersAttribute.cs @@ -0,0 +1,57 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages; + +public sealed class SecurityHeadersAttribute : ActionFilterAttribute +{ + public override void OnResultExecuting(ResultExecutingContext context) + { + ArgumentNullException.ThrowIfNull(context, nameof(context)); + + var result = context.Result; + if (result is PageResult) + { + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options + if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Type-Options")) + { + context.HttpContext.Response.Headers.Append("X-Content-Type-Options", "nosniff"); + } + + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + if (!context.HttpContext.Response.Headers.ContainsKey("X-Frame-Options")) + { + context.HttpContext.Response.Headers.Append("X-Frame-Options", "DENY"); + } + + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + //var csp = "default-src 'self'; object-src 'none'; frame-ancestors 'none'; sandbox allow-forms allow-same-origin allow-scripts; base-uri 'self';"; + var csp = "object-src 'none'; frame-ancestors 'none'; sandbox allow-forms allow-same-origin allow-scripts; base-uri 'self';"; + // also consider adding upgrade-insecure-requests once you have HTTPS in place for production + //csp += "upgrade-insecure-requests;"; + // also an example if you need client images to be displayed from twitter + // csp += "img-src 'self' https://pbs.twimg.com;"; + + // once for standards compliant browsers + if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security-Policy")) + { + context.HttpContext.Response.Headers.Append("Content-Security-Policy", csp); + } + // and once again for IE + if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Security-Policy")) + { + context.HttpContext.Response.Headers.Append("X-Content-Security-Policy", csp); + } + + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy + var referrer_policy = "no-referrer"; + if (!context.HttpContext.Response.Headers.ContainsKey("Referrer-Policy")) + { + context.HttpContext.Response.Headers.Append("Referrer-Policy", referrer_policy); + } + } + } +} diff --git a/src/Yavsc/Pages/ServerSideSessions/Index.cshtml b/src/Yavsc/Pages/ServerSideSessions/Index.cshtml new file mode 100644 index 00000000..7a51c857 --- /dev/null +++ b/src/Yavsc/Pages/ServerSideSessions/Index.cshtml @@ -0,0 +1,147 @@ +@page +@model Yavsc.Pages.ServerSideSessions.IndexModel + +
    +
    +
    +
    +
    +

    User Sessions

    +
    + +
    + + @if (Model.UserSessions != null) + { +
    +
    + @if (Model.UserSessions.HasPrevResults) + { + Prev + } +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    +
    +
    +
    + @if (Model.UserSessions.HasNextResults) + { + Next + } +
    +
    + + @if (Model.UserSessions.TotalCount.HasValue) + { +
    + @if (Model.UserSessions.CurrentPage.HasValue && Model.UserSessions.TotalPages.HasValue) + { + + Total Results: @Model.UserSessions.TotalCount, + Page @Model.UserSessions.CurrentPage of @Model.UserSessions.TotalPages + + } + else + { + + Total Results: @Model.UserSessions.TotalCount + + } +
    + } + +
    + + @if (Model.UserSessions.Results.Any()) + { +
    + + + + + + + + + + + + + @foreach (var session in Model.UserSessions.Results) + { + + + + + + + + + + } + +
    Subject IdSession IdDisplay NameCreatedExpires
    @session.SubjectId@session.SessionId@session.DisplayName@session.Created@session.Expires +
    + + +
    +
    + Clients: + @if (session.ClientIds?.Any() == true) + { + @(session.ClientIds.Aggregate((x, y) => $"{x}, {y}")) + } + else + { + @("None") + } +
    +
    + } + else + { +
    No User Sessions
    + } + } + else + { +
    +
    + You do not have server-side sessions enabled. + To do so, use AddServerSideSessions on your IdentityServer configuration. + See the documentation for more information. +
    +
    + } +
    +
    +
    +
    +
    diff --git a/src/Yavsc/Pages/ServerSideSessions/Index.cshtml.cs b/src/Yavsc/Pages/ServerSideSessions/Index.cshtml.cs new file mode 100644 index 00000000..43d1e15c --- /dev/null +++ b/src/Yavsc/Pages/ServerSideSessions/Index.cshtml.cs @@ -0,0 +1,67 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Models; +using Duende.IdentityServer.Services; +using Duende.IdentityServer.Stores; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Yavsc.Pages.ServerSideSessions +{ + public class IndexModel : PageModel + { + private readonly ISessionManagementService? _sessionManagementService; + + public IndexModel(ISessionManagementService? sessionManagementService = null) + { + _sessionManagementService = sessionManagementService; + } + + public QueryResult? UserSessions { get; set; } + + [BindProperty(SupportsGet = true)] + public string? DisplayNameFilter { get; set; } + + [BindProperty(SupportsGet = true)] + public string? SessionIdFilter { get; set; } + + [BindProperty(SupportsGet = true)] + public string? SubjectIdFilter { get; set; } + + [BindProperty(SupportsGet = true)] + public string? Token { get; set; } + + [BindProperty(SupportsGet = true)] + public string? Prev { get; set; } + + public async Task OnGet() + { + if (_sessionManagementService != null) + { + UserSessions = await _sessionManagementService.QuerySessionsAsync(new SessionQuery + { + ResultsToken = Token, + RequestPriorResults = Prev == "true", + DisplayName = DisplayNameFilter, + SessionId = SessionIdFilter, + SubjectId = SubjectIdFilter + }); + } + } + + [BindProperty] + public string? SessionId { get; set; } + + public async Task OnPost() + { + ArgumentNullException.ThrowIfNull(_sessionManagementService); + + await _sessionManagementService.RemoveSessionsAsync(new RemoveSessionsContext { + SessionId = SessionId, + }); + return RedirectToPage("/ServerSideSessions/Index", new { Token, DisplayNameFilter, SessionIdFilter, SubjectIdFilter, Prev }); + } + } +} + diff --git a/src/Yavsc/Pages/Shared/_Layout.cshtml b/src/Yavsc/Pages/Shared/_Layout.cshtml new file mode 100644 index 00000000..102e1ec5 --- /dev/null +++ b/src/Yavsc/Pages/Shared/_Layout.cshtml @@ -0,0 +1,29 @@ + + + + + + + + Yavsc + + + + + + + + +
    + + + +
    + @RenderBody() +
    + +
    + + @RenderSection("scripts", required: false) + + diff --git a/src/Yavsc/Pages/Shared/_Nav.cshtml b/src/Yavsc/Pages/Shared/_Nav.cshtml new file mode 100644 index 00000000..083feaa3 --- /dev/null +++ b/src/Yavsc/Pages/Shared/_Nav.cshtml @@ -0,0 +1,43 @@ +@using Duende.IdentityServer.Extensions +@{ + #nullable enable + string? name = null; + if (Context.User!=null) + { + name = Context.User.GetDisplayName(); + } +} + + diff --git a/src/Yavsc/Pages/Shared/_ValidationSummary.cshtml b/src/Yavsc/Pages/Shared/_ValidationSummary.cshtml new file mode 100644 index 00000000..674d68d8 --- /dev/null +++ b/src/Yavsc/Pages/Shared/_ValidationSummary.cshtml @@ -0,0 +1,7 @@ +@if (ViewContext.ModelState.IsValid == false) +{ +
    + Error +
    +
    +} \ No newline at end of file diff --git a/src/Yavsc/Pages/Telemetry.cs b/src/Yavsc/Pages/Telemetry.cs new file mode 100644 index 00000000..a826a379 --- /dev/null +++ b/src/Yavsc/Pages/Telemetry.cs @@ -0,0 +1,142 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using System.Diagnostics.Metrics; + +namespace Yavsc.Pages; + +#pragma warning disable CA1034 // Nested types should not be visible +#pragma warning disable CA1724 // Type names should not match namespaces + +/// +/// Telemetry helpers for the UI +/// +public static class Telemetry +{ + private static readonly string ServiceVersion = typeof(Telemetry).Assembly.GetName().Version!.ToString(); + + /// + /// Service name for telemetry. + /// + public static readonly string ServiceName = typeof(Telemetry).Assembly.GetName().Name!; + + /// + /// Metrics configuration + /// + public static class Metrics + { +#pragma warning disable 1591 + + /// + /// Name of Counters + /// + public static class Counters + { + public const string Consent = "tokenservice.consent"; + public const string GrantsRevoked = "tokenservice.grants_revoked"; + public const string UserLogin = "tokenservice.user_login"; + public const string UserLogout = "tokenservice.user_logout"; + } + + /// + /// Name of tags + /// + public static class Tags + { + public const string Client = "client"; + public const string Error = "error"; + public const string Idp = "idp"; + public const string Remember = "remember"; + public const string Scope = "scope"; + public const string Consent = "consent"; + } + + /// + /// Values of tags + /// + public static class TagValues + { + public const string Granted = "granted"; + public const string Denied = "denied"; + } + +#pragma warning restore 1591 + + /// + /// Meter for the IdentityServer host project + /// + private static readonly Meter Meter = new Meter(ServiceName, ServiceVersion); + + private static Counter ConsentCounter = Meter.CreateCounter(Counters.Consent); + + /// + /// Helper method to increase counter. The scopes + /// are expanded and called one by one to not cause a combinatory explosion of scopes. + /// + /// Client id + /// Scope names. Each element is added on it's own to the counter + public static void ConsentGranted(string clientId, IEnumerable scopes, bool remember) + { + ArgumentNullException.ThrowIfNull(scopes); + + foreach (var scope in scopes) + { + ConsentCounter.Add(1, + new(Tags.Client, clientId), + new(Tags.Scope, scope), + new(Tags.Remember, remember), + new(Tags.Consent, TagValues.Granted)); + } + } + + /// + /// Helper method to increase counter. The scopes + /// are expanded and called one by one to not cause a combinatory explosion of scopes. + /// + /// Client id + /// Scope names. Each element is added on it's own to the counter + public static void ConsentDenied(string clientId, IEnumerable scopes) + { + ArgumentNullException.ThrowIfNull(scopes); + foreach (var scope in scopes) + { + ConsentCounter.Add(1, new(Tags.Client, clientId), new(Tags.Scope, scope), new(Tags.Consent, TagValues.Denied)); + } + } + + private static Counter GrantsRevokedCounter = Meter.CreateCounter(Counters.GrantsRevoked); + + /// + /// Helper method to increase the counter. + /// + /// Client id to revoke for, or null for all. + public static void GrantsRevoked(string? clientId) + => GrantsRevokedCounter.Add(1, tag: new(Tags.Client, clientId)); + + private static Counter UserLoginCounter = Meter.CreateCounter(Counters.UserLogin); + + /// + /// Helper method to increase counter. + /// + /// Client Id, if available + public static void UserLogin(string? clientId, string idp) + => UserLoginCounter.Add(1, new(Tags.Client, clientId), new(Tags.Idp, idp)); + + /// + /// Helper method to increase + /// Client Id, if available + /// Error message + public static void UserLoginFailure(string? clientId, string idp, string error) + => UserLoginCounter.Add(1, new(Tags.Client, clientId), new(Tags.Idp, idp), new(Tags.Error, error)); + + private static Counter UserLogoutCounter = Meter.CreateCounter(Counters.UserLogout); + + /// + /// Helper method to increase the counter. + /// + /// Idp/authentication scheme for external authentication, or "local" for built in. + public static void UserLogout(string? idp) + => UserLogoutCounter.Add(1, tag: new(Tags.Idp, idp)); + } +} diff --git a/src/Yavsc/Pages/_ViewImports.cshtml b/src/Yavsc/Pages/_ViewImports.cshtml new file mode 100644 index 00000000..e995e50a --- /dev/null +++ b/src/Yavsc/Pages/_ViewImports.cshtml @@ -0,0 +1,40 @@ +@using Yavsc +@using Yavsc.Pages +@using Yavsc.Models +@using Yavsc.Models.Musical +@using Yavsc.Models.Drawing +@using Yavsc.Models.Haircut +@using Yavsc.Models.Blog +@using Yavsc.Models.Billing +@using Yavsc.Models.Workflow +@using Yavsc.Models.Relationship +@using Yavsc.Models.Musical.Profiles +@using Yavsc.Models.Auth +@using Yavsc.Models.Identity +@using Yavsc.Models.Access +@using Yavsc.Billing +@using Yavsc.Server.Models.Calendar +@using Yavsc.ViewModels.Haircut +@using Yavsc.ViewModels.Administration +@using Yavsc.ViewModels.Account +@using Yavsc.ViewModels.Manage +@using Yavsc.ViewModels.FrontOffice +@using Yavsc.ViewModels.Calendar +@using Yavsc.ViewModels.Relationship +@using Yavsc.ViewModels.Workflow +@using Yavsc.ViewModels.Auth +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Mvc +@using Microsoft.AspNetCore.Html +@using Microsoft.AspNetCore.Identity +@using Yavsc.Helpers + +@using PayPal.PayPalAPIInterfaceService.Model +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Yavsc + +@inject IAuthorizationService AuthorizationService +@inject Microsoft.AspNetCore.Mvc.Localization.IHtmlLocalizer SR +@inject Microsoft.Extensions.Options.IOptions SiteSettings +@inject SignInManager SignInManager +@inject UserManager UserManager diff --git a/src/Yavsc/Pages/_ViewStart.cshtml b/src/Yavsc/Pages/_ViewStart.cshtml new file mode 100644 index 00000000..a5f10045 --- /dev/null +++ b/src/Yavsc/Pages/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/src/Yavsc/Program.cs b/src/Yavsc/Program.cs index d965db30..4294a230 100644 --- a/src/Yavsc/Program.cs +++ b/src/Yavsc/Program.cs @@ -7,14 +7,11 @@ namespace Yavsc { public static void Main(string[] args) { - BuildWebHost(args).Run(); - } - - public static IWebHost BuildWebHost(string[] args) { - return WebHost.CreateDefaultBuilder(args).UseStartup().Build(); + var builder = WebApplication.CreateBuilder(args); + var app = builder + .ConfigureServices() + .ConfigurePipeline(); + app.Run(); } } } - - - diff --git a/src/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.Designer.cs b/src/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.Designer.cs index fe2a0bb3..23b882c2 100644 --- a/src/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.Designer.cs +++ b/src/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.Designer.cs @@ -16,7 +16,7 @@ namespace Yavsc { [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [System.Diagnostics.DebuggerNonUserCodeAttribute()] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public partial class YavscLocalisation { + public partial class YavscLocalization { private static System.Resources.ResourceManager resourceMan; @@ -26,7 +26,7 @@ namespace Yavsc { public static System.Resources.ResourceManager ResourceManager { get { if (object.Equals(null, resourceMan)) { - System.Resources.ResourceManager temp = new System.Resources.ResourceManager(("Yavsc.Resources." + "Yavsc.YavscLocalisation"), typeof(YavscLocalisation).GetTypeInfo().Assembly); + System.Resources.ResourceManager temp = new System.Resources.ResourceManager(("Yavsc.Resources." + "Yavsc.YavscLocalisation"), typeof(YavscLocalization).GetTypeInfo().Assembly); resourceMan = temp; } return resourceMan; diff --git a/src/Yavsc/Services/ChatHubConnexionManager.cs b/src/Yavsc/Services/ChatHubConnexionManager.cs index b89fb390..5e823087 100644 --- a/src/Yavsc/Services/ChatHubConnexionManager.cs +++ b/src/Yavsc/Services/ChatHubConnexionManager.cs @@ -50,9 +50,10 @@ namespace Yavsc.Services readonly ApplicationDbContext _dbContext; readonly IStringLocalizer _localizer; - public HubConnectionManager() + public HubConnectionManager(IServiceScopeFactory ssf ) { - var scope = Startup.Services.GetRequiredService().CreateScope(); + + var scope = ssf.CreateScope(); _dbContext = scope.ServiceProvider.GetService(); var loggerFactory = scope.ServiceProvider.GetService(); _logger = loggerFactory.CreateLogger(); diff --git a/src/Yavsc/Services/GoogleApis/CalendarManager.cs b/src/Yavsc/Services/GoogleApis/CalendarManager.cs index 91906d5c..fa09f9fc 100644 --- a/src/Yavsc/Services/GoogleApis/CalendarManager.cs +++ b/src/Yavsc/Services/GoogleApis/CalendarManager.cs @@ -48,8 +48,8 @@ namespace Yavsc.Services public CalendarManager(ILoggerFactory loggerFactory) { - _client_id = Startup.GoogleWebClientConfiguration["web:cient_id"]; - _client_secret = Startup.GoogleWebClientConfiguration["web:cient_secret"]; + _client_id = Config.GoogleWebClientConfiguration["web:cient_id"]; + _client_secret = Config.GoogleWebClientConfiguration["web:cient_secret"]; _logger = loggerFactory.CreateLogger(); } diff --git a/src/Yavsc/Startup/DataProtectionSettings.cs b/src/Yavsc/Settings/DataProtectionSettings.cs similarity index 100% rename from src/Yavsc/Startup/DataProtectionSettings.cs rename to src/Yavsc/Settings/DataProtectionSettings.cs diff --git a/src/Yavsc/Startup.cs b/src/Yavsc/Startup.cs new file mode 100644 index 00000000..7ad9cb82 --- /dev/null +++ b/src/Yavsc/Startup.cs @@ -0,0 +1,77 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Options; +using Yavsc.Helpers; +using Yavsc.Settings; + +namespace Yavsc; + +public class Startup +{ + public static void Configure( + IApplicationBuilder app, + IOptions siteSettings, + IOptions smtpSettings, + IAuthorizationService authorizationService, + IOptions payPalSettings, + IOptions googleSettings, + IStringLocalizer localizer, + ILoggerFactory loggerFactory, + string environmentName) + { + Config.GoogleSettings = googleSettings.Value; + ResourcesHelpers.GlobalLocalizer = localizer; + Config.SiteSetup = siteSettings.Value; + Config.SmtpSetup = smtpSettings.Value; + Config.Authority = siteSettings.Value.Authority; + string blogsDir = siteSettings.Value.Blog ?? throw new Exception("blogsDir is not set."); + string billsDir = siteSettings.Value.Bills ?? throw new Exception("billsDir is not set."); + AbstractFileSystemHelpers.UserFilesDirName = new DirectoryInfo(blogsDir).FullName; + AbstractFileSystemHelpers.UserBillsDirName = new DirectoryInfo(billsDir).FullName; + Config.Temp = siteSettings.Value.TempDir; + Config.PayPalSettings = payPalSettings.Value; + + AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); + + // TODO implement an installation & upgrade procedure + // Create required directories + foreach (string dir in new string[] { AbstractFileSystemHelpers.UserFilesDirName, AbstractFileSystemHelpers.UserBillsDirName, Config.Temp }) + { + if (dir == null) + { + throw new Exception(nameof(dir)); + } + + DirectoryInfo di = new(dir); + if (!di.Exists) + { + di.Create(); + } + } + CheckApp(loggerFactory.CreateLogger(), environmentName); + } + + public static void CheckApp(ILogger logger, string environmentName) + { + var appData = Environment.GetEnvironmentVariable("APPDATA"); + if (appData == null) + { + logger.LogWarning("AppData was not found in environment variables"); + if (Config.SiteSetup.DataDir == null) { + Config.SiteSetup.DataDir = "AppData"+environmentName; + logger.LogInformation("Using: "+Config.SiteSetup.DataDir); + } else logger.LogInformation("Using value from settings: "+Config.SiteSetup.DataDir); + DirectoryInfo di = new DirectoryInfo(Config.SiteSetup.DataDir); + if (!di.Exists) + { + di.Create(); + logger.LogWarning("Created dir : "+di.FullName); + } + else logger.LogInformation("Using existing directory: "+di.Name); + Config.SiteSetup.DataDir = Path.Combine(Directory.GetCurrentDirectory(),di.Name); + Environment.SetEnvironmentVariable("APPDATA", Config.SiteSetup.DataDir); + logger.LogWarning("It has been set to : "+Environment.GetEnvironmentVariable("APPDATA")); + } + + } +} diff --git a/src/Yavsc/Startup/Startup.FileServer.cs b/src/Yavsc/Startup/Startup.FileServer.cs deleted file mode 100644 index f7105710..00000000 --- a/src/Yavsc/Startup/Startup.FileServer.cs +++ /dev/null @@ -1,99 +0,0 @@ -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.StaticFiles; -using Microsoft.Extensions.FileProviders; -using Yavsc.Helpers; -using Yavsc.ViewModels.Auth; - -namespace Yavsc -{ - - - public partial class Startup - { - public static FileServerOptions UserFilesOptions { get; private set; } - public static FileServerOptions GitOptions { get; private set; } - - public static FileServerOptions AvatarsOptions { get; set; } - - static IAuthorizationService AuthorizationService { get; set; } - - public void ConfigureFileServerApp(IApplicationBuilder app, - SiteSettings siteSettings, IWebHostEnvironment env, - IAuthorizationService authorizationService) - { - AuthorizationService = authorizationService; - var userFilesDirInfo = new DirectoryInfo(siteSettings.Blog); - AbstractFileSystemHelpers.UserFilesDirName = userFilesDirInfo.FullName; - - if (!userFilesDirInfo.Exists) userFilesDirInfo.Create(); - - UserFilesOptions = new FileServerOptions() - { - FileProvider = new PhysicalFileProvider(AbstractFileSystemHelpers.UserFilesDirName), - RequestPath = PathString.FromUriComponent(Constants.UserFilesPath), - EnableDirectoryBrowsing = env.IsDevelopment(), - }; - UserFilesOptions.EnableDefaultFiles = true; - UserFilesOptions.StaticFileOptions.ServeUnknownFileTypes = true; - - UserFilesOptions.StaticFileOptions.OnPrepareResponse = OnPrepareUserFileResponse; - - var avatarsDirInfo = new DirectoryInfo(Startup.SiteSetup.Avatars); - if (!avatarsDirInfo.Exists) avatarsDirInfo.Create(); - AvatarsDirName = avatarsDirInfo.FullName; - - AvatarsOptions = new FileServerOptions() - { - FileProvider = new PhysicalFileProvider(AvatarsDirName), - RequestPath = PathString.FromUriComponent(Constants.AvatarsPath), - EnableDirectoryBrowsing = env.IsDevelopment() - }; - - - var gitdirinfo = new DirectoryInfo(Startup.SiteSetup.GitRepository); - GitDirName = gitdirinfo.FullName; - if (!gitdirinfo.Exists) gitdirinfo.Create(); - GitOptions = new FileServerOptions() - { - FileProvider = new PhysicalFileProvider(GitDirName), - RequestPath = PathString.FromUriComponent(Constants.GitPath), - EnableDirectoryBrowsing = env.IsDevelopment(), - }; - GitOptions.DefaultFilesOptions.DefaultFileNames.Add("index.md"); - GitOptions.StaticFileOptions.ServeUnknownFileTypes = true; - _logger.LogInformation($"{GitDirName}"); - GitOptions.StaticFileOptions.OnPrepareResponse += OnPrepareGitRepoResponse; - - app.UseFileServer(UserFilesOptions); - - app.UseFileServer(AvatarsOptions); - - app.UseFileServer(GitOptions); - app.UseStaticFiles(); - } - - - private async void OnPrepareUserFileResponse(StaticFileResponseContext context) - { - var uname = context.Context.User?.GetUserName(); - var path = context.Context.Request.Path; - var result = await AuthorizationService.AuthorizeAsync(context.Context.User, - new ViewFileContext{ UserName = uname, File = context.File, Path = path }, new ViewRequirement()); - if (!result.Succeeded) - { - _logger.LogInformation("403"); - // TODO prettier - context.Context.Response.StatusCode = 403; - context.Context.Response.Redirect("/Home/Status/403", false); - } - } - - static void OnPrepareGitRepoResponse(StaticFileResponseContext context) - { - if (context.File.Name.EndsWith(".ansi.log")) - { - context.Context.Response.Redirect("/Git" + context.Context.Request.Path); - } - } - } -} diff --git a/src/Yavsc/Startup/Startup.SanityChecks.cs b/src/Yavsc/Startup/Startup.SanityChecks.cs deleted file mode 100644 index 828c8bdd..00000000 --- a/src/Yavsc/Startup/Startup.SanityChecks.cs +++ /dev/null @@ -1,40 +0,0 @@ - -using Microsoft.AspNetCore.Hosting; - -namespace Yavsc -{ - // ensures we may count on : - // * Google credentials - // * an AppData folder - public partial class Startup - { - - public void CheckApp(IWebHostEnvironment env, - ILoggerFactory loggerFactory) - { - - var logger = loggerFactory.CreateLogger(); - - var appData = Environment.GetEnvironmentVariable("APPDATA"); - if (appData == null) - { - logger.LogWarning("AppData was not found in environment variables"); - if (SiteSetup.DataDir == null) { - SiteSetup.DataDir = "AppData"+env.EnvironmentName; - logger.LogInformation("Using: "+SiteSetup.DataDir); - } else logger.LogInformation("Using value from settings: "+SiteSetup.DataDir); - DirectoryInfo di = new DirectoryInfo(SiteSetup.DataDir); - if (!di.Exists) - { - di.Create(); - logger.LogWarning("Created dir : "+di.FullName); - } - else logger.LogInformation("Using existing directory: "+di.Name); - SiteSetup.DataDir = Path.Combine(Directory.GetCurrentDirectory(),di.Name); - Environment.SetEnvironmentVariable("APPDATA", SiteSetup.DataDir); - logger.LogWarning("It has been set to : "+Environment.GetEnvironmentVariable("APPDATA")); - } - - } - } -} diff --git a/src/Yavsc/Startup/Startup.WebSockets.cs b/src/Yavsc/Startup/Startup.WebSockets.cs deleted file mode 100644 index 5b45e32e..00000000 --- a/src/Yavsc/Startup/Startup.WebSockets.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Yavsc -{ - public partial class Startup - { - public void ConfigureWebSocketsApp(IApplicationBuilder app) - { - var webSocketOptions = new WebSocketOptions() - { - KeepAliveInterval = TimeSpan.FromSeconds(30), - ReceiveBufferSize = Constants.WebSocketsMaxBufLen - }; - - app.UseWebSockets(webSocketOptions); - } - - } -} diff --git a/src/Yavsc/Startup/Startup.Workflow.cs b/src/Yavsc/Startup/Startup.Workflow.cs deleted file mode 100644 index 39857d28..00000000 --- a/src/Yavsc/Startup/Startup.Workflow.cs +++ /dev/null @@ -1,103 +0,0 @@ -namespace Yavsc -{ - using Microsoft.EntityFrameworkCore; - using Models; - using Yavsc.Abstract.Workflow; - using Yavsc.Billing; - using Yavsc.Models.Billing; - using Yavsc.Models.Haircut; - using Yavsc.Models.Workflow; - using Yavsc.Services; - - public partial class Startup - { - /// - /// Lists Available user profile classes, - /// populated at startup, using reflexion. - /// - public static List ProfileTypes = new List(); - - - /// - /// Lists available command forms. - /// This is hard coded. - /// - public static readonly string[] Forms = new string[] { "Profiles", "HairCut" }; - - private void ConfigureWorkflow() - { - // System.AppDomain.CurrentDomain.ResourceResolve += OnYavscResourceResolve; - - try { - foreach (var a in System.AppDomain.CurrentDomain.GetAssemblies()) - { - foreach (var c in a.GetTypes()) - { - if (c.IsClass && !c.IsAbstract && - c.GetInterface("ISpecializationSettings") != null) - { - ProfileTypes.Add(c); - } - } - } - - } - catch (Exception ex) - { - _logger.LogError(ex.TargetSite.Name); - } - - - foreach (var propinfo in typeof(ApplicationDbContext).GetProperties()) - { - foreach (var attr in propinfo.CustomAttributes) - { - // something like a DbSet? - if (attr.AttributeType == typeof(Yavsc.Attributes.ActivitySettingsAttribute)) - { - // TODO swith () case {} - if (typeof(IQueryable).IsAssignableFrom(propinfo.PropertyType)) - {// double-bingo - _logger.LogTrace($"Pro: {propinfo.Name}"); - BillingService.UserSettings.Add(propinfo); - } - else - // Design time error - { - var msg = - $@"La propriété {propinfo.Name} du contexte de la -base de donnée porte l'attribut [ActivitySetting], -mais n'implemente pas l'interface IQueryable -({propinfo.MemberType.GetType()})"; - _logger.LogCritical(msg); - } - } - } - } - - RegisterBilling(BillingCodes.Brush, new Func - ( ( db, id) => - { - var query = db.HairCutQueries.Include(q=>q.Prestation).Include(q=>q.Regularisation).Single(q=>q.Id == id) ; - query.SelectedProfile = db.BrusherProfile.Single(b=>b.UserId == query.PerformerId); - return query; - })) ; - - RegisterBilling(BillingCodes.MBrush,new Func - ( (db, id) => db.HairMultiCutQueries.Include(q=>q.Regularisation).Single(q=>q.Id == id))); - RegisterBilling(BillingCodes.Rdv, new Func - ( (db, id) => db.RdvQueries.Include(q=>q.Regularisation).Single(q=>q.Id == id))); - } - public static System.Reflection.Assembly OnYavscResourceResolve(object sender, ResolveEventArgs ev) - { - return AppDomain.CurrentDomain.GetAssemblies()[0]; - } - - public static void RegisterBilling(string code, Func getter) where T : IBillable - { - BillingService.Billing.Add(code,getter) ; - BillingService.GlobalBillingMap.Add(typeof(T).Name,code); - } - } - -} diff --git a/src/Yavsc/Startup/Startup.cs b/src/Yavsc/Startup/Startup.cs deleted file mode 100755 index 75baddf6..00000000 --- a/src/Yavsc/Startup/Startup.cs +++ /dev/null @@ -1,417 +0,0 @@ - -using System.Globalization; -using System.Reflection; -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Localization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Razor; -using Microsoft.Net.Http.Headers; -using Newtonsoft.Json; -using Google.Apis.Util.Store; -using Microsoft.Extensions.Localization; -using Yavsc.Helpers; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Options; -using Yavsc.Models; -using Yavsc.Services; -using Microsoft.IdentityModel.Tokens; -using Microsoft.AspNetCore.Identity; -using Yavsc.Interface; -using Yavsc.Settings; -using Microsoft.AspNetCore.DataProtection; -using Duende.IdentityServer; - -namespace Yavsc -{ - - public partial class Startup - { - public static string AvatarsDirName { private set; get; } - public static string GitDirName { private set; get; } - public static string Authority { get; private set; } - public static string Temp { get; set; } - public static SiteSettings SiteSetup { get; private set; } - public SmtpSettings SmtpSetup { get; private set; } - public static GoogleServiceAccount GServiceAccount { get; private set; } - - public static string HostingFullName { get; set; } - - public static PayPalSettings PayPalSettings { get; private set; } - private static ILogger _logger; - - - - public Startup(IWebHostEnvironment env) - { - AppDomain.CurrentDomain.UnhandledException += OnUnHandledException; - - string devtag = env.IsDevelopment() ? "D" : ""; - string prodtag = env.IsProduction() ? "P" : ""; - string stagetag = env.IsStaging() ? "S" : ""; - - HostingFullName = $"{env.EnvironmentName} [{prodtag}/{devtag}/{stagetag}]"; - // Set up configuration sources. - IConfigurationBuilder builder = new ConfigurationBuilder() - .AddEnvironmentVariables() - .AddJsonFile("appsettings.json") - .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); - - _ = builder.AddEnvironmentVariables(); - Configuration = builder.Build(); - - - ConnectionString = Configuration["ConnectionStrings:Default"]; - - AppDomain.CurrentDomain.SetData(Constants.YavscConnectionStringEnvName, ConnectionString); - - string? googleClientFile = Configuration["Authentication:Google:GoogleWebClientJson"]; - string? googleServiceAccountJsonFile = Configuration["Authentication:Google:GoogleServiceAccountJson"]; - if (googleClientFile != null) - { - GoogleWebClientConfiguration = new ConfigurationBuilder().AddJsonFile(googleClientFile).Build(); - } - - if (googleServiceAccountJsonFile != null) - { - FileInfo safile = new FileInfo(googleServiceAccountJsonFile); - GServiceAccount = JsonConvert.DeserializeObject(safile.OpenText().ReadToEnd()); - } - } - - // never hit ... - private void OnUnHandledException(object sender, UnhandledExceptionEventArgs e) - { - _logger.LogError(sender.ToString()); - _logger.LogError(JsonConvert.SerializeObject(e.ExceptionObject)); - } - - public static string? ConnectionString { get; private set; } - public static GoogleAuthSettings? GoogleSettings { get; private set; } - public IConfigurationRoot Configuration { get; private set; } - public static IConfigurationRoot? GoogleWebClientConfiguration { get; private set; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddRazorPages(); - - IConfigurationSection siteSettings = Configuration.GetSection("Site"); - _ = services.Configure(siteSettings); - IConfigurationSection smtpSettings = Configuration.GetSection("Smtp"); - _ = services.Configure(smtpSettings); - IConfigurationSection protectionSettings = Configuration.GetSection("DataProtection"); - _ = services.Configure(smtpSettings); - - IConfigurationSection googleSettings = Configuration.GetSection("Authentication").GetSection("Google"); - _ = services.Configure(googleSettings); - IConfigurationSection cinfoSettings = Configuration.GetSection("Authentication").GetSection("Societeinfo"); - _ = services.Configure(cinfoSettings); - IConfigurationSection oauthFacebookSettings = Configuration.GetSection("Authentication").GetSection("Facebook"); - _ = services.Configure(oauthFacebookSettings); - IConfigurationSection paypalSettings = Configuration.GetSection("Authentication").GetSection("PayPal"); - _ = services.Configure(paypalSettings); - - - services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); - services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); - services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); - services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); - services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); - services.Add(ServiceDescriptor.Singleton(typeof(IDiskUsageTracker), typeof(DiskUsageTracker))); - - _ = services.Configure(options => - { - CultureInfo[] supportedCultures = new[] - { - new CultureInfo("en"), - new CultureInfo("fr"), - new CultureInfo("pt") - }; - - CultureInfo[] supportedUICultures = new[] - { - new CultureInfo("fr"), - new CultureInfo("en"), - new CultureInfo("pt") - }; - - // You must explicitly state which cultures your application supports. - // These are the cultures the app supports for formatting numbers, dates, etc. - options.SupportedCultures = supportedCultures; - - // These are the cultures the app supports for UI strings, i.e. we have localized resources for. - options.SupportedUICultures = supportedUICultures; - - options.RequestCultureProviders = new List - { - new QueryStringRequestCultureProvider { Options = options }, - new CookieRequestCultureProvider { Options = options, CookieName="ASPNET_CULTURE" }, - new AcceptLanguageHeaderRequestCultureProvider { Options = options } - }; - }); - - services.AddSignalR(); - - services.AddOptions(); - - _ = services.AddCors(options => - { - options.AddPolicy("CorsPolicy", builder => - { - _ = builder.WithOrigins("*"); - }); - }); - - - // Add the system clock service - _ = services.AddSingleton(); - - _ = services.AddSingleton(); - _ = services.AddSingleton(); - _ = services.AddSingleton(); - - - - // Add framework services. - - - /*services.AddSingleton(); - - - - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton();*/ - _ = services.AddDbContext() - .AddIdentity() - .AddRoles() - .AddEntityFrameworkStores() - .AddSignInManager() - .AddDefaultUI() - .AddDefaultTokenProviders(); - - - - _ = services.AddMvc(config => - { - /* var policy = new AuthorizationPolicyBuilder() - .RequireAuthenticatedUser() - .Build(); - config.Filters.Add(new AuthorizeFilter(policy)); */ - config.Filters.Add(new ProducesAttribute("application/json")); - // config.ModelBinders.Insert(0,new MyDateTimeModelBinder()); - // config.ModelBinders.Insert(0,new MyDecimalModelBinder()); - config.EnableEndpointRouting = false; - }).AddFormatterMappings( - config => config.SetMediaTypeMappingForFormat("text/pdf", - new MediaTypeHeaderValue("text/pdf")) - ).AddFormatterMappings( - config => config.SetMediaTypeMappingForFormat("text/x-tex", - new MediaTypeHeaderValue("text/x-tex")) - ) - .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, - options => - { - options.ResourcesPath = "Resources"; - }).AddDataAnnotationsLocalization(); - - - - // services.AddScoped(); - - // Inject ticket formatting - // services.AddTransient(typeof(ISecureDataFormat<>), typeof(SecureDataFormat<>)); - // services.AddTransient, SecureDataFormat>(); - // services.AddTransient, TicketDataFormat>(); - - // Add application services. - _ = services.AddTransient(); - _ = services.AddTransient(); - _ = services.AddTransient(); - _ = services.AddTransient(); - _ = services.AddTransient((sp) => new FileDataStore("googledatastore", false)); - _ = services.AddTransient(); - - - // TODO for SMS: services.AddTransient(); - - _ = services.AddLocalization(options => - { - options.ResourcesPath = "Resources"; - }); - var datadi = new DirectoryInfo(Configuration["Site:DataDir"]); - // Add session related services. - services.AddSession(); - services.AddDataProtection().PersistKeysToFileSystem(datadi); - - services.AddAuthorization(options => - { - - options.AddPolicy("AdministratorOnly", policy => - { - _ = policy.RequireClaim("http://schemas.microsoft.com/ws/2008/06/identity/claims/role", Constants.AdminGroupName); - }); - - options.AddPolicy("FrontOffice", policy => policy.RequireRole(Constants.FrontOfficeGroupName)); - options.AddPolicy("Bearer", new AuthorizationPolicyBuilder() - .AddAuthenticationSchemes("Bearer") - .RequireAuthenticatedUser().Build()); - // options.AddPolicy("EmployeeId", policy => policy.RequireClaim("EmployeeId", "123", "456")); - // options.AddPolicy("BuildingEntry", policy => policy.Requirements.Add(new OfficeEntryRequirement())); - options.AddPolicy("Authenticated", policy => policy.RequireAuthenticatedUser()); - }); - - - - _ = services.AddControllersWithViews() - .AddNewtonsoftJson(); - - services.AddIdentityServer(options => - { - options.Events.RaiseErrorEvents = true; - options.Events.RaiseInformationEvents = true; - options.Events.RaiseFailureEvents = true; - options.Events.RaiseSuccessEvents = true; - - // see https://docs.duendesoftware.com/identityserver/v6/fundamentals/resources/ - options.EmitStaticAudienceClaim = true; - }) - .AddInMemoryIdentityResources(Config.IdentityResources) - .AddInMemoryApiScopes(Config.ApiScopes) - .AddInMemoryClients(Config.Clients) - .AddAspNetIdentity(); - - services.AddAuthentication() - .AddGoogle(options => - { - options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme; - - // register your IdentityServer with Google at https://console.developers.google.com - // enable the Google+ API - // set the redirect URI to https://localhost:5001/signin-google - options.ClientId = "copy client ID from Google here"; - options.ClientSecret = "copy client secret from Google here"; - }); - } - - public static IServiceProvider Services { get; private set; } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure( - IApplicationBuilder app, - IOptions siteSettings, - IOptions smtpSettings, - IAuthorizationService authorizationService, - IOptions payPalSettings, - IOptions googleSettings, - IStringLocalizer localizer, - ILoggerFactory loggerFactory, - IWebHostEnvironment env) - { - Services = app.ApplicationServices; - GoogleSettings = googleSettings.Value; - ResourcesHelpers.GlobalLocalizer = localizer; - SiteSetup = siteSettings.Value; - SmtpSetup = smtpSettings.Value; - Authority = siteSettings.Value.Authority; - string blogsDir = siteSettings.Value.Blog ?? throw new Exception("blogsDir is not set."); - string billsDir = siteSettings.Value.Bills ?? throw new Exception("billsDir is not set."); - AbstractFileSystemHelpers.UserFilesDirName = new DirectoryInfo(blogsDir).FullName; - AbstractFileSystemHelpers.UserBillsDirName = new DirectoryInfo(billsDir).FullName; - Temp = siteSettings.Value.TempDir; - PayPalSettings = payPalSettings.Value; - - AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); - - // TODO implement an installation & upgrade procedure - // Create required directories - foreach (string dir in new string[] { AbstractFileSystemHelpers.UserFilesDirName, AbstractFileSystemHelpers.UserBillsDirName, SiteSetup.TempDir }) - { - if (dir == null) - { - throw new Exception(nameof(dir)); - } - - DirectoryInfo di = new(dir); - if (!di.Exists) - { - di.Create(); - } - } - - _logger = loggerFactory.CreateLogger(); - _ = app.UseStatusCodePagesWithReExecute("/Home/Status/{0}"); - if (env.IsDevelopment()) - { - _ = app.UseDeveloperExceptionPage(); - _ = app.UseWelcomePage("/welcome"); - app.UseMigrationsEndPoint(); - } - else - { - // For more details on creating database during deployment see http://go.microsoft.com/fwlink/?LinkID=615859 - - _ = app.UseExceptionHandler("/Home/Error"); - try - { - using IServiceScope serviceScope = app.ApplicationServices.GetRequiredService() - .CreateScope(); - serviceScope.ServiceProvider.GetRequiredService() - .Database.Migrate(); - } - catch (TargetInvocationException ex) - { - if (ex.InnerException is InvalidOperationException) - // nothing to do ? - { - // TODO (or not) Hit the developper - } - else - { - throw ex; - } - } - } - // before fixing the security protocol, let beleive our lib it's done with it. - // _ = PayPal.Manager.ConnectionManager.Instance; - // then, fix it. - // ServicePointManager.SecurityProtocol = (SecurityProtocolType)0xC00; // Tls12, required by PayPal - - - // _ = app.UseSession(); - - ConfigureFileServerApp(app, SiteSetup, env, authorizationService); - - _ = app.UseRequestLocalization(); - - ConfigureWorkflow(); - ConfigureWebSocketsApp(app); - - - _logger.LogInformation("LocalApplicationData: " + Environment.GetFolderPath( -Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.DoNotVerify)); - - CheckApp(env, loggerFactory); - - app.UseSession(); - - _ = app.UseStatusCodePages(); - - app.UseStaticFiles(); - app.UseRouting(); - app.UseIdentityServer(); - app.UseAuthorization(); - app.UseMvcWithDefaultRoute(); - - } - - } -} -// diff --git a/src/Yavsc/ViewComponents/BillViewComponent.cs b/src/Yavsc/ViewComponents/BillViewComponent.cs index 9f29e0bc..4f7c3fc5 100644 --- a/src/Yavsc/ViewComponents/BillViewComponent.cs +++ b/src/Yavsc/ViewComponents/BillViewComponent.cs @@ -15,10 +15,10 @@ namespace Yavsc.ViewComponents { readonly ApplicationDbContext dbContext; readonly IBillingService billing; - readonly IStringLocalizer localizer; + readonly IStringLocalizer localizer; public BillViewComponent(ApplicationDbContext dbContext, - IStringLocalizer localizer, + IStringLocalizer localizer, IBillingService billing) { this.billing = billing; @@ -28,8 +28,8 @@ namespace Yavsc.ViewComponents public async Task InvokeAsync(string code, IBillable billable, OutputFormat format, bool asBill) { - var di = new DirectoryInfo(Startup.SiteSetup.Bills); - var dia = new DirectoryInfo(Startup.SiteSetup.Avatars); + var di = new DirectoryInfo(Config.SiteSetup.Bills); + var dia = new DirectoryInfo(Config.SiteSetup.Avatars); ViewBag.BillsDir = di.FullName; ViewBag.AvatarsDir = dia.FullName; ViewBag.AsBill = asBill; // vrai pour une facture, sinon, c'est un devis @@ -77,7 +77,7 @@ namespace Yavsc.ViewComponents var genrtrData = new PdfGenerationViewModel { - Temp = Startup.Temp, + Temp = Config.Temp, TeXSource = tex, DestDir = AbstractFileSystemHelpers.UserBillsDirName, BaseFileName = billable.GetFileBaseName(billing) diff --git a/src/Yavsc/Views/Command/Create.cshtml b/src/Yavsc/Views/Command/Create.cshtml index 329b8aed..e2fd62cd 100644 --- a/src/Yavsc/Views/Command/Create.cshtml +++ b/src/Yavsc/Views/Command/Create.cshtml @@ -97,7 +97,7 @@ $(document).ready(function(){ $("#Location_Address").googlegeocode({ culture: '@System.Globalization.CultureInfo.CurrentCulture.Name', - mapsApiKey: '@Startup.GoogleSettings.BrowserApiKey', + mapsApiKey: '@Config.GoogleSettings.BrowserApiKey', mapId: 'map', longId: 'Location_Longitude', latId: 'Location_Latitude', diff --git a/src/Yavsc/Views/Manage/SetActivity.cshtml b/src/Yavsc/Views/Manage/SetActivity.cshtml index f80aed56..8daca031 100644 --- a/src/Yavsc/Views/Manage/SetActivity.cshtml +++ b/src/Yavsc/Views/Manage/SetActivity.cshtml @@ -125,7 +125,7 @@ $(document).ready(function(){ $("#OrganizationAddress_Address").googlegeocode({ culture: '@System.Globalization.CultureInfo.CurrentCulture.Name', - mapsApiKey: '@Startup.GoogleSettings.BrowserApiKey', + mapsApiKey: '@Config.GoogleSettings.BrowserApiKey', mapId: 'map', longId: 'OrganizationAddress_Longitude', latId: 'OrganizationAddress_Latitude', diff --git a/src/Yavsc/Views/Manage/SetAddress.cshtml b/src/Yavsc/Views/Manage/SetAddress.cshtml index 3019cf40..b6546b89 100644 --- a/src/Yavsc/Views/Manage/SetAddress.cshtml +++ b/src/Yavsc/Views/Manage/SetAddress.cshtml @@ -36,7 +36,7 @@ $(document).ready(function(){ $("#Address").googlegeocode({ culture: '@System.Globalization.CultureInfo.CurrentCulture.Name', - mapsApiKey: '@Startup.GoogleSettings.BrowserApiKey', + mapsApiKey: '@Config.GoogleSettings.BrowserApiKey', mapId: 'amap', longId: 'Longitude', latId: 'Latitude', diff --git a/src/Yavsc/Views/Project/Delete.cshtml b/src/Yavsc/Views/Project/Delete.cshtml index 9b439bc4..e09e763a 100644 --- a/src/Yavsc/Views/Project/Delete.cshtml +++ b/src/Yavsc/Views/Project/Delete.cshtml @@ -54,16 +54,16 @@ @Html.DisplayFor(model => model.Previsional)
    - @Html.DisplayNameFor(model => model.Rejected) + @Html.DisplayNameFor(model => model.Decided)
    - @Html.DisplayFor(model => model.Rejected) + @Html.DisplayFor(model => model.Decided)
    - @Html.DisplayNameFor(model => model.RejectedAt) + @Html.DisplayNameFor(model => model.DateModified)
    - @Html.DisplayFor(model => model.RejectedAt) + @Html.DisplayFor(model => model.DateModified)
    @Html.DisplayNameFor(model => model.Status) diff --git a/src/Yavsc/Views/Project/Details.cshtml b/src/Yavsc/Views/Project/Details.cshtml index c8d022d1..f10b8b8a 100644 --- a/src/Yavsc/Views/Project/Details.cshtml +++ b/src/Yavsc/Views/Project/Details.cshtml @@ -59,16 +59,16 @@ @Html.DisplayFor(model => model.Previsional)
    - @Html.DisplayNameFor(model => model.Rejected) + @Html.DisplayNameFor(model => model.Decided)
    - @Html.DisplayFor(model => model.Rejected) + @Html.DisplayFor(model => model.Decided)
    - @Html.DisplayNameFor(model => model.RejectedAt) + @Html.DisplayNameFor(model => model.DateModified)
    - @Html.DisplayFor(model => model.RejectedAt) + @Html.DisplayFor(model => model.DateModified)
    @Html.DisplayNameFor(model => model.Status) diff --git a/src/Yavsc/Views/Project/Edit.cshtml b/src/Yavsc/Views/Project/Edit.cshtml index 7ea84d14..5c856afb 100644 --- a/src/Yavsc/Views/Project/Edit.cshtml +++ b/src/Yavsc/Views/Project/Edit.cshtml @@ -45,8 +45,8 @@
    - - + +
    diff --git a/src/Yavsc/Views/Project/Index.cshtml b/src/Yavsc/Views/Project/Index.cshtml index e206d884..0326ea25 100644 --- a/src/Yavsc/Views/Project/Index.cshtml +++ b/src/Yavsc/Views/Project/Index.cshtml @@ -33,10 +33,10 @@ @Html.DisplayNameFor(model => model.Previsional) - @Html.DisplayNameFor(model => model.Rejected) + @Html.DisplayNameFor(model => model.Decided) - @Html.DisplayNameFor(model => model.RejectedAt) + @Html.DisplayNameFor(model => model.DateModified) @Html.DisplayNameFor(model => model.Status) @@ -80,10 +80,10 @@ @Html.DisplayFor(modelItem => item.Previsional) - @Html.DisplayFor(modelItem => item.Rejected) + @Html.DisplayFor(modelItem => item.Decided) - @Html.DisplayFor(modelItem => item.RejectedAt) + @Html.DisplayFor(modelItem => item.DateModified) @Html.DisplayFor(modelItem => item.Status) diff --git a/src/Yavsc/Views/Shared/_Layout.cshtml b/src/Yavsc/Views/Shared/_Layout.cshtml index f0c7faea..262bee8c 100644 --- a/src/Yavsc/Views/Shared/_Layout.cshtml +++ b/src/Yavsc/Views/Shared/_Layout.cshtml @@ -16,7 +16,7 @@ - + @await RenderSectionAsync("header", false) diff --git a/src/Yavsc/Views/Shared/_MapScriptsPartial.cshtml b/src/Yavsc/Views/Shared/_MapScriptsPartial.cshtml index 88e089f9..4e3169d7 100644 --- a/src/Yavsc/Views/Shared/_MapScriptsPartial.cshtml +++ b/src/Yavsc/Views/Shared/_MapScriptsPartial.cshtml @@ -1,2 +1,2 @@ - + diff --git a/src/Yavsc/Yavsc.csproj b/src/Yavsc/Yavsc.csproj index 087b111a..0e76c9a8 100644 --- a/src/Yavsc/Yavsc.csproj +++ b/src/Yavsc/Yavsc.csproj @@ -1,29 +1,33 @@ - net8.0 enable enable WTFPL - + + all + + + all + + + + + + - - - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - @@ -32,17 +36,13 @@ - - - - diff --git a/src/Yavsc/keys/is-signing-key-4AC79F6000E1D28FCECAAEAF16AB0335.json b/src/Yavsc/keys/is-signing-key-4AC79F6000E1D28FCECAAEAF16AB0335.json new file mode 100644 index 00000000..db213878 --- /dev/null +++ b/src/Yavsc/keys/is-signing-key-4AC79F6000E1D28FCECAAEAF16AB0335.json @@ -0,0 +1 @@ +{"Version":1,"Id":"4AC79F6000E1D28FCECAAEAF16AB0335","Created":"2024-02-17T23:43:01.4639989Z","Algorithm":"RS256","IsX509Certificate":false,"Data":"CfDJ8LLmOX5jGGFMmfZLarAgdK9Vdtkt9j142Un6t5tcObAjVqqPRMJM98tHmoM5-BmXptfufahLjD0ZTZxnNNvboExUy23_pYZ4vIAgofyM3MWg5EGfEdptaGvYRD0CjFB1FDa1VJNUpxfnjroyl94npslQwzEnPjkIm4MKzEJG98Nn_Ku7AABmxd-9R8XPzH44HdK94T8eM9f4EOJVPRstqjKuGaLq99r6R5PN0g8X6J28LvgsnSXuZKSJRhfWF4HF4cEajO_yTvQ4jIwfX2dBhUsA9pLqZdZrQ2uDtHHw_kG0K7mNHvu0zJWEo1ruvY-exmgloNamXIdQilNTOMa3451WJDgYhwsOus29dUu_HA03x2P4c-CaAjcOsMBm6UZ4Y7Ky9aL5HGhFKi29MtKu2PYnEiqGXwLMvNLcdKfW3AhST9KLV-sj-6RFfr2qQ4S0CyOPEKmUXC6n7TrAD3h0_yzphKzY3kmsc5H2h_QpWO5ZHgO04Tz1SExGPpgl3yQPkewiw6pMeWHwlpvCG3v7pT_uzNuFXXRGVZfxUbJ9YaZtVkJ6Kb1iAnnGdMC2QdpoPmIZjtV7n1c1NE1ki4JST8qRFFlVSRGLfTxfWyCQj-VPec5trGvLgQ-f7Ibbx8spZTX6AIZTakMODFiOpJvjSY8LsQYPrPHZ8cRFXsmPEdscg32qHWqlat3tSVgSbeTgWIosGpIpGCZWSHJOn5qQ1eO4-01EH5_MSHRXDKJyEQnnICbve8RITqDB-qqNKoq9TdJkPav5o9mSsjLQnRVkoGMn1WAVEQrl9cE6iijV4AGtd70W7d6LYWh-jmdx0z3ORv0lB2zunzz2DQVyzEUqPXqqW2nHzp8FnX3qwpwi9kI48c8xZm1u5YGYCnhVOmpnkiLRbkaEuiccTYTX46V1zF9GZLDudYAX8nncePI6V9dYFOiIEMC2-f6MfKwg4nPPVlpLB8GibeeuZFTVQYCKKHi1U3qomVY3iFlZI9o4PeNReIXI8U0GcXfidWnqjk6f6DFD-jApo3dkt43cAiZayDgQtJ-ezVeAWFdlfz1BwrjmvE4fEUWnZwu7VueTWpEh3Y4yuTTO9ZLV-pcvY1GgGj7bhYzfT2QoGJL9KMGod7mVrOWYoS6VWkuzGvWvzED36pSLiOJTw9ElTGlQtjsY8c_XmkoaClvrEo8YIPBonaeV2gjSeDSlaeiFB8bzu3uugydsMWZclZN7y8oWKMCHQcgFTgplmLgdD9GPAgItKzjNTSoWnNXiNZgIwklaq792wNJoo7KY02GtdFN3rbfxQWe0vqGinf20aYqhqKthTrWuzYveGIUqQVJJSrrrRtcdOaII7ucRdP3RakMloU7E3uBjOl2i2D1JvlBT4EJ8UJqwyFNajfp-eb6z2j9uVlkVjcuX1sdQbCVjYnaXjFTJUDW5XUCju3o55hkKz92KEIF0ISVl8MMOlv2XMUduXnYsc8LxqvUKhNCXePBtVjbiY-33VM5FAP5XBs2jJMP1Z4Ixao6M5xi3jBL7TnFLTjmW5Nuexah6vheKIgh_h27mJvzAUgPC7swF-NMscN4Z2AzvfwAmATXbv-zup9im1YrR3ksZvaHuvlE7N1ex3CDPiKyj6hUK0XCx0imG3p-9xcEIguSzSEMUqYkG6uUM9oco6bwpuawqJxF3XFfApebPtUToG6bo6v8_CuovLX5n8G_GWchAuD7P11855xSQK7aw948z7Ia-kHQ3eBoC1P91wMZThfGjMculIEfKQLE-NCigDBxeKN8F9bTSQFiWGZbq1OrG8O8WGHA_wwxU8yzVBWtTT8cSn-0LElN3NhpXJe5evbuP0m-g8-TocN0vWGrHSk45vb8qdG085HdOxC97VOUH98vVroPVXxF81xI6CZ332CtPzd9DmgkLVpUecvOyehPWMkWcRw7FKWsF4dqWoR7j5hzMr8sHzfHoWAK5_oiTuilFEdkSPfgtV1Ob9YR0wp9t9RbIIftwfNCn_hskV5XfLwyxvPGPM_Oy1VZb1SZH05pLGu3j_DUdR-6wKbK6U0QurACIG09GyIChSmmuOOiTdOjGJ4h7-jTQlWNrliH3N6lEgjKI3eBv6RMkqQpI1PuYVQ1F_NmZtP8ul0e7IsIT76WSu80OyreGIszm9lNx9njga1SZd_NpipXxsq2pwtZkMPONofcfNCZ9T_lRMJjrCrnpXIEwCPdY8h6GgjWw6bN6Di3y0rAkIOTAxzjDKtOwtUquxUY4KTXnzlIpCss-iDav__I9_Wr4c_ALmmqR4bHK5CC8nT3OOFDxxiDyMFXRQ4j8f-QAtm-nOrxc3U6DtVaL5Yq3G681mq8jz8Z9A1ROdz44B_9cxAquww_lPCtcymHQaAf8FFrfuuGQXbeeXTau9BCeTztYRHABieMSpx2rsoXzBwUiHD1dwjaodGxY7MaQVCo-oPUE4_NDZxkKc9UI4ZzGqCcsIB45F27c","DataProtected":true} \ No newline at end of file diff --git a/src/Yavsc/keys/is-signing-key-60A9276B16276CDD75FB4BEF8B781BA8.json b/src/Yavsc/keys/is-signing-key-60A9276B16276CDD75FB4BEF8B781BA8.json new file mode 100644 index 00000000..531017a6 --- /dev/null +++ b/src/Yavsc/keys/is-signing-key-60A9276B16276CDD75FB4BEF8B781BA8.json @@ -0,0 +1 @@ +{"Version":1,"Id":"60A9276B16276CDD75FB4BEF8B781BA8","Created":"2024-02-17T22:28:17.675944Z","Algorithm":"RS256","IsX509Certificate":false,"Data":"CfDJ8KSutaEsjqBOv69A8g-cho01owHJzjzcopHq0TMwtF4c51SA-siD5qPc2Rb328Le_5M77eS9zhcLtQNpvrWyV4jwVgCRGD7bA1TAj6vQQQLwJIzLuMwbS4boFo5QHV5oKN3TnwIfL09P8b4JeRuO2RmfHH_I4cOuyTsp_ziI4ADbez6rdU-IMT8mGkjeE46VDz4XbEZIef3P25WL7a6NNXSS-zAxiJUZAgRhuZ-OQiAw3ItXgGt8g-9PWQ95VNctyQC1zbL99bMFqnTzIxm7raGMVHnMuNbhzftpopU4jFZl2gTgBM8x4Gy8rmZjpt1h3-vVShT5l9TxTHCifeLPl7bUW4iKB2OGFd3Q6ne_jYcQs8VHKXQoofUn3FKF1H_eUTWIpsrRiV6hhrZ2_O3sacZ2IRVTpwi0mU-KjNVf3XilyfloeGcyHW1c30OW61HRbmYchagXUERxvH_PJ7BheYaCvv3VjvmIVgRtZH4MCN5LV8jN2OntIzMlcLPKiCCnxtlHH4InCXrHYkBjJIcP6f6bl9oD3qlDwcZWLY0g5AUtgu9bFY0YHh63YqyGaZS-FA71Ijq4PmgaUxk5W65t_8egBifNHzrSTomWNuGVHHmi4prWV6Toqrvvnn-bnepTlREXiJwWMFT_0GInT0-gUO6UQLnGE9L-1wxHAi0-Ct40ELHu3lRQMeCzPgTq74Nl1GcX0zYziztG3nvsXqEqg7wPB7yUSfNfhlUT7AmU-692PxAqs5pi5h_t3uRnu4R-uTB_7YwPpq0jU-ES98xgnJlJdpO-n30qQoXNPtPg-bAJ3uva4sHAg3sWysLFkUWQCdSa5dWwU619iNw2F9wA148_0OmzKdHsQBnKwK_rVE0U3zAhT08DSkrcj9KXGtHYtXaopGll1n7EViej-sPai20VqiBXW9s8XbKNqQXsDjbpH55Cv8SDnPiccmFUl6TrR-mgs6KU-QxDqNtReI4seMoi4dVUL1CvsSdWJsrjMhrU5QGnQ5GRD77W2KjYQO_-LyynjcadplI8pWIfkCKNegJwxSvqwgI66dcvmr-U7wLwmDrnASeUfAEno9ZJJitaSLzbf87WRvKdzkLQmUl0S2_aLt1E4M8ybGrbSqxT6IKHVliF5Owwdla1Tbcrdo-oV1frWnJT69EDXQksrnLR2NjdaYM76X8sm3QrLYI8TgzAtLSjkQB9krniy-a4OZnGZj4B-FyfnxmEjtNu0F3yZlmsRlOp4NonRFHEG46sAUqanzWm6ISCHRzCxnbvsxIMlJpevf_IorFIjWIQI5eBIZkLqz6UV0QRu71CZRLOWwZA9U6qvunwUxAwQx9MrPE6FwyNfedA2GQ0PYnMCf0yxpjXbMSUvUPxT6y3B9u2XZj3mnHMKzPL0kMp-yD6r7WurNpRoDYrB9CVj4X2AiAxn6tzBdCqBZhbfRRWjm1ay4WR7wAUvWllX6bbgeKGiIv1ZALSk3-8fGNk9vMJmtdvIguJ1ZNhX64Z4hN-hsLhUcO32I-NANEMuxNt79ylc_U6RaeW03GKwp2-PKgTqeLl69zfwl06DLmGbPIoc8Yaz1VJ8w_oaM98FeCPJe9y0ZBCSGjzjlp-IW11zRKelWFYz1DJmXWWwhg3fA0RpTyGGHcurGem7gAHiMtyYtzUuNHSrg5xpBcq2FlLb1YZgG8sGxNkEg9rOaDeL04ipfUNp3wCpIhk_hdV0YfL9_ap1THKg_Ug3eu5quOZIeKDhxQMj0gtHMjLmlMdZptwdoKakAPf-QGJ3_TSHO2HTZovth1QXqd0gJWnMyW0Tun-4vjKbaKbMOfNkYdXworRwDnpNZnmV5kWAag2h3wewMxniwa0psnhH-W1tTU6B-ZTz9u-AMvzuR7Vs9c7NPvjw0WodD6ujZEe4whUrYHZPVB8s1-TzGGIqx-wFPVIMTUz2K_KfoRG7FGx6CNBkAjEcYRRs7nSOjm1KN2xsi_RtizXZkMN-qdzKRzjQJwRjbHMUO1rcmVN6o3VViBDa9labZM2gjTKi2EnW7yy18cISarU9qug_gHt_1s7MzgOqkjapxHB0DBVNDpdgtszxy61md3IfT5mdOEKAYn3ugQVx6dLSKixPw4cUJ-xU2ZXu1VbKEUlUjNowTbgKApeD1KZnI4xMsxkBJnKTCFgqCKqRxvNxdWoI-mav5Twe4i5E3t-il0SXidsglcOvitwmBEdzcLmtqW2-8KXMX7Ci_ZJZFfWuPJElttYERSMqh3XzYfw92U5JEDk8if6anJ6jvFsqujocBrLi-73Z17u_VTyrhbuYNdtQ_vD2XlsgdAlDcOHYFb2K8kMojCfm5ctlsDG0gN9OuuQDYj439CLalE5Lz3uWAmpEhqVQXE5fsHiM_SgHnIH4GsYEwFhkAtTY9OLAVYu5b4pVy49b8OwoZuTPgp-NNoBX-qdXHiXsCIUNTEdMLhe1sllwRQg6_4fxJ1uMvD25c9V","DataProtected":true} \ No newline at end of file diff --git a/src/Yavsc/sql.pgsql b/src/Yavsc/sql.pgsql new file mode 100644 index 00000000..178d1b0b --- /dev/null +++ b/src/Yavsc/sql.pgsql @@ -0,0 +1,6 @@ +-- select * from "AspNetRoles"; +-- select * from "AspNetUserRoles"; +select "AspNetUsers"."UserName", "AspNetRoles"."Name" from "AspNetUsers" +inner join "AspNetUserRoles" on "AspNetUserRoles"."UserId" = "AspNetUsers"."Id" +inner join "AspNetRoles" on "AspNetRoles"."Id" = "AspNetUserRoles"."RoleId" +; diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/album-rtl/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/album-rtl/index.html new file mode 100644 index 00000000..1bd11d35 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/album-rtl/index.html @@ -0,0 +1,256 @@ + + + + + + + + + مثال الألبوم · Bootstrap v5.0 + + + + + + + + + + + + + + +
    + + +
    + +
    + +
    +
    +
    +

    مثال الألبوم

    +

    وصف قصير حول الألبوم أدناه (محتوياته ، ومنشؤه ، وما إلى ذلك). اجعله قصير ولطيف، ولكن ليست قصير جدًا حتى لا يتخطى الناس هذا الألبوم تمامًا.

    +

    + الدعوة الرئيسية للعمل + عمل ثانوي +

    +
    +
    +
    + +
    +
    + +
    +
    +
    + Placeholderصورة مصغرة + +
    +

    هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +
    +
    + + +
    + 9 دقائق +
    +
    +
    +
    +
    +
    + Placeholderصورة مصغرة + +
    +

    هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +
    +
    + + +
    + 9 دقائق +
    +
    +
    +
    +
    +
    + Placeholderصورة مصغرة + +
    +

    هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +
    +
    + + +
    + 9 دقائق +
    +
    +
    +
    + +
    +
    + Placeholderصورة مصغرة + +
    +

    هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +
    +
    + + +
    + 9 دقائق +
    +
    +
    +
    +
    +
    + Placeholderصورة مصغرة + +
    +

    هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +
    +
    + + +
    + 9 دقائق +
    +
    +
    +
    +
    +
    + Placeholderصورة مصغرة + +
    +

    هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +
    +
    + + +
    + 9 دقائق +
    +
    +
    +
    + +
    +
    + Placeholderصورة مصغرة + +
    +

    هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +
    +
    + + +
    + 9 دقائق +
    +
    +
    +
    +
    +
    + Placeholderصورة مصغرة + +
    +

    هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +
    +
    + + +
    + 9 دقائق +
    +
    +
    +
    +
    +
    + Placeholderصورة مصغرة + +
    +

    هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +
    +
    + + +
    + 9 دقائق +
    +
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/album/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/album/index.html new file mode 100644 index 00000000..bf6f0cb5 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/album/index.html @@ -0,0 +1,256 @@ + + + + + + + + + Album example · Bootstrap v5.0 + + + + + + + + + + + + + + +
    + + +
    + +
    + +
    +
    +
    +

    Album example

    +

    Something short and leading about the collection below—its contents, the creator, etc. Make it short and sweet, but not too short so folks don’t simply skip over it entirely.

    +

    + Main call to action + Secondary action +

    +
    +
    +
    + +
    +
    + +
    +
    +
    + PlaceholderThumbnail + +
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +
    +
    + + +
    + 9 mins +
    +
    +
    +
    +
    +
    + PlaceholderThumbnail + +
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +
    +
    + + +
    + 9 mins +
    +
    +
    +
    +
    +
    + PlaceholderThumbnail + +
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +
    +
    + + +
    + 9 mins +
    +
    +
    +
    + +
    +
    + PlaceholderThumbnail + +
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +
    +
    + + +
    + 9 mins +
    +
    +
    +
    +
    +
    + PlaceholderThumbnail + +
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +
    +
    + + +
    + 9 mins +
    +
    +
    +
    +
    +
    + PlaceholderThumbnail + +
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +
    +
    + + +
    + 9 mins +
    +
    +
    +
    + +
    +
    + PlaceholderThumbnail + +
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +
    +
    + + +
    + 9 mins +
    +
    +
    +
    +
    +
    + PlaceholderThumbnail + +
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +
    +
    + + +
    + 9 mins +
    +
    +
    +
    +
    +
    + PlaceholderThumbnail + +
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +
    +
    + + +
    + 9 mins +
    +
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo-white.svg b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo-white.svg new file mode 100644 index 00000000..f73d7ca2 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo.svg b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo.svg new file mode 100644 index 00000000..f0189652 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo.svg @@ -0,0 +1 @@ + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css new file mode 100644 index 00000000..edfbbb03 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * Bootstrap v5.0.2 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1050;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#0d6efd!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#0dcaf0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#f8f9fa!important}.text-dark{color:#212529!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-reset{color:inherit!important}.bg-primary{background-color:#0d6efd!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#0dcaf0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#f8f9fa!important}.bg-dark{background-color:#212529!important}.bg-body{background-color:#fff!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css.map b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css.map new file mode 100644 index 00000000..3fe6cda5 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.0.2 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n font-size: $font-size-root;\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: $body-text-align;\n background-color: $body-bg; // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` +

    + + + + +
    + + + + + + + +
    + + +
    +
    + Placeholder140x140 + +

    عنوان

    +

    تذكر دائماً أن الحاسوب لا يمتلك ذكاءً، ولكنه يكتسب الذكاء الاصطناعي من خلال ثلاثة عناصر وظيفية رئيسة، هي: القدرة على التحليل، والقدرة على التأليف، والاستدلال المنطقي.

    +

    عرض التفاصيل

    +
    +
    + Placeholder140x140 + +

    عنوان آخر

    +

    إذا أردنا استخدام الحاسوب الذكي في معالجة اللغة العربية فإننا نجد أنفسنا أمام تحدٍّ كبير، خاصة وأن لغتنا تمتاز بتماسك منظوماتها وتداخلها، ومع ذلك فإن الذكاء الاصطناعي يمكّننا من الحصول على أربعة أنواع من المعالجة، هي: المعالجة الصوتية، والمعالجة الصرفية، والمعالجة النحوية، والمعالجة الدلالية.

    +

    عرض التفاصيل

    +
    +
    + Placeholder140x140 + +

    عنوان ثالث لتأكيد المعلومة

    +

    بفضل بحوث الذكاء الاصطناعي وتقنياته استطعنا الانتقال من مرحلة التعامل مع الفيزيائي إلى مرحلة التعامل مع المنطقي، وقد انعكس هذا الانتقال بصورة إيجابية على الكيفية التي تتعامل بها الشعوب مع لغاتها الحيَّة، وهذا يعني أنه يجب أن ينعكس بصورة إيجابية على كيفية تعاملنا مع لغتنا العربية.

    +

    عرض التفاصيل

    +
    +
    + + + + +
    + +
    +
    +

    العنوان الأول المميز. سيذهل عقلك.

    +

    وجه الإنسان هو جزء معقَّد ومتميِّز للغاية من جسمه. وفي الواقع، إنه أحد أكثر أنظمة الإشارات المتاحة تعقيداً لدينا؛ فهو يتضمَّن أكثر من 40 عضلة مستقلة هيكلياً ووظيفياً، بحيث يمكن تشغيل كل منها بشكل مستقل عن البعض الآخر؛ وتشكِّل أحد أقوى مؤشرات العواطف.

    +
    +
    + Placeholder500x500 + +
    +
    + +
    + +
    +
    +

    أوه نعم، هذا جيد. شاهد بنفسك.

    +

    عندما نضحك أو نبكي، فإننا نعرض عواطفنا، مما يسمح للآخرين بإلقاء نظرة خاطفة على أذهاننا أثناء "قراءة" وجوهنا بناءً على التغييرات في مكوّنات الوجه الرئيسة، مثل: العينين والحاجبين والجفنين والأنف والشفتين.

    +
    +
    + Placeholder500x500 + +
    +
    + +
    + +
    +
    +

    وأخيرًا، هذا. كش ملك.

    +

    إن جميع العضلات في أجسامنا مدعمة بالأعصاب المتصلة من كافة أنحاء الجسم بالنخاع الشوكي والدماغ. وهذا الاتصال العصبي هو ثنائي الاتجاه، أي إن العصب يتسبَّب في تقلصات العضلات بناءً على إشارات الدماغ، ويقوم في الوقت نفسه بإرسال معلومات عن حالة العضلات إلى الدماغ

    +
    +
    + Placeholder500x500 + +
    +
    + +
    + + + +
    + + + + +
    + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.css new file mode 100644 index 00000000..f91faec7 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.css @@ -0,0 +1,93 @@ +/* GLOBAL STYLES +-------------------------------------------------- */ +/* Padding below the footer and lighter body text */ + +body { + padding-top: 3rem; + padding-bottom: 3rem; + color: #5a5a5a; +} + + +/* CUSTOMIZE THE CAROUSEL +-------------------------------------------------- */ + +/* Carousel base class */ +.carousel { + margin-bottom: 4rem; +} +/* Since positioning the image, we need to help out the caption */ +.carousel-caption { + bottom: 3rem; + z-index: 10; +} + +/* Declare heights because of positioning of img element */ +.carousel-item { + height: 32rem; +} +.carousel-item > img { + position: absolute; + top: 0; + left: 0; + min-width: 100%; + height: 32rem; +} + + +/* MARKETING CONTENT +-------------------------------------------------- */ + +/* Center align the text within the three columns below the carousel */ +.marketing .col-lg-4 { + margin-bottom: 1.5rem; + text-align: center; +} +.marketing h2 { + font-weight: 400; +} +/* rtl:begin:ignore */ +.marketing .col-lg-4 p { + margin-right: .75rem; + margin-left: .75rem; +} +/* rtl:end:ignore */ + + +/* Featurettes +------------------------- */ + +.featurette-divider { + margin: 5rem 0; /* Space out the Bootstrap
    more */ +} + +/* Thin out the marketing headings */ +.featurette-heading { + font-weight: 300; + line-height: 1; + /* rtl:remove */ + letter-spacing: -.05rem; +} + + +/* RESPONSIVE CSS +-------------------------------------------------- */ + +@media (min-width: 40em) { + /* Bump up size of carousel content */ + .carousel-caption p { + margin-bottom: 1.25rem; + font-size: 1.25rem; + line-height: 1.4; + } + + .featurette-heading { + font-size: 50px; + } +} + +@media (min-width: 62em) { + .featurette-heading { + margin-top: 7rem; + } +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.rtl.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.rtl.css new file mode 100644 index 00000000..853640b9 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.rtl.css @@ -0,0 +1,89 @@ +/* GLOBAL STYLES +-------------------------------------------------- */ +/* Padding below the footer and lighter body text */ + +body { + padding-top: 3rem; + padding-bottom: 3rem; + color: #5a5a5a; +} + + +/* CUSTOMIZE THE CAROUSEL +-------------------------------------------------- */ + +/* Carousel base class */ +.carousel { + margin-bottom: 4rem; +} +/* Since positioning the image, we need to help out the caption */ +.carousel-caption { + bottom: 3rem; + z-index: 10; +} + +/* Declare heights because of positioning of img element */ +.carousel-item { + height: 32rem; +} +.carousel-item > img { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + height: 32rem; +} + + +/* MARKETING CONTENT +-------------------------------------------------- */ + +/* Center align the text within the three columns below the carousel */ +.marketing .col-lg-4 { + margin-bottom: 1.5rem; + text-align: center; +} +.marketing h2 { + font-weight: 400; +} +.marketing .col-lg-4 p { + margin-right: .75rem; + margin-left: .75rem; +} + + +/* Featurettes +------------------------- */ + +.featurette-divider { + margin: 5rem 0; /* Space out the Bootstrap
    more */ +} + +/* Thin out the marketing headings */ +.featurette-heading { + font-weight: 300; + line-height: 1; +} + + +/* RESPONSIVE CSS +-------------------------------------------------- */ + +@media (min-width: 40em) { + /* Bump up size of carousel content */ + .carousel-caption p { + margin-bottom: 1.25rem; + font-size: 1.25rem; + line-height: 1.4; + } + + .featurette-heading { + font-size: 50px; + } +} + +@media (min-width: 62em) { + .featurette-heading { + margin-top: 7rem; + } +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/index.html new file mode 100644 index 00000000..bfdc5fb5 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/carousel/index.html @@ -0,0 +1,214 @@ + + + + + + + + + Carousel Template · Bootstrap v5.0 + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + + + +
    + + +
    +
    + Placeholder140x140 + +

    Heading

    +

    Some representative placeholder content for the three columns of text below the carousel. This is the first column.

    +

    View details »

    +
    +
    + Placeholder140x140 + +

    Heading

    +

    Another exciting bit of representative placeholder content. This time, we've moved on to the second column.

    +

    View details »

    +
    +
    + Placeholder140x140 + +

    Heading

    +

    And lastly this, the third column of representative placeholder content.

    +

    View details »

    +
    +
    + + + + +
    + +
    +
    +

    First featurette heading. It’ll blow your mind.

    +

    Some great placeholder content for the first featurette here. Imagine some exciting prose here.

    +
    +
    + Placeholder500x500 + +
    +
    + +
    + +
    +
    +

    Oh yeah, it’s that good. See for yourself.

    +

    Another featurette? Of course. More placeholder content here to give you an idea of how this layout would work with some actual real-world content in place.

    +
    +
    + Placeholder500x500 + +
    +
    + +
    + +
    +
    +

    And lastly, this one. Checkmate.

    +

    And yes, this is the last block of representative placeholder content. Again, not really intended to be actually read, simply here to give you a better view of what this would look like with some actual content. Your content.

    +
    +
    + Placeholder500x500 + +
    +
    + +
    + + + +
    + + + + +
    + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet-rtl/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet-rtl/index.html new file mode 100644 index 00000000..82f50091 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet-rtl/index.html @@ -0,0 +1,1760 @@ + + + + + + + + + ورقة الغش · Bootstrap v5.0 + + + + + + + + + + + + + + + + +
    +
    +

    + Bootstrap + ورقة الغش +

    + جدول بيانات LTR +
    +
    + +
    +
    +

    المحتوى

    + +
    +
    +

    النصوص

    + دليل الإستخدام +
    + +
    +
    +

    العرض 1

    +

    العرض 2

    +

    العرض 3

    +

    العرض 4

    +

    العرض 5

    +

    العرض 6

    +
    + +
    +

    عنوان 1

    +

    عنوان 2

    +

    عنوان 3

    +

    عنوان 4

    +

    عنوان 5

    +

    عنوان 6

    +
    + +
    +

    + هذه قطعة إملائية متميزة، فهي مصممة لتكون بارزة من بين القطع الإملائية الأخرى. +

    +
    + +
    +

    يمكنك استخدام تصنيف mark لتحديد نص.

    +

    من المفترض أن يتم التعامل مع هذا السطر كنص محذوف.

    +

    من المفترض أن يتم التعامل مع هذا السطر على أنه لم يعد دقيقًا.

    +

    من المفترض أن يتم التعامل مع هذا السطر كإضافة إلى المستند.

    +

    سيتم عرض النص في هذا السطر كما وتحته خط.

    +

    من المفترض أن يتم التعامل مع هذا السطر على أنه يحوي تفاصيل صغيرة.

    +

    هذا السطر يحوي نص عريض.

    +

    هذا السطر يحوي نص مائل.

    +
    + +
    +
    +

    إقتباس مبهر، موضوع في عنصر blockquote

    +
    شخص مشهور في عنوان المصدر
    +
    +
    + +
    +
      +
    • هذه قائمة عناصر.
    • +
    • بالرغم من أنها مصممة كي لا تظهر كذلك.
    • +
    • إلا أنها مجهزة كـ قائمة خلف الكواليس
    • +
    • هذا التصميم ينطبق فقد على القائمة الرئيسية
    • +
    • القوائم الفرعية +
        +
      • لا تتأثر بهذا التصميم
      • +
      • فهي تظهر عليها علامات الترقيم
      • +
      • وتحتوي على مساحة فارغة بجوارها
      • +
      +
    • +
    • قد يكون هذا التصميم مفيدًا في بعض الأحيان.
    • +
    +
    + +
    +
      +
    • هذا عنصر في قائمة.
    • +
    • وهذا أيضًا.
    • +
    • لكنهم يظهرون متجاورين.
    • +
    +
    +
    +
    +
    +
    +

    الصور

    + دليل الإستخدام +
    + +
    +
    + Placeholderصورة مستجيبة + +
    + +
    + صورة عنصر نائب مربع عام مع حدود بيضاء حولها ، مما يجعلها تشبه صورة تم التقاطها بكاميرا فورية قديمة200x200 + +
    +
    +
    +
    +
    +

    الجداول

    + دليل الإستخدام +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #الاسم الاولالكنيةالاسم المستعار
    1MarkOtto@mdo
    2JacobThornton@fat
    3Larry the Bird@twitter
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #الاسم الاولالكنيةالاسم المستعار
    1MarkOtto@mdo
    2JacobThornton@fat
    3Larry the Bird@twitter
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Classعنوانعنوان
    Defaultخليةخلية
    Primaryخليةخلية
    Secondaryخليةخلية
    Successخليةخلية
    Dangerخليةخلية
    Warningخليةخلية
    Infoخليةخلية
    Lightخليةخلية
    Darkخليةخلية
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #الاسم الاولالكنيةالاسم المستعار
    1MarkOtto@mdo
    2JacobThornton@fat
    3Larry the Bird@twitter
    +
    +
    +
    +
    +
    +

    النماذج البيانية

    + دليل الإستخدام +
    + +
    +
    +
    + Placeholder400x300 + +
    شرح للصورة أعلاه.
    +
    +
    +
    +
    +
    + +
    +

    النماذج

    + +
    +
    +

    نظرة عامة

    + دليل الإستخدام +
    + +
    +
    +
    +
    + + +
    لن نقوم بمشاركة بريدك الإلكتروني مع أي شخص آخر.
    +
    +
    + + +
    +
    + + +
    +
    + أزرار الاختيار الأحادي +
    + + +
    +
    + + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    +

    الحقول المعطلة

    + دليل الإستخدام +
    + +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    + + +
    +
    +
    + أزرار اختيار أحادي معطلين +
    + + +
    +
    + + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    +
    +

    الأحجام

    + دليل الإستخدام +
    + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    مجموعة الإدخال

    + دليل الإستخدام +
    + +
    +
    +
    + أنا اسمي + +
    +
    + + وغيرها +
    + +
    + + https://example.com/users/ +
    +
    + .00 + + $ +
    +
    + مع textarea + +
    +
    +
    +
    +
    +
    +

    الحقول ذوي العناوين العائمة

    + دليل الإستخدام +
    + +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +

    التحقق

    + دليل الإستخدام +
    + +
    +
    +
    +
    + + +
    + يبدو صحيحًا! +
    +
    +
    + + +
    + يبدو صحيحًا! +
    +
    +
    + +
    + + @ +
    + يرجى اختيار اسم مستخدم. +
    +
    +
    +
    + + +
    + يرجى إدخال مدينة صحيحة. +
    +
    +
    + + +
    + يرجى اختيار ولاية صحيحة. +
    +
    +
    + + +
    + يرجى إدخال رمز بريدي صحيح. +
    +
    +
    +
    + + +
    + تجب الموافقة قبل إرسال النموذج. +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +

    العناصر

    + +
    +
    +

    المطوية

    + دليل الإستخدام +
    + +
    +
    +
    +
    +

    + +

    +
    +
    + هذا هو محتوى عنصر المطوية الأول. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootsrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. +
    +
    +
    +
    +

    + +

    +
    +
    + هذا هو محتوى عنصر المطوية الثاني. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootsrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. +
    +
    +
    +
    +

    + +

    +
    +
    + هذا هو محتوى عنصر المطوية الثالث. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootsrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    الإنذارات

    + دليل الإستخدام +
    + +
    +
    + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    +

    الشارة

    + دليل الإستخدام +
    + +
    +
    +

    مثال على عنوان جديد

    +

    مثال على عنوان جديد

    +

    مثال على عنوان جديد

    +

    مثال على عنوان جديد

    +

    مثال على عنوان جديد

    +

    مثال على عنوان جديد

    +

    مثال على عنوان جديد

    +

    مثال على عنوان جديد

    +
    + +
    + + Primary + Secondary + Success + Danger + Warning + Info + Light + Dark +
    +
    +
    + +
    +
    +

    الأزرار

    + دليل الإستخدام +
    + +
    +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + +
    + +
    + + + +
    +
    +
    + +
    +
    +

    البطاقة

    + دليل الإستخدام +
    + +
    +
    +
    +
    +
    + Placeholderغطاء الصورة + +
    +
    عنوان البطاقة
    +

    بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

    + اذهب لمكان ما +
    +
    +
    +
    +
    +
    + متميز +
    +
    +
    عنوان البطاقة
    +

    بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

    + اذهب لمكان ما +
    + +
    +
    +
    +
    +
    +
    عنوان البطاقة
    +

    بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

    +
    +
      +
    • عنصر
    • +
    • عنصر آخر
    • +
    • عنصر ثالث
    • +
    + +
    +
    +
    +
    +
    +
    + Placeholderصورة + +
    +
    +
    +
    عنوان البطاقة
    +

    هذه بطاقة أعرض مع نص داعم تحتها كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

    +

    آخر تحديث منذ 3 دقائق

    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +

    مجموعة العناصر

    + دليل الإستخدام +
    + + +
    + + + + +
    +
    +

    الصناديق المنبثقة

    + دليل الإستخدام +
    + +
    +
    + +
    + +
    + + + + +
    +
    +
    +
    +
    +

    شريط التقدم

    + دليل الإستخدام +
    + +
    +
    +
    +
    0%
    +
    +
    +
    25%
    +
    +
    +
    50%
    +
    +
    +
    75%
    +
    +
    +
    100%
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    المخطوطة

    + دليل الإستخدام +
    + +
    +
    + +
    +

    @fat

    +

    محتوى لتوضيح كيف تعمل المخطوطة. ببساطة، المخطوطة عبارة عن منشور طويل يحتوي على عدة أقسام، ولديه شريط تنقل يسهل الوصول إلى هذه الأقسام الفرعية.

    +

    @mdo

    +

    بصرف النظر عن تحسيننا جدوى المكيّفات أو عدم تحسينها، فإن الطلب على الطاقة سيزداد. وطبقاً لما جاء في مقالة معهد ماساشوستس للتكنولوجيا، السالف ذكره، ثمَّة أمر يجب عدم إغفاله، وهو كيف أن هذا الطلب سيضغط على نظم توفير الطاقة الحالية. إذ لا بد من إعادة تأهيل كل شبكات الكهرباء، وتوسيعها لتلبية طلب الطاقة في زمن الذروة، خلال موجات الحرارة المتزايدة. فحين يكون الحر شديداً يجنح الناس إلى البقاء في الداخل، وإلى زيادة تشغيل المكيّفات، سعياً إلى جو لطيف وهم يستخدمون أدوات وأجهزة مختلفة أخرى.

    +

    واحد

    +

    وكل هذه الأمور المتزامنة من تشغيل الأجهزة، يزيد الضغط على شبكات الطاقة، كما أسلفنا. لكن مجرد زيادة سعة الشبكة ليس كافياً. إذ لا بد من تطوير الشبكات الذكية التي تستخدم الجسّاسات، ونظم المراقبة، والبرامج الإلكترونية، لتحديد متى يكون الشاغلون في المبنى، ومتى يكون ثمَّة حاجة إلى الطاقة، ومتى تكون الحرارة منخفضة، وبذلك يخرج الناس، فلا يستخدمون كثيراً من الكهرباء.

    +

    اثنان

    +

    مع الأسف، كل هذه الحلول المبتكرة مكلِّفة، وهذا ما يجعلها عديمة الجدوى في نظر بعض الشركات الخاصة والمواطن المتقشّف. إن بعض الأفراد الواعين بيئياً يبذلون قصارى جهدهم في تقليص استهلاكهم من الطاقة، ويعون جيداً أهمية أجهزة التكييف المجدية والأرفق بالبيئة. ولكن جهات كثيرة لن تتحرّك لمجرد حافز سلامة المناخ ووقف هدر الطاقة، ما دامت لا تحركها حوافز قانونية. وعلى الحكومات أن تُقدِم عند الاهتمام بالتغيّر المناخي، على وضع التشريعات المناسبة. فبالنظم والحوافز والدعم، يمكن دفع الشركات إلى اعتماد الحلول الأجدى في مكاتبها.

    +

    ثلاثة

    +

    وكما يتبيّن لنا، من عدد الحلول الملطِّفة للمشكلة، ومن تنوّعها، وهي الحلول التي أسلفنا الحديث عنها، فإن التكنولوجيا التي نحتاج إليها من أجل معالجة هذه التحديات، هي في مدى قدرتنا، لكنها ربما تتطلّب بعض التحسين، ودعماً استثمارياً أكبر!

    +

    ولا مانع من إضافة محتوى آخر ليس تحت أي قسم معين.

    +
    +
    +
    +
    +
    +
    +

    الدوائر المتحركة

    + دليل الإستخدام +
    + +
    +
    + +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + +
    + +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    + جار التحميل... +
    +
    +
    +
    +
    +
    +

    الإشعارات

    + دليل الإستخدام +
    + +
    +
    + +
    +
    +
    +
    +
    +

    التلميحات

    + دليل الإستخدام +
    + +
    +
    + + + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.css new file mode 100644 index 00000000..77aa0f23 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.css @@ -0,0 +1,169 @@ +body { + scroll-behavior: smooth; +} + +/** + * Bootstrap "Journal code" icon + * @link https://icons.getbootstrap.com/icons/journal-code/ + */ +.bd-heading a::before { + display: inline-block; + width: 1em; + height: 1em; + margin-right: .25rem; + content: ""; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%25230d6efd' viewBox='0 0 16 16'%3E%3Cpath d='M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1H2a2 2 0 0 1 2-2z'/%3E%3Cpath d='M2 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2z'/%3E%3Cpath fill-rule='evenodd' d='M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708z'/%3E%3C/svg%3E"); + background-size: 1em; +} + +/* stylelint-disable-next-line selector-max-universal */ +.bd-heading + div > * + * { + margin-top: 3rem; +} + +/* Table of contents */ +.bd-aside a { + padding: .1875rem .5rem; + margin-top: .125rem; + margin-left: .3125rem; + color: rgba(0, 0, 0, .65); + text-decoration: none; +} + +.bd-aside a:hover, +.bd-aside a:focus { + color: rgba(0, 0, 0, .85); + background-color: rgba(121, 82, 179, .1); +} + +.bd-aside .active { + font-weight: 600; + color: rgba(0, 0, 0, .85); +} + +.bd-aside .btn { + padding: .25rem .5rem; + font-weight: 600; + color: rgba(0, 0, 0, .65); + border: 0; +} + +.bd-aside .btn:hover, +.bd-aside .btn:focus { + color: rgba(0, 0, 0, .85); + background-color: rgba(121, 82, 179, .1); +} + +.bd-aside .btn:focus { + box-shadow: 0 0 0 1px rgba(121, 82, 179, .7); +} + +.bd-aside .btn::before { + width: 1.25em; + line-height: 0; + content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); + transition: transform .35s ease; + + /* rtl:raw: + transform: rotate(180deg) translateX(-2px); + */ + transform-origin: .5em 50%; +} + +.bd-aside .btn[aria-expanded="true"]::before { + transform: rotate(90deg)/* rtl:ignore */; +} + + +/* Examples */ +.scrollspy-example { + position: relative; + height: 200px; + margin-top: .5rem; + overflow: auto; +} + +[id="modal"] .bd-example .btn, +[id="buttons"] .bd-example .btn, +[id="tooltips"] .bd-example .btn, +[id="popovers"] .bd-example .btn, +[id="dropdowns"] .bd-example .btn-group, +[id="dropdowns"] .bd-example .dropdown, +[id="dropdowns"] .bd-example .dropup, +[id="dropdowns"] .bd-example .dropend, +[id="dropdowns"] .bd-example .dropstart { + margin: 0 1rem 1rem 0; +} + +/* Layout */ +@media (min-width: 1200px) { + body { + display: grid; + gap: 1rem; + grid-template-columns: 1fr 4fr 1fr; + grid-template-rows: auto; + } + + .bd-header { + position: fixed; + top: 0; + /* rtl:begin:ignore */ + right: 0; + left: 0; + /* rtl:end:ignore */ + z-index: 1030; + grid-column: 1 / span 3; + } + + .bd-aside, + .bd-cheatsheet { + padding-top: 4rem; + } + + /** + * 1. Too bad only Firefox supports subgrids ATM + */ + .bd-cheatsheet, + .bd-cheatsheet section, + .bd-cheatsheet article { + display: inherit; /* 1 */ + gap: inherit; /* 1 */ + grid-template-columns: 1fr 4fr; + grid-column: 1 / span 2; + grid-template-rows: auto; + } + + .bd-aside { + grid-area: 1 / 3; + scroll-margin-top: 4rem; + } + + .bd-cheatsheet section, + .bd-cheatsheet section > h2 { + top: 2rem; + scroll-margin-top: 2rem; + } + + .bd-cheatsheet section > h2::before { + position: absolute; + /* rtl:begin:ignore */ + top: 0; + right: 0; + bottom: -2rem; + left: 0; + /* rtl:end:ignore */ + z-index: -1; + content: ""; + background-image: linear-gradient(to bottom, rgba(255, 255, 255, 1) calc(100% - 3rem), rgba(255, 255, 255, .01)); + } + + .bd-cheatsheet article, + .bd-cheatsheet .bd-heading { + top: 8rem; + scroll-margin-top: 8rem; + } + + .bd-cheatsheet .bd-heading { + z-index: 1; + } +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.js b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.js new file mode 100644 index 00000000..0a50258b --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.js @@ -0,0 +1,73 @@ +/* global bootstrap: false */ + +(function () { + 'use strict' + + // Tooltip and popover demos + document.querySelectorAll('.tooltip-demo') + .forEach(function (tooltip) { + new bootstrap.Tooltip(tooltip, { + selector: '[data-bs-toggle="tooltip"]' + }) + }) + + document.querySelectorAll('[data-bs-toggle="popover"]') + .forEach(function (popover) { + new bootstrap.Popover(popover) + }) + + document.querySelectorAll('.toast') + .forEach(function (toastNode) { + var toast = new bootstrap.Toast(toastNode, { + autohide: false + }) + + toast.show() + }) + + // Disable empty links and submit buttons + document.querySelectorAll('[href="#"], [type="submit"]') + .forEach(function (link) { + link.addEventListener('click', function (event) { + event.preventDefault() + }) + }) + + function setActiveItem() { + var hash = window.location.hash + + if (hash === '') { + return + } + + var link = document.querySelector('.bd-aside a[href="' + hash + '"]') + + if (!link) { + return + } + + var active = document.querySelector('.bd-aside .active') + var parent = link.parentNode.parentNode.previousElementSibling + + link.classList.add('active') + + if (parent.classList.contains('collapsed')) { + parent.click() + } + + if (!active) { + return + } + + var expanded = active.parentNode.parentNode.previousElementSibling + + active.classList.remove('active') + + if (expanded && parent !== expanded) { + expanded.click() + } + } + + setActiveItem() + window.addEventListener('hashchange', setActiveItem) +})() diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.rtl.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.rtl.css new file mode 100644 index 00000000..c1a4a1cc --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.rtl.css @@ -0,0 +1,162 @@ +body { + scroll-behavior: smooth; +} + +/** + * Bootstrap "Journal code" icon + * @link https://icons.getbootstrap.com/icons/journal-code/ + */ +.bd-heading a::before { + display: inline-block; + width: 1em; + height: 1em; + margin-left: .25rem; + content: ""; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%25230d6efd' viewBox='0 0 16 16'%3E%3Cpath d='M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1H2a2 2 0 0 1 2-2z'/%3E%3Cpath d='M2 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2z'/%3E%3Cpath fill-rule='evenodd' d='M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708z'/%3E%3C/svg%3E"); + background-size: 1em; +} + +/* stylelint-disable-next-line selector-max-universal */ +.bd-heading + div > * + * { + margin-top: 3rem; +} + +/* Table of contents */ +.bd-aside a { + padding: .1875rem .5rem; + margin-top: .125rem; + margin-right: .3125rem; + color: rgba(0, 0, 0, .65); + text-decoration: none; +} + +.bd-aside a:hover, +.bd-aside a:focus { + color: rgba(0, 0, 0, .85); + background-color: rgba(121, 82, 179, .1); +} + +.bd-aside .active { + font-weight: 600; + color: rgba(0, 0, 0, .85); +} + +.bd-aside .btn { + padding: .25rem .5rem; + font-weight: 600; + color: rgba(0, 0, 0, .65); + border: 0; +} + +.bd-aside .btn:hover, +.bd-aside .btn:focus { + color: rgba(0, 0, 0, .85); + background-color: rgba(121, 82, 179, .1); +} + +.bd-aside .btn:focus { + box-shadow: 0 0 0 1px rgba(121, 82, 179, .7); +} + +.bd-aside .btn::before { + width: 1.25em; + line-height: 0; + content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); + transition: transform .35s ease; + transform: rotate(180deg) translateX(-2px); + transform-origin: .5em 50%; +} + +.bd-aside .btn[aria-expanded="true"]::before { + transform: rotate(90deg); +} + + +/* Examples */ +.scrollspy-example { + position: relative; + height: 200px; + margin-top: .5rem; + overflow: auto; +} + +[id="modal"] .bd-example .btn, +[id="buttons"] .bd-example .btn, +[id="tooltips"] .bd-example .btn, +[id="popovers"] .bd-example .btn, +[id="dropdowns"] .bd-example .btn-group, +[id="dropdowns"] .bd-example .dropdown, +[id="dropdowns"] .bd-example .dropup, +[id="dropdowns"] .bd-example .dropend, +[id="dropdowns"] .bd-example .dropstart { + margin: 0 0 1rem 1rem; +} + +/* Layout */ +@media (min-width: 1200px) { + body { + display: grid; + gap: 1rem; + grid-template-columns: 1fr 4fr 1fr; + grid-template-rows: auto; + } + + .bd-header { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; + grid-column: 1 / span 3; + } + + .bd-aside, + .bd-cheatsheet { + padding-top: 4rem; + } + + /** + * 1. Too bad only Firefox supports subgrids ATM + */ + .bd-cheatsheet, + .bd-cheatsheet section, + .bd-cheatsheet article { + display: inherit; /* 1 */ + gap: inherit; /* 1 */ + grid-template-columns: 1fr 4fr; + grid-column: 1 / span 2; + grid-template-rows: auto; + } + + .bd-aside { + grid-area: 1 / 3; + scroll-margin-top: 4rem; + } + + .bd-cheatsheet section, + .bd-cheatsheet section > h2 { + top: 2rem; + scroll-margin-top: 2rem; + } + + .bd-cheatsheet section > h2::before { + position: absolute; + top: 0; + right: 0; + bottom: -2rem; + left: 0; + z-index: -1; + content: ""; + background-image: linear-gradient(to bottom, rgba(255, 255, 255, 1) calc(100% - 3rem), rgba(255, 255, 255, .01)); + } + + .bd-cheatsheet article, + .bd-cheatsheet .bd-heading { + top: 8rem; + scroll-margin-top: 8rem; + } + + .bd-cheatsheet .bd-heading { + z-index: 1; + } +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/index.html new file mode 100644 index 00000000..efdee2d1 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cheatsheet/index.html @@ -0,0 +1,1745 @@ + + + + + + + + + Cheatsheet · Bootstrap v5.0 + + + + + + + + + + + + + + + + +
    +
    +

    + Bootstrap + Cheatsheet +

    + RTL cheatsheet +
    +
    + +
    +
    +

    Contents

    + +
    +
    +

    Typography

    + Documentation +
    + +
    +
    +

    Display 1

    +

    Display 2

    +

    Display 3

    +

    Display 4

    +

    Display 5

    +

    Display 6

    +
    + +
    +

    Heading 1

    +

    Heading 2

    +

    Heading 3

    +

    Heading 4

    +

    Heading 5

    +

    Heading 6

    +
    + +
    +

    + This is a lead paragraph. It stands out from regular paragraphs. +

    +
    + +
    +

    You can use the mark tag to highlight text.

    +

    This line of text is meant to be treated as deleted text.

    +

    This line of text is meant to be treated as no longer accurate.

    +

    This line of text is meant to be treated as an addition to the document.

    +

    This line of text will render as underlined.

    +

    This line of text is meant to be treated as fine print.

    +

    This line rendered as bold text.

    +

    This line rendered as italicized text.

    +
    + +
    +
    +

    A well-known quote, contained in a blockquote element.

    +
    Someone famous in Source Title
    +
    +
    + +
    +
      +
    • This is a list.
    • +
    • It appears completely unstyled.
    • +
    • Structurally, it's still a list.
    • +
    • However, this style only applies to immediate child elements.
    • +
    • Nested lists: +
        +
      • are unaffected by this style
      • +
      • will still show a bullet
      • +
      • and have appropriate left margin
      • +
      +
    • +
    • This may still come in handy in some situations.
    • +
    +
    + +
    +
      +
    • This is a list item.
    • +
    • And another one.
    • +
    • But they're displayed inline.
    • +
    +
    +
    +
    +
    +
    +

    Images

    + Documentation +
    + +
    +
    + PlaceholderResponsive image + +
    + +
    + A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera200x200 + +
    +
    +
    +
    +
    +

    Tables

    + Documentation +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #FirstLastHandle
    1MarkOtto@mdo
    2JacobThornton@fat
    3Larry the Bird@twitter
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #FirstLastHandle
    1MarkOtto@mdo
    2JacobThornton@fat
    3Larry the Bird@twitter
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ClassHeadingHeading
    DefaultCellCell
    PrimaryCellCell
    SecondaryCellCell
    SuccessCellCell
    DangerCellCell
    WarningCellCell
    InfoCellCell
    LightCellCell
    DarkCellCell
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #FirstLastHandle
    1MarkOtto@mdo
    2JacobThornton@fat
    3Larry the Bird@twitter
    +
    +
    +
    +
    +
    +

    Figures

    + Documentation +
    + +
    +
    +
    + Placeholder400x300 + +
    A caption for the above image.
    +
    +
    +
    +
    +
    + +
    +

    Forms

    + +
    +
    +

    Overview

    + Documentation +
    + +
    +
    +
    +
    + + +
    We'll never share your email with anyone else.
    +
    +
    + + +
    +
    + + +
    +
    + Radios buttons +
    + + +
    +
    + + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    +

    Disabled forms

    + Documentation +
    + +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    + + +
    +
    +
    + Disabled radios buttons +
    + + +
    +
    + + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    +
    +

    Sizing

    + Documentation +
    + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Input group

    + Documentation +
    + +
    +
    +
    + @ + +
    +
    + + @example.com +
    + +
    + https://example.com/users/ + +
    +
    + $ + + .00 +
    +
    + With textarea + +
    +
    +
    +
    +
    +
    +

    Floating labels

    + Documentation +
    + +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +

    Validation

    + Documentation +
    + +
    +
    +
    +
    + + +
    + Looks good! +
    +
    +
    + + +
    + Looks good! +
    +
    +
    + +
    + @ + +
    + Please choose a username. +
    +
    +
    +
    + + +
    + Please provide a valid city. +
    +
    +
    + + +
    + Please select a valid state. +
    +
    +
    + + +
    + Please provide a valid zip. +
    +
    +
    +
    + + +
    + You must agree before submitting. +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +

    Components

    + +
    +
    +

    Accordion

    + Documentation +
    + +
    +
    +
    +
    +

    + +

    +
    +
    + This is the first item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. +
    +
    +
    +
    +

    + +

    +
    +
    + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. +
    +
    +
    +
    +

    + +

    +
    +
    + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Alerts

    + Documentation +
    + +
    +
    + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    +

    Badge

    + Documentation +
    + +
    +
    +

    Example heading New

    +

    Example heading New

    +

    Example heading New

    +

    Example heading New

    +

    Example heading New

    +

    Example heading New

    +

    Example heading New

    +

    Example heading New

    +
    + +
    + + Primary + Secondary + Success + Danger + Warning + Info + Light + Dark +
    +
    +
    + +
    +
    +

    Buttons

    + Documentation +
    + +
    +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + +
    + +
    + + + +
    +
    +
    +
    +
    +

    Button group

    + Documentation +
    + +
    +
    + +
    +
    +
    +
    +
    +

    Card

    + Documentation +
    + +
    +
    +
    +
    +
    + PlaceholderImage cap + +
    +
    Card title
    +

    Some quick example text to build on the card title and make up the bulk of the card's content.

    + Go somewhere +
    +
    +
    +
    +
    +
    + Featured +
    +
    +
    Card title
    +

    Some quick example text to build on the card title and make up the bulk of the card's content.

    + Go somewhere +
    + +
    +
    +
    +
    +
    +
    Card title
    +

    Some quick example text to build on the card title and make up the bulk of the card's content.

    +
    +
      +
    • An item
    • +
    • A second item
    • +
    • A third item
    • +
    + +
    +
    +
    +
    +
    +
    + PlaceholderImage + +
    +
    +
    +
    Card title
    +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    +

    Last updated 3 mins ago

    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +

    List group

    + Documentation +
    + +
    +
    +
      +
    • A disabled item
    • +
    • A second item
    • +
    • A third item
    • +
    • A fourth item
    • +
    • And a fifth one
    • +
    +
    + +
    +
      +
    • An item
    • +
    • A second item
    • +
    • A third item
    • +
    • A fourth item
    • +
    • And a fifth one
    • +
    +
    + + +
    +
    + + + + +
    +
    +

    Popovers

    + Documentation +
    + +
    +
    + +
    + +
    + + + + +
    +
    +
    +
    +
    +

    Progress

    + Documentation +
    + +
    +
    +
    +
    0%
    +
    +
    +
    25%
    +
    +
    +
    50%
    +
    +
    +
    75%
    +
    +
    +
    100%
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Scrollspy

    + Documentation +
    + +
    +
    + +
    +

    First heading

    +

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    +

    Second heading

    +

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    +

    Third heading

    +

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    +

    Fourth heading

    +

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    +

    Fifth heading

    +

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    +
    +
    +
    +
    +
    +
    +

    Spinners

    + Documentation +
    + +
    +
    + +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + +
    + +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    + Loading... +
    +
    +
    +
    +
    +
    +

    Toasts

    + Documentation +
    + +
    +
    + +
    +
    +
    +
    +
    +

    Tooltips

    + Documentation +
    + +
    +
    + + + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout-rtl/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout-rtl/index.html new file mode 100644 index 00000000..c74e82ba --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout-rtl/index.html @@ -0,0 +1,267 @@ + + + + + + + + + مثال إتمام الشراء · Bootstrap v5.0 + + + + + + + + + + + + + + + + +
    +
    +
    + +

    نموذج إتمام الشراء

    +

    فيما يلي مثال على نموذج تم إنشاؤه بالكامل باستخدام عناصر تحكم النموذج في Bootstrap. لكل مجموعة نماذج مطلوبة حالة تحقق يمكن تشغيلها بمحاولة إرسال النموذج دون استكماله.

    +
    + +
    +
    +

    + عربة التسوق + 3 +

    +
      +
    • +
      +
      اسم المنتج
      + وصف مختصر +
      + $12 +
    • +
    • +
      +
      المنتج الثاني
      + وصف مختصر +
      + $8 +
    • +
    • +
      +
      البند الثالث
      + وصف مختصر +
      + $5 +
    • +
    • +
      +
      رمز ترويجي
      + EXAMPLECODE +
      + -$5 +
    • +
    • + مجموع (USD) + $20 +
    • +
    + +
    +
    + + +
    +
    +
    +
    +

    عنوان الفوترة

    +
    +
    +
    + + +
    + يرجى إدخال اسم أول صحيح. +
    +
    + +
    + + +
    + يرجى إدخال اسم عائلة صحيح. +
    +
    + +
    + +
    + @ + +
    + اسم المستخدم الخاص بك مطلوب. +
    +
    +
    + +
    + + +
    + يرجى إدخال عنوان بريد إلكتروني صحيح لتصلكم تحديثات الشحن. +
    +
    + +
    + + +
    + يرجى إدخال عنوان الشحن الخاص بك. +
    +
    + +
    + + +
    + +
    + + +
    + يرجى اختيار بلد صحيح. +
    +
    + +
    + + +
    + يرجى اختيار اسم منطقة صحيح. +
    +
    + +
    + + +
    + الرمز البريدي مطلوب. +
    +
    +
    + +
    + +
    + + +
    + +
    + + +
    + +
    + +

    طريقة الدفع

    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    +
    + + + الاسم الكامل كما هو معروض على البطاقة +
    + الاسم على البطاقة مطلوب +
    +
    + +
    + + +
    + رقم بطاقة الائتمان مطلوب +
    +
    + +
    + + +
    + تاريخ انتهاء الصلاحية مطلوب +
    +
    + +
    + + +
    + رمز الحماية مطلوب +
    +
    +
    + +
    + + +
    +
    +
    +
    + +
    + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.css new file mode 100644 index 00000000..e5ea31c4 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.css @@ -0,0 +1,3 @@ +.container { + max-width: 960px; +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.js b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.js new file mode 100644 index 00000000..f8fd583d --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.js @@ -0,0 +1,20 @@ +// Example starter JavaScript for disabling form submissions if there are invalid fields +(function () { + 'use strict' + + // Fetch all the forms we want to apply custom Bootstrap validation styles to + var forms = document.querySelectorAll('.needs-validation') + + // Loop over them and prevent submission + Array.prototype.slice.call(forms) + .forEach(function (form) { + form.addEventListener('submit', function (event) { + if (!form.checkValidity()) { + event.preventDefault() + event.stopPropagation() + } + + form.classList.add('was-validated') + }, false) + }) +})() diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/index.html new file mode 100644 index 00000000..5839139e --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/checkout/index.html @@ -0,0 +1,268 @@ + + + + + + + + + Checkout example · Bootstrap v5.0 + + + + + + + + + + + + + + + + +
    +
    +
    + +

    Checkout form

    +

    Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.

    +
    + +
    +
    +

    + Your cart + 3 +

    +
      +
    • +
      +
      Product name
      + Brief description +
      + $12 +
    • +
    • +
      +
      Second product
      + Brief description +
      + $8 +
    • +
    • +
      +
      Third item
      + Brief description +
      + $5 +
    • +
    • +
      +
      Promo code
      + EXAMPLECODE +
      + −$5 +
    • +
    • + Total (USD) + $20 +
    • +
    + +
    +
    + + +
    +
    +
    +
    +

    Billing address

    +
    +
    +
    + + +
    + Valid first name is required. +
    +
    + +
    + + +
    + Valid last name is required. +
    +
    + +
    + +
    + @ + +
    + Your username is required. +
    +
    +
    + +
    + + +
    + Please enter a valid email address for shipping updates. +
    +
    + +
    + + +
    + Please enter your shipping address. +
    +
    + +
    + + +
    + +
    + + +
    + Please select a valid country. +
    +
    + +
    + + +
    + Please provide a valid state. +
    +
    + +
    + + +
    + Zip code required. +
    +
    +
    + +
    + +
    + + +
    + +
    + + +
    + +
    + +

    Payment

    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    +
    + + + Full name as displayed on card +
    + Name on card is required +
    +
    + +
    + + +
    + Credit card number is required +
    +
    + +
    + + +
    + Expiration date required +
    +
    + +
    + + +
    + Security code required +
    +
    +
    + +
    + + +
    +
    +
    +
    + + +
    + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cover/cover.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cover/cover.css new file mode 100644 index 00000000..87afc3be --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cover/cover.css @@ -0,0 +1,53 @@ +/* + * Globals + */ + + +/* Custom default button */ +.btn-secondary, +.btn-secondary:hover, +.btn-secondary:focus { + color: #333; + text-shadow: none; /* Prevent inheritance from `body` */ +} + + +/* + * Base structure + */ + +body { + text-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5); + box-shadow: inset 0 0 5rem rgba(0, 0, 0, .5); +} + +.cover-container { + max-width: 42em; +} + + +/* + * Header + */ + +.nav-masthead .nav-link { + padding: .25rem 0; + font-weight: 700; + color: rgba(255, 255, 255, .5); + background-color: transparent; + border-bottom: .25rem solid transparent; +} + +.nav-masthead .nav-link:hover, +.nav-masthead .nav-link:focus { + border-bottom-color: rgba(255, 255, 255, .25); +} + +.nav-masthead .nav-link + .nav-link { + margin-left: 1rem; +} + +.nav-masthead .active { + color: #fff; + border-bottom-color: #fff; +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cover/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cover/index.html new file mode 100644 index 00000000..8604faeb --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/cover/index.html @@ -0,0 +1,68 @@ + + + + + + + + + Cover Template · Bootstrap v5.0 + + + + + + + + + + + + + + + + +
    +
    +
    +

    Cover

    + +
    +
    + +
    +

    Cover your page.

    +

    Cover is a one-page template for building simple and beautiful home pages. Download, edit the text, and add your own fullscreen background photo to make it your own.

    +

    + Learn more +

    +
    + + +
    + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/dashboard.js b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/dashboard.js new file mode 100644 index 00000000..7831fa9d --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/dashboard.js @@ -0,0 +1,53 @@ +/* globals Chart:false, feather:false */ + +(function () { + 'use strict' + + feather.replace({ 'aria-hidden': 'true' }) + + // Graphs + var ctx = document.getElementById('myChart') + // eslint-disable-next-line no-unused-vars + var myChart = new Chart(ctx, { + type: 'line', + data: { + labels: [ + 'الأحد', + 'الإثنين', + 'الثلاثاء', + 'الأربعاء', + 'الخميس', + 'الجمعة', + 'السبت' + ], + datasets: [{ + data: [ + 15339, + 21345, + 18483, + 24003, + 23489, + 24092, + 12034 + ], + lineTension: 0, + backgroundColor: 'transparent', + borderColor: '#007bff', + borderWidth: 4, + pointBackgroundColor: '#007bff' + }] + }, + options: { + scales: { + yAxes: [{ + ticks: { + beginAtZero: false + } + }] + }, + legend: { + display: false + } + } + }) +})() diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/index.html new file mode 100644 index 00000000..78801988 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/index.html @@ -0,0 +1,285 @@ + + + + + + + + + قالب لوحة القيادة · Bootstrap v5.0 + + + + + + + + + + + + + + + + + + +
    +
    + + +
    +
    +

    لوحة القيادة

    +
    +
    + + +
    + +
    +
    + + + +

    عنوان القسم

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #عنوانعنوانعنوانعنوان
    1,001بياناتعشوائيةتثريالجدول
    1,002تثريمبهةتصميمتنسيق
    1,003عشوائيةغنيةقيمةمفيدة
    1,003معلوماتتثريتوضيحيةعشوائية
    1,004الجدولبياناتتنسيققيمة
    1,005قيمةمبهةالجدولتثري
    1,006قيمةتوضيحيةغنيةعشوائية
    1,007تثريمفيدةمعلوماتمبهة
    1,008بياناتعشوائيةتثريالجدول
    1,009تثريمبهةتصميمتنسيق
    1,010عشوائيةغنيةقيمةمفيدة
    1,011معلوماتتثريتوضيحيةعشوائية
    1,012الجدولتثريتنسيققيمة
    1,013قيمةمبهةالجدولتصميم
    1,014قيمةتوضيحيةغنيةعشوائية
    1,015بياناتمفيدةمعلوماتالجدول
    +
    +
    +
    +
    + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.css new file mode 100644 index 00000000..e1099fbb --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.css @@ -0,0 +1,100 @@ +body { + font-size: .875rem; +} + +.feather { + width: 16px; + height: 16px; + vertical-align: text-bottom; +} + +/* + * Sidebar + */ + +.sidebar { + position: fixed; + top: 0; + /* rtl:raw: + right: 0; + */ + bottom: 0; + /* rtl:remove */ + left: 0; + z-index: 100; /* Behind the navbar */ + padding: 48px 0 0; /* Height of navbar */ + box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); +} + +@media (max-width: 767.98px) { + .sidebar { + top: 5rem; + } +} + +.sidebar-sticky { + position: relative; + top: 0; + height: calc(100vh - 48px); + padding-top: .5rem; + overflow-x: hidden; + overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ +} + +.sidebar .nav-link { + font-weight: 500; + color: #333; +} + +.sidebar .nav-link .feather { + margin-right: 4px; + color: #727272; +} + +.sidebar .nav-link.active { + color: #2470dc; +} + +.sidebar .nav-link:hover .feather, +.sidebar .nav-link.active .feather { + color: inherit; +} + +.sidebar-heading { + font-size: .75rem; + text-transform: uppercase; +} + +/* + * Navbar + */ + +.navbar-brand { + padding-top: .75rem; + padding-bottom: .75rem; + font-size: 1rem; + background-color: rgba(0, 0, 0, .25); + box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25); +} + +.navbar .navbar-toggler { + top: .25rem; + right: 1rem; +} + +.navbar .form-control { + padding: .75rem 1rem; + border-width: 0; + border-radius: 0; +} + +.form-control-dark { + color: #fff; + background-color: rgba(255, 255, 255, .1); + border-color: rgba(255, 255, 255, .1); +} + +.form-control-dark:focus { + border-color: transparent; + box-shadow: 0 0 0 3px rgba(255, 255, 255, .25); +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.js b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.js new file mode 100644 index 00000000..7c2402ae --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.js @@ -0,0 +1,53 @@ +/* globals Chart:false, feather:false */ + +(function () { + 'use strict' + + feather.replace({ 'aria-hidden': 'true' }) + + // Graphs + var ctx = document.getElementById('myChart') + // eslint-disable-next-line no-unused-vars + var myChart = new Chart(ctx, { + type: 'line', + data: { + labels: [ + 'Sunday', + 'Monday', + 'Tuesday', + 'Wednesday', + 'Thursday', + 'Friday', + 'Saturday' + ], + datasets: [{ + data: [ + 15339, + 21345, + 18483, + 24003, + 23489, + 24092, + 12034 + ], + lineTension: 0, + backgroundColor: 'transparent', + borderColor: '#007bff', + borderWidth: 4, + pointBackgroundColor: '#007bff' + }] + }, + options: { + scales: { + yAxes: [{ + ticks: { + beginAtZero: false + } + }] + }, + legend: { + display: false + } + } + }) +})() diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.rtl.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.rtl.css new file mode 100644 index 00000000..a88226ec --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.rtl.css @@ -0,0 +1,96 @@ +body { + font-size: .875rem; +} + +.feather { + width: 16px; + height: 16px; + vertical-align: text-bottom; +} + +/* + * Sidebar + */ + +.sidebar { + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 100; /* Behind the navbar */ + padding: 48px 0 0; /* Height of navbar */ + box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1); +} + +@media (max-width: 767.98px) { + .sidebar { + top: 5rem; + } +} + +.sidebar-sticky { + position: relative; + top: 0; + height: calc(100vh - 48px); + padding-top: .5rem; + overflow-x: hidden; + overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ +} + +.sidebar .nav-link { + font-weight: 500; + color: #333; +} + +.sidebar .nav-link .feather { + margin-left: 4px; + color: #727272; +} + +.sidebar .nav-link.active { + color: #2470dc; +} + +.sidebar .nav-link:hover .feather, +.sidebar .nav-link.active .feather { + color: inherit; +} + +.sidebar-heading { + font-size: .75rem; + text-transform: uppercase; +} + +/* + * Navbar + */ + +.navbar-brand { + padding-top: .75rem; + padding-bottom: .75rem; + font-size: 1rem; + background-color: rgba(0, 0, 0, .25); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, .25); +} + +.navbar .navbar-toggler { + top: .25rem; + left: 1rem; +} + +.navbar .form-control { + padding: .75rem 1rem; + border-width: 0; + border-radius: 0; +} + +.form-control-dark { + color: #fff; + background-color: rgba(255, 255, 255, .1); + border-color: rgba(255, 255, 255, .1); +} + +.form-control-dark:focus { + border-color: transparent; + box-shadow: 0 0 0 3px rgba(255, 255, 255, .25); +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/index.html new file mode 100644 index 00000000..ff4bc8d0 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/dashboard/index.html @@ -0,0 +1,285 @@ + + + + + + + + + Dashboard Template · Bootstrap v5.0 + + + + + + + + + + + + + + + + + + +
    +
    + + +
    +
    +

    Dashboard

    +
    +
    + + +
    + +
    +
    + + + +

    Section title

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #HeaderHeaderHeaderHeader
    1,001randomdataplaceholdertext
    1,002placeholderirrelevantvisuallayout
    1,003datarichdashboardtabular
    1,003informationplaceholderillustrativedata
    1,004textrandomlayoutdashboard
    1,005dashboardirrelevanttextplaceholder
    1,006dashboardillustrativerichdata
    1,007placeholdertabularinformationirrelevant
    1,008randomdataplaceholdertext
    1,009placeholderirrelevantvisuallayout
    1,010datarichdashboardtabular
    1,011informationplaceholderillustrativedata
    1,012textplaceholderlayoutdashboard
    1,013dashboardirrelevanttextvisual
    1,014dashboardillustrativerichdata
    1,015randomtabularinformationtext
    +
    +
    +
    +
    + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/features.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/features.css new file mode 100644 index 00000000..33942f7f --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/features.css @@ -0,0 +1,61 @@ +.b-example-divider { + height: 3rem; + background-color: rgba(0, 0, 0, .1); + border: solid rgba(0, 0, 0, .15); + border-width: 1px 0; + box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); +} + +.bi { + vertical-align: -.125em; + fill: currentColor; +} + +.feature-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 4rem; + height: 4rem; + margin-bottom: 1rem; + font-size: 2rem; + color: #fff; + border-radius: .75rem; +} + +.icon-link { + display: inline-flex; + align-items: center; +} +.icon-link > .bi { + margin-top: .125rem; + margin-left: .125rem; + transition: transform .25s ease-in-out; + fill: currentColor; +} +.icon-link:hover > .bi { + transform: translate(.25rem); +} + +.icon-square { + display: inline-flex; + align-items: center; + justify-content: center; + width: 3rem; + height: 3rem; + font-size: 1.5rem; + border-radius: .75rem; +} + +.rounded-4 { border-radius: .5rem; } +.rounded-5 { border-radius: 1rem; } + +.text-shadow-1 { text-shadow: 0 .125rem .25rem rgba(0, 0, 0, .25); } +.text-shadow-2 { text-shadow: 0 .25rem .5rem rgba(0, 0, 0, .25); } +.text-shadow-3 { text-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .25); } + +.card-cover { + background-repeat: no-repeat; + background-position: center center; + background-size: cover; +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/index.html new file mode 100644 index 00000000..be94f5ef --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/index.html @@ -0,0 +1,326 @@ + + + + + + + + + Features · Bootstrap v5.0 + + + + + + + + + + + + + + + + + + + Bootstrap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Features examples

    + + + +
    + +
    +

    Hanging icons

    +
    +
    +
    + +
    +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

    + + Primary button + +
    +
    +
    +
    + +
    +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

    + + Primary button + +
    +
    +
    +
    + +
    +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

    + + Primary button + +
    +
    +
    +
    + +
    + +
    +

    Custom cards

    + +
    +
    +
    +
    +

    Short title, long jacket

    +
      +
    • + Bootstrap +
    • +
    • + + Earth +
    • +
    • + + 3d +
    • +
    +
    +
    +
    + +
    +
    +
    +

    Much longer title that wraps to multiple lines

    +
      +
    • + Bootstrap +
    • +
    • + + Pakistan +
    • +
    • + + 4d +
    • +
    +
    +
    +
    + +
    +
    +
    +

    Another longer title belongs here

    +
      +
    • + Bootstrap +
    • +
    • + + California +
    • +
    • + + 5d +
    • +
    +
    +
    +
    +
    +
    + +
    + +
    +

    Icon grid

    + +
    +
    + +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading.

    +
    +
    +
    + +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading.

    +
    +
    +
    + +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading.

    +
    +
    +
    + +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading.

    +
    +
    +
    + +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading.

    +
    +
    +
    + +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading.

    +
    +
    +
    + +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading.

    +
    +
    +
    + +
    +

    Featured title

    +

    Paragraph of text beneath the heading to explain the heading.

    +
    +
    +
    +
    +
    + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-1.jpg b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed2e36a78d155e0a21ced9d7538d9390c3eed893 GIT binary patch literal 10451 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%0AHQ*n%0kq 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 + + + + + + + + Grid Template · Bootstrap v5.0 + + + + + + + + + + + + + + + + +

    +
    + +

    Bootstrap grid examples

    +

    Basic grid layouts to get you familiar with building within the Bootstrap grid system.

    +

    In these examples the .themed-grid-col class is added to the columns to add some theming. This is not a class that is available in Bootstrap by default.

    + +

    Five grid tiers

    +

    There are five tiers to the Bootstrap grid system, one for each range of devices we support. Each tier starts at a minimum viewport size and automatically applies to the larger devices unless overridden.

    + +
    +
    .col-4
    +
    .col-4
    +
    .col-4
    +
    + +
    +
    .col-sm-4
    +
    .col-sm-4
    +
    .col-sm-4
    +
    + +
    +
    .col-md-4
    +
    .col-md-4
    +
    .col-md-4
    +
    + +
    +
    .col-lg-4
    +
    .col-lg-4
    +
    .col-lg-4
    +
    + +
    +
    .col-xl-4
    +
    .col-xl-4
    +
    .col-xl-4
    +
    + +
    +
    .col-xxl-4
    +
    .col-xxl-4
    +
    .col-xxl-4
    +
    + +

    Three equal columns

    +

    Get three equal-width columns starting at desktops and scaling to large desktops. On mobile devices, tablets and below, the columns will automatically stack.

    +
    +
    .col-md-4
    +
    .col-md-4
    +
    .col-md-4
    +
    + +

    Three equal columns alternative

    +

    By using the .row-cols-* classes, you can easily create a grid with equal columns.

    +
    +
    .col child of .row-cols-md-3
    +
    .col child of .row-cols-md-3
    +
    .col child of .row-cols-md-3
    +
    + +

    Three unequal columns

    +

    Get three columns starting at desktops and scaling to large desktops of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.

    +
    +
    .col-md-3
    +
    .col-md-6
    +
    .col-md-3
    +
    + +

    Two columns

    +

    Get two columns starting at desktops and scaling to large desktops.

    +
    +
    .col-md-8
    +
    .col-md-4
    +
    + +

    Full width, single column

    +

    + No grid classes are necessary for full-width elements. +

    + +
    + +

    Two columns with two nested columns

    +

    Per the documentation, nesting is easy—just put a row of columns within an existing column. This gives you two columns starting at desktops and scaling to large desktops, with another two (equal widths) within the larger column.

    +

    At mobile device sizes, tablets and down, these columns and their nested columns will stack.

    +
    +
    +
    + .col-md-8 +
    +
    +
    .col-md-6
    +
    .col-md-6
    +
    +
    +
    .col-md-4
    +
    + +
    + +

    Mixed: mobile and desktop

    +

    The Bootstrap v4 grid system has five tiers of classes: xs (extra small, this class infix is not used), sm (small), md (medium), lg (large), and xl (extra large). You can use nearly any combination of these classes to create more dynamic and flexible layouts.

    +

    Each tier of classes scales up, meaning if you plan on setting the same widths for md, lg and xl, you only need to specify md.

    +
    +
    .col-md-8
    +
    .col-6 .col-md-4
    +
    +
    +
    .col-6 .col-md-4
    +
    .col-6 .col-md-4
    +
    .col-6 .col-md-4
    +
    +
    +
    .col-6
    +
    .col-6
    +
    + +
    + +

    Mixed: mobile, tablet, and desktop

    +
    +
    .col-sm-6 .col-lg-8
    +
    .col-6 .col-lg-4
    +
    +
    +
    .col-6 .col-sm-4
    +
    .col-6 .col-sm-4
    +
    .col-6 .col-sm-4
    +
    + +
    + +

    Gutters

    +

    With .gx-* classes, the horizontal gutters can be adjusted.

    +
    +
    .col with .gx-4 gutters
    +
    .col with .gx-4 gutters
    +
    .col with .gx-4 gutters
    +
    .col with .gx-4 gutters
    +
    .col with .gx-4 gutters
    +
    .col with .gx-4 gutters
    +
    +

    Use the .gy-* classes to control the vertical gutters.

    +
    +
    .col with .gy-4 gutters
    +
    .col with .gy-4 gutters
    +
    .col with .gy-4 gutters
    +
    .col with .gy-4 gutters
    +
    .col with .gy-4 gutters
    +
    .col with .gy-4 gutters
    +
    +

    With .g-* classes, the gutters in both directions can be adjusted.

    +
    +
    .col with .g-3 gutters
    +
    .col with .g-3 gutters
    +
    .col with .g-3 gutters
    +
    .col with .g-3 gutters
    +
    .col with .g-3 gutters
    +
    .col with .g-3 gutters
    +
    +
    + +
    +
    + +

    Containers

    +

    Additional classes added in Bootstrap v4.4 allow containers that are 100% wide until a particular breakpoint. v5 adds a new xxl breakpoint.

    +
    + +
    .container
    +
    .container-sm
    +
    .container-md
    +
    .container-lg
    +
    .container-xl
    +
    .container-xxl
    +
    .container-fluid
    +
    + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/headers/headers.css b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/headers/headers.css new file mode 100644 index 00000000..661a74d5 --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/headers/headers.css @@ -0,0 +1,32 @@ +.b-example-divider { + height: 3rem; + background-color: rgba(0, 0, 0, .1); + border: solid rgba(0, 0, 0, .15); + border-width: 1px 0; + box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); +} + +.form-control-dark { + color: #fff; + background-color: var(--bs-dark); + border-color: var(--bs-gray); +} +.form-control-dark:focus { + color: #fff; + background-color: var(--bs-dark); + border-color: #fff; + box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .25); +} + +.bi { + vertical-align: -.125em; + fill: currentColor; +} + +.text-small { + font-size: 85%; +} + +.dropdown-toggle { + outline: 0; +} diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/headers/index.html b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/headers/index.html new file mode 100644 index 00000000..43329ffd --- /dev/null +++ b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/headers/index.html @@ -0,0 +1,333 @@ + + + + + + + + + Headers · Bootstrap v5.0 + + + + + + + + + + + + + + + + + + + Bootstrap + + + + + + + + + + + + + + + + + + + + + +
    +

    Headers examples

    + +
    + +
    + +
    +
    + +
    +
    + +
    + +
    +
    + + + + + + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + + + + + + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    + +
    +
    +
    + + + + + + +
    + +
    + + +
    +
    +
    + +
    + +
    +
    + + +
    +
    + +
    + + +
    +
    +
    + +
    +
    +
    +









    +
    +
    +









    +
    +
    +
    + +
    + + +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    + + + + + + + diff --git a/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-docs.png b/src/Yavsc/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-docs.png new file mode 100644 index 0000000000000000000000000000000000000000..471a9eddfe5766d09117d1fc17a7c877b2d81465 GIT binary patch literal 371399 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 mz7o9a+Z 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%0A?Dj(?9~kC2)|JI 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 iVF`)8~d|zIR25k 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 XWPT;%8Elk3gejQKq2HA+l8^fE?CLkd%+owz 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࿞`~dUQz|}; zo>YQNM~Ab6&e-PvETx+m!)4#xZ%X2_F+zGD_){fDEJTiU1rUSBMS3U%^f1qQMw1X9 z*Li@i6~6)??Gt@O9*uiT%TtX$NKr(5Gci{3Z0e^oft9O68nhVn9fGYJlaUpbAU!hE zO;*%BsE2Pglh|!N2kf>TiCq#Ktzy5(0BKB|6yP``B9 zaJ;G7H2Y7gRg8vVtl&c%8#Hmwws^%_Hjx3*}zsyfCmmd{vz2vi5foap% zTJSXfGM3L-LAKyr*{omCc>y95_1Ewiw|nxZ9jE!Ug7{C>w7+s<*Y>4C)pCeA$Z4E5 zx`U0umS3F{czvZ15T0n z$B~z}W&#NooB1>@7v@4w05DHn0(QCq|_;oORA>Iw)Fki`pto z)&;9($eU3gqHGaepaNE!vuW=hL)m_^VaVExB!mj&T(D`ebybLNnEzX8Or|>G*^2X* zqeN8h4FAe?r}e1_4%%6GgWZ2YQUV1@|7r?w%-G|*BT072wGgfsrxI(q^&=)jJ2=N_ zGWc%+-u}JHjUgkrE%Hr#Di?yB`dfv0BX+ooaItz9R-MS_{r-_XJbA*@6@reB+KLtI znc$4WR{C3I}9q)I$5AgBQNv z6`>)~OIqyUEu{r#iJ@G#J8O2LrdH;h4LiK%(1lioe{{yq%DnhiTY8hsw=b($wVb20 zY3?65%GbCNdR+Sy{F;iw5&PHip1J(X`mcwizRGGvPcgTh;aw%z?e3}@37sdpD;(Uy z^bXy$OAyPtAa676IDb$Fm8!*{T&B*#p-79-oslx{i2xQ`Z`%m1NKv%?7#fSgaJ=Wf zG~$L#R%%KMJ*gJjDHtzZ#GNEb?Xa^|{rM#A)0QKnP*1lj85>@8W8YMTkBXdkCMh8m zI&1LTt-U&cqOB5kV04=@(TpiG=cYZepW-9G{}8F3>g&n1eK?g5mBYpl>!%v+ZUh__ z&)1!!|JES=`5>0OHtg*45=m7QPUF8@MCAjRBq@y%&})l{a|q7)FIu2lLgkQEYjiNt=GZ`%N|~$tL@D;W2VRr6AUsL);ss)<3Q-BOOdg^J%X4vCYqU|K*d%mYbCZY+o?1gbqS8gOQh% zf1CY4(+;;UIT@5gexOH_r9(dZ$BAqUQGaE#<8LN=f8T=b;=IXz=Hd!?wo5v@a#`ws zeV7AY#6B#2qW9jBSk3 zP0oV|1a(`y@G5puS>p`9_+;R5`0Y_n-plVcu0KKhS}T;X<|+yyq8T7GqL8C%fFLvJ zO?4^imAM$;oN^N1p5nm(&A=@_`lU^GNZX^ZXI*h-STP4`pPx}zJ_~p@J{lz=`m{f) z^X1;4L?FTz>x2<(QVayVsg@TXqey8hx+8*!sPX7OKGb`dag)bjSc+! z)b61rg4fxW>A2H#(_Od8t-b#Zo#bxHvEJ5(!Rybw6brz^p-g*p!&HqJrS=jJZh(m@ z+3=*zE5vovaT2A^9wiF0S42S@lsb_U>E+SzVf^k1I9V18iz$$$af#Yu_ z4s`L`$?!;{)GAjvHTCbii41hfwLCRaav@j)ynHo*z`EKNF7e0`~U~je&fMcEA`!?0A@>+Gxq9cZR!Ra#1V8X1cqdIK8d1^pLpC5jYB~ z4VRwiMPE3CDlQE-G^UN5lvC4hH*Jqx?b#(jo>YI_x+E=dLUWYmtcjbboav3#1X