Showing preview only (1,808K chars total). Download the full file or copy to clipboard to get everything.
Repository: microsoft/hack-together
Branch: main
Commit: 41aeb11daf58
Files: 137
Total size: 1.7 MB
Directory structure:
gitextract_138d49e_/
├── .github/
│ └── ISSUE_TEMPLATE/
│ └── project.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── SECURITY.md
├── SUPPORT.md
├── setup.md
├── templates/
│ ├── dotnet-blazor-server-app-microsoft-graph/
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── App.razor
│ │ ├── BlazorSample.csproj
│ │ ├── Data/
│ │ │ ├── WeatherForecast.cs
│ │ │ └── WeatherForecastService.cs
│ │ ├── Pages/
│ │ │ ├── Counter.razor
│ │ │ ├── Error.cshtml
│ │ │ ├── Error.cshtml.cs
│ │ │ ├── FetchData.razor
│ │ │ ├── Index.razor
│ │ │ ├── ShowProfile.razor
│ │ │ └── _Host.cshtml
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ ├── Shared/
│ │ │ ├── LoginDisplay.razor
│ │ │ ├── MainLayout.razor
│ │ │ ├── MainLayout.razor.css
│ │ │ ├── NavMenu.razor
│ │ │ ├── NavMenu.razor.css
│ │ │ └── SurveyPrompt.razor
│ │ ├── _Imports.razor
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── setup.ps1
│ │ ├── setup.sh
│ │ └── wwwroot/
│ │ └── css/
│ │ ├── open-iconic/
│ │ │ ├── FONT-LICENSE
│ │ │ ├── ICON-LICENSE
│ │ │ ├── README.md
│ │ │ └── font/
│ │ │ └── fonts/
│ │ │ └── open-iconic.otf
│ │ └── site.css
│ ├── dotnet-console-app-microsoft-graph/
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── Program.cs
│ │ ├── README.md
│ │ ├── dotnet-console-microsoft-graph.csproj
│ │ ├── setup.ps1
│ │ └── setup.sh
│ ├── dotnet-core-mvc-web-app-microsoft-graph/
│ │ ├── NETCoreMVCwithMSGraph/
│ │ │ ├── .config/
│ │ │ │ └── dotnet-tools.json
│ │ │ ├── Controllers/
│ │ │ │ └── HomeController.cs
│ │ │ ├── Models/
│ │ │ │ └── ErrorViewModel.cs
│ │ │ ├── NETCoreMVCwithMSGraph.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ ├── launchSettings.json
│ │ │ │ ├── serviceDependencies.json
│ │ │ │ └── serviceDependencies.local.json
│ │ │ ├── Views/
│ │ │ │ ├── Home/
│ │ │ │ │ ├── Index.cshtml
│ │ │ │ │ └── Privacy.cshtml
│ │ │ │ ├── Shared/
│ │ │ │ │ ├── Error.cshtml
│ │ │ │ │ ├── _Layout.cshtml
│ │ │ │ │ ├── _Layout.cshtml.css
│ │ │ │ │ ├── _LoginPartial.cshtml
│ │ │ │ │ └── _ValidationScriptsPartial.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── appsettings.Development.json
│ │ │ ├── appsettings.json
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ └── site.css
│ │ │ ├── js/
│ │ │ │ └── site.js
│ │ │ └── lib/
│ │ │ ├── bootstrap/
│ │ │ │ ├── LICENSE
│ │ │ │ └── dist/
│ │ │ │ ├── css/
│ │ │ │ │ ├── bootstrap-grid.css
│ │ │ │ │ ├── bootstrap-grid.rtl.css
│ │ │ │ │ ├── bootstrap-reboot.css
│ │ │ │ │ ├── bootstrap-reboot.rtl.css
│ │ │ │ │ ├── bootstrap-utilities.css
│ │ │ │ │ ├── bootstrap-utilities.rtl.css
│ │ │ │ │ ├── bootstrap.css
│ │ │ │ │ └── bootstrap.rtl.css
│ │ │ │ └── js/
│ │ │ │ ├── bootstrap.bundle.js
│ │ │ │ ├── bootstrap.esm.js
│ │ │ │ └── bootstrap.js
│ │ │ ├── jquery/
│ │ │ │ ├── LICENSE.txt
│ │ │ │ └── dist/
│ │ │ │ └── jquery.js
│ │ │ ├── jquery-validation/
│ │ │ │ ├── LICENSE.md
│ │ │ │ └── dist/
│ │ │ │ ├── additional-methods.js
│ │ │ │ └── jquery.validate.js
│ │ │ └── jquery-validation-unobtrusive/
│ │ │ ├── LICENSE.txt
│ │ │ └── jquery.validate.unobtrusive.js
│ │ ├── NETCoreMVCwithMSGraph.sln
│ │ └── README.md
│ ├── dotnet-maui-app-microsoft-graph/
│ │ ├── MAUIwithMSGRaph/
│ │ │ ├── App.xaml
│ │ │ ├── App.xaml.cs
│ │ │ ├── AppShell.xaml
│ │ │ ├── AppShell.xaml.cs
│ │ │ ├── GraphService.cs
│ │ │ ├── MAUIwithMSGRaph.csproj
│ │ │ ├── MainPage.xaml
│ │ │ ├── MainPage.xaml.cs
│ │ │ ├── MauiProgram.cs
│ │ │ ├── Platforms/
│ │ │ │ ├── Android/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── MainActivity.cs
│ │ │ │ │ ├── MainApplication.cs
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── values/
│ │ │ │ │ └── colors.xml
│ │ │ │ ├── MacCatalyst/
│ │ │ │ │ ├── AppDelegate.cs
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── Program.cs
│ │ │ │ ├── Tizen/
│ │ │ │ │ ├── Main.cs
│ │ │ │ │ └── tizen-manifest.xml
│ │ │ │ ├── Windows/
│ │ │ │ │ ├── App.xaml
│ │ │ │ │ ├── App.xaml.cs
│ │ │ │ │ ├── Package.appxmanifest
│ │ │ │ │ └── app.manifest
│ │ │ │ └── iOS/
│ │ │ │ ├── AppDelegate.cs
│ │ │ │ ├── Info.plist
│ │ │ │ └── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── launchSettings.json
│ │ │ └── Resources/
│ │ │ ├── Raw/
│ │ │ │ └── AboutAssets.txt
│ │ │ └── Styles/
│ │ │ ├── Colors.xaml
│ │ │ └── Styles.xaml
│ │ ├── MAUIwithMSGRaph.sln
│ │ ├── README.md
│ │ ├── setup.ps1
│ │ └── setup.sh
│ └── dotnet-uwp-app-microsoft-graph/
│ ├── README.md
│ ├── UWP-app-MSGraph/
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── MainPage.xaml
│ │ ├── MainPage.xaml.cs
│ │ ├── Package.appxmanifest
│ │ ├── Properties/
│ │ │ ├── AssemblyInfo.cs
│ │ │ └── Default.rd.xml
│ │ ├── TokenProvider.cs
│ │ └── UWP-app-MSGraph.csproj
│ ├── UWP-app-MSGraph.sln
│ ├── setup.ps1
│ └── setup.sh
└── top-scenarios.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/project.yml
================================================
name: Project
description: "Share with us your project to get a digital badge and win exciting prizes!"
title: "Project: <short description>"
body:
- type: input
id: name
attributes:
label: Project name
description: Name of your project
validations:
required: true
- type: textarea
id: description
attributes:
label: Description
description: Provide a short description of your project. What is it about? What type of app have you built? What is it doing? What problem is it solving?
validations:
required: true
- type: input
id: url
attributes:
label: Repo URL
description: URL of the GitHub repo with your project
validations:
required: true
- type: input
id: teammembers
attributes:
label: Team members
description: Comma-separated list of GitHub users who worked on this project
validations:
required: true
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
.DS_Store
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Microsoft Open Source Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
Resources:
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) Microsoft Corporation.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE
================================================
FILE: README.md
================================================
# Hack Together: Microsoft Graph and .NET 🦒
<p align="center">
<img src="./assets/banner.png" alt="Hack Together banner"/>
</p>
<p align="center">
<a href="https://aka.ms/hack-together/survey"><img src="https://img.shields.io/badge/hackathon-survey-green?style=for-the-badge" alt="Hackathon survey" border="0" /></a>
</p>
## Hack Together: Microsoft Graph and .NET 🦒
From March 1-15, 2023 we ran **Hack Together: Microsoft Graph and .NET** - a virtual hackathon for beginners to get started building scenario-based apps using .NET and Microsoft Graph.
In this hackathon, participants learned how to build apps with Microsoft Graph based on top Microsoft Graph scenarios, and met Microsoft Graph Product Group Leaders, Cloud Advocates, MVPs and Student Ambassadors. Each submitted app had a chance to win exciting prizes.
## We're excited to share the hackathon winners
- 🥇 1st place: [Magic Note app to plan the day efficiently with AI & Microsoft Graph](https://github.com/microsoft/hack-together/issues/92)
- 🥈 2nd place: [ScheduleEase](https://github.com/microsoft/hack-together/issues/178)
- 🥉3rd place: [magi – An AI wizard to answer all your queries](https://github.com/microsoft/hack-together/issues/140)
**Congratulations to the winners and a huge thank you to all participants!**
Read the [full announcement](https://devblogs.microsoft.com/microsoft365dev/announcing-the-hack-together-microsoft-graph-and-net-winners/)
## Continue your journey
While the hackathon is finished, your journey doesn’t have to end. [Join the Microsoft 365 and Power Platform Community](https://pnp.github.io/) to continue building with Microsoft Graph and .NET. **Find like-minded people, attend community calls, and explore resources to see what else you can build using Microsoft Graph!**
[](https://pnp.github.io/)
## Hack Together Roadmap 🗺️

Follow the steps below to successfully complete the hackathon.
### Watch the sessions 🎥
* **[March 1st - Watch On Demand 🎥](https://aka.ms/hack-together/session01):** Kickoff Hack Together: Microsoft Graph and .NET! What can you do with Microsoft Graph .NET SDK?
* **[March 2nd - Watch On Demand 🎥](https://aka.ms/hack-together/session02):** Microsoft Graph Product Managers will show you how to get started with Microsoft Graph .NET SDK!
* **[March 8th - Watch On Demand 🎥](https://aka.ms/hack-together/session03):** Microsoft Graph Product team and .NET Advocates join the Ask the Experts session to answer your questions. Get to know them!
* **[March 15th - Watch On Demand 🎥](https://aka.ms/hack-together/session04):** We're at the end of Hack Together, but the journey doesn't end here. What's next: learn how you can join the community!
## Recommended Learning Materials
* [Learn Path - Explore Microsoft Graph scenarios for ASP.NET Core development](https://learn.microsoft.com/training/paths/m365-msgraph-dotnet-core-scenarios/)
* [Tutorial - Build .NET apps with Microsoft Graph](https://learn.microsoft.com/graph/tutorials/dotnet?tabs=aad)
* [Tutorial: Create a Blazor Server app that uses the Microsoft identity platform for authentication](https://learn.microsoft.com/azure/active-directory/develop/tutorial-blazor-server)
* [Tutorial: Call the Microsoft Graph API from a Universal Windows Platform (UWP) application](https://learn.microsoft.com/azure/active-directory/develop/tutorial-v2-windows-uwp)
* [Tutorial: Create a .NET MAUI app using the Microsoft Graph SDK](https://learn.microsoft.com/windows/apps/windows-dotnet-maui/tutorial-graph-api)
* [Documentation - Overview of Microsoft Graph](https://learn.microsoft.com/graph/overview)
## Templates
If you are looking for a code template to start your project, we have the following templates available for you in this repository:
* [Console App](https://github.com/microsoft/hack-together/tree/main/templates/dotnet-console-app-microsoft-graph)
* [Blazor Server App](https://github.com/microsoft/hack-together/tree/main/templates/dotnet-blazor-server-app-microsoft-graph)
* [UWP (Universal Windows Platform) App](https://github.com/microsoft/hack-together/tree/main/templates/dotnet-uwp-app-microsoft-graph)
* [MAUI (Multi-platform App UI) App](https://github.com/microsoft/hack-together/tree/main/templates/dotnet-maui-app-microsoft-graph)
* [.NET Core MVC (Model - View - Controller) Web App](https://github.com/microsoft/hack-together/tree/main/templates/dotnet-core-mvc-web-app-microsoft-graph)
---
<p align="center">
<img src="./assets/footer.png" alt="Hack Together footer"/>
</p>
<p align="center">
<a href="https://aka.ms/hack-together/survey"><img src="https://img.shields.io/badge/hackathon-survey-green?style=for-the-badge" alt="Hackathon survey" border="0" /></a>
</p>
================================================
FILE: SECURITY.md
================================================
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.8 BLOCK -->
## Security
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.
## Reporting Security Issues
**Please do not report security vulnerabilities through public GitHub issues.**
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc).
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
* Full paths of source file(s) related to the manifestation of the issue
* The location of the affected source code (tag/branch/commit or direct URL)
* Any special configuration required to reproduce the issue
* Step-by-step instructions to reproduce the issue
* Proof-of-concept or exploit code (if possible)
* Impact of the issue, including how an attacker might exploit the issue
This information will help us triage your report more quickly.
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.
## Preferred Languages
We prefer all communications to be in English.
## Policy
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).
<!-- END MICROSOFT SECURITY.MD BLOCK -->
================================================
FILE: SUPPORT.md
================================================
# Support
## How to file issues and get help
This project uses GitHub Issues to track bugs and feature requests. Please search the existing
issues before filing new issues to avoid duplicates. For new issues, file your bug or
feature request as a new Issue.
For help and questions about using this project, please use [Discussions](../../discussions).
================================================
FILE: setup.md
================================================
# Environment Setup
## 1 - Prepare your Microsoft 365 tenant
**Need a development environment?**
If you don't currently have an Microsoft 365 work/school account, you can sign up for a **[Microsoft 365 Developer Program](https://aka.ms/m365developers)** subscription. It's free for 90 days and will continually renew as long as you're using it for development activity. If you have a Visual Studio Enterprise or Professional subscription, both programs include a free Microsoft 365 developer subscription, active for the life of your Visual Studio subscription. See Set up a Microsoft 365 developer subscription.
**Already have a Microsoft 365 account?**
If you are a Microsoft 365 subscriber, you can develop apps with Microsoft Graph by using one of the following [plans](https://www.microsoft.com/en-ww/microsoft-365/enterprise/compare-office-365-plans?rtc=1):
* Business Essentials
* Business Premium
* Enterprise E1, E3, and E5
* Developer
* Education, Education Plus, and Education E5
* Microsoft Teams will also be available to customers who subscribed to E4 prior to its retirement.
## 2 - (Option 1) Install .NET Core 7.0 SDK
* Install [.NET Core 7.0 SDK](https://dotnet.microsoft.com/en-us/download) and .NET SDK with the editor tool of your choice.
## 3 - (Option 2) Install Visual Studio or Visual Studio Code with .NET
**Visual Studio**
* The latest Visual Studio version is available here: <https://visualstudio.microsoft.com/>
* Set up Visual Studio for developing .NET applications. For more details, see [Install the frameworks and tools you need for building .NET apps](https://visualstudio.microsoft.com/vs/features/net-development/).
**Visual Studio Code**
* The latest Visual Studio Code version is available here: <https://code.visualstudio.com/>
* Set up Visual Studio Code for .NET development by installing .NET Coding Pack and extensions. For more details, see [Using .NET in Visual Studio Code](https://code.visualstudio.com/docs/languages/dotnet).
## 4 - Setup your GitHub account
GitHub offers personal accounts for individuals and organizations for teams of people working together.
You can create a personal account, which serves as your identity on <https://github.com>, or an organization, which allows multiple personal accounts to collaborate across multiple projects.
For more information, see [Signing up for a new GitHub account](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account#about-new-accounts-on-githubcom).
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/.vscode/launch.json
================================================
{
"version": "0.2.0",
"configurations": [
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/bin/Debug/net7.0/BlazorSample.dll",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
// Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
"serverReadyAction": {
"action": "openExternally",
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
}
]
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/.vscode/tasks.json
================================================
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/BlazorSample.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/BlazorSample.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/BlazorSample.csproj"
],
"problemMatcher": "$msCompile"
}
]
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/App.razor
================================================
<CascadingAuthenticationState>
<Router AppAssembly="@typeof(App).Assembly">
<Found Context="routeData">
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
</Found>
<NotFound>
<PageTitle>Not found</PageTitle>
<LayoutView Layout="@typeof(MainLayout)">
<p role="alert">Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
</CascadingAuthenticationState>
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/BlazorSample.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>aspnet-BlazorSample-c58048ad-a79c-44f1-a3cc-6ce7537c06e6</UserSecretsId>
<WebProject_DirectoryAccessLevelKey>0</WebProject_DirectoryAccessLevelKey>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.2" NoWarn="NU1605"/>
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="7.0.2" NoWarn="NU1605" />
<PackageReference Include="Microsoft.Identity.Web" Version="1.16.0" />
<PackageReference Include="Microsoft.Identity.Web.MicrosoftGraph" Version="1.16.0" />
<PackageReference Include="Microsoft.Identity.Web.UI" Version="1.16.0" />
</ItemGroup>
</Project>
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Data/WeatherForecast.cs
================================================
namespace BlazorSample.Data;
public class WeatherForecast
{
public DateOnly Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string? Summary { get; set; }
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Data/WeatherForecastService.cs
================================================
namespace BlazorSample.Data;
public class WeatherForecastService
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
public Task<WeatherForecast[]> GetForecastAsync(DateOnly startDate)
{
return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = startDate.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
}).ToArray());
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Pages/Counter.razor
================================================
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Pages/Error.cshtml
================================================
@page
@model BlazorSample.Pages.ErrorModel
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>Error</title>
<link href="~/css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="~/css/site.css" rel="stylesheet" asp-append-version="true" />
</head>
<body>
<div class="main">
<div class="content px-4">
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (Model.ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@Model.RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to the <strong>Development</strong> environment displays detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
</div>
</div>
</body>
</html>
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Pages/Error.cshtml.cs
================================================
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace BlazorSample.Pages;
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
[IgnoreAntiforgeryToken]
public class ErrorModel : PageModel
{
public string? RequestId { get; set; }
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
private readonly ILogger<ErrorModel> _logger;
public ErrorModel(ILogger<ErrorModel> logger)
{
_logger = logger;
}
public void OnGet()
{
RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Pages/FetchData.razor
================================================
@page "/fetchdata"
@using BlazorSample.Data
@inject WeatherForecastService ForecastService
<PageTitle>Weather forecast</PageTitle>
<h1>Weather forecast</h1>
<p>This component demonstrates fetching data from a service.</p>
@if (forecasts == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Date</th>
<th>Temp. (C)</th>
<th>Temp. (F)</th>
<th>Summary</th>
</tr>
</thead>
<tbody>
@foreach (var forecast in forecasts)
{
<tr>
<td>@forecast.Date.ToShortDateString()</td>
<td>@forecast.TemperatureC</td>
<td>@forecast.TemperatureF</td>
<td>@forecast.Summary</td>
</tr>
}
</tbody>
</table>
}
@code {
private WeatherForecast[]? forecasts;
protected override async Task OnInitializedAsync()
{
forecasts = await ForecastService.GetForecastAsync(DateOnly.FromDateTime(DateTime.Now));
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Pages/Index.razor
================================================
@page "/"
<PageTitle>Index</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new app.
<SurveyPrompt Title="How is Blazor working for you?" />
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Pages/ShowProfile.razor
================================================
@page "/showprofile"
@using Microsoft.Identity.Web
@using Microsoft.Graph
@inject Microsoft.Graph.GraphServiceClient GraphServiceClient
@inject MicrosoftIdentityConsentAndConditionalAccessHandler ConsentHandler
<h1>Me</h1>
<p>This component demonstrates fetching data from a service.</p>
@if (user == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table table-striped table-condensed" style="font-family: monospace">
<tr>
<th>Property</th>
<th>Value</th>
</tr>
<tr>
<td>Name</td>
<td>@user.DisplayName</td>
</tr>
</table>
}
@code {
User? user;
protected override async Task OnInitializedAsync()
{
try
{
user = await GraphServiceClient.Me.Request().GetAsync();
}
catch (Exception ex)
{
ConsentHandler.HandleException(ex);
}
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Pages/_Host.cshtml
================================================
@page "/"
@using Microsoft.AspNetCore.Components.Web
@namespace BlazorSample.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="~/" />
<link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
<link href="css/site.css" rel="stylesheet" />
<link href="BlazorSample.styles.css" rel="stylesheet" />
<link rel="icon" type="image/png" href="favicon.png"/>
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
</head>
<body>
<component type="typeof(App)" render-mode="ServerPrerendered" />
<div id="blazor-error-ui">
<environment include="Staging,Production">
An error has occurred. This application may no longer respond until reloaded.
</environment>
<environment include="Development">
An unhandled exception has occurred. See browser dev tools for details.
</environment>
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.server.js"></script>
</body>
</html>
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Program.cs
================================================
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Mvc.Authorization;
using Graph = Microsoft.Graph;
using BlazorSample.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
var initialScopes = builder.Configuration["DownstreamApi:Scopes"]?.Split(' ');
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
.AddMicrosoftGraph(builder.Configuration.GetSection("DownstreamApi"))
.AddInMemoryTokenCaches();
builder.Services.AddControllersWithViews()
.AddMicrosoftIdentityUI();
builder.Services.AddAuthorization(options =>
{
// By default, all incoming requests will be authorized according to the default policy
options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor()
.AddMicrosoftIdentityConsentHandler();
builder.Services.AddSingleton<WeatherForecastService>();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.MapControllers();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Properties/launchSettings.json
================================================
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:55397",
"sslPort": 44334
}
},
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:5001",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/README.md
================================================
# .NET v7.0 Blazor Server app connected to Microsoft Graph
This is a template for a Blazor app built using .NET v7.0 that connects to Microsoft Graph.
## Minimal Path to Awesome 🚀
Follow the instructions to successfully run your Blazor Server app with Microsoft Graph.
### 1. Register an Azure Active Directory app
Every app that uses Azure AD for authentication must be registered with Azure AD. You can register app through Azure Portal or by using Azure CLI. Please follow one of the options to register your app:
<details>
<summary>Option 1: Register an app by using Azure CLI</summary>
* [Install Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli?view=azure-cli-latest) if you haven't already.
* Register your app on Microsoft Azure, by creating a new Azure AD app registration:
* <details>
<summary>On macOS/Linux/in Bash</summary>
* Open terminal and change the working directory to the root of this project
* To make the setup script executable, run `chmod +x ./setup.sh`
* To register the app, run `./setup.sh`
* When prompted, sign in with your **Microsoft 365 developer sandbox account**
</details>
* <details>
<summary>On Windows/in PowerShell</summary>
* Open PowerShell and change the working directory to the root of this project
* To register the app, run `.\setup.ps1`
* When prompted, sign in with your **Microsoft 365 developer sandbox account**
</details>
</details>
<details>
<summary>Option 2: Register an app through Azure Portal</summary>
* Go to [Azure Portal](https://portal.azure.com) and login with your testing account that has Application developer or administrator permissions.
* Select **Azure Active Directory**, and select **App Registrations** from the left side bar. Then select **+ New registration**.
* Give any name to your app. For **Supported account types**, select **Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)**.
* Set the **Redirect URI** drop down to **Web** and enter `https://localhost:5001/signin-oidc`. Then, select **Register**.
* Select **Certificates & secrets** tab in your registered app, and then **Client secrets**. Create a **New client secret** that never expires.
Make note of the **secret's value** as you'll use it in the next step. Also, navigate to **Overview tab** and make a note of the **Application (client) ID** and **Directory (tenant) ID**. You'll use them in the next steps.
</details>
### 2. Run your Blazor Server app
* Clone the Hack Together repository to your local workspace or directly download the source code.
* Update app and secret (only if in the previous step you registered your app manually)
* Open the project folder `dotner-blazor-server-app-microsoft-graph` with the editor of your choice. (Visual Studio Code is recommended.)
* Navigate to your Blazor app in your editor, and select *appsettings.json* file, replace:
* "CLIENT_ID" with `Application (client) ID`
* "CLIENT_SECRET" with `Secret's value`
* If you haven't done it previously, register a developer SSL certificate for dotnet apps. In your terminal, run the following command:
```dotnetcli
dotnet dev-certs https --trust
```
* In your terminal, run the following command:
```dotnetcli
dotnet run
```
In your browser, navigate to `https://localhost:5001` , and log in using an Azure AD user account to see the app running.
After the login, you'll see your email address on the panel of your app:

Navigate to *Pages* folder in your app, and then *ShowProfile.razor* page. Observe the Microsoft Graph API request in the code to retrieve user email:
```csharp
@page "/showprofile"
@using Microsoft.Identity.Web
@using Microsoft.Graph
@inject Microsoft.Graph.GraphServiceClient GraphServiceClient
@inject MicrosoftIdentityConsentAndConditionalAccessHandler ConsentHandler
<h1>Me</h1>
<p>This component demonstrates fetching data from a service.</p>
@if (user == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table table-striped table-condensed" style="font-family: monospace">
<tr>
<th>Property</th>
<th>Value</th>
</tr>
<tr>
<td>Name</td>
//user profile information is shown in the UI
<td>@user.DisplayName</td>
</tr>
</table>
}
@code {
User? user;
protected override async Task OnInitializedAsync()
{
try
{ //Microsoft Graph API request to retrieve user profile
user = await GraphServiceClient.Me.Request().GetAsync();
}
catch (Exception ex)
{
ConsentHandler.HandleException(ex);
}
}
}
```
## Reference
* [Tutorial: Create a Blazor Server app that uses the Microsoft identity platform for authentication](https://learn.microsoft.com/azure/active-directory/develop/tutorial-blazor-server)
* [Quickstart: Register an application with the Microsoft identity platform](https://learn.microsoft.com/azure/active-directory/develop/quickstart-register-app)
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Shared/LoginDisplay.razor
================================================
<AuthorizeView>
<Authorized>
Hello, @context.User.Identity?.Name!
<a href="MicrosoftIdentity/Account/SignOut">Log out</a>
</Authorized>
<NotAuthorized>
<a href="MicrosoftIdentity/Account/SignIn">Log in</a>
</NotAuthorized>
</AuthorizeView>
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Shared/MainLayout.razor
================================================
@inherits LayoutComponentBase
<PageTitle>BlazorSample</PageTitle>
<div class="page">
<div class="sidebar">
<NavMenu />
</div>
<main>
<div class="top-row px-4 auth">
<LoginDisplay />
<a href="https://docs.microsoft.com/aspnet/" target="_blank">About</a>
</div>
<article class="content px-4">
@Body
</article>
</main>
</div>
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Shared/MainLayout.razor.css
================================================
.page {
position: relative;
display: flex;
flex-direction: column;
}
main {
flex: 1;
}
.sidebar {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}
.top-row {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
}
.top-row ::deep a, .top-row .btn-link {
white-space: nowrap;
margin-left: 1.5rem;
}
.top-row a:first-child {
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 640.98px) {
.top-row:not(.auth) {
display: none;
}
.top-row.auth {
justify-content: space-between;
}
.top-row a, .top-row .btn-link {
margin-left: 0;
}
}
@media (min-width: 641px) {
.page {
flex-direction: row;
}
.sidebar {
width: 250px;
height: 100vh;
position: sticky;
top: 0;
}
.top-row {
position: sticky;
top: 0;
z-index: 1;
}
.top-row, article {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Shared/NavMenu.razor
================================================
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="">BlazorSample</a>
<button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</div>
<div class="@NavMenuCssClass nav-scrollable" @onclick="ToggleNavMenu">
<nav class="flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="oi oi-home" aria-hidden="true"></span> Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="counter">
<span class="oi oi-plus" aria-hidden="true"></span> Counter
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="fetchdata">
<span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="showprofile">
<span class="oi oi-person" aria-hidden="true"></span> Show profile
</NavLink>
</div>
</nav>
</div>
@code {
private bool collapseNavMenu = true;
private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Shared/NavMenu.razor.css
================================================
.navbar-toggler {
background-color: rgba(255, 255, 255, 0.1);
}
.top-row {
height: 3.5rem;
background-color: rgba(0,0,0,0.4);
}
.navbar-brand {
font-size: 1.1rem;
}
.oi {
width: 2rem;
font-size: 1.1rem;
vertical-align: text-top;
top: -2px;
}
.nav-item {
font-size: 0.9rem;
padding-bottom: 0.5rem;
}
.nav-item:first-of-type {
padding-top: 1rem;
}
.nav-item:last-of-type {
padding-bottom: 1rem;
}
.nav-item ::deep a {
color: #d7d7d7;
border-radius: 4px;
height: 3rem;
display: flex;
align-items: center;
line-height: 3rem;
}
.nav-item ::deep a.active {
background-color: rgba(255,255,255,0.25);
color: white;
}
.nav-item ::deep a:hover {
background-color: rgba(255,255,255,0.1);
color: white;
}
@media (min-width: 641px) {
.navbar-toggler {
display: none;
}
.collapse {
/* Never collapse the sidebar for wide screens */
display: block;
}
.nav-scrollable {
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem);
overflow-y: auto;
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Shared/SurveyPrompt.razor
================================================
<div class="alert alert-secondary mt-4">
<span class="oi oi-pencil me-2" aria-hidden="true"></span>
<strong>@Title</strong>
<span class="text-nowrap">
Please take our
<a target="_blank" class="font-weight-bold link-dark" href="https://go.microsoft.com/fwlink/?linkid=2186158">brief survey</a>
</span>
and tell us what you think.
</div>
@code {
// Demonstrates how a parent component can supply parameters
[Parameter]
public string? Title { get; set; }
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/_Imports.razor
================================================
@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using BlazorSample
@using BlazorSample.Shared
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/appsettings.Development.json
================================================
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/appsettings.json
================================================
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "common",
"ClientId": "CLIENT_ID",
"ClientSecret": "CLIENT_SECRET",
"ClientCertificates": [],
"CallbackPath": "/signin-oidc"
},
"DownstreamApi": {
"BaseUrl": "https://graph.microsoft.com/v1.0",
"Scopes": "user.read"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/setup.ps1
================================================
az login
$appId = az ad app create --display-name "MSGraph Blazor App" --web-redirect-uris "https://localhost:5001/signin-oidc" --query appId -o tsv
$clientSecret = az ad app credential reset --id $appId --query password -o tsv
((Get-Content -path appsettings.json -Raw) -replace 'CLIENT_ID',$appId) | Set-Content -Path appsettings.json
((Get-Content -path appsettings.json -Raw) -replace 'CLIENT_SECRET',$clientSecret) | Set-Content -Path appsettings.json
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/setup.sh
================================================
az login
appId=$(az ad app create --display-name "MSGraph Blazor App" --web-redirect-uris "https://localhost:5001/signin-oidc" --query appId -o tsv)
clientSecret=$(az ad app credential reset --id $appId --query password -o tsv)
sed -i '' -e "s/CLIENT_ID/$appId/g" appsettings.json
sed -i '' -e "s/CLIENT_SECRET/$clientSecret/g" appsettings.json
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/wwwroot/css/open-iconic/FONT-LICENSE
================================================
SIL OPEN FONT LICENSE Version 1.1
Copyright (c) 2014 Waybury
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/wwwroot/css/open-iconic/ICON-LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2014 Waybury
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/wwwroot/css/open-iconic/README.md
================================================
[Open Iconic v1.1.1](https://github.com/iconic/open-iconic)
===========
### Open Iconic is the open source sibling of [Iconic](https://github.com/iconic/open-iconic). It is a hyper-legible collection of 223 icons with a tiny footprint—ready to use with Bootstrap and Foundation. [View the collection](https://github.com/iconic/open-iconic)
## What's in Open Iconic?
* 223 icons designed to be legible down to 8 pixels
* Super-light SVG files - 61.8 for the entire set
* SVG sprite—the modern replacement for icon fonts
* Webfont (EOT, OTF, SVG, TTF, WOFF), PNG and WebP formats
* Webfont stylesheets (including versions for Bootstrap and Foundation) in CSS, LESS, SCSS and Stylus formats
* PNG and WebP raster images in 8px, 16px, 24px, 32px, 48px and 64px.
## Getting Started
#### For code samples and everything else you need to get started with Open Iconic, check out our [Icons](https://github.com/iconic/open-iconic) and [Reference](https://github.com/iconic/open-iconic) sections.
### General Usage
#### Using Open Iconic's SVGs
We like SVGs and we think they're the way to display icons on the web. Since Open Iconic are just basic SVGs, we suggest you display them like you would any other image (don't forget the `alt` attribute).
```
<img src="/open-iconic/svg/icon-name.svg" alt="icon name">
```
#### Using Open Iconic's SVG Sprite
Open Iconic also comes in a SVG sprite which allows you to display all the icons in the set with a single request. It's like an icon font, without being a hack.
Adding an icon from an SVG sprite is a little different than what you're used to, but it's still a piece of cake. *Tip: To make your icons easily style able, we suggest adding a general class to the* `<svg>` *tag and a unique class name for each different icon in the* `<use>` *tag.*
```
<svg class="icon">
<use xlink:href="open-iconic.svg#account-login" class="icon-account-login"></use>
</svg>
```
Sizing icons only needs basic CSS. All the icons are in a square format, so just set the `<svg>` tag with equal width and height dimensions.
```
.icon {
width: 16px;
height: 16px;
}
```
Coloring icons is even easier. All you need to do is set the `fill` rule on the `<use>` tag.
```
.icon-account-login {
fill: #f00;
}
```
To learn more about SVG Sprites, read [Chris Coyier's guide](http://css-tricks.com/svg-sprites-use-better-icon-fonts/).
#### Using Open Iconic's Icon Font...
##### …with Bootstrap
You can find our Bootstrap stylesheets in `font/css/open-iconic-bootstrap.{css, less, scss, styl}`
```
<link href="/open-iconic/font/css/open-iconic-bootstrap.css" rel="stylesheet">
```
```
<span class="oi oi-icon-name" title="icon name" aria-hidden="true"></span>
```
##### …with Foundation
You can find our Foundation stylesheets in `font/css/open-iconic-foundation.{css, less, scss, styl}`
```
<link href="/open-iconic/font/css/open-iconic-foundation.css" rel="stylesheet">
```
```
<span class="fi-icon-name" title="icon name" aria-hidden="true"></span>
```
##### …on its own
You can find our default stylesheets in `font/css/open-iconic.{css, less, scss, styl}`
```
<link href="/open-iconic/font/css/open-iconic.css" rel="stylesheet">
```
```
<span class="oi" data-glyph="icon-name" title="icon name" aria-hidden="true"></span>
```
## License
### Icons
All code (including SVG markup) is under the [MIT License](http://opensource.org/licenses/MIT).
### Fonts
All fonts are under the [SIL Licensed](http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web).
================================================
FILE: templates/dotnet-blazor-server-app-microsoft-graph/wwwroot/css/site.css
================================================
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');
html, body {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
h1:focus {
outline: none;
}
a, .btn-link {
color: #0071c1;
}
.btn-primary {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}
.content {
padding-top: 1.1rem;
}
.valid.modified:not([type=checkbox]) {
outline: 1px solid #26b050;
}
.invalid {
outline: 1px solid red;
}
.validation-message {
color: red;
}
#blazor-error-ui {
background: lightyellow;
bottom: 0;
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
display: none;
left: 0;
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
position: fixed;
width: 100%;
z-index: 1000;
}
#blazor-error-ui .dismiss {
cursor: pointer;
position: absolute;
right: 0.75rem;
top: 0.5rem;
}
.blazor-error-boundary {
background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
padding: 1rem 1rem 1rem 3.7rem;
color: white;
}
.blazor-error-boundary::after {
content: "An error has occurred."
}
================================================
FILE: templates/dotnet-console-app-microsoft-graph/.gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET
project.lock.json
project.fragment.lock.json
artifacts/
# Tye
.tye/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml
##
## Visual studio for Mac
##
# globs
Makefile.in
*.userprefs
*.usertasks
config.make
config.status
aclocal.m4
install-sh
autom4te.cache/
*.tar.gz
tarballs/
test-results/
# Mac bundle stuff
*.dmg
*.app
# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
================================================
FILE: templates/dotnet-console-app-microsoft-graph/.vscode/launch.json
================================================
{
"version": "0.2.0",
"configurations": [
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/bin/Debug/net7.0/dotnet-console-microsoft-graph.dll",
"args": [],
"cwd": "${workspaceFolder}",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
}
]
}
================================================
FILE: templates/dotnet-console-app-microsoft-graph/.vscode/tasks.json
================================================
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/dotnet-console-microsoft-graph.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/dotnet-console-microsoft-graph.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/dotnet-console-microsoft-graph.csproj"
],
"problemMatcher": "$msCompile"
}
]
}
================================================
FILE: templates/dotnet-console-app-microsoft-graph/Program.cs
================================================
using Azure.Identity;
using Microsoft.Graph;
var scopes = new[] { "User.Read" };
var interactiveBrowserCredentialOptions = new InteractiveBrowserCredentialOptions
{
ClientId = "CLIENT_ID"
};
var tokenCredential = new InteractiveBrowserCredential(interactiveBrowserCredentialOptions);
var graphClient = new GraphServiceClient(tokenCredential, scopes);
var me = await graphClient.Me.GetAsync();
Console.WriteLine($"Hello {me?.DisplayName}!");
================================================
FILE: templates/dotnet-console-app-microsoft-graph/README.md
================================================
# .NET v7.0 console app connected to Microsoft Graph
This is a template for a console application built using .NET v7.0 that connects to Microsoft Graph.
## Minimal Path to Awesome 🚀
Follow the instructions to successfully run your Console app with Microsoft Graph.
### 1. Register an Azure Active Directory app
Every app that uses Azure AD for authentication must be registered with Azure AD. You can register app through Azure Portal or by using Azure CLI. Please follow one of the options to register your app:
<details>
<summary>Option 1: Register an app by using Azure CLI</summary>
* [Install Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli?view=azure-cli-latest) if you haven't already.
* Register your app on Microsoft Azure, by creating a new Azure AD app registration:
* <details>
<summary>On macOS/Linux/in Bash</summary>
* Open terminal and change the working directory to the root of this project
* To make the setup script executable, run `chmod +x ./setup.sh`
* To register the app, run `./setup.sh`
* When prompted, sign in with your **Microsoft 365 developer sandbox account**
</details>
* <details>
<summary>On Windows/in PowerShell</summary>
* Open PowerShell and change the working directory to the root of this project
* To register the app, run `.\setup.ps1`
* When prompted, sign in with your **Microsoft 365 developer sandbox account**
</details>
</details>
<details>
<summary>Option 2: Register an app through Azure Portal</summary>
* Go to [Azure Portal](https://portal.azure.com) and login with your testing account that has Application developer or administrator permissions.
* Select **Azure Active Directory**, and select **App Registrations** from the left side bar. Then select **+ New registration**.
* Give any name to your app. For **Supported account types**, select **Accounts in any organizational directory (Any Azure AD directory - Multitenant)**.
* Set the **Redirect URI** drop down to **Public client/native (mobile & desktop)** and enter `http://localhost`. Then, select **Register**.
Navigate to **Overview** tab and make a note of the **Application (client) ID**. You'll use it in the next steps.
</details>
### 2. Run your Console app
* Clone the Hack Together repository to your local workspace or directly download the source code.
* Open the project folder `dotnet-console-app-microsoft-graph` with the editor of your choice. (Visual Studio Code is recommended.)
* In Visual Studio Code, press F5 to run the app.

## Reference
* [Quickstart: Register an application with the Microsoft identity platform](https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app)
================================================
FILE: templates/dotnet-console-app-microsoft-graph/dotnet-console-microsoft-graph.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<RootNamespace>dotnet_console_microsoft_graph</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Azure.Identity" Version="1.8.1" />
<PackageReference Include="Microsoft.Graph" Version="5.0.0" />
</ItemGroup>
</Project>
================================================
FILE: templates/dotnet-console-app-microsoft-graph/setup.ps1
================================================
az login
$appId = az ad app create --display-name "MSGraph console app" --public-client-redirect-uris "http://localhost" --query appId -o tsv
((Get-Content -path Program.cs -Raw) -replace 'CLIENT_ID',$appId) | Set-Content -Path Program.cs
================================================
FILE: templates/dotnet-console-app-microsoft-graph/setup.sh
================================================
az login
appId=$(az ad app create --display-name "MSGraph console app" --public-client-redirect-uris "http://localhost" --query appId -o tsv)
sed -i '' -e "s/CLIENT_ID/$appId/g" Program.cs
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/.config/dotnet-tools.json
================================================
{
"version": 1,
"isRoot": true,
"tools": {
"microsoft.dotnet-msidentity": {
"version": "2.0.0",
"commands": [
"dotnet-msidentity"
]
}
}
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Controllers/HomeController.cs
================================================
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using NETCoreMVCwithMSGraph.Models;
using System.Diagnostics;
namespace NETCoreMVCwithMSGraph.Controllers
{
[Authorize]
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
return View();
}
public IActionResult Privacy()
{
return View();
}
[AllowAnonymous]
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Models/ErrorViewModel.cs
================================================
namespace NETCoreMVCwithMSGraph.Models
{
public class ErrorViewModel
{
public string? RequestId { get; set; }
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
}
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/NETCoreMVCwithMSGraph.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>aspnet-NETCoreMVCwithMSGraph-d4ad7a19-075b-4ceb-8a76-135534ac5164</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.2" NoWarn="NU1605" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="7.0.2" NoWarn="NU1605" />
<PackageReference Include="Microsoft.Identity.Web" Version="1.24.1" />
<PackageReference Include="Microsoft.Identity.Web.MicrosoftGraph" Version="1.24.1" />
<PackageReference Include="Microsoft.Identity.Web.UI" Version="1.16.0" />
</ItemGroup>
</Project>
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Program.cs
================================================
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
var builder = WebApplication.CreateBuilder(args);
var initialScopes = builder.Configuration["DownstreamApi:Scopes"]?.Split(' ') ?? builder.Configuration["MicrosoftGraph:Scopes"]?.Split(' ');
// Add services to the container.
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
.AddMicrosoftGraph(builder.Configuration.GetSection("MicrosoftGraph"))
.AddInMemoryTokenCaches();
builder.Services.AddAuthorization(options =>
{
options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
});
builder.Services.AddRazorPages()
.AddMicrosoftIdentityUI();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();
app.MapControllers();
app.Run();
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Properties/launchSettings.json
================================================
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:54470",
"sslPort": 44388
}
},
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7004;http://localhost:5289",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Properties/serviceDependencies.json
================================================
{
"dependencies": {}
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Properties/serviceDependencies.local.json
================================================
{
"dependencies": {}
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Home/Index.cshtml
================================================
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
<div>Graph API result</div>
<div>@ViewData["GraphApiResult"]</div>
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Home/Privacy.cshtml
================================================
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p>Use this page to detail your site's privacy policy.</p>
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/Error.cshtml
================================================
@model ErrorViewModel
@{
ViewData["Title"] = "Error";
}
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (Model.ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@Model.RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/_Layout.cshtml
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - NETCoreMVCwithMSGraph</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/NETCoreMVCwithMSGraph.styles.css" asp-append-version="true" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container-fluid">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">NETCoreMVCwithMSGraph</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>
</ul>
<partial name="_LoginPartial" />
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
© 2023 - NETCoreMVCwithMSGraph - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/_Layout.cshtml.css
================================================
/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
for details on configuring this project to bundle and minify static web assets. */
a.navbar-brand {
white-space: normal;
text-align: center;
word-break: break-all;
}
a {
color: #0077cc;
}
.btn-primary {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.border-top {
border-top: 1px solid #e5e5e5;
}
.border-bottom {
border-bottom: 1px solid #e5e5e5;
}
.box-shadow {
box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
}
button.accept-policy {
font-size: 1rem;
line-height: inherit;
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
white-space: nowrap;
line-height: 60px;
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/_LoginPartial.cshtml
================================================
@using System.Security.Principal
<ul class="navbar-nav">
@if (User.Identity?.IsAuthenticated == true)
{
<span class="navbar-text text-dark">Hello @User.Identity?.Name!</span>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
</li>
}
</ul>
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/_ValidationScriptsPartial.cshtml
================================================
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/_ViewImports.cshtml
================================================
@using NETCoreMVCwithMSGraph
@using NETCoreMVCwithMSGraph.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/_ViewStart.cshtml
================================================
@{
Layout = "_Layout";
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/appsettings.Development.json
================================================
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/appsettings.json
================================================
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "domain-name-from-app-registration",
"TenantId": "directory-id-from-app-registration",
"ClientId": "client-id-from-app-registration",
"CallbackPath": "/signin-oidc"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"MicrosoftGraph": {
"BaseUrl": "https://graph.microsoft.com/v1.0",
"Scopes": "user.read"
}
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/css/site.css
================================================
html {
font-size: 14px;
}
@media (min-width: 768px) {
html {
font-size: 16px;
}
}
.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}
html {
position: relative;
min-height: 100%;
}
body {
margin-bottom: 60px;
}
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/js/site.js
================================================
// Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
// for details on configuring this project to bundle and minify static web assets.
// Write your JavaScript code.
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2011-2021 Twitter, Inc.
Copyright (c) 2011-2021 The Bootstrap Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
================================================
/*!
* Bootstrap Grid v5.1.0 (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)
*/
.container,
.container-fluid,
.container-xxl,
.container-xl,
.container-lg,
.container-md,
.container-sm {
width: 100%;
padding-right: var(--bs-gutter-x, 0.75rem);
padding-left: var(--bs-gutter-x, 0.75rem);
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container-sm, .container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container-md, .container-sm, .container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container-lg, .container-md, .container-sm, .container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container-xl, .container-lg, .container-md, .container-sm, .container {
max-width: 1140px;
}
}
@media (min-width: 1400px) {
.container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
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 > * {
box-sizing: border-box;
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%;
}
.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 {
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%;
}
.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 {
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%;
}
.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 {
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%;
}
.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 {
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%;
}
.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 {
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-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;
}
}
.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;
}
.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;
}
.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: 0.25rem !important;
}
.m-2 {
margin: 0.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: 0.25rem !important;
margin-left: 0.25rem !important;
}
.mx-2 {
margin-right: 0.5rem !important;
margin-left: 0.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: 0.25rem !important;
margin-bottom: 0.25rem !important;
}
.my-2 {
margin-top: 0.5rem !important;
margin-bottom: 0.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: 0.25rem !important;
}
.mt-2 {
margin-top: 0.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: 0.25rem !important;
}
.me-2 {
margin-right: 0.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: 0.25rem !important;
}
.mb-2 {
margin-bottom: 0.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: 0.25rem !important;
}
.ms-2 {
margin-left: 0.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: 0.25rem !important;
}
.p-2 {
padding: 0.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: 0.25rem !important;
padding-left: 0.25rem !important;
}
.px-2 {
padding-right: 0.5rem !important;
padding-left: 0.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: 0.25rem !important;
padding-bottom: 0.25rem !important;
}
.py-2 {
padding-top: 0.5rem !important;
padding-bottom: 0.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: 0.25rem !important;
}
.pt-2 {
padding-top: 0.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: 0.25rem !important;
}
.pe-2 {
padding-right: 0.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: 0.25rem !important;
}
.pb-2 {
padding-bottom: 0.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: 0.25rem !important;
}
.ps-2 {
padding-left: 0.5rem !important;
}
.ps-3 {
padding-left: 1rem !important;
}
.ps-4 {
padding-left: 1.5rem !important;
}
.ps-5 {
padding-left: 3rem !important;
}
@media (min-width: 576px) {
.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;
}
.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: 0.25rem !important;
}
.m-sm-2 {
margin: 0.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: 0.25rem !important;
margin-left: 0.25rem !important;
}
.mx-sm-2 {
margin-right: 0.5rem !important;
margin-left: 0.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: 0.25rem !important;
margin-bottom: 0.25rem !important;
}
.my-sm-2 {
margin-top: 0.5rem !important;
margin-bottom: 0.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: 0.25rem !important;
}
.mt-sm-2 {
margin-top: 0.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: 0.25rem !important;
}
.me-sm-2 {
margin-right: 0.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: 0.25rem !important;
}
.mb-sm-2 {
margin-bottom: 0.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: 0.25rem !important;
}
.ms-sm-2 {
margin-left: 0.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: 0.25rem !important;
}
.p-sm-2 {
padding: 0.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: 0.25rem !important;
padding-left: 0.25rem !important;
}
.px-sm-2 {
padding-right: 0.5rem !important;
padding-left: 0.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: 0.25rem !important;
padding-bottom: 0.25rem !important;
}
.py-sm-2 {
padding-top: 0.5rem !important;
padding-bottom: 0.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: 0.25rem !important;
}
.pt-sm-2 {
padding-top: 0.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: 0.25rem !important;
}
.pe-sm-2 {
padding-right: 0.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: 0.25rem !important;
}
.pb-sm-2 {
padding-bottom: 0.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: 0.25rem !important;
}
.ps-sm-2 {
padding-left: 0.5rem !important;
}
.ps-sm-3 {
padding-left: 1rem !important;
}
.ps-sm-4 {
padding-left: 1.5rem !important;
}
.ps-sm-5 {
padding-left: 3rem !important;
}
}
@media (min-width: 768px) {
.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;
}
.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: 0.25rem !important;
}
.m-md-2 {
margin: 0.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: 0.25rem !important;
margin-left: 0.25rem !important;
}
.mx-md-2 {
margin-right: 0.5rem !important;
margin-left: 0.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: 0.25rem !important;
margin-bottom: 0.25rem !important;
}
.my-md-2 {
margin-top: 0.5rem !important;
margin-bottom: 0.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: 0.25rem !important;
}
.mt-md-2 {
margin-top: 0.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: 0.25rem !important;
}
.me-md-2 {
margin-right: 0.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: 0.25rem !important;
}
.mb-md-2 {
margin-bottom: 0.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: 0.25rem !important;
}
.ms-md-2 {
margin-left: 0.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: 0.25rem !important;
}
.p-md-2 {
padding: 0.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: 0.25rem !important;
padding-left: 0.25rem !important;
}
.px-md-2 {
padding-right: 0.5rem !important;
padding-left: 0.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: 0.25rem !important;
padding-bottom: 0.25rem !important;
}
.py-md-2 {
padding-top: 0.5rem !important;
padding-bottom: 0.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: 0.25rem !important;
}
.pt-md-2 {
padding-top: 0.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: 0.25rem !important;
}
.pe-md-2 {
padding-right: 0.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: 0.25rem !important;
}
.pb-md-2 {
padding-bottom: 0.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: 0.25rem !important;
}
.ps-md-2 {
padding-left: 0.5rem !important;
}
.ps-md-3 {
padding-left: 1rem !important;
}
.ps-md-4 {
padding-left: 1.5rem !important;
}
.ps-md-5 {
padding-left: 3rem !important;
}
}
@media (min-width: 992px) {
.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;
}
.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: 0.25rem !important;
}
.m-lg-2 {
margin: 0.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: 0.25rem !important;
margin-left: 0.25rem !important;
}
.mx-lg-2 {
margin-right: 0.5rem !important;
margin-left: 0.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: 0.25rem !important;
margin-bottom: 0.25rem !important;
}
.my-lg-2 {
margin-top: 0.5rem !important;
margin-bottom: 0.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: 0.25rem !important;
}
.mt-lg-2 {
margin-top: 0.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: 0.25rem !important;
}
.me-lg-2 {
margin-right: 0.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: 0.25rem !important;
}
.mb-lg-2 {
margin-bottom: 0.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: 0.25rem !important;
}
.ms-lg-2 {
margin-left: 0.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: 0.25rem !important;
}
.p-lg-2 {
padding: 0.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: 0.25rem !important;
padding-left: 0.25rem !important;
}
.px-lg-2 {
padding-right: 0.5rem !important;
padding-left: 0.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: 0.25rem !important;
padding-bottom: 0.25rem !important;
}
.py-lg-2 {
padding-top: 0.5rem !important;
padding-bottom: 0.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: 0.25rem !important;
}
.pt-lg-2 {
padding-top: 0.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: 0.25rem !important;
}
.pe-lg-2 {
padding-right: 0.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: 0.25rem !important;
}
.pb-lg-2 {
padding-bottom: 0.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: 0.25rem !important;
}
.ps-lg-2 {
padding-left: 0.5rem !important;
}
.ps-lg-3 {
padding-left: 1rem !important;
}
.ps-lg-4 {
padding-left: 1.5rem !important;
}
.ps-lg-5 {
padding-left: 3rem !important;
}
}
@media (min-width: 1200px) {
.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;
}
.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: 0.25rem !important;
}
.m-xl-2 {
margin: 0.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: 0.25rem !important;
margin-left: 0.25rem !important;
}
.mx-xl-2 {
margin-right: 0.5rem !important;
margin-left: 0.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: 0.25rem !important;
margin-bottom: 0.25rem !important;
}
.my-xl-2 {
margin-top: 0.5rem !important;
margin-bottom: 0.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: 0.25rem !important;
}
.mt-xl-2 {
margin-top: 0.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: 0.25rem !important;
}
.me-xl-2 {
margin-right: 0.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: 0.25rem !important;
}
.mb-xl-2 {
margin-bottom: 0.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: 0.25rem !important;
}
.ms-xl-2 {
margin-left: 0.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: 0.25rem !important;
}
.p-xl-2 {
padding: 0.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: 0.25rem !important;
padding-left: 0.25rem !important;
}
.px-xl-2 {
padding-right: 0.5rem !important;
padding-left: 0.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: 0.25rem !important;
padding-bottom: 0.25rem !important;
}
.py-xl-2 {
padding-top: 0.5rem !important;
padding-bottom: 0.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: 0.25rem !important;
}
.pt-xl-2 {
padding-top: 0.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: 0.25rem !important;
}
.pe-xl-2 {
padding-right: 0.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: 0.25rem !important;
}
.pb-xl-2 {
padding-bottom: 0.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: 0.25rem !important;
}
.ps-xl-2 {
padding-left: 0.5rem !important;
}
.ps-xl-3 {
padding-left: 1rem !important;
}
.ps-xl-4 {
padding-left: 1.5rem !important;
}
.ps-xl-5 {
padding-left: 3rem !important;
}
}
@media (min-width: 1400px) {
.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;
}
.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: 0.25rem !important;
}
.m-xxl-2 {
margin: 0.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: 0.25rem !important;
margin-left: 0.25rem !important;
}
.mx-xxl-2 {
margin-right: 0.5rem !important;
margin-left: 0.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: 0.25rem !important;
margin-bottom: 0.25rem !important;
}
.my-xxl-2 {
margin-top: 0.5rem !important;
margin-bottom: 0.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: 0.25rem !important;
}
.mt-xxl-2 {
margin-top: 0.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: 0.25rem !important;
}
.me-xxl-2 {
margin-right: 0.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: 0.25rem !important;
}
.mb-xxl-2 {
margin-bottom: 0.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: 0.25rem !important;
}
.ms-xxl-2 {
margin-left: 0.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: 0.25rem !important;
}
.p-xxl-2 {
padding: 0.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: 0.25rem !important;
padding-left: 0.25rem !important;
}
.px-xxl-2 {
padding-right: 0.5rem !important;
padding-left: 0.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: 0.25rem !important;
padding-bottom: 0.25rem !important;
}
.py-xxl-2 {
padding-top: 0.5rem !important;
padding-bottom: 0.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: 0.25rem !important;
}
.pt-xxl-2 {
padding-top: 0.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: 0.25rem !important;
}
.pe-xxl-2 {
padding-right: 0.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: 0.25rem !important;
}
.pb-xxl-2 {
padding-bottom: 0.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: 0.25rem !important;
}
.ps-xxl-2 {
padding-left: 0.5rem !important;
}
.ps-xxl-3 {
padding-left: 1rem !important;
}
.ps-xxl-4 {
padding-left: 1.5rem !important;
}
.ps-xxl-5 {
padding-left: 3rem !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-grid.css.map */
================================================
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css
================================================
/*!
* Bootstrap Grid v5.1.0 (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)
*/
.container,
.container-fluid,
.container-xxl,
.container-xl,
.container-lg,
.container-md,
.container-sm {
width: 100%;
padding-left: var(--bs-gutter-x, 0.75rem);
padding-right: var(--bs-gutter-x, 0.75rem);
margin-left: auto;
margin-right: auto;
}
@media (min-width: 576px) {
.container-sm, .container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container-md, .container-sm, .container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container-lg, .container-md, .container-sm, .container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container-xl, .container-lg, .container-md, .container-sm, .container {
max-width: 1140px;
}
}
@media (min-width: 1400px) {
.container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
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-left: calc(var(--bs-gutter-x) * -.5);
margin-right: calc(var(--bs-gutter-x) * -.5);
}
.row > * {
box-sizing: border-box;
flex-shrink: 0;
width: 100%;
max-width: 100%;
padding-left: calc(var(--bs-gutter-x) * .5);
padding-right: 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%;
}
.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-right: 8.33333333%;
}
.offset-2 {
margin-right: 16.66666667%;
}
.offset-3 {
margin-right: 25%;
}
.offset-4 {
margin-right: 33.33333333%;
}
.offset-5 {
margin-right: 41.66666667%;
}
.offset-6 {
margin-right: 50%;
}
.offset-7 {
margin-right: 58.33333333%;
}
.offset-8 {
margin-right: 66.66666667%;
}
.offset-9 {
margin-right: 75%;
}
.offset-10 {
margin-right: 83.33333333%;
}
.offset-11 {
margin-right: 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 {
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%;
}
.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-right: 0;
}
.offset-sm-1 {
margin-right: 8.33333333%;
}
.offset-sm-2 {
margin-right: 16.66666667%;
}
.offset-sm-3 {
margin-right: 25%;
}
.offset-sm-4 {
margin-right: 33.33333333%;
}
.offset-sm-5 {
margin-right: 41.66666667%;
}
.offset-sm-6 {
margin-right: 50%;
}
.offset-sm-7 {
margin-right: 58.33333333%;
}
.offset-sm-8 {
margin-right: 66.66666667%;
}
.offset-sm-9 {
margin-right: 75%;
}
.offset-sm-10 {
margin-right: 83.33333333%;
}
.offset-sm-11 {
margin-right: 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 {
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%;
}
.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-right: 0;
}
.offset-md-1 {
margin-right: 8.33333333%;
}
.offset-md-2 {
margin-right: 16.66666667%;
}
.offset-md-3 {
margin-right: 25%;
}
.offset-md-4 {
margin-right: 33.33333333%;
}
.offset-md-5 {
margin-right: 41.66666667%;
}
.offset-md-6 {
margin-right: 50%;
}
.offset-md-7 {
margin-right: 58.33333333%;
}
.offset-md-8 {
margin-right: 66.66666667%;
}
.offset-md-9 {
margin-right: 75%;
}
.offset-md-10 {
margin-right: 83.33333333%;
}
.offset-md-11 {
margin-right: 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 {
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%;
}
.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-right: 0;
}
.offset-lg-1 {
margin-right: 8.33333333%;
}
.offset-lg-2 {
margin-right: 16.66666667%;
}
.offset-lg-3 {
margin-right: 25%;
}
.offset-lg-4 {
margin-right: 33.33333333%;
}
.offset-lg-5 {
margin-right: 41.66666667%;
}
.offset-lg-6 {
margin-right: 50%;
}
.offset-lg-7 {
margin-right: 58.33333333%;
}
.offset-lg-8 {
margin-right: 66.66666667%;
}
.offset-lg-9 {
margin-right: 75%;
}
.offset-lg-10 {
margin-right: 83.33333333%;
}
.offset-lg-11 {
margin-right: 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 {
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%;
}
.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-right: 0;
}
.offset-xl-1 {
margin-right: 8.33333333%;
}
.offset-xl-2 {
margin-right: 16.66666667%;
}
.offset-xl-3 {
margin-right: 25%;
}
.offset-xl-4 {
margin-right: 33.33333333%;
}
.offset-xl-5 {
margin-right: 41.66666667%;
}
.offset-xl-6 {
margin-right: 50%;
}
.offset-xl-7 {
margin-right: 58.33333333%;
}
.offset-xl-8 {
margin-right: 66.66666667%;
}
.offset-xl-9 {
margin-right: 75%;
}
.offset-xl-10 {
margin-right: 83.33333333%;
}
.offset-xl-11 {
margin-right: 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 {
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-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-right: 0;
}
.offset-xxl-1 {
margin-right: 8.33333333%;
}
.offset-xxl-2 {
margin-right: 16.66666667%;
}
.offset-xxl-3 {
margin-right: 25%;
}
.offset-xxl-4 {
margin-right: 33.33333333%;
}
.offset-xxl-5 {
margin-right: 41.66666667%;
}
.offset-xxl-6 {
margin-right: 50%;
}
.offset-xxl-7 {
margin-right: 58.33333333%;
}
.offset-xxl-8 {
margin-right: 66.66666667%;
}
.offset-xxl-9 {
margin-right: 75%;
}
.offset-xxl-10 {
margin-right: 83.33333333%;
}
.offset-xxl-11 {
margin-right: 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;
}
}
.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;
}
.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;
}
.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: 0.25rem !important;
}
.m-2 {
margin: 0.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-left: 0 !important;
margin-right: 0 !important;
}
.mx-1 {
margin-left: 0.25rem !important;
margin-right: 0.25rem !important;
}
.mx-2 {
margin-left: 0.5rem !important;
margin-right: 0.5rem !important;
}
.mx-3 {
margin-left: 1rem !important;
margin-right: 1rem !important;
}
.mx-4 {
margin-left: 1.5rem !important;
margin-right: 1.5rem !important;
}
.mx-5 {
margin-left: 3rem !important;
margin-right: 3rem !important;
}
.mx-auto {
margin-left: auto !important;
margin-right: auto !important;
}
.my-0 {
margin-top: 0 !important;
margin-bottom: 0 !important;
}
.my-1 {
margin-top: 0.25rem !important;
margin-bottom: 0.25rem !important;
}
.my-2 {
margin-top: 0.5rem !important;
margin-bottom: 0.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: 0.25rem !important;
}
.mt-2 {
margin-top: 0.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-left: 0 !important;
}
.me-1 {
margin-left: 0.25rem !important;
}
.me-2 {
margin-left: 0.5rem !important;
}
.me-3 {
margin-left: 1rem !important;
}
.me-4 {
margin-left: 1.5rem !important;
}
.me-5 {
margin-left: 3rem !important;
}
.me-auto {
margin-left: auto !important;
}
.mb-0 {
margin-bottom: 0 !important;
}
.mb-1 {
margin-bottom: 0.25rem !important;
}
.mb-2 {
margin-bottom: 0.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-right: 0 !important;
}
.ms-1 {
margin-right: 0.25rem !important;
}
.ms-2 {
margin-right: 0.5rem !important;
}
.ms-3 {
margin-right: 1rem !important;
}
.ms-4 {
margin-right: 1.5rem !important;
}
.ms-5 {
margin-right: 3rem !important;
}
.ms-auto {
margin-right: auto !important;
}
.p-0 {
padding: 0 !important;
}
.p-1 {
padding: 0.25rem !important;
}
.p-2 {
padding: 0.5rem !important;
}
.p-3 {
padding: 1rem !important;
}
.p-4 {
padding: 1.5rem !important;
}
.p-5 {
padding: 3rem !important;
}
.px-0 {
padding-left: 0 !important;
padding-right: 0 !important;
}
.px-1 {
padding-left: 0.25rem !important;
padding-right: 0.25rem !important;
}
.px-2 {
padding-left: 0.5rem !important;
padding-right: 0.5rem !important;
}
.px-3 {
padding-left: 1rem !important;
padding-right: 1rem !important;
}
.px-4 {
padding-left: 1.5rem !important;
padding-right: 1.5rem !important;
}
.px-5 {
padding-left: 3rem !important;
padding-right: 3rem !important;
}
.py-0 {
padding-top: 0 !important;
padding-bottom: 0 !important;
}
.py-1 {
padding-top: 0.25rem !important;
padding-bottom: 0.25rem !important;
}
.py-2 {
padding-top: 0.5rem !important;
padding-bottom: 0.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: 0.25rem !important;
}
.pt-2 {
padding-top: 0.5rem !important;
}
.pt-3 {
padding-top: 1rem !important;
}
.pt-4 {
padding-top: 1.5rem !important;
}
.pt-5 {
padding-top: 3rem !important;
}
.pe-0 {
padding-left: 0 !important;
}
.pe-1 {
padding-left: 0.25rem !important;
}
.pe-2 {
padding-left: 0.5rem !important;
}
.pe-3 {
padding-left: 1rem !important;
}
.pe-4 {
padding-left: 1.5rem !important;
}
.pe-5 {
padding-left: 3rem !important;
}
.pb-0 {
padding-bottom: 0 !important;
}
.pb-1 {
padding-bottom: 0.25rem !important;
}
.pb-2 {
padding-bottom: 0.5rem !important;
}
.pb-3 {
padding-bottom: 1rem !important;
}
.pb-4 {
padding-bottom: 1.5rem !important;
}
.pb-5 {
padding-bottom: 3rem !important;
}
.ps-0 {
padding-right: 0 !important;
}
.ps-1 {
padding-right: 0.25rem !important;
}
.ps-2 {
padding-right: 0.5rem !important;
}
.ps-3 {
padding-right: 1rem !important;
}
.ps-4 {
padding-right: 1.5rem !important;
}
.ps-5 {
padding-right: 3rem !important;
}
@media (min-width: 576px) {
.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;
}
.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: 0.25rem !important;
}
.m-sm-2 {
margin: 0.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-left: 0 !important;
margin-right: 0 !important;
}
.mx-sm-1 {
margin-left: 0.25rem !important;
margin-right: 0.25rem !important;
}
.mx-sm-2 {
margin-left: 0.5rem !important;
margin-right: 0.5rem !important;
}
.mx-sm-3 {
margin-left: 1rem !important;
margin-right: 1rem !important;
}
.mx-sm-4 {
margin-left: 1.5rem !important;
margin-right: 1.5rem !important;
}
.mx-sm-5 {
margin-left: 3rem !important;
margin-right: 3rem !important;
}
.mx-sm-auto {
margin-left: auto !important;
margin-right: auto !important;
}
.my-sm-0 {
margin-top: 0 !important;
margin-bottom: 0 !important;
}
.my-sm-1 {
margin-top: 0.25rem !important;
margin-bottom: 0.25rem !important;
}
.my-sm-2 {
margin-top: 0.5rem !important;
margin-bottom: 0.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: 0.25rem !important;
}
.mt-sm-2 {
margin-top: 0.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-left: 0 !important;
}
.me-sm-1 {
margin-left: 0.25rem !important;
}
.me-sm-2 {
margin-left: 0.5rem !important;
}
.me-sm-3 {
margin-left: 1rem !important;
}
.me-sm-4 {
margin-left: 1.5rem !important;
}
.me-sm-5 {
margin-left: 3rem !important;
}
.me-sm-auto {
margin-left: auto !important;
}
.mb-sm-0 {
margin-bottom: 0 !important;
}
.mb-sm-1 {
margin-bottom: 0.25rem !important;
}
.mb-sm-2 {
margin-bottom: 0.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-right: 0 !important;
}
.ms-sm-1 {
margin-right: 0.25rem !important;
}
.ms-sm-2 {
margin-right: 0.5rem !important;
}
.ms-sm-3 {
margin-right: 1rem !important;
}
.ms-sm-4 {
margin-right: 1.5rem !important;
}
.ms-sm-5 {
margin-right: 3rem !important;
}
.ms-sm-auto {
margin-right: auto !important;
}
.p-sm-0 {
padding: 0 !important;
}
.p-sm-1 {
padding: 0.25rem !important;
}
.p-sm-2 {
padding: 0.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-left: 0 !important;
padding-right: 0 !important;
}
.px-sm-1 {
padding-left: 0.25rem !important;
padding-right: 0.25rem !important;
}
.px-sm-2 {
padding-left: 0.5rem !important;
padding-right: 0.5rem !important;
}
.px-sm-3 {
padding-left: 1rem !important;
padding-right: 1rem !important;
}
.px-sm-4 {
padding-left: 1.5rem !important;
padding-right: 1.5rem !important;
}
.px-sm-5 {
padding-left: 3rem !important;
padding-right: 3rem !important;
}
.py-sm-0 {
padding-top: 0 !important;
padding-bottom: 0 !important;
}
.py-sm-1 {
padding-top: 0.25rem !important;
padding-bottom: 0.25rem !important;
}
.py-sm-2 {
padding-top: 0.5rem !important;
padding-bottom: 0.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: 0.25rem !important;
}
.pt-sm-2 {
padding-top: 0.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-left: 0 !important;
}
.pe-sm-1 {
padding-left: 0.25rem !important;
}
.pe-sm-2 {
padding-left: 0.5rem !important;
}
.pe-sm-3 {
padding-left: 1rem !important;
}
.pe-sm-4 {
padding-left: 1.5rem !important;
}
.pe-sm-5 {
padding-left: 3rem !important;
}
.pb-sm-0 {
padding-bottom: 0 !important;
}
.pb-sm-1 {
padding-bottom: 0.25rem !important;
}
.pb-sm-2 {
padding-bottom: 0.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-right: 0 !important;
}
.ps-sm-1 {
padding-right: 0.25rem !important;
}
.ps-sm-2 {
padding-right: 0.5rem !important;
}
.ps-sm-3 {
padding-right: 1rem !important;
}
.ps-sm-4 {
padding-right: 1.5rem !important;
}
.ps-sm-5 {
padding-right: 3rem !important;
}
}
@media (min-width: 768px) {
.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;
}
gitextract_138d49e_/ ├── .github/ │ └── ISSUE_TEMPLATE/ │ └── project.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── SECURITY.md ├── SUPPORT.md ├── setup.md ├── templates/ │ ├── dotnet-blazor-server-app-microsoft-graph/ │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── App.razor │ │ ├── BlazorSample.csproj │ │ ├── Data/ │ │ │ ├── WeatherForecast.cs │ │ │ └── WeatherForecastService.cs │ │ ├── Pages/ │ │ │ ├── Counter.razor │ │ │ ├── Error.cshtml │ │ │ ├── Error.cshtml.cs │ │ │ ├── FetchData.razor │ │ │ ├── Index.razor │ │ │ ├── ShowProfile.razor │ │ │ └── _Host.cshtml │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── Shared/ │ │ │ ├── LoginDisplay.razor │ │ │ ├── MainLayout.razor │ │ │ ├── MainLayout.razor.css │ │ │ ├── NavMenu.razor │ │ │ ├── NavMenu.razor.css │ │ │ └── SurveyPrompt.razor │ │ ├── _Imports.razor │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ ├── setup.ps1 │ │ ├── setup.sh │ │ └── wwwroot/ │ │ └── css/ │ │ ├── open-iconic/ │ │ │ ├── FONT-LICENSE │ │ │ ├── ICON-LICENSE │ │ │ ├── README.md │ │ │ └── font/ │ │ │ └── fonts/ │ │ │ └── open-iconic.otf │ │ └── site.css │ ├── dotnet-console-app-microsoft-graph/ │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── Program.cs │ │ ├── README.md │ │ ├── dotnet-console-microsoft-graph.csproj │ │ ├── setup.ps1 │ │ └── setup.sh │ ├── dotnet-core-mvc-web-app-microsoft-graph/ │ │ ├── NETCoreMVCwithMSGraph/ │ │ │ ├── .config/ │ │ │ │ └── dotnet-tools.json │ │ │ ├── Controllers/ │ │ │ │ └── HomeController.cs │ │ │ ├── Models/ │ │ │ │ └── ErrorViewModel.cs │ │ │ ├── NETCoreMVCwithMSGraph.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ ├── launchSettings.json │ │ │ │ ├── serviceDependencies.json │ │ │ │ └── serviceDependencies.local.json │ │ │ ├── Views/ │ │ │ │ ├── Home/ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ └── Privacy.cshtml │ │ │ │ ├── Shared/ │ │ │ │ │ ├── Error.cshtml │ │ │ │ │ ├── _Layout.cshtml │ │ │ │ │ ├── _Layout.cshtml.css │ │ │ │ │ ├── _LoginPartial.cshtml │ │ │ │ │ └── _ValidationScriptsPartial.cshtml │ │ │ │ ├── _ViewImports.cshtml │ │ │ │ └── _ViewStart.cshtml │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ └── site.css │ │ │ ├── js/ │ │ │ │ └── site.js │ │ │ └── lib/ │ │ │ ├── bootstrap/ │ │ │ │ ├── LICENSE │ │ │ │ └── dist/ │ │ │ │ ├── css/ │ │ │ │ │ ├── bootstrap-grid.css │ │ │ │ │ ├── bootstrap-grid.rtl.css │ │ │ │ │ ├── bootstrap-reboot.css │ │ │ │ │ ├── bootstrap-reboot.rtl.css │ │ │ │ │ ├── bootstrap-utilities.css │ │ │ │ │ ├── bootstrap-utilities.rtl.css │ │ │ │ │ ├── bootstrap.css │ │ │ │ │ └── bootstrap.rtl.css │ │ │ │ └── js/ │ │ │ │ ├── bootstrap.bundle.js │ │ │ │ ├── bootstrap.esm.js │ │ │ │ └── bootstrap.js │ │ │ ├── jquery/ │ │ │ │ ├── LICENSE.txt │ │ │ │ └── dist/ │ │ │ │ └── jquery.js │ │ │ ├── jquery-validation/ │ │ │ │ ├── LICENSE.md │ │ │ │ └── dist/ │ │ │ │ ├── additional-methods.js │ │ │ │ └── jquery.validate.js │ │ │ └── jquery-validation-unobtrusive/ │ │ │ ├── LICENSE.txt │ │ │ └── jquery.validate.unobtrusive.js │ │ ├── NETCoreMVCwithMSGraph.sln │ │ └── README.md │ ├── dotnet-maui-app-microsoft-graph/ │ │ ├── MAUIwithMSGRaph/ │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── AppShell.xaml │ │ │ ├── AppShell.xaml.cs │ │ │ ├── GraphService.cs │ │ │ ├── MAUIwithMSGRaph.csproj │ │ │ ├── MainPage.xaml │ │ │ ├── MainPage.xaml.cs │ │ │ ├── MauiProgram.cs │ │ │ ├── Platforms/ │ │ │ │ ├── Android/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── MainActivity.cs │ │ │ │ │ ├── MainApplication.cs │ │ │ │ │ └── Resources/ │ │ │ │ │ └── values/ │ │ │ │ │ └── colors.xml │ │ │ │ ├── MacCatalyst/ │ │ │ │ │ ├── AppDelegate.cs │ │ │ │ │ ├── Info.plist │ │ │ │ │ └── Program.cs │ │ │ │ ├── Tizen/ │ │ │ │ │ ├── Main.cs │ │ │ │ │ └── tizen-manifest.xml │ │ │ │ ├── Windows/ │ │ │ │ │ ├── App.xaml │ │ │ │ │ ├── App.xaml.cs │ │ │ │ │ ├── Package.appxmanifest │ │ │ │ │ └── app.manifest │ │ │ │ └── iOS/ │ │ │ │ ├── AppDelegate.cs │ │ │ │ ├── Info.plist │ │ │ │ └── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ └── Resources/ │ │ │ ├── Raw/ │ │ │ │ └── AboutAssets.txt │ │ │ └── Styles/ │ │ │ ├── Colors.xaml │ │ │ └── Styles.xaml │ │ ├── MAUIwithMSGRaph.sln │ │ ├── README.md │ │ ├── setup.ps1 │ │ └── setup.sh │ └── dotnet-uwp-app-microsoft-graph/ │ ├── README.md │ ├── UWP-app-MSGraph/ │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── MainPage.xaml │ │ ├── MainPage.xaml.cs │ │ ├── Package.appxmanifest │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ └── Default.rd.xml │ │ ├── TokenProvider.cs │ │ └── UWP-app-MSGraph.csproj │ ├── UWP-app-MSGraph.sln │ ├── setup.ps1 │ └── setup.sh └── top-scenarios.md
SYMBOL INDEX (1147 symbols across 28 files)
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Data/WeatherForecast.cs
class WeatherForecast (line 3) | public class WeatherForecast
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Data/WeatherForecastService.cs
class WeatherForecastService (line 3) | public class WeatherForecastService
method GetForecastAsync (line 10) | public Task<WeatherForecast[]> GetForecastAsync(DateOnly startDate)
FILE: templates/dotnet-blazor-server-app-microsoft-graph/Pages/Error.cshtml.cs
class ErrorModel (line 7) | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoSt...
method ErrorModel (line 17) | public ErrorModel(ILogger<ErrorModel> logger)
method OnGet (line 22) | public void OnGet()
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Controllers/HomeController.cs
class HomeController (line 8) | [Authorize]
method HomeController (line 13) | public HomeController(ILogger<HomeController> logger)
method Index (line 18) | public IActionResult Index()
method Privacy (line 23) | public IActionResult Privacy()
method Error (line 28) | [AllowAnonymous]
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Models/ErrorViewModel.cs
class ErrorViewModel (line 3) | public class ErrorViewModel
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
function getUidEvent (line 353) | function getUidEvent(element, uid) {
function getEvent (line 357) | function getEvent(element) {
function bootstrapHandler (line 364) | function bootstrapHandler(element, fn) {
function bootstrapDelegationHandler (line 376) | function bootstrapDelegationHandler(element, selector, fn) {
function findHandler (line 402) | function findHandler(events, handler, delegationSelector = null) {
function normalizeParams (line 416) | function normalizeParams(originalTypeEvent, handler, delegationFn) {
function addHandler (line 429) | function addHandler(element, originalTypeEvent, handler, delegationFn, o...
function removeHandler (line 477) | function removeHandler(element, events, typeEvent, handler, delegationSe...
function removeNamespacedHandlers (line 488) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
function getTypeEvent (line 498) | function getTypeEvent(event) {
method on (line 505) | on(element, event, handler, delegationFn) {
method one (line 509) | one(element, event, handler, delegationFn) {
method off (line 513) | off(element, originalTypeEvent, handler, delegationFn) {
method trigger (line 550) | trigger(element, event, args) {
method set (line 626) | set(element, key, instance) {
method get (line 643) | get(element, key) {
method remove (line 651) | remove(element, key) {
class BaseComponent (line 680) | class BaseComponent {
method constructor (line 681) | constructor(element) {
method dispose (line 692) | dispose() {
method _queueCallback (line 700) | _queueCallback(callback, element, isAnimated = true) {
method getInstance (line 706) | static getInstance(element) {
method getOrCreateInstance (line 710) | static getOrCreateInstance(element, config = {}) {
method VERSION (line 714) | static get VERSION() {
method NAME (line 718) | static get NAME() {
method DATA_KEY (line 722) | static get DATA_KEY() {
method EVENT_KEY (line 726) | static get EVENT_KEY() {
class Alert (line 783) | class Alert extends BaseComponent {
method NAME (line 785) | static get NAME() {
method close (line 790) | close() {
method _destroyElement (line 805) | _destroyElement() {
method jQueryInterface (line 813) | static jQueryInterface(config) {
class Button (line 872) | class Button extends BaseComponent {
method NAME (line 874) | static get NAME() {
method toggle (line 879) | toggle() {
method jQueryInterface (line 885) | static jQueryInterface(config) {
function normalizeData (line 924) | function normalizeData(val) {
function normalizeDataKey (line 944) | function normalizeDataKey(key) {
method setDataAttribute (line 949) | setDataAttribute(element, key, value) {
method removeDataAttribute (line 953) | removeDataAttribute(element, key) {
method getDataAttributes (line 957) | getDataAttributes(element) {
method getDataAttribute (line 971) | getDataAttribute(element, key) {
method offset (line 975) | offset(element) {
method position (line 983) | position(element) {
method find (line 1000) | find(selector, element = document.documentElement) {
method findOne (line 1004) | findOne(selector, element = document.documentElement) {
method children (line 1008) | children(element, selector) {
method parents (line 1012) | parents(element, selector) {
method prev (line 1027) | prev(element, selector) {
method next (line 1041) | next(element, selector) {
method focusableChildren (line 1055) | focusableChildren(element) {
class Carousel (line 1145) | class Carousel extends BaseComponent {
method constructor (line 1146) | constructor(element, config) {
method Default (line 1165) | static get Default() {
method NAME (line 1169) | static get NAME() {
method next (line 1174) | next() {
method nextWhenVisible (line 1178) | nextWhenVisible() {
method prev (line 1186) | prev() {
method pause (line 1190) | pause(event) {
method cycle (line 1204) | cycle(event) {
method to (line 1221) | to(index) {
method _getConfig (line 1247) | _getConfig(config) {
method _handleSwipe (line 1256) | _handleSwipe() {
method _addEventListeners (line 1273) | _addEventListeners() {
method _addTouchEventListeners (line 1288) | _addTouchEventListeners() {
method _keydown (line 1343) | _keydown(event) {
method _getItemIndex (line 1357) | _getItemIndex(element) {
method _getItemByOrder (line 1362) | _getItemByOrder(order, activeElement) {
method _triggerSlideEvent (line 1367) | _triggerSlideEvent(relatedTarget, eventDirectionName) {
method _setActiveIndicatorElement (line 1380) | _setActiveIndicatorElement(element) {
method _updateInterval (line 1397) | _updateInterval() {
method _slide (line 1414) | _slide(directionOrOrder, element) {
method _directionToOrder (line 1498) | _directionToOrder(direction) {
method _orderToDirection (line 1510) | _orderToDirection(order) {
method carouselInterface (line 1523) | static carouselInterface(element, config) {
method jQueryInterface (line 1551) | static jQueryInterface(config) {
method dataApiClickHandler (line 1557) | static dataApiClickHandler(event) {
class Collapse (line 1651) | class Collapse extends BaseComponent {
method constructor (line 1652) | constructor(element, config) {
method Default (line 1683) | static get Default() {
method NAME (line 1687) | static get NAME() {
method toggle (line 1692) | toggle() {
method show (line 1700) | show() {
method hide (line 1773) | hide() {
method _isShown (line 1821) | _isShown(element = this._element) {
method _getConfig (line 1826) | _getConfig(config) {
method _getDimension (line 1838) | _getDimension() {
method _initializeChildren (line 1842) | _initializeChildren() {
method _addAriaAndCollapsedClass (line 1857) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
method jQueryInterface (line 1874) | static jQueryInterface(config) {
function getNodeName (line 1957) | function getNodeName(element) {
function getWindow (line 1961) | function getWindow(node) {
function isElement (line 1974) | function isElement(node) {
function isHTMLElement (line 1979) | function isHTMLElement(node) {
function isShadowRoot (line 1984) | function isShadowRoot(node) {
function applyStyles (line 1996) | function applyStyles(_ref) {
function effect$2 (line 2023) | function effect$2(_ref2) {
function getBasePlacement (line 2077) | function getBasePlacement(placement) {
function getBoundingClientRect (line 2082) | function getBoundingClientRect(element, includeScale) {
function getLayoutRect (line 2111) | function getLayoutRect(element) {
function contains (line 2134) | function contains(parent, child) {
function getComputedStyle$1 (line 2157) | function getComputedStyle$1(element) {
function isTableElement (line 2161) | function isTableElement(element) {
function getDocumentElement (line 2165) | function getDocumentElement(element) {
function getParentNode (line 2171) | function getParentNode(element) {
function getTrueOffsetParent (line 2188) | function getTrueOffsetParent(element) {
function getContainingBlock (line 2199) | function getContainingBlock(element) {
function getOffsetParent (line 2231) | function getOffsetParent(element) {
function getMainAxisFromPlacement (line 2246) | function getMainAxisFromPlacement(placement) {
function within (line 2254) | function within(min$1, value, max$1) {
function getFreshSideObject (line 2258) | function getFreshSideObject() {
function mergePaddingObject (line 2267) | function mergePaddingObject(paddingObject) {
function expandToHashMap (line 2271) | function expandToHashMap(value, keys) {
function arrow (line 2285) | function arrow(_ref) {
function effect$1 (line 2322) | function effect$1(_ref2) {
function roundOffsetsByDPR (line 2369) | function roundOffsetsByDPR(_ref) {
function mapToStyles (line 2380) | function mapToStyles(_ref2) {
function computeStyles (line 2449) | function computeStyles(_ref4) {
function effect (line 2502) | function effect(_ref) {
function getOppositePlacement (line 2552) | function getOppositePlacement(placement) {
function getOppositeVariationPlacement (line 2562) | function getOppositeVariationPlacement(placement) {
function getWindowScroll (line 2568) | function getWindowScroll(node) {
function getWindowScrollBarX (line 2578) | function getWindowScrollBarX(element) {
function getViewportRect (line 2589) | function getViewportRect(element) {
function getDocumentRect (line 2629) | function getDocumentRect(element) {
function isScrollParent (line 2652) | function isScrollParent(element) {
function getScrollParent (line 2662) | function getScrollParent(node) {
function listScrollParents (line 2682) | function listScrollParents(element, list) {
function rectToClientRect (line 2698) | function rectToClientRect(rect) {
function getInnerBoundingClientRect (line 2707) | function getInnerBoundingClientRect(element) {
function getClientRectFromMixedType (line 2720) | function getClientRectFromMixedType(element, clippingParent) {
function getClippingParents (line 2727) | function getClippingParents(element) {
function getClippingRect (line 2744) | function getClippingRect(element, boundary, rootBoundary) {
function getVariation (line 2763) | function getVariation(placement) {
function computeOffsets (line 2767) | function computeOffsets(_ref) {
function detectOverflow (line 2832) | function detectOverflow(state, options) {
function computeAutoPlacement (line 2887) | function computeAutoPlacement(state, options) {
function getExpandedFallbackPlacements (line 2927) | function getExpandedFallbackPlacements(placement) {
function flip (line 2936) | function flip(_ref) {
function getSideOffsets (line 3067) | function getSideOffsets(overflow, rect, preventedOffsets) {
function isAnySideFullyClipped (line 3083) | function isAnySideFullyClipped(overflow) {
function hide (line 3089) | function hide(_ref) {
function distanceAndSkiddingToXY (line 3126) | function distanceAndSkiddingToXY(placement, rects, offset) {
function offset (line 3147) | function offset(_ref2) {
function popperOffsets (line 3178) | function popperOffsets(_ref) {
function getAltAxis (line 3202) | function getAltAxis(axis) {
function preventOverflow (line 3206) | function preventOverflow(_ref) {
function getHTMLElementScroll (line 3318) | function getHTMLElementScroll(element) {
function getNodeScroll (line 3325) | function getNodeScroll(node) {
function isElementScaled (line 3333) | function isElementScaled(element) {
function getCompositeRect (line 3342) | function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
function order (line 3383) | function order(modifiers) {
function orderModifiers (line 3415) | function orderModifiers(modifiers) {
function debounce (line 3426) | function debounce(fn) {
function mergeByName (line 3442) | function mergeByName(modifiers) {
function areValidElements (line 3463) | function areValidElements() {
function popperGenerator (line 3473) | function popperGenerator(generatorOptions) {
class Dropdown (line 3769) | class Dropdown extends BaseComponent {
method constructor (line 3770) | constructor(element, config) {
method Default (line 3779) | static get Default() {
method DefaultType (line 3783) | static get DefaultType() {
method NAME (line 3787) | static get NAME() {
method toggle (line 3792) | toggle() {
method show (line 3796) | show() {
method hide (line 3837) | hide() {
method dispose (line 3849) | dispose() {
method update (line 3857) | update() {
method _completeHide (line 3866) | _completeHide(relatedTarget) {
method _getConfig (line 3893) | _getConfig(config) {
method _createPopper (line 3908) | _createPopper(parent) {
method _isShown (line 3933) | _isShown(element = this._element) {
method _getMenuElement (line 3937) | _getMenuElement() {
method _getPlacement (line 3941) | _getPlacement() {
method _detectNavbar (line 3962) | _detectNavbar() {
method _getOffset (line 3966) | _getOffset() {
method _getPopperConfig (line 3982) | _getPopperConfig() {
method _selectMenuItem (line 4010) | _selectMenuItem({
method jQueryInterface (line 4026) | static jQueryInterface(config) {
method clearMenus (line 4042) | static clearMenus(event) {
method getParentFromElement (line 4086) | static getParentFromElement(element) {
method dataApiKeydownHandler (line 4090) | static dataApiKeydownHandler(event) {
class ScrollBarHelper (line 4172) | class ScrollBarHelper {
method constructor (line 4173) | constructor() {
method getWidth (line 4177) | getWidth() {
method hide (line 4183) | hide() {
method _disableOverFlow (line 4197) | _disableOverFlow() {
method _setElementAttributes (line 4203) | _setElementAttributes(selector, styleProp, callback) {
method reset (line 4220) | reset() {
method _saveInitialAttribute (line 4230) | _saveInitialAttribute(element, styleProp) {
method _resetElementAttributes (line 4238) | _resetElementAttributes(selector, styleProp) {
method _applyManipulationCallback (line 4253) | _applyManipulationCallback(selector, callBack) {
method isOverflowing (line 4261) | isOverflowing() {
class Backdrop (line 4294) | class Backdrop {
method constructor (line 4295) | constructor(config) {
method show (line 4301) | show(callback) {
method hide (line 4320) | hide(callback) {
method _getElement (line 4335) | _getElement() {
method _getConfig (line 4350) | _getConfig(config) {
method _append (line 4360) | _append() {
method dispose (line 4373) | dispose() {
method _emulateAnimation (line 4385) | _emulateAnimation(callback) {
class FocusTrap (line 4415) | class FocusTrap {
method constructor (line 4416) | constructor(config) {
method activate (line 4422) | activate() {
method deactivate (line 4443) | deactivate() {
method _handleFocusin (line 4453) | _handleFocusin(event) {
method _handleKeydown (line 4476) | _handleKeydown(event) {
method _getConfig (line 4484) | _getConfig(config) {
class Modal (line 4545) | class Modal extends BaseComponent {
method constructor (line 4546) | constructor(element, config) {
method Default (line 4559) | static get Default() {
method NAME (line 4563) | static get NAME() {
method toggle (line 4568) | toggle(relatedTarget) {
method show (line 4572) | show(relatedTarget) {
method hide (line 4612) | hide() {
method dispose (line 4645) | dispose() {
method handleUpdate (line 4655) | handleUpdate() {
method _initializeBackDrop (line 4660) | _initializeBackDrop() {
method _initializeFocusTrap (line 4668) | _initializeFocusTrap() {
method _getConfig (line 4674) | _getConfig(config) {
method _showElement (line 4683) | _showElement(relatedTarget) {
method _setEscapeEvent (line 4727) | _setEscapeEvent() {
method _setResizeEvent (line 4742) | _setResizeEvent() {
method _hideModal (line 4750) | _hideModal() {
method _showBackdrop (line 4772) | _showBackdrop(callback) {
method _isAnimated (line 4793) | _isAnimated() {
method _triggerBackdropTransition (line 4797) | _triggerBackdropTransition() {
method _adjustDialog (line 4837) | _adjustDialog() {
method _resetAdjustments (line 4853) | _resetAdjustments() {
method jQueryInterface (line 4859) | static jQueryInterface(config, relatedTarget) {
class Offcanvas (line 4959) | class Offcanvas extends BaseComponent {
method constructor (line 4960) | constructor(element, config) {
method NAME (line 4971) | static get NAME() {
method Default (line 4975) | static get Default() {
method toggle (line 4980) | toggle(relatedTarget) {
method show (line 4984) | show(relatedTarget) {
method hide (line 5027) | hide() {
method dispose (line 5067) | dispose() {
method _getConfig (line 5076) | _getConfig(config) {
method _initializeBackDrop (line 5085) | _initializeBackDrop() {
method _initializeFocusTrap (line 5095) | _initializeFocusTrap() {
method _addEventListeners (line 5101) | _addEventListeners() {
method jQueryInterface (line 5110) | static jQueryInterface(config) {
function sanitizeHtml (line 5249) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
class Tooltip (line 5376) | class Tooltip extends BaseComponent {
method constructor (line 5377) | constructor(element, config) {
method Default (line 5397) | static get Default() {
method NAME (line 5401) | static get NAME() {
method Event (line 5405) | static get Event() {
method DefaultType (line 5409) | static get DefaultType() {
method enable (line 5414) | enable() {
method disable (line 5418) | disable() {
method toggleEnabled (line 5422) | toggleEnabled() {
method toggle (line 5426) | toggle(event) {
method dispose (line 5452) | dispose() {
method show (line 5467) | show() {
method hide (line 5549) | hide() {
method update (line 5601) | update() {
method isWithContent (line 5608) | isWithContent() {
method getTipElement (line 5612) | getTipElement() {
method setContent (line 5626) | setContent(tip) {
method _sanitizeAndSetContent (line 5630) | _sanitizeAndSetContent(template, content, selector) {
method setElementContent (line 5642) | setElementContent(element, content) {
method getTitle (line 5673) | getTitle() {
method updateAttachment (line 5679) | updateAttachment(attachment) {
method _initializeOnDelegatedTarget (line 5692) | _initializeOnDelegatedTarget(event, context) {
method _getOffset (line 5696) | _getOffset() {
method _resolvePossibleFunction (line 5712) | _resolvePossibleFunction(content) {
method _getPopperConfig (line 5716) | _getPopperConfig(attachment) {
method _addAttachmentClass (line 5756) | _addAttachmentClass(attachment) {
method _getAttachment (line 5760) | _getAttachment(placement) {
method _setListeners (line 5764) | _setListeners() {
method _fixTitle (line 5796) | _fixTitle() {
method _enter (line 5812) | _enter(event, context) {
method _leave (line 5839) | _leave(event, context) {
method _isWithActiveTrigger (line 5865) | _isWithActiveTrigger() {
method _getConfig (line 5875) | _getConfig(config) {
method _getDelegateConfig (line 5912) | _getDelegateConfig() {
method _cleanTipClass (line 5927) | _cleanTipClass() {
method _getBasicClassPrefix (line 5937) | _getBasicClassPrefix() {
method _handlePopperPlacementChange (line 5941) | _handlePopperPlacementChange(popperData) {
method jQueryInterface (line 5958) | static jQueryInterface(config) {
class Popover (line 6029) | class Popover extends Tooltip {
method Default (line 6031) | static get Default() {
method NAME (line 6035) | static get NAME() {
method Event (line 6039) | static get Event() {
method DefaultType (line 6043) | static get DefaultType() {
method isWithContent (line 6048) | isWithContent() {
method setContent (line 6052) | setContent(tip) {
method _getContent (line 6059) | _getContent() {
method _getBasicClassPrefix (line 6063) | _getBasicClassPrefix() {
method jQueryInterface (line 6068) | static jQueryInterface(config) {
class ScrollSpy (line 6140) | class ScrollSpy extends BaseComponent {
method constructor (line 6141) | constructor(element, config) {
method Default (line 6156) | static get Default() {
method NAME (line 6160) | static get NAME() {
method refresh (line 6165) | refresh() {
method dispose (line 6193) | dispose() {
method _getConfig (line 6199) | _getConfig(config) {
method _getScrollTop (line 6209) | _getScrollTop() {
method _getScrollHeight (line 6213) | _getScrollHeight() {
method _getOffsetHeight (line 6217) | _getOffsetHeight() {
method _process (line 6221) | _process() {
method _activate (line 6259) | _activate(target) {
method _clear (line 6287) | _clear() {
method jQueryInterface (line 6292) | static jQueryInterface(config) {
class Tab (line 6366) | class Tab extends BaseComponent {
method NAME (line 6368) | static get NAME() {
method show (line 6373) | show() {
method _activate (line 6419) | _activate(element, container, callback) {
method _transitionComplete (line 6435) | _transitionComplete(element, active, callback) {
method jQueryInterface (line 6483) | static jQueryInterface(config) {
class Toast (line 6570) | class Toast extends BaseComponent {
method constructor (line 6571) | constructor(element, config) {
method DefaultType (line 6582) | static get DefaultType() {
method Default (line 6586) | static get Default() {
method NAME (line 6590) | static get NAME() {
method show (line 6595) | show() {
method hide (line 6628) | hide() {
method dispose (line 6655) | dispose() {
method _getConfig (line 6666) | _getConfig(config) {
method _maybeScheduleHide (line 6675) | _maybeScheduleHide() {
method _onInteraction (line 6689) | _onInteraction(event, isInteracting) {
method _setListeners (line 6717) | _setListeners() {
method _clearTimeout (line 6724) | _clearTimeout() {
method jQueryInterface (line 6730) | static jQueryInterface(config) {
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js
constant MAX_UID (line 14) | const MAX_UID = 1000000;
constant MILLISECONDS_MULTIPLIER (line 15) | const MILLISECONDS_MULTIPLIER = 1000;
constant TRANSITION_END (line 16) | const TRANSITION_END = 'transitionend';
function getUidEvent (line 349) | function getUidEvent(element, uid) {
function getEvent (line 353) | function getEvent(element) {
function bootstrapHandler (line 360) | function bootstrapHandler(element, fn) {
function bootstrapDelegationHandler (line 372) | function bootstrapDelegationHandler(element, selector, fn) {
function findHandler (line 398) | function findHandler(events, handler, delegationSelector = null) {
function normalizeParams (line 412) | function normalizeParams(originalTypeEvent, handler, delegationFn) {
function addHandler (line 425) | function addHandler(element, originalTypeEvent, handler, delegationFn, o...
function removeHandler (line 473) | function removeHandler(element, events, typeEvent, handler, delegationSe...
function removeNamespacedHandlers (line 484) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
function getTypeEvent (line 494) | function getTypeEvent(event) {
method on (line 501) | on(element, event, handler, delegationFn) {
method one (line 505) | one(element, event, handler, delegationFn) {
method off (line 509) | off(element, originalTypeEvent, handler, delegationFn) {
method trigger (line 546) | trigger(element, event, args) {
method set (line 622) | set(element, key, instance) {
method get (line 639) | get(element, key) {
method remove (line 647) | remove(element, key) {
constant VERSION (line 674) | const VERSION = '5.1.0';
class BaseComponent (line 676) | class BaseComponent {
method constructor (line 677) | constructor(element) {
method dispose (line 688) | dispose() {
method _queueCallback (line 696) | _queueCallback(callback, element, isAnimated = true) {
method getInstance (line 702) | static getInstance(element) {
method getOrCreateInstance (line 706) | static getOrCreateInstance(element, config = {}) {
method VERSION (line 710) | static get VERSION() {
method NAME (line 714) | static get NAME() {
method DATA_KEY (line 718) | static get DATA_KEY() {
method EVENT_KEY (line 722) | static get EVENT_KEY() {
constant EVENT_CLOSE (line 769) | const EVENT_CLOSE = `close${EVENT_KEY$c}`;
constant EVENT_CLOSED (line 770) | const EVENT_CLOSED = `closed${EVENT_KEY$c}`;
class Alert (line 779) | class Alert extends BaseComponent {
method NAME (line 781) | static get NAME() {
method close (line 786) | close() {
method _destroyElement (line 801) | _destroyElement() {
method jQueryInterface (line 809) | static jQueryInterface(config) {
class Button (line 868) | class Button extends BaseComponent {
method NAME (line 870) | static get NAME() {
method toggle (line 875) | toggle() {
method jQueryInterface (line 881) | static jQueryInterface(config) {
function normalizeData (line 920) | function normalizeData(val) {
function normalizeDataKey (line 940) | function normalizeDataKey(key) {
method setDataAttribute (line 945) | setDataAttribute(element, key, value) {
method removeDataAttribute (line 949) | removeDataAttribute(element, key) {
method getDataAttributes (line 953) | getDataAttributes(element) {
method getDataAttribute (line 967) | getDataAttribute(element, key) {
method offset (line 971) | offset(element) {
method position (line 979) | position(element) {
constant NODE_TEXT (line 994) | const NODE_TEXT = 3;
method find (line 996) | find(selector, element = document.documentElement) {
method findOne (line 1000) | findOne(selector, element = document.documentElement) {
method children (line 1004) | children(element, selector) {
method parents (line 1008) | parents(element, selector) {
method prev (line 1023) | prev(element, selector) {
method next (line 1037) | next(element, selector) {
method focusableChildren (line 1051) | focusableChildren(element) {
constant ARROW_LEFT_KEY (line 1074) | const ARROW_LEFT_KEY = 'ArrowLeft';
constant ARROW_RIGHT_KEY (line 1075) | const ARROW_RIGHT_KEY = 'ArrowRight';
constant TOUCHEVENT_COMPAT_WAIT (line 1076) | const TOUCHEVENT_COMPAT_WAIT = 500;
constant SWIPE_THRESHOLD (line 1078) | const SWIPE_THRESHOLD = 40;
constant ORDER_NEXT (line 1095) | const ORDER_NEXT = 'next';
constant ORDER_PREV (line 1096) | const ORDER_PREV = 'prev';
constant DIRECTION_LEFT (line 1097) | const DIRECTION_LEFT = 'left';
constant DIRECTION_RIGHT (line 1098) | const DIRECTION_RIGHT = 'right';
constant KEY_TO_DIRECTION (line 1099) | const KEY_TO_DIRECTION = {
constant EVENT_SLIDE (line 1103) | const EVENT_SLIDE = `slide${EVENT_KEY$a}`;
constant EVENT_SLID (line 1104) | const EVENT_SLID = `slid${EVENT_KEY$a}`;
constant EVENT_KEYDOWN (line 1105) | const EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`;
constant EVENT_MOUSEENTER (line 1106) | const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`;
constant EVENT_MOUSELEAVE (line 1107) | const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`;
constant EVENT_TOUCHSTART (line 1108) | const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`;
constant EVENT_TOUCHMOVE (line 1109) | const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`;
constant EVENT_TOUCHEND (line 1110) | const EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`;
constant EVENT_POINTERDOWN (line 1111) | const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`;
constant EVENT_POINTERUP (line 1112) | const EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`;
constant EVENT_DRAG_START (line 1113) | const EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`;
constant CLASS_NAME_CAROUSEL (line 1116) | const CLASS_NAME_CAROUSEL = 'carousel';
constant CLASS_NAME_SLIDE (line 1118) | const CLASS_NAME_SLIDE = 'slide';
constant CLASS_NAME_END (line 1119) | const CLASS_NAME_END = 'carousel-item-end';
constant CLASS_NAME_START (line 1120) | const CLASS_NAME_START = 'carousel-item-start';
constant CLASS_NAME_NEXT (line 1121) | const CLASS_NAME_NEXT = 'carousel-item-next';
constant CLASS_NAME_PREV (line 1122) | const CLASS_NAME_PREV = 'carousel-item-prev';
constant CLASS_NAME_POINTER_EVENT (line 1123) | const CLASS_NAME_POINTER_EVENT = 'pointer-event';
constant SELECTOR_ACTIVE_ITEM (line 1125) | const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
constant SELECTOR_ITEM (line 1126) | const SELECTOR_ITEM = '.carousel-item';
constant SELECTOR_ITEM_IMG (line 1127) | const SELECTOR_ITEM_IMG = '.carousel-item img';
constant SELECTOR_NEXT_PREV (line 1128) | const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
constant SELECTOR_INDICATORS (line 1129) | const SELECTOR_INDICATORS = '.carousel-indicators';
constant SELECTOR_INDICATOR (line 1130) | const SELECTOR_INDICATOR = '[data-bs-target]';
constant SELECTOR_DATA_SLIDE (line 1131) | const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
constant SELECTOR_DATA_RIDE (line 1132) | const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
constant POINTER_TYPE_TOUCH (line 1133) | const POINTER_TYPE_TOUCH = 'touch';
constant POINTER_TYPE_PEN (line 1134) | const POINTER_TYPE_PEN = 'pen';
class Carousel (line 1141) | class Carousel extends BaseComponent {
method constructor (line 1142) | constructor(element, config) {
method Default (line 1161) | static get Default() {
method NAME (line 1165) | static get NAME() {
method next (line 1170) | next() {
method nextWhenVisible (line 1174) | nextWhenVisible() {
method prev (line 1182) | prev() {
method pause (line 1186) | pause(event) {
method cycle (line 1200) | cycle(event) {
method to (line 1217) | to(index) {
method _getConfig (line 1243) | _getConfig(config) {
method _handleSwipe (line 1252) | _handleSwipe() {
method _addEventListeners (line 1269) | _addEventListeners() {
method _addTouchEventListeners (line 1284) | _addTouchEventListeners() {
method _keydown (line 1339) | _keydown(event) {
method _getItemIndex (line 1353) | _getItemIndex(element) {
method _getItemByOrder (line 1358) | _getItemByOrder(order, activeElement) {
method _triggerSlideEvent (line 1363) | _triggerSlideEvent(relatedTarget, eventDirectionName) {
method _setActiveIndicatorElement (line 1376) | _setActiveIndicatorElement(element) {
method _updateInterval (line 1393) | _updateInterval() {
method _slide (line 1410) | _slide(directionOrOrder, element) {
method _directionToOrder (line 1494) | _directionToOrder(direction) {
method _orderToDirection (line 1506) | _orderToDirection(order) {
method carouselInterface (line 1519) | static carouselInterface(element, config) {
method jQueryInterface (line 1547) | static jQueryInterface(config) {
method dataApiClickHandler (line 1553) | static dataApiClickHandler(event) {
constant CLASS_NAME_COLLAPSE (line 1633) | const CLASS_NAME_COLLAPSE = 'collapse';
constant CLASS_NAME_COLLAPSING (line 1634) | const CLASS_NAME_COLLAPSING = 'collapsing';
constant CLASS_NAME_COLLAPSED (line 1635) | const CLASS_NAME_COLLAPSED = 'collapsed';
constant CLASS_NAME_HORIZONTAL (line 1636) | const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
constant WIDTH (line 1637) | const WIDTH = 'width';
constant HEIGHT (line 1638) | const HEIGHT = 'height';
constant SELECTOR_ACTIVES (line 1639) | const SELECTOR_ACTIVES = '.show, .collapsing';
class Collapse (line 1647) | class Collapse extends BaseComponent {
method constructor (line 1648) | constructor(element, config) {
method Default (line 1679) | static get Default() {
method NAME (line 1683) | static get NAME() {
method toggle (line 1688) | toggle() {
method show (line 1696) | show() {
method hide (line 1769) | hide() {
method _isShown (line 1817) | _isShown(element = this._element) {
method _getConfig (line 1822) | _getConfig(config) {
method _getDimension (line 1834) | _getDimension() {
method _initializeChildren (line 1838) | _initializeChildren() {
method _addAriaAndCollapsedClass (line 1853) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
method jQueryInterface (line 1870) | static jQueryInterface(config) {
constant SPACE_KEY (line 1938) | const SPACE_KEY = 'Space';
constant ARROW_UP_KEY (line 1940) | const ARROW_UP_KEY = 'ArrowUp';
constant ARROW_DOWN_KEY (line 1941) | const ARROW_DOWN_KEY = 'ArrowDown';
constant RIGHT_MOUSE_BUTTON (line 1942) | const RIGHT_MOUSE_BUTTON = 2;
constant REGEXP_KEYDOWN (line 1944) | const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${E...
constant EVENT_KEYDOWN_DATA_API (line 1950) | const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`;
constant EVENT_KEYUP_DATA_API (line 1951) | const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`;
constant CLASS_NAME_DROPUP (line 1953) | const CLASS_NAME_DROPUP = 'dropup';
constant CLASS_NAME_DROPEND (line 1954) | const CLASS_NAME_DROPEND = 'dropend';
constant CLASS_NAME_DROPSTART (line 1955) | const CLASS_NAME_DROPSTART = 'dropstart';
constant CLASS_NAME_NAVBAR (line 1956) | const CLASS_NAME_NAVBAR = 'navbar';
constant SELECTOR_MENU (line 1958) | const SELECTOR_MENU = '.dropdown-menu';
constant SELECTOR_NAVBAR_NAV (line 1959) | const SELECTOR_NAVBAR_NAV = '.navbar-nav';
constant SELECTOR_VISIBLE_ITEMS (line 1960) | const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disab...
constant PLACEMENT_TOP (line 1961) | const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
constant PLACEMENT_TOPEND (line 1962) | const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
constant PLACEMENT_BOTTOM (line 1963) | const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
constant PLACEMENT_BOTTOMEND (line 1964) | const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
constant PLACEMENT_RIGHT (line 1965) | const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
constant PLACEMENT_LEFT (line 1966) | const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
class Dropdown (line 1989) | class Dropdown extends BaseComponent {
method constructor (line 1990) | constructor(element, config) {
method Default (line 1999) | static get Default() {
method DefaultType (line 2003) | static get DefaultType() {
method NAME (line 2007) | static get NAME() {
method toggle (line 2012) | toggle() {
method show (line 2016) | show() {
method hide (line 2057) | hide() {
method dispose (line 2069) | dispose() {
method update (line 2077) | update() {
method _completeHide (line 2086) | _completeHide(relatedTarget) {
method _getConfig (line 2113) | _getConfig(config) {
method _createPopper (line 2128) | _createPopper(parent) {
method _isShown (line 2153) | _isShown(element = this._element) {
method _getMenuElement (line 2157) | _getMenuElement() {
method _getPlacement (line 2161) | _getPlacement() {
method _detectNavbar (line 2182) | _detectNavbar() {
method _getOffset (line 2186) | _getOffset() {
method _getPopperConfig (line 2202) | _getPopperConfig() {
method _selectMenuItem (line 2230) | _selectMenuItem({
method jQueryInterface (line 2246) | static jQueryInterface(config) {
method clearMenus (line 2262) | static clearMenus(event) {
method getParentFromElement (line 2306) | static getParentFromElement(element) {
method dataApiKeydownHandler (line 2310) | static dataApiKeydownHandler(event) {
constant SELECTOR_FIXED_CONTENT (line 2389) | const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .s...
constant SELECTOR_STICKY_CONTENT (line 2390) | const SELECTOR_STICKY_CONTENT = '.sticky-top';
class ScrollBarHelper (line 2392) | class ScrollBarHelper {
method constructor (line 2393) | constructor() {
method getWidth (line 2397) | getWidth() {
method hide (line 2403) | hide() {
method _disableOverFlow (line 2417) | _disableOverFlow() {
method _setElementAttributes (line 2423) | _setElementAttributes(selector, styleProp, callback) {
method reset (line 2440) | reset() {
method _saveInitialAttribute (line 2450) | _saveInitialAttribute(element, styleProp) {
method _resetElementAttributes (line 2458) | _resetElementAttributes(selector, styleProp) {
method _applyManipulationCallback (line 2473) | _applyManipulationCallback(selector, callBack) {
method isOverflowing (line 2481) | isOverflowing() {
constant EVENT_MOUSEDOWN (line 2512) | const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`;
class Backdrop (line 2514) | class Backdrop {
method constructor (line 2515) | constructor(config) {
method show (line 2521) | show(callback) {
method hide (line 2540) | hide(callback) {
method _getElement (line 2555) | _getElement() {
method _getConfig (line 2570) | _getConfig(config) {
method _append (line 2580) | _append() {
method dispose (line 2593) | dispose() {
method _emulateAnimation (line 2605) | _emulateAnimation(callback) {
constant EVENT_KEYDOWN_TAB (line 2630) | const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`;
constant TAB_KEY (line 2631) | const TAB_KEY = 'Tab';
constant TAB_NAV_FORWARD (line 2632) | const TAB_NAV_FORWARD = 'forward';
constant TAB_NAV_BACKWARD (line 2633) | const TAB_NAV_BACKWARD = 'backward';
class FocusTrap (line 2635) | class FocusTrap {
method constructor (line 2636) | constructor(config) {
method activate (line 2642) | activate() {
method deactivate (line 2663) | deactivate() {
method _handleFocusin (line 2673) | _handleFocusin(event) {
method _handleKeydown (line 2696) | _handleKeydown(event) {
method _getConfig (line 2704) | _getConfig(config) {
constant EVENT_HIDE_PREVENTED (line 2742) | const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;
constant EVENT_RESIZE (line 2746) | const EVENT_RESIZE = `resize${EVENT_KEY$6}`;
constant EVENT_CLICK_DISMISS (line 2747) | const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`;
constant EVENT_MOUSEUP_DISMISS (line 2749) | const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;
constant EVENT_MOUSEDOWN_DISMISS (line 2750) | const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;
constant CLASS_NAME_OPEN (line 2752) | const CLASS_NAME_OPEN = 'modal-open';
constant CLASS_NAME_STATIC (line 2755) | const CLASS_NAME_STATIC = 'modal-static';
constant SELECTOR_DIALOG (line 2756) | const SELECTOR_DIALOG = '.modal-dialog';
constant SELECTOR_MODAL_BODY (line 2757) | const SELECTOR_MODAL_BODY = '.modal-body';
class Modal (line 2765) | class Modal extends BaseComponent {
method constructor (line 2766) | constructor(element, config) {
method Default (line 2779) | static get Default() {
method NAME (line 2783) | static get NAME() {
method toggle (line 2788) | toggle(relatedTarget) {
method show (line 2792) | show(relatedTarget) {
method hide (line 2832) | hide() {
method dispose (line 2865) | dispose() {
method handleUpdate (line 2875) | handleUpdate() {
method _initializeBackDrop (line 2880) | _initializeBackDrop() {
method _initializeFocusTrap (line 2888) | _initializeFocusTrap() {
method _getConfig (line 2894) | _getConfig(config) {
method _showElement (line 2903) | _showElement(relatedTarget) {
method _setEscapeEvent (line 2947) | _setEscapeEvent() {
method _setResizeEvent (line 2962) | _setResizeEvent() {
method _hideModal (line 2970) | _hideModal() {
method _showBackdrop (line 2992) | _showBackdrop(callback) {
method _isAnimated (line 3013) | _isAnimated() {
method _triggerBackdropTransition (line 3017) | _triggerBackdropTransition() {
method _adjustDialog (line 3057) | _adjustDialog() {
method _resetAdjustments (line 3073) | _resetAdjustments() {
method jQueryInterface (line 3079) | static jQueryInterface(config, relatedTarget) {
constant ESCAPE_KEY (line 3152) | const ESCAPE_KEY = 'Escape';
constant CLASS_NAME_BACKDROP (line 3164) | const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
constant OPEN_SELECTOR (line 3165) | const OPEN_SELECTOR = '.offcanvas.show';
constant EVENT_KEYDOWN_DISMISS (line 3171) | const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;
class Offcanvas (line 3179) | class Offcanvas extends BaseComponent {
method constructor (line 3180) | constructor(element, config) {
method NAME (line 3191) | static get NAME() {
method Default (line 3195) | static get Default() {
method toggle (line 3200) | toggle(relatedTarget) {
method show (line 3204) | show(relatedTarget) {
method hide (line 3247) | hide() {
method dispose (line 3287) | dispose() {
method _getConfig (line 3296) | _getConfig(config) {
method _initializeBackDrop (line 3305) | _initializeBackDrop() {
method _initializeFocusTrap (line 3315) | _initializeFocusTrap() {
method _addEventListeners (line 3321) | _addEventListeners() {
method jQueryInterface (line 3330) | static jQueryInterface(config) {
constant ARIA_ATTRIBUTE_PATTERN (line 3398) | const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
constant SAFE_URL_PATTERN (line 3405) | const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(...
constant DATA_URL_PATTERN (line 3412) | const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|w...
function sanitizeHtml (line 3469) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
constant DISALLOWED_ATTRIBUTES (line 3520) | const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitiz...
constant CLASS_NAME_MODAL (line 3579) | const CLASS_NAME_MODAL = 'modal';
constant HOVER_STATE_SHOW (line 3581) | const HOVER_STATE_SHOW = 'show';
constant HOVER_STATE_OUT (line 3582) | const HOVER_STATE_OUT = 'out';
constant SELECTOR_TOOLTIP_INNER (line 3583) | const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
constant SELECTOR_MODAL (line 3584) | const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
constant EVENT_MODAL_HIDE (line 3585) | const EVENT_MODAL_HIDE = 'hide.bs.modal';
constant TRIGGER_HOVER (line 3586) | const TRIGGER_HOVER = 'hover';
constant TRIGGER_FOCUS (line 3587) | const TRIGGER_FOCUS = 'focus';
constant TRIGGER_CLICK (line 3588) | const TRIGGER_CLICK = 'click';
constant TRIGGER_MANUAL (line 3589) | const TRIGGER_MANUAL = 'manual';
class Tooltip (line 3596) | class Tooltip extends BaseComponent {
method constructor (line 3597) | constructor(element, config) {
method Default (line 3617) | static get Default() {
method NAME (line 3621) | static get NAME() {
method Event (line 3625) | static get Event() {
method DefaultType (line 3629) | static get DefaultType() {
method enable (line 3634) | enable() {
method disable (line 3638) | disable() {
method toggleEnabled (line 3642) | toggleEnabled() {
method toggle (line 3646) | toggle(event) {
method dispose (line 3672) | dispose() {
method show (line 3687) | show() {
method hide (line 3769) | hide() {
method update (line 3821) | update() {
method isWithContent (line 3828) | isWithContent() {
method getTipElement (line 3832) | getTipElement() {
method setContent (line 3846) | setContent(tip) {
method _sanitizeAndSetContent (line 3850) | _sanitizeAndSetContent(template, content, selector) {
method setElementContent (line 3862) | setElementContent(element, content) {
method getTitle (line 3893) | getTitle() {
method updateAttachment (line 3899) | updateAttachment(attachment) {
method _initializeOnDelegatedTarget (line 3912) | _initializeOnDelegatedTarget(event, context) {
method _getOffset (line 3916) | _getOffset() {
method _resolvePossibleFunction (line 3932) | _resolvePossibleFunction(content) {
method _getPopperConfig (line 3936) | _getPopperConfig(attachment) {
method _addAttachmentClass (line 3976) | _addAttachmentClass(attachment) {
method _getAttachment (line 3980) | _getAttachment(placement) {
method _setListeners (line 3984) | _setListeners() {
method _fixTitle (line 4016) | _fixTitle() {
method _enter (line 4032) | _enter(event, context) {
method _leave (line 4059) | _leave(event, context) {
method _isWithActiveTrigger (line 4085) | _isWithActiveTrigger() {
method _getConfig (line 4095) | _getConfig(config) {
method _getDelegateConfig (line 4132) | _getDelegateConfig() {
method _cleanTipClass (line 4147) | _cleanTipClass() {
method _getBasicClassPrefix (line 4157) | _getBasicClassPrefix() {
method _handlePopperPlacementChange (line 4161) | _handlePopperPlacementChange(popperData) {
method jQueryInterface (line 4178) | static jQueryInterface(config) {
constant CLASS_PREFIX (line 4218) | const CLASS_PREFIX = 'bs-popover';
constant SELECTOR_TITLE (line 4241) | const SELECTOR_TITLE = '.popover-header';
constant SELECTOR_CONTENT (line 4242) | const SELECTOR_CONTENT = '.popover-body';
class Popover (line 4249) | class Popover extends Tooltip {
method Default (line 4251) | static get Default() {
method NAME (line 4255) | static get NAME() {
method Event (line 4259) | static get Event() {
method DefaultType (line 4263) | static get DefaultType() {
method isWithContent (line 4268) | isWithContent() {
method setContent (line 4272) | setContent(tip) {
method _getContent (line 4279) | _getContent() {
method _getBasicClassPrefix (line 4283) | _getBasicClassPrefix() {
method jQueryInterface (line 4288) | static jQueryInterface(config) {
constant EVENT_ACTIVATE (line 4339) | const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
constant EVENT_SCROLL (line 4340) | const EVENT_SCROLL = `scroll${EVENT_KEY$2}`;
constant EVENT_LOAD_DATA_API (line 4341) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;
constant CLASS_NAME_DROPDOWN_ITEM (line 4342) | const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
constant SELECTOR_DATA_SPY (line 4344) | const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
constant SELECTOR_NAV_LINKS (line 4346) | const SELECTOR_NAV_LINKS = '.nav-link';
constant SELECTOR_NAV_ITEMS (line 4347) | const SELECTOR_NAV_ITEMS = '.nav-item';
constant SELECTOR_LIST_ITEMS (line 4348) | const SELECTOR_LIST_ITEMS = '.list-group-item';
constant SELECTOR_LINK_ITEMS (line 4349) | const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEM...
constant METHOD_OFFSET (line 4352) | const METHOD_OFFSET = 'offset';
constant METHOD_POSITION (line 4353) | const METHOD_POSITION = 'position';
class ScrollSpy (line 4360) | class ScrollSpy extends BaseComponent {
method constructor (line 4361) | constructor(element, config) {
method Default (line 4376) | static get Default() {
method NAME (line 4380) | static get NAME() {
method refresh (line 4385) | refresh() {
method dispose (line 4413) | dispose() {
method _getConfig (line 4419) | _getConfig(config) {
method _getScrollTop (line 4429) | _getScrollTop() {
method _getScrollHeight (line 4433) | _getScrollHeight() {
method _getOffsetHeight (line 4437) | _getOffsetHeight() {
method _process (line 4441) | _process() {
method _activate (line 4479) | _activate(target) {
method _clear (line 4507) | _clear() {
method jQueryInterface (line 4512) | static jQueryInterface(config) {
constant DATA_API_KEY (line 4563) | const DATA_API_KEY = '.data-api';
constant EVENT_CLICK_DATA_API (line 4568) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;
constant CLASS_NAME_DROPDOWN_MENU (line 4569) | const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
constant CLASS_NAME_ACTIVE (line 4570) | const CLASS_NAME_ACTIVE = 'active';
constant SELECTOR_DROPDOWN (line 4573) | const SELECTOR_DROPDOWN = '.dropdown';
constant SELECTOR_NAV_LIST_GROUP (line 4574) | const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
constant SELECTOR_ACTIVE (line 4575) | const SELECTOR_ACTIVE = '.active';
constant SELECTOR_ACTIVE_UL (line 4576) | const SELECTOR_ACTIVE_UL = ':scope > li > .active';
constant SELECTOR_DATA_TOGGLE (line 4577) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="p...
constant SELECTOR_DROPDOWN_TOGGLE (line 4578) | const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
constant SELECTOR_DROPDOWN_ACTIVE_CHILD (line 4579) | const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
class Tab (line 4586) | class Tab extends BaseComponent {
method NAME (line 4588) | static get NAME() {
method show (line 4593) | show() {
method _activate (line 4639) | _activate(element, container, callback) {
method _transitionComplete (line 4655) | _transitionComplete(element, active, callback) {
method jQueryInterface (line 4703) | static jQueryInterface(config) {
constant NAME (line 4758) | const NAME = 'toast';
constant DATA_KEY (line 4759) | const DATA_KEY = 'bs.toast';
constant EVENT_KEY (line 4760) | const EVENT_KEY = `.${DATA_KEY}`;
constant EVENT_MOUSEOVER (line 4761) | const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
constant EVENT_MOUSEOUT (line 4762) | const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
constant EVENT_FOCUSIN (line 4763) | const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
constant EVENT_FOCUSOUT (line 4764) | const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
constant EVENT_HIDE (line 4765) | const EVENT_HIDE = `hide${EVENT_KEY}`;
constant EVENT_HIDDEN (line 4766) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
constant EVENT_SHOW (line 4767) | const EVENT_SHOW = `show${EVENT_KEY}`;
constant EVENT_SHOWN (line 4768) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
constant CLASS_NAME_FADE (line 4769) | const CLASS_NAME_FADE = 'fade';
constant CLASS_NAME_HIDE (line 4770) | const CLASS_NAME_HIDE = 'hide';
constant CLASS_NAME_SHOW (line 4772) | const CLASS_NAME_SHOW = 'show';
constant CLASS_NAME_SHOWING (line 4773) | const CLASS_NAME_SHOWING = 'showing';
class Toast (line 4790) | class Toast extends BaseComponent {
method constructor (line 4791) | constructor(element, config) {
method DefaultType (line 4802) | static get DefaultType() {
method Default (line 4806) | static get Default() {
method NAME (line 4810) | static get NAME() {
method show (line 4815) | show() {
method hide (line 4848) | hide() {
method dispose (line 4875) | dispose() {
method _getConfig (line 4886) | _getConfig(config) {
method _maybeScheduleHide (line 4895) | _maybeScheduleHide() {
method _onInteraction (line 4909) | _onInteraction(event, isInteracting) {
method _setListeners (line 4937) | _setListeners() {
method _clearTimeout (line 4944) | _clearTimeout() {
method jQueryInterface (line 4950) | static jQueryInterface(config) {
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/js/bootstrap.js
function _interopNamespace (line 12) | function _interopNamespace(e) {
function getUidEvent (line 375) | function getUidEvent(element, uid) {
function getEvent (line 379) | function getEvent(element) {
function bootstrapHandler (line 386) | function bootstrapHandler(element, fn) {
function bootstrapDelegationHandler (line 398) | function bootstrapDelegationHandler(element, selector, fn) {
function findHandler (line 424) | function findHandler(events, handler, delegationSelector = null) {
function normalizeParams (line 438) | function normalizeParams(originalTypeEvent, handler, delegationFn) {
function addHandler (line 451) | function addHandler(element, originalTypeEvent, handler, delegationFn, o...
function removeHandler (line 499) | function removeHandler(element, events, typeEvent, handler, delegationSe...
function removeNamespacedHandlers (line 510) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
function getTypeEvent (line 520) | function getTypeEvent(event) {
method on (line 527) | on(element, event, handler, delegationFn) {
method one (line 531) | one(element, event, handler, delegationFn) {
method off (line 535) | off(element, originalTypeEvent, handler, delegationFn) {
method trigger (line 572) | trigger(element, event, args) {
method set (line 648) | set(element, key, instance) {
method get (line 665) | get(element, key) {
method remove (line 673) | remove(element, key) {
class BaseComponent (line 702) | class BaseComponent {
method constructor (line 703) | constructor(element) {
method dispose (line 714) | dispose() {
method _queueCallback (line 722) | _queueCallback(callback, element, isAnimated = true) {
method getInstance (line 728) | static getInstance(element) {
method getOrCreateInstance (line 732) | static getOrCreateInstance(element, config = {}) {
method VERSION (line 736) | static get VERSION() {
method NAME (line 740) | static get NAME() {
method DATA_KEY (line 744) | static get DATA_KEY() {
method EVENT_KEY (line 748) | static get EVENT_KEY() {
class Alert (line 805) | class Alert extends BaseComponent {
method NAME (line 807) | static get NAME() {
method close (line 812) | close() {
method _destroyElement (line 827) | _destroyElement() {
method jQueryInterface (line 835) | static jQueryInterface(config) {
class Button (line 894) | class Button extends BaseComponent {
method NAME (line 896) | static get NAME() {
method toggle (line 901) | toggle() {
method jQueryInterface (line 907) | static jQueryInterface(config) {
function normalizeData (line 946) | function normalizeData(val) {
function normalizeDataKey (line 966) | function normalizeDataKey(key) {
method setDataAttribute (line 971) | setDataAttribute(element, key, value) {
method removeDataAttribute (line 975) | removeDataAttribute(element, key) {
method getDataAttributes (line 979) | getDataAttributes(element) {
method getDataAttribute (line 993) | getDataAttribute(element, key) {
method offset (line 997) | offset(element) {
method position (line 1005) | position(element) {
method find (line 1022) | find(selector, element = document.documentElement) {
method findOne (line 1026) | findOne(selector, element = document.documentElement) {
method children (line 1030) | children(element, selector) {
method parents (line 1034) | parents(element, selector) {
method prev (line 1049) | prev(element, selector) {
method next (line 1063) | next(element, selector) {
method focusableChildren (line 1077) | focusableChildren(element) {
class Carousel (line 1167) | class Carousel extends BaseComponent {
method constructor (line 1168) | constructor(element, config) {
method Default (line 1187) | static get Default() {
method NAME (line 1191) | static get NAME() {
method next (line 1196) | next() {
method nextWhenVisible (line 1200) | nextWhenVisible() {
method prev (line 1208) | prev() {
method pause (line 1212) | pause(event) {
method cycle (line 1226) | cycle(event) {
method to (line 1243) | to(index) {
method _getConfig (line 1269) | _getConfig(config) {
method _handleSwipe (line 1278) | _handleSwipe() {
method _addEventListeners (line 1295) | _addEventListeners() {
method _addTouchEventListeners (line 1310) | _addTouchEventListeners() {
method _keydown (line 1365) | _keydown(event) {
method _getItemIndex (line 1379) | _getItemIndex(element) {
method _getItemByOrder (line 1384) | _getItemByOrder(order, activeElement) {
method _triggerSlideEvent (line 1389) | _triggerSlideEvent(relatedTarget, eventDirectionName) {
method _setActiveIndicatorElement (line 1402) | _setActiveIndicatorElement(element) {
method _updateInterval (line 1419) | _updateInterval() {
method _slide (line 1436) | _slide(directionOrOrder, element) {
method _directionToOrder (line 1520) | _directionToOrder(direction) {
method _orderToDirection (line 1532) | _orderToDirection(order) {
method carouselInterface (line 1545) | static carouselInterface(element, config) {
method jQueryInterface (line 1573) | static jQueryInterface(config) {
method dataApiClickHandler (line 1579) | static dataApiClickHandler(event) {
class Collapse (line 1673) | class Collapse extends BaseComponent {
method constructor (line 1674) | constructor(element, config) {
method Default (line 1705) | static get Default() {
method NAME (line 1709) | static get NAME() {
method toggle (line 1714) | toggle() {
method show (line 1722) | show() {
method hide (line 1795) | hide() {
method _isShown (line 1843) | _isShown(element = this._element) {
method _getConfig (line 1848) | _getConfig(config) {
method _getDimension (line 1860) | _getDimension() {
method _initializeChildren (line 1864) | _initializeChildren() {
method _addAriaAndCollapsedClass (line 1879) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
method jQueryInterface (line 1896) | static jQueryInterface(config) {
class Dropdown (line 2015) | class Dropdown extends BaseComponent {
method constructor (line 2016) | constructor(element, config) {
method Default (line 2025) | static get Default() {
method DefaultType (line 2029) | static get DefaultType() {
method NAME (line 2033) | static get NAME() {
method toggle (line 2038) | toggle() {
method show (line 2042) | show() {
method hide (line 2083) | hide() {
method dispose (line 2095) | dispose() {
method update (line 2103) | update() {
method _completeHide (line 2112) | _completeHide(relatedTarget) {
method _getConfig (line 2139) | _getConfig(config) {
method _createPopper (line 2154) | _createPopper(parent) {
method _isShown (line 2179) | _isShown(element = this._element) {
method _getMenuElement (line 2183) | _getMenuElement() {
method _getPlacement (line 2187) | _getPlacement() {
method _detectNavbar (line 2208) | _detectNavbar() {
method _getOffset (line 2212) | _getOffset() {
method _getPopperConfig (line 2228) | _getPopperConfig() {
method _selectMenuItem (line 2256) | _selectMenuItem({
method jQueryInterface (line 2272) | static jQueryInterface(config) {
method clearMenus (line 2288) | static clearMenus(event) {
method getParentFromElement (line 2332) | static getParentFromElement(element) {
method dataApiKeydownHandler (line 2336) | static dataApiKeydownHandler(event) {
class ScrollBarHelper (line 2418) | class ScrollBarHelper {
method constructor (line 2419) | constructor() {
method getWidth (line 2423) | getWidth() {
method hide (line 2429) | hide() {
method _disableOverFlow (line 2443) | _disableOverFlow() {
method _setElementAttributes (line 2449) | _setElementAttributes(selector, styleProp, callback) {
method reset (line 2466) | reset() {
method _saveInitialAttribute (line 2476) | _saveInitialAttribute(element, styleProp) {
method _resetElementAttributes (line 2484) | _resetElementAttributes(selector, styleProp) {
method _applyManipulationCallback (line 2499) | _applyManipulationCallback(selector, callBack) {
method isOverflowing (line 2507) | isOverflowing() {
class Backdrop (line 2540) | class Backdrop {
method constructor (line 2541) | constructor(config) {
method show (line 2547) | show(callback) {
method hide (line 2566) | hide(callback) {
method _getElement (line 2581) | _getElement() {
method _getConfig (line 2596) | _getConfig(config) {
method _append (line 2606) | _append() {
method dispose (line 2619) | dispose() {
method _emulateAnimation (line 2631) | _emulateAnimation(callback) {
class FocusTrap (line 2661) | class FocusTrap {
method constructor (line 2662) | constructor(config) {
method activate (line 2668) | activate() {
method deactivate (line 2689) | deactivate() {
method _handleFocusin (line 2699) | _handleFocusin(event) {
method _handleKeydown (line 2722) | _handleKeydown(event) {
method _getConfig (line 2730) | _getConfig(config) {
class Modal (line 2791) | class Modal extends BaseComponent {
method constructor (line 2792) | constructor(element, config) {
method Default (line 2805) | static get Default() {
method NAME (line 2809) | static get NAME() {
method toggle (line 2814) | toggle(relatedTarget) {
method show (line 2818) | show(relatedTarget) {
method hide (line 2858) | hide() {
method dispose (line 2891) | dispose() {
method handleUpdate (line 2901) | handleUpdate() {
method _initializeBackDrop (line 2906) | _initializeBackDrop() {
method _initializeFocusTrap (line 2914) | _initializeFocusTrap() {
method _getConfig (line 2920) | _getConfig(config) {
method _showElement (line 2929) | _showElement(relatedTarget) {
method _setEscapeEvent (line 2973) | _setEscapeEvent() {
method _setResizeEvent (line 2988) | _setResizeEvent() {
method _hideModal (line 2996) | _hideModal() {
method _showBackdrop (line 3018) | _showBackdrop(callback) {
method _isAnimated (line 3039) | _isAnimated() {
method _triggerBackdropTransition (line 3043) | _triggerBackdropTransition() {
method _adjustDialog (line 3083) | _adjustDialog() {
method _resetAdjustments (line 3099) | _resetAdjustments() {
method jQueryInterface (line 3105) | static jQueryInterface(config, relatedTarget) {
class Offcanvas (line 3205) | class Offcanvas extends BaseComponent {
method constructor (line 3206) | constructor(element, config) {
method NAME (line 3217) | static get NAME() {
method Default (line 3221) | static get Default() {
method toggle (line 3226) | toggle(relatedTarget) {
method show (line 3230) | show(relatedTarget) {
method hide (line 3273) | hide() {
method dispose (line 3313) | dispose() {
method _getConfig (line 3322) | _getConfig(config) {
method _initializeBackDrop (line 3331) | _initializeBackDrop() {
method _initializeFocusTrap (line 3341) | _initializeFocusTrap() {
method _addEventListeners (line 3347) | _addEventListeners() {
method jQueryInterface (line 3356) | static jQueryInterface(config) {
function sanitizeHtml (line 3495) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
class Tooltip (line 3622) | class Tooltip extends BaseComponent {
method constructor (line 3623) | constructor(element, config) {
method Default (line 3643) | static get Default() {
method NAME (line 3647) | static get NAME() {
method Event (line 3651) | static get Event() {
method DefaultType (line 3655) | static get DefaultType() {
method enable (line 3660) | enable() {
method disable (line 3664) | disable() {
method toggleEnabled (line 3668) | toggleEnabled() {
method toggle (line 3672) | toggle(event) {
method dispose (line 3698) | dispose() {
method show (line 3713) | show() {
method hide (line 3795) | hide() {
method update (line 3847) | update() {
method isWithContent (line 3854) | isWithContent() {
method getTipElement (line 3858) | getTipElement() {
method setContent (line 3872) | setContent(tip) {
method _sanitizeAndSetContent (line 3876) | _sanitizeAndSetContent(template, content, selector) {
method setElementContent (line 3888) | setElementContent(element, content) {
method getTitle (line 3919) | getTitle() {
method updateAttachment (line 3925) | updateAttachment(attachment) {
method _initializeOnDelegatedTarget (line 3938) | _initializeOnDelegatedTarget(event, context) {
method _getOffset (line 3942) | _getOffset() {
method _resolvePossibleFunction (line 3958) | _resolvePossibleFunction(content) {
method _getPopperConfig (line 3962) | _getPopperConfig(attachment) {
method _addAttachmentClass (line 4002) | _addAttachmentClass(attachment) {
method _getAttachment (line 4006) | _getAttachment(placement) {
method _setListeners (line 4010) | _setListeners() {
method _fixTitle (line 4042) | _fixTitle() {
method _enter (line 4058) | _enter(event, context) {
method _leave (line 4085) | _leave(event, context) {
method _isWithActiveTrigger (line 4111) | _isWithActiveTrigger() {
method _getConfig (line 4121) | _getConfig(config) {
method _getDelegateConfig (line 4158) | _getDelegateConfig() {
method _cleanTipClass (line 4173) | _cleanTipClass() {
method _getBasicClassPrefix (line 4183) | _getBasicClassPrefix() {
method _handlePopperPlacementChange (line 4187) | _handlePopperPlacementChange(popperData) {
method jQueryInterface (line 4204) | static jQueryInterface(config) {
class Popover (line 4275) | class Popover extends Tooltip {
method Default (line 4277) | static get Default() {
method NAME (line 4281) | static get NAME() {
method Event (line 4285) | static get Event() {
method DefaultType (line 4289) | static get DefaultType() {
method isWithContent (line 4294) | isWithContent() {
method setContent (line 4298) | setContent(tip) {
method _getContent (line 4305) | _getContent() {
method _getBasicClassPrefix (line 4309) | _getBasicClassPrefix() {
method jQueryInterface (line 4314) | static jQueryInterface(config) {
class ScrollSpy (line 4386) | class ScrollSpy extends BaseComponent {
method constructor (line 4387) | constructor(element, config) {
method Default (line 4402) | static get Default() {
method NAME (line 4406) | static get NAME() {
method refresh (line 4411) | refresh() {
method dispose (line 4439) | dispose() {
method _getConfig (line 4445) | _getConfig(config) {
method _getScrollTop (line 4455) | _getScrollTop() {
method _getScrollHeight (line 4459) | _getScrollHeight() {
method _getOffsetHeight (line 4463) | _getOffsetHeight() {
method _process (line 4467) | _process() {
method _activate (line 4505) | _activate(target) {
method _clear (line 4533) | _clear() {
method jQueryInterface (line 4538) | static jQueryInterface(config) {
class Tab (line 4612) | class Tab extends BaseComponent {
method NAME (line 4614) | static get NAME() {
method show (line 4619) | show() {
method _activate (line 4665) | _activate(element, container, callback) {
method _transitionComplete (line 4681) | _transitionComplete(element, active, callback) {
method jQueryInterface (line 4729) | static jQueryInterface(config) {
class Toast (line 4816) | class Toast extends BaseComponent {
method constructor (line 4817) | constructor(element, config) {
method DefaultType (line 4828) | static get DefaultType() {
method Default (line 4832) | static get Default() {
method NAME (line 4836) | static get NAME() {
method show (line 4841) | show() {
method hide (line 4874) | hide() {
method dispose (line 4901) | dispose() {
method _getConfig (line 4912) | _getConfig(config) {
method _maybeScheduleHide (line 4921) | _maybeScheduleHide() {
method _onInteraction (line 4935) | _onInteraction(event, isInteracting) {
method _setListeners (line 4963) | _setListeners() {
method _clearTimeout (line 4970) | _clearTimeout() {
method jQueryInterface (line 4976) | static jQueryInterface(config) {
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js
function setValidationValues (line 28) | function setValidationValues(options, ruleName, value) {
function splitAndTrim (line 35) | function splitAndTrim(value) {
function escapeAttributeValue (line 39) | function escapeAttributeValue(value) {
function getModelPrefix (line 44) | function getModelPrefix(fieldName) {
function appendModelPrefix (line 48) | function appendModelPrefix(value, prefix) {
function onError (line 55) | function onError(error, inputElement) { // 'this' is the form element
function onErrors (line 72) | function onErrors(event, validator) { // 'this' is the form element
function onSuccess (line 86) | function onSuccess(error) { // 'this' is the form element
function onReset (line 102) | function onReset(event) { // 'this' is the form element
function validationInfo (line 127) | function validationInfo(form) {
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery-validation/dist/additional-methods.js
function stripHtml (line 21) | function stripHtml( value ) {
function isOdd (line 212) | function isOdd( n ) {
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery-validation/dist/jquery.validate.js
function handle (line 70) | function handle() {
function delegate (line 411) | function delegate( event ) {
FILE: templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery/dist/jquery.js
function DOMEval (line 107) | function DOMEval( code, node, doc ) {
function toType (line 137) | function toType( obj ) {
function isArrayLike (line 507) | function isArrayLike( obj ) {
function Sizzle (line 759) | function Sizzle( selector, context, results, seed ) {
function createCache (line 907) | function createCache() {
function markFunction (line 927) | function markFunction( fn ) {
function assert (line 936) | function assert( fn ) {
function addHandle (line 960) | function addHandle( attrs, handler ) {
function siblingCheck (line 975) | function siblingCheck( a, b ) {
function createInputPseudo (line 1001) | function createInputPseudo( type ) {
function createButtonPseudo (line 1012) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 1023) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1079) | function createPositionalPseudo( fn ) {
function testContext (line 1102) | function testContext( context ) {
function setFilters (line 2313) | function setFilters() {}
function toSelector (line 2387) | function toSelector( tokens ) {
function addCombinator (line 2397) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2464) | function elementMatcher( matchers ) {
function multipleContexts (line 2478) | function multipleContexts( selector, contexts, results ) {
function condense (line 2487) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2508) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2608) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2671) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 3029) | function nodeName( elem, name ) {
function winnow (line 3039) | function winnow( elements, qualifier, not ) {
function sibling (line 3334) | function sibling( cur, dir ) {
function createOptions (line 3427) | function createOptions( options ) {
function Identity (line 3652) | function Identity( v ) {
function Thrower (line 3655) | function Thrower( ex ) {
function adoptValue (line 3659) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3752) | function resolve( depth, deferred, handler, special ) {
function completed (line 4117) | function completed() {
function fcamelCase (line 4212) | function fcamelCase( _all, letter ) {
function camelCase (line 4219) | function camelCase( string ) {
function Data (line 4236) | function Data() {
function getData (line 4405) | function getData( data ) {
function dataAttr (line 4430) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4742) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4810) | function getDefaultDisplay( elem ) {
function showHide (line 4833) | function showHide( elements, show ) {
function getAll (line 4965) | function getAll( context, tag ) {
function setGlobalEval (line 4990) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 5006) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 5098) | function returnTrue() {
function returnFalse (line 5102) | function returnFalse() {
function expectSync (line 5112) | function expectSync( elem, type ) {
function safeActiveElement (line 5119) | function safeActiveElement() {
function on (line 5125) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5613) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5962) | function manipulationTarget( elem, content ) {
function disableScript (line 5973) | function disableScript( elem ) {
function restoreScript (line 5977) | function restoreScript( elem ) {
function cloneCopyEvent (line 5987) | function cloneCopyEvent( src, dest ) {
function fixInput (line 6020) | function fixInput( src, dest ) {
function domManip (line 6033) | function domManip( collection, args, callback, ignored ) {
function remove (line 6125) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6439) | function computeStyleTests() {
function roundPixelMeasures (line 6483) | function roundPixelMeasures( measure ) {
function curCSS (line 6576) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6629) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6654) | function vendorPropName( name ) {
function finalPropName (line 6669) | function finalPropName( name ) {
function setPositiveNumber (line 6695) | function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment (line 6707) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6775) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 7151) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7274) | function schedule() {
function createFxNow (line 7287) | function createFxNow() {
function genFx (line 7295) | function genFx( type, includeWidth ) {
function createTween (line 7315) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7329) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7501) | function propFilter( props, specialEasing ) {
function Animation (line 7538) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8254) | function stripAndCollapse( value ) {
function getClass (line 8260) | function getClass( elem ) {
function classesToArray (line 8264) | function classesToArray( value ) {
function buildParams (line 8894) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 9047) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 9081) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 9110) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 9130) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9188) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9704) | function done( status, nativeStatusText, responses, headers ) {
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/App.xaml.cs
class App (line 3) | public partial class App : Application
method App (line 5) | public App()
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/AppShell.xaml.cs
class AppShell (line 3) | public partial class AppShell : Shell
method AppShell (line 5) | public AppShell()
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/GraphService.cs
class GraphService (line 13) | internal class GraphService
method GraphService (line 20) | public GraphService()
method Initialize (line 25) | private void Initialize()
method GetMyDetailsAsync (line 49) | public async Task<User> GetMyDetailsAsync()
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/MainPage.xaml.cs
class MainPage (line 5) | public partial class MainPage : ContentPage
method MainPage (line 10) | public MainPage()
method OnCounterClicked (line 15) | private void OnCounterClicked(object sender, EventArgs e)
method GetUserInfoBtn_Clicked (line 27) | private async void GetUserInfoBtn_Clicked(object sender, EventArgs e)
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/MauiProgram.cs
class MauiProgram (line 5) | public static class MauiProgram
method CreateMauiApp (line 7) | public static MauiApp CreateMauiApp()
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Android/MainActivity.cs
class MainActivity (line 7) | [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, Config...
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Android/MainApplication.cs
class MainApplication (line 6) | [Application]
method MainApplication (line 9) | public MainApplication(IntPtr handle, JniHandleOwnership ownership)
method CreateMauiApp (line 14) | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiAp...
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/MacCatalyst/AppDelegate.cs
class AppDelegate (line 5) | [Register("AppDelegate")]
method CreateMauiApp (line 8) | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiAp...
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/MacCatalyst/Program.cs
class Program (line 6) | public class Program
method Main (line 9) | static void Main(string[] args)
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Tizen/Main.cs
class Program (line 7) | class Program : MauiApplication
method CreateMauiApp (line 9) | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiAp...
method Main (line 11) | static void Main(string[] args)
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Windows/App.xaml.cs
class App (line 11) | public partial class App : MauiWinUIApplication
method App (line 17) | public App()
method CreateMauiApp (line 22) | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiAp...
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/iOS/AppDelegate.cs
class AppDelegate (line 5) | [Register("AppDelegate")]
method CreateMauiApp (line 8) | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiAp...
FILE: templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/iOS/Program.cs
class Program (line 6) | public class Program
method Main (line 9) | static void Main(string[] args)
FILE: templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/App.xaml.cs
class App (line 23) | sealed partial class App : Application
method App (line 29) | public App()
method OnLaunched (line 40) | protected override void OnLaunched(LaunchActivatedEventArgs e)
method OnNavigationFailed (line 81) | void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
method OnSuspending (line 93) | private void OnSuspending(object sender, SuspendingEventArgs e)
FILE: templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/MainPage.xaml.cs
class MainPage (line 30) | public sealed partial class MainPage : Page
method MainPage (line 50) | public MainPage()
method CallGraphButton_Click (line 58) | private async void CallGraphButton_Click(object sender, RoutedEventArg...
method SignInUserAndGetTokenUsingMSAL (line 93) | private static async Task<string> SignInUserAndGetTokenUsingMSAL(strin...
method SignInAndInitializeGraphServiceClient (line 132) | private async static Task<GraphServiceClient> SignInAndInitializeGraph...
method SignOutButton_Click (line 144) | private async void SignOutButton_Click(object sender, RoutedEventArgs e)
method DisplayBasicTokenInfo (line 168) | private void DisplayBasicTokenInfo(AuthenticationResult authResult)
method DisplayMessageAsync (line 181) | private async Task DisplayMessageAsync(string message)
FILE: templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/TokenProvider.cs
class TokenProvider (line 8) | public class TokenProvider : IAccessTokenProvider {
method TokenProvider (line 12) | public TokenProvider(Func<string[], Task<string>> getTokenDelegate, st...
method GetAuthorizationTokenAsync (line 17) | public Task<string> GetAuthorizationTokenAsync(Uri uri, Dictionary<str...
Condensed preview — 137 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,906K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/project.yml",
"chars": 939,
"preview": "name: Project\ndescription: \"Share with us your project to get a digital badge and win exciting prizes!\"\ntitle: \"Project:"
},
{
"path": ".gitignore",
"chars": 6012,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 444,
"preview": "# Microsoft Open Source Code of Conduct\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://op"
},
{
"path": "LICENSE",
"chars": 1141,
"preview": " MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any pers"
},
{
"path": "README.md",
"chars": 4867,
"preview": "# Hack Together: Microsoft Graph and .NET 🦒\n\n<p align=\"center\">\n <img src=\"./assets/banner.png\" alt=\"Hack Together bann"
},
{
"path": "SECURITY.md",
"chars": 2757,
"preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.8 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products an"
},
{
"path": "SUPPORT.md",
"chars": 369,
"preview": "# Support\r\n\r\n## How to file issues and get help \r\n\r\nThis project uses GitHub Issues to track bugs and feature requests."
},
{
"path": "setup.md",
"chars": 2516,
"preview": "# Environment Setup\n\n## 1 - Prepare your Microsoft 365 tenant\n\n**Need a development environment?**\n\nIf you don't current"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/.vscode/launch.json",
"chars": 1395,
"preview": "{\n \"version\": \"0.2.0\",\n \"configurations\": [\n {\n // Use IntelliSense to find out which attributes"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/.vscode/tasks.json",
"chars": 1146,
"preview": "{\n \"version\": \"2.0.0\",\n \"tasks\": [\n {\n \"label\": \"build\",\n \"command\": \"dotnet\",\n "
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/App.razor",
"chars": 583,
"preview": "<CascadingAuthenticationState>\n <Router AppAssembly=\"@typeof(App).Assembly\">\n <Found Context=\"routeData\">\n "
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/BlazorSample.csproj",
"chars": 883,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n <PropertyGroup>\n <TargetFramework>net7.0</TargetFramework>\n <Nullable>ena"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Data/WeatherForecast.cs",
"chars": 254,
"preview": "namespace BlazorSample.Data;\n\npublic class WeatherForecast\n{\n public DateOnly Date { get; set; }\n\n public int Temp"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Data/WeatherForecastService.cs",
"chars": 624,
"preview": "namespace BlazorSample.Data;\n\npublic class WeatherForecastService\n{\n private static readonly string[] Summaries = new"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Pages/Counter.razor",
"chars": 312,
"preview": "@page \"/counter\"\n\n<PageTitle>Counter</PageTitle>\n\n<h1>Counter</h1>\n\n<p role=\"status\">Current count: @currentCount</p>\n\n"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Pages/Error.cshtml",
"chars": 1526,
"preview": "@page\n@model BlazorSample.Pages.ErrorModel\n\n<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta charset=\"utf-8\" />\n <"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Pages/Error.cshtml.cs",
"chars": 645,
"preview": "using System.Diagnostics;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.RazorPages;\n\nnamespace BlazorS"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Pages/FetchData.razor",
"chars": 1121,
"preview": "@page \"/fetchdata\"\n@using BlazorSample.Data\n@inject WeatherForecastService ForecastService\n\n<PageTitle>Weather forecast"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Pages/Index.razor",
"chars": 148,
"preview": "@page \"/\"\n\n<PageTitle>Index</PageTitle>\n\n<h1>Hello, world!</h1>\n\nWelcome to your new app.\n\n<SurveyPrompt Title=\"How is "
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Pages/ShowProfile.razor",
"chars": 925,
"preview": "@page \"/showprofile\"\n\n@using Microsoft.Identity.Web\n@using Microsoft.Graph\n@inject Microsoft.Graph.GraphServiceClient G"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Pages/_Host.cshtml",
"chars": 1215,
"preview": "@page \"/\"\n@using Microsoft.AspNetCore.Components.Web\n@namespace BlazorSample.Pages\n@addTagHelper *, Microsoft.AspNetCor"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Program.cs",
"chars": 1801,
"preview": "using Microsoft.AspNetCore.Authentication;\nusing Microsoft.AspNetCore.Authentication.OpenIdConnect;\nusing Microsoft.Iden"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Properties/launchSettings.json",
"chars": 652,
"preview": "{\n \"iisSettings\": {\n \"windowsAuthentication\": false,\n \"anonymousAuthentication\": true,\n \"iisExpress\": {\n "
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/README.md",
"chars": 5221,
"preview": "# .NET v7.0 Blazor Server app connected to Microsoft Graph\n\nThis is a template for a Blazor app built using .NET v7.0 th"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Shared/LoginDisplay.razor",
"chars": 281,
"preview": "<AuthorizeView>\n <Authorized>\n Hello, @context.User.Identity?.Name!\n <a href=\"MicrosoftIdentity/Accoun"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Shared/MainLayout.razor",
"chars": 420,
"preview": "@inherits LayoutComponentBase\n\n<PageTitle>BlazorSample</PageTitle>\n\n<div class=\"page\">\n <div class=\"sidebar\">\n "
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Shared/MainLayout.razor.css",
"chars": 1187,
"preview": ".page {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n\nmain {\n flex: 1;\n}\n\n.sidebar {\n "
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Shared/NavMenu.razor",
"chars": 1508,
"preview": "<div class=\"top-row ps-3 navbar navbar-dark\">\n <div class=\"container-fluid\">\n <a class=\"navbar-brand\" href=\"\""
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Shared/NavMenu.razor.css",
"chars": 1183,
"preview": ".navbar-toggler {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.top-row {\n height: 3.5rem;\n background-color"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/Shared/SurveyPrompt.razor",
"chars": 505,
"preview": "<div class=\"alert alert-secondary mt-4\">\n <span class=\"oi oi-pencil me-2\" aria-hidden=\"true\"></span>\n <strong>@Ti"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/_Imports.razor",
"chars": 386,
"preview": "@using System.Net.Http\n@using Microsoft.AspNetCore.Authorization\n@using Microsoft.AspNetCore.Components.Authorization\n@"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/appsettings.Development.json",
"chars": 145,
"preview": "{\n \"DetailedErrors\": true,\n \"Logging\": {\n \"LogLevel\": {\n \"Default\": \"Information\",\n \"Microsoft.AspNetCore"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/appsettings.json",
"chars": 475,
"preview": "{\n \"AzureAd\": {\n \"Instance\": \"https://login.microsoftonline.com/\",\n \"TenantId\": \"common\",\n \"ClientId\": \"CLIENT"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/setup.ps1",
"chars": 457,
"preview": "az login\n$appId = az ad app create --display-name \"MSGraph Blazor App\" --web-redirect-uris \"https://localhost:5001/signi"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/setup.sh",
"chars": 344,
"preview": "az login\nappId=$(az ad app create --display-name \"MSGraph Blazor App\" --web-redirect-uris \"https://localhost:5001/signin"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/wwwroot/css/open-iconic/FONT-LICENSE",
"chars": 4017,
"preview": "SIL OPEN FONT LICENSE Version 1.1\n\nCopyright (c) 2014 Waybury\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to "
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/wwwroot/css/open-iconic/ICON-LICENSE",
"chars": 1073,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2014 Waybury\n\nPermission is hereby granted, free of charge, to any person obtaining"
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/wwwroot/css/open-iconic/README.md",
"chars": 3535,
"preview": "[Open Iconic v1.1.1](https://github.com/iconic/open-iconic)\n===========\n\n### Open Iconic is the open source sibling of ["
},
{
"path": "templates/dotnet-blazor-server-app-microsoft-graph/wwwroot/css/site.css",
"chars": 2910,
"preview": "@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');\n\nhtml, body {\n font-family: 'Helvetica Neue', Helv"
},
{
"path": "templates/dotnet-console-app-microsoft-graph/.gitignore",
"chars": 8411,
"preview": "## Ignore Visual Studio temporary files, build results, and\r\n## files generated by popular Visual Studio add-ons.\r\n##\r\n#"
},
{
"path": "templates/dotnet-console-app-microsoft-graph/.vscode/launch.json",
"chars": 951,
"preview": "{\n \"version\": \"0.2.0\",\n \"configurations\": [\n {\n // Use IntelliSense to find out which attributes exist for C# "
},
{
"path": "templates/dotnet-console-app-microsoft-graph/.vscode/tasks.json",
"chars": 966,
"preview": "{\n \"version\": \"2.0.0\",\n \"tasks\": [\n {\n \"label\": \"build\",\n \"command\": \"dotnet\",\n \"type\": \"process\",\n "
},
{
"path": "templates/dotnet-console-app-microsoft-graph/Program.cs",
"chars": 460,
"preview": "using Azure.Identity;\r\nusing Microsoft.Graph;\r\n\r\nvar scopes = new[] { \"User.Read\" };\r\nvar interactiveBrowserCredentialOp"
},
{
"path": "templates/dotnet-console-app-microsoft-graph/README.md",
"chars": 2804,
"preview": "# .NET v7.0 console app connected to Microsoft Graph\n\nThis is a template for a console application built using .NET v7.0"
},
{
"path": "templates/dotnet-console-app-microsoft-graph/dotnet-console-microsoft-graph.csproj",
"chars": 484,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n <PropertyGroup>\r\n <OutputType>Exe</OutputType>\r\n <TargetFramework>net7.0</T"
},
{
"path": "templates/dotnet-console-app-microsoft-graph/setup.ps1",
"chars": 238,
"preview": "az login\n$appId = az ad app create --display-name \"MSGraph console app\" --public-client-redirect-uris \"http://localhost\""
},
{
"path": "templates/dotnet-console-app-microsoft-graph/setup.sh",
"chars": 188,
"preview": "az login\nappId=$(az ad app create --display-name \"MSGraph console app\" --public-client-redirect-uris \"http://localhost\" "
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/.config/dotnet-tools.json",
"chars": 179,
"preview": "{\n \"version\": 1,\n \"isRoot\": true,\n \"tools\": {\n \"microsoft.dotnet-msidentity\": {\n \"version\": \"2.0.0\",\n \"c"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Controllers/HomeController.cs",
"chars": 890,
"preview": "using Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Mvc;\nusing NETCoreMVCwithMSGraph.Models;\nusing Sys"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Models/ErrorViewModel.cs",
"chars": 205,
"preview": "namespace NETCoreMVCwithMSGraph.Models\n{\n public class ErrorViewModel\n {\n public string? RequestId { get; s"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/NETCoreMVCwithMSGraph.csproj",
"chars": 814,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n <PropertyGroup>\n <TargetFramework>net7.0</TargetFramework>\n <Nullable>ena"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Program.cs",
"chars": 1792,
"preview": "using Microsoft.AspNetCore.Authentication;\nusing Microsoft.AspNetCore.Authentication.OpenIdConnect;\nusing Microsoft.AspN"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Properties/launchSettings.json",
"chars": 676,
"preview": "{\n \"iisSettings\": {\n \"windowsAuthentication\": false,\n \"anonymousAuthentication\": true,\n \"iisExpress\": {\n "
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Properties/serviceDependencies.json",
"chars": 24,
"preview": "{\n \"dependencies\": {}\n}"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Properties/serviceDependencies.local.json",
"chars": 24,
"preview": "{\n \"dependencies\": {}\n}"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Home/Index.cshtml",
"chars": 296,
"preview": "@{\n ViewData[\"Title\"] = \"Home Page\";\n}\n\n<div class=\"text-center\">\n <h1 class=\"display-4\">Welcome</h1>\n <p>Learn"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Home/Privacy.cshtml",
"chars": 136,
"preview": "@{\n ViewData[\"Title\"] = \"Privacy Policy\";\n}\n<h1>@ViewData[\"Title\"]</h1>\n\n<p>Use this page to detail your site's priv"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/Error.cshtml",
"chars": 857,
"preview": "@model ErrorViewModel\n@{\n ViewData[\"Title\"] = \"Error\";\n}\n\n<h1 class=\"text-danger\">Error.</h1>\n<h2 class=\"text-danger"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/_Layout.cshtml",
"chars": 2428,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-wi"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/_Layout.cshtml.css",
"chars": 874,
"preview": "/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification\nfor details"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/_LoginPartial.cshtml",
"chars": 548,
"preview": "@using System.Security.Principal\n\n<ul class=\"navbar-nav\">\n@if (User.Identity?.IsAuthenticated == true)\n{\n <span "
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/Shared/_ValidationScriptsPartial.cshtml",
"chars": 172,
"preview": "<script src=\"~/lib/jquery-validation/dist/jquery.validate.min.js\"></script>\n<script src=\"~/lib/jquery-validation-unobtr"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/_ViewImports.cshtml",
"chars": 119,
"preview": "@using NETCoreMVCwithMSGraph\n@using NETCoreMVCwithMSGraph.Models\n@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers\n"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/Views/_ViewStart.cshtml",
"chars": 30,
"preview": "@{\n Layout = \"_Layout\";\n}\n"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/appsettings.Development.json",
"chars": 119,
"preview": "{\n \"Logging\": {\n \"LogLevel\": {\n \"Default\": \"Information\",\n \"Microsoft.AspNetCore\": \"Warning\"\n }\n }\n}\n"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/appsettings.json",
"chars": 510,
"preview": "{\n \"AzureAd\": {\n \"Instance\": \"https://login.microsoftonline.com/\",\n \"Domain\": \"domain-name-from-app-registration\""
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/css/site.css",
"chars": 341,
"preview": "html {\n font-size: 14px;\n}\n\n@media (min-width: 768px) {\n html {\n font-size: 16px;\n }\n}\n\n.btn:focus, .btn:active:fo"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/js/site.js",
"chars": 224,
"preview": "// Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification\n// for deta"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/LICENSE",
"chars": 1131,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2011-2021 Twitter, Inc.\nCopyright (c) 2011-2021 The Bootstrap Authors\n\nPermission i"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css",
"chars": 70538,
"preview": "/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css",
"chars": 70612,
"preview": "/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css",
"chars": 5850,
"preview": "/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 201"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css",
"chars": 5827,
"preview": "/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 201"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css",
"chars": 71584,
"preview": "/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright "
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css",
"chars": 71451,
"preview": "/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright "
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap.css",
"chars": 204133,
"preview": "@charset \"UTF-8\";\n/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Co"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css",
"chars": 203800,
"preview": "@charset \"UTF-8\";\n/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Co"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js",
"chars": 208486,
"preview": "/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/t"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js",
"chars": 139019,
"preview": "/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/t"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/bootstrap/dist/js/bootstrap.js",
"chars": 148168,
"preview": "/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/t"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery/LICENSE.txt",
"chars": 1097,
"preview": "\nCopyright OpenJS Foundation and other contributors, https://openjsf.org/\n\nPermission is hereby granted, free of charge,"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery/dist/jquery.js",
"chars": 288580,
"preview": "/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * C"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery-validation/LICENSE.md",
"chars": 1094,
"preview": "The MIT License (MIT)\n=====================\n\nCopyright Jörn Zaefferer\n\nPermission is hereby granted, free of charge, to "
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery-validation/dist/additional-methods.js",
"chars": 42006,
"preview": "/*!\n * jQuery Validation Plugin v1.17.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2017 Jörn Zaefferer\n * R"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery-validation/dist/jquery.validate.js",
"chars": 48675,
"preview": "/*!\n * jQuery Validation Plugin v1.17.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2017 Jörn Zaefferer\n * R"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
"chars": 1116,
"preview": "The MIT License (MIT)\n\nCopyright (c) .NET Foundation and Contributors\n\nAll rights reserved.\n\nPermission is hereby grante"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
"chars": 19385,
"preview": "/**\n * @license\n * Unobtrusive validation support library for jQuery and jQuery Validate\n * Copyright (c) .NET Foundatio"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/NETCoreMVCwithMSGraph.sln",
"chars": 1142,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.4.3321"
},
{
"path": "templates/dotnet-core-mvc-web-app-microsoft-graph/README.md",
"chars": 3071,
"preview": "# .NET Core MVC (Model - View - Controller) web app connected to Microsoft Graph\n\nThis is a template for .NET Core MVC ("
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/App.xaml",
"chars": 671,
"preview": "<?xml version = \"1.0\" encoding = \"UTF-8\" ?>\n<Application xmlns=\"http://schemas.microsoft.com/dotnet/2021/maui\"\n "
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/App.xaml.cs",
"chars": 147,
"preview": "namespace MAUIwithMSGRaph;\n\npublic partial class App : Application\n{\n\tpublic App()\n\t{\n\t\tInitializeComponent();\n\n\t\tMainP"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/AppShell.xaml",
"chars": 422,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<Shell\n x:Class=\"MAUIwithMSGRaph.AppShell\"\n xmlns=\"http://schemas.microsof"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/AppShell.xaml.cs",
"chars": 121,
"preview": "namespace MAUIwithMSGRaph;\n\npublic partial class AppShell : Shell\n{\n\tpublic AppShell()\n\t{\n\t\tInitializeComponent();\n\t}\n}"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/GraphService.cs",
"chars": 1696,
"preview": "using Azure.Identity;\nusing Microsoft.Graph;\nusing Microsoft.Graph.Models;\nusing System;\nusing System.Collections.Gener"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/MAUIwithMSGRaph.csproj",
"chars": 2911,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</T"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/MainPage.xaml",
"chars": 1723,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<ContentPage xmlns=\"http://schemas.microsoft.com/dotnet/2021/maui\"\n "
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/MainPage.xaml.cs",
"chars": 787,
"preview": "using Microsoft.Graph.Models;\n\nnamespace MAUIwithMSGRaph;\n\npublic partial class MainPage : ContentPage\n{\n\tint count = 0"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/MauiProgram.cs",
"chars": 461,
"preview": "using Microsoft.Extensions.Logging;\n\nnamespace MAUIwithMSGRaph;\n\npublic static class MauiProgram\n{\n\tpublic static MauiA"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Android/AndroidManifest.xml",
"chars": 417,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<applicat"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Android/MainActivity.cs",
"chars": 402,
"preview": "using Android.App;\nusing Android.Content.PM;\nusing Android.OS;\n\nnamespace MAUIwithMSGRaph;\n\n[Activity(Theme = \"@style/M"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Android/MainApplication.cs",
"chars": 317,
"preview": "using Android.App;\nusing Android.Runtime;\n\nnamespace MAUIwithMSGRaph;\n\n[Application]\npublic class MainApplication : Mau"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Android/Resources/values/colors.xml",
"chars": 207,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"colorPrimary\">#512BD4</color>\n <color name=\"color"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/MacCatalyst/AppDelegate.cs",
"chars": 207,
"preview": "using Foundation;\n\nnamespace MAUIwithMSGRaph;\n\n[Register(\"AppDelegate\")]\npublic class AppDelegate : MauiUIApplicationDe"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/MacCatalyst/Info.plist",
"chars": 961,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/MacCatalyst/Program.cs",
"chars": 346,
"preview": "using ObjCRuntime;\nusing UIKit;\n\nnamespace MAUIwithMSGRaph;\n\npublic class Program\n{\n\t// This is the main entry point of"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Tizen/Main.cs",
"chars": 291,
"preview": "using System;\nusing Microsoft.Maui;\nusing Microsoft.Maui.Hosting;\n\nnamespace MAUIwithMSGRaph;\n\nclass Program : MauiAppli"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Tizen/tizen-manifest.xml",
"chars": 742,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest package=\"maui-application-id-placeholder\" version=\"0.0.0\" api-version="
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Windows/App.xaml",
"chars": 312,
"preview": "<maui:MauiWinUIApplication\n x:Class=\"MAUIwithMSGRaph.WinUI.App\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/x"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Windows/App.xaml.cs",
"chars": 698,
"preview": "using Microsoft.UI.Xaml;\n\n// To learn more about WinUI, the WinUI project structure,\n// and more about our project temp"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Windows/Package.appxmanifest",
"chars": 1815,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package\n xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows1"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/Windows/app.manifest",
"chars": 735,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n <asse"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/iOS/AppDelegate.cs",
"chars": 207,
"preview": "using Foundation;\n\nnamespace MAUIwithMSGRaph;\n\n[Register(\"AppDelegate\")]\npublic class AppDelegate : MauiUIApplicationDe"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/iOS/Info.plist",
"chars": 1001,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Platforms/iOS/Program.cs",
"chars": 346,
"preview": "using ObjCRuntime;\nusing UIKit;\n\nnamespace MAUIwithMSGRaph;\n\npublic class Program\n{\n\t// This is the main entry point of"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Properties/launchSettings.json",
"chars": 121,
"preview": "{\n \"profiles\": {\n \"Windows Machine\": {\n \"commandName\": \"MsixPackage\",\n \"nativeDebugging\": false\n }\n }\n"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Resources/Raw/AboutAssets.txt",
"chars": 639,
"preview": "Any raw assets you want to be deployed with your application can be placed in\nthis directory (and child directories). D"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Resources/Styles/Colors.xaml",
"chars": 2234,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<?xaml-comp compile=\"true\" ?>\n<ResourceDictionary \n xmlns=\"http://schemas.mi"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph/Resources/Styles/Styles.xaml",
"chars": 23183,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<?xaml-comp compile=\"true\" ?>\n<ResourceDictionary \n xmlns=\"http://schemas.mi"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/MAUIwithMSGRaph.sln",
"chars": 1288,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.0.3161"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/README.md",
"chars": 3726,
"preview": "# .NET MAUI (Multi-platform App UI) app connected to Microsoft Graph\n\nThis is a template for MAUI(Multi-platform App UI)"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/setup.ps1",
"chars": 326,
"preview": "az login\n$appId = az ad app create --display-name \"MSGraph MAUI app\" --public-client-redirect-uris \"https://login.micros"
},
{
"path": "templates/dotnet-maui-app-microsoft-graph/setup.sh",
"chars": 252,
"preview": "az login\nappId=$(az ad app create --display-name \"MSGraph MAUI app\" --public-client-redirect-uris \"https://login.microso"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/README.md",
"chars": 3678,
"preview": "# .NET v7.0 UWP (Universal Windows Platform) app connected to Microsoft Graph\n\nThis is a template for Universal Windows "
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/App.xaml",
"chars": 234,
"preview": "<Application\n x:Class=\"UWP_app_MSGraph.App\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n "
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/App.xaml.cs",
"chars": 3927,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropService"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/MainPage.xaml",
"chars": 1425,
"preview": "<Page\n x:Class=\"UWP_app_MSGraph.MainPage\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n "
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/MainPage.xaml.cs",
"chars": 8116,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropService"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/Package.appxmanifest",
"chars": 1581,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/Properties/AssemblyInfo.cs",
"chars": 1047,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/Properties/Default.rd.xml",
"chars": 1243,
"preview": "<!--\n This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n develope"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/TokenProvider.cs",
"chars": 856,
"preview": "using Microsoft.Kiota.Abstractions.Authentication;\nusing System;\nusing System.Collections.Generic;\nusing System.Threadin"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph/UWP-app-MSGraph.csproj",
"chars": 7908,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/UWP-app-MSGraph.sln",
"chars": 2744,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.4.3321"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/setup.ps1",
"chars": 327,
"preview": "az login\n$appId = az ad app create --display-name \"MSGraph UWP app\" --public-client-redirect-uris \"https://login.microso"
},
{
"path": "templates/dotnet-uwp-app-microsoft-graph/setup.sh",
"chars": 252,
"preview": "az login\nappId=$(az ad app create --display-name \"MSGraph UWP app\" --public-client-redirect-uris \"https://login.microsof"
},
{
"path": "top-scenarios.md",
"chars": 2250,
"preview": "# 📃 Top Microsoft Graph Scenarios\n\nAre you looking for an idea or inspiration? You can select one of the project scenari"
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the microsoft/hack-together GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 137 files (1.7 MB), approximately 511.7k tokens, and a symbol index with 1147 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.