diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 9b40373..e4edfd7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -18,10 +18,14 @@ jobs: - uses: actions/checkout@v2 with: submodules: true + - name: Generate redirects + run: | + chmod +x gen_redirects.py + ./gen_redirects.py - name: Build Documentation - uses: nunit/docfx-action@v3.0.0 + uses: nunit/docfx-action@v4.1.0 with: - args: docfx.json + args: docfx.json --warningsAsErrors - name: Replace Shared Xref in API HTML run: | sudo chmod -R u+w _site/api diff --git a/.gitignore b/.gitignore index a1e91df..4acf97d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +/docfx.json + ############### # folder # ############### diff --git a/APPLIES_TO_EXAMPLES.md b/APPLIES_TO_EXAMPLES.md new file mode 100644 index 0000000..13f36bc --- /dev/null +++ b/APPLIES_TO_EXAMPLES.md @@ -0,0 +1,213 @@ +# Applies To Examples + +This document shows examples of the new `applies_to` front matter structure. + +## Example 1: TE3 only, available since a specific version + +```yaml +--- +uid: example-feature +title: New Feature +author: Your Name +updated: 2025-11-04 +applies_to: + products: + - product: Tabular Editor 2 + none: true + note: "Not available in TE2. Use TE3 for this feature." + - product: Tabular Editor 3 + full: true + since: 3.18.0 +--- +``` + +**Renders as:** +- **TE2** ❌ Not supported - Not available in TE2. Use TE3 for this feature. +- **TE3** ✅ Supported (Available since 3.18.0) + +--- + +## Example 2: TE3 with edition-specific support + +```yaml +--- +uid: example-enterprise-feature +title: Enterprise Feature +author: Your Name +updated: 2025-11-04 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + since: 3.15.0 + editions: + - edition: Desktop + none: true + - edition: Business + partial: true + note: "Limited to 10 objects" + - edition: Enterprise + full: true +--- +``` + +**Renders as:** +- **TE2** ❌ Not supported +- **TE3** (Available since 3.15.0) + - ❌ Desktop Edition + - ⚠️ Business Edition (Limited to 10 objects) + - ✅ Enterprise Edition + +**Important:** When you have `editions`, do NOT set `full`, `partial`, or `none` at the product level. The support status is determined by the individual editions. + +--- + +## Example 3: Feature available in both TE2 and TE3 + +```yaml +--- +uid: example-basic-feature +title: Basic Feature +author: Your Name +updated: 2025-11-04 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- +``` + +**Renders as:** +- **TE2** ✅ Supported +- **TE3** ✅ Supported + +--- + +## Example 4: Feature deprecated in later versions + +```yaml +--- +uid: example-deprecated-feature +title: Deprecated Feature +author: Your Name +updated: 2025-11-04 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true + since: 3.0.0 + until: 3.22.0 + note: "Deprecated in 3.23.0. Use the new API instead." +--- +``` + +**Renders as:** +- **TE2** ✅ Supported +- **TE3** ✅ Supported (Available in 3.0.0–3.22.0) - Deprecated in 3.23.0. Use the new API instead. + +--- + +## Example 5: TE3 only, all editions + +```yaml +--- +uid: example-te3-only +title: TE3 Exclusive Feature +author: Your Name +updated: 2025-11-04 +applies_to: + products: + - product: Tabular Editor 2 + none: true + note: "Upgrade to TE3 for this feature" + - product: Tabular Editor 3 + full: true + since: 3.0.0 +--- +``` + +**Renders as:** +- **TE2** ❌ Not supported - Upgrade to TE3 for this feature +- **TE3** ✅ Supported (Available since 3.0.0) + +--- + +## Example 6: Complex scenario with partial support + +```yaml +--- +uid: example-complex +title: Complex Feature +author: Your Name +updated: 2025-11-04 +applies_to: + products: + - product: Tabular Editor 2 + partial: true + note: "Requires manual scripting workaround" + - product: Tabular Editor 3 + since: 3.12.0 + editions: + - edition: Desktop + partial: true + note: "Read-only mode" + - edition: Business + full: true + - edition: Enterprise + full: true +--- +``` + +**Renders as:** +- **TE2** ⚠️ Partially supported - Requires manual scripting workaround +- **TE3** (Available since 3.12.0) + - ⚠️ Desktop Edition (Read-only mode) + - ✅ Business Edition + - ✅ Enterprise Edition + +--- + +## Migration Guide from Old Format + +### Old Format: +```yaml +applies_to: + editions: + - edition: Desktop + none: x + - edition: Business + - edition: Enterprise + versions: + - version: "3.x" +``` + +### New Format: +```yaml +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + since: 3.15.0 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true +``` + +## Key Differences + +1. **Product-first approach**: Start with `products` array containing `TE2` and `TE3` +2. **Boolean flags**: Use `full: true`, `partial: true`, or `none: true` instead of presence/absence +3. **Version tracking**: Use `since` and `until` fields for version tracking (TE3 only) +4. **Notes**: Add explanatory `note` field at any level for tooltips/additional context +5. **Nested editions**: Editions are now nested under each product, allowing different edition support per product +6. **Important**: When a product has `editions`, do NOT set `full`/`partial`/`none` at the product level - only at the edition level diff --git a/README.md b/README.md index 0438f35..28e4340 100644 --- a/README.md +++ b/README.md @@ -7,4 +7,7 @@ The site uses [DocFX](https://dotnet.github.io/docfx/) and GitHub flavoured mark # How to contribute All contributions are welcome. We will review all pull requests submitted. -To test your changes locally, download [DocFX](https://dotnet.github.io/docfx/) and run the command `docfx --serve` in the root of the project. +To test your changes locally: +- Make sure [DocFX](https://dotnet.github.io/docfx/) is installed. +- Run `gen_redirects.py` in the root of the project. +- Run `docfx --serve` in the root of the project. diff --git a/_site/staticwebapp.config.json b/_site/staticwebapp.config.json index dd3b9df..152db54 100644 --- a/_site/staticwebapp.config.json +++ b/_site/staticwebapp.config.json @@ -1,108 +1,112 @@ { "routes": [ { + "route": "/references/release-notes", + "redirect": "/references/release-notes/3_24_2.html", + "statusCode": 302 + }, { "route": "/te3/other/release-notes", - "redirect": "/te3/other/release-notes/3_24_2.html", + "redirect": "/references/release-notes/3_24_2.html", "statusCode": 302 }, { "route": "/privacy-policy.html", - "redirect": "/te3/other/privacy-policy.html", + "redirect": "/security/privacy-policy.html", "statusCode": 301 }, { "route": "/Advanced-Scripting.html", - "redirect": "/te2/Advanced-Scripting.html", + "redirect": "/how-tos/Advanced-Scripting.html", "statusCode": 301 }, { "route": "/Best-Practice-Analyzer.html", - "redirect": "/te2/Best-Practice-Analyzer.html", + "redirect": "/features/Best-Practice-Analyzer.html", "statusCode": 301 }, { "route": "/Importing-Tables.html", - "redirect": "/te2/Importing-Tables.html", + "redirect": "/how-tos/Importing-Tables.html", "statusCode": 301 }, { "route": "/tmdl", - "redirect": "/te3/features/tmdl.html", + "redirect": "/features/tmdl.html", "statusCode": 301 }, { "route": "/roslyn", - "redirect": "/te2/Advanced-Scripting.html#compiling-with-roslyn", + "redirect": "/how-tos/Advanced-Scripting.html#compiling-with-roslyn", "statusCode": 301 }, { "route": "/eula", - "redirect": "/te3/other/te3-eula.html", + "redirect": "/security/te3-eula.html", "statusCode": 301 }, { "route": "/tmuo", - "redirect": "/te3/features/user-options.html", + "redirect": "/references/user-options.html", "statusCode": 301 }, { "route": "/user-options.html", - "redirect": "/te3/features/user-options.html", + "redirect": "/references/user-options.html", "statusCode": 301 }, { "route": "/workspace", - "redirect": "/te3/tutorials/workspace-mode.html", + "redirect": "/tutorials/workspace-mode.html", "statusCode": 301 }, { "route": "/Workspace-Database.html", - "redirect": "/te3/tutorials/workspace-mode.html", + "redirect": "/tutorials/workspace-mode.html", "statusCode": 301 }, { "route": "/common/Datasets/direct-lake-dataset.html", - "redirect": "/common/Semantic%20Model/direct-lake-sql-model.html", + "redirect": "/features/Semantic-Model/direct-lake-sql-model.html", "statusCode": 301 }, { "route": "/projects/te3/en/latest/editions.html", - "redirect": "/te3/editions.html", + "redirect": "/getting-started/editions.html", "statusCode": 301 }, { "route": "/projects/te3/en/latest/security-privacy.html", - "redirect": "/te3/features/security-privacy.html", + "redirect": "/security/security-privacy.html", "statusCode": 301 }, { "route": "/projects/te3/en/latest/downloads.html", - "redirect": "/te3/other/downloads.html", + "redirect": "/references/downloads.html", "statusCode": 301 }, { "route": "/other/downloads.html", - "redirect": "/te3/other/downloads.html", + "redirect": "/references/downloads.html", "statusCode": 301 }, { "route": "/te3/downloads.html", - "redirect": "/te3/other/downloads.html", + "redirect": "/references/downloads.html", "statusCode": 301 }, { "route": "/Useful-script-snippets.html", - "redirect": "/te2/Useful-script-snippets.html", + "redirect": "/features/Useful-script-snippets.html", "statusCode": 301 }, { "route": "/Command-line-Options.html", - "redirect": "/te2/Command-line-Options.html", + "redirect": "/features/Command-line-Options.html", "statusCode": 301 }, { "route": "/Power-BI-Desktop-Integration.html", - "redirect": "/te2/Power-BI-Desktop-Integration.html", + "redirect": "/getting-started/Power-BI-Desktop-Integration.html", "statusCode": 301 }, { @@ -117,19 +121,19 @@ }, { "route": "/projects/te3/en/latest/getting-started.html", - "redirect": "/te3/getting-started.html", + "redirect": "/getting-started/getting-started.html", "statusCode": 301 }, { "route": "/Custom-Actions.html", - "redirect": "/te3/tutorials/creating-macros.html", + "redirect": "/tutorials/creating-macros.html", "statusCode": 301 }, { "route": "/FormatDax.html", - "redirect": "/te2/FormatDax.html", + "redirect": "/references/FormatDax.html", "statusCode": 301 - } + }, ], "responseOverrides": { "404": { diff --git a/content/te3/features/images/add-through-field-list.png b/content/assets/images/add-through-field-list.png similarity index 100% rename from content/te3/features/images/add-through-field-list.png rename to content/assets/images/add-through-field-list.png diff --git a/content/te3/features/images/add-through-tom-explorer.png b/content/assets/images/add-through-tom-explorer.png similarity index 100% rename from content/te3/features/images/add-through-tom-explorer.png rename to content/assets/images/add-through-tom-explorer.png diff --git a/content/te3/features/images/best-fit-columns-2.png b/content/assets/images/best-fit-columns-2.png similarity index 100% rename from content/te3/features/images/best-fit-columns-2.png rename to content/assets/images/best-fit-columns-2.png diff --git a/content/te3/features/images/create-pivot-grid-from-TOM-Explorer.png b/content/assets/images/create-pivot-grid-from-TOM-Explorer.png similarity index 100% rename from content/te3/features/images/create-pivot-grid-from-TOM-Explorer.png rename to content/assets/images/create-pivot-grid-from-TOM-Explorer.png diff --git a/content/assets/images/customizing-pivot-grids.png b/content/assets/images/customizing-pivot-grids.png index a91328a..75031d2 100644 Binary files a/content/assets/images/customizing-pivot-grids.png and b/content/assets/images/customizing-pivot-grids.png differ diff --git a/content/te3/features/images/deployment-options.png b/content/assets/images/deployment-options.png similarity index 100% rename from content/te3/features/images/deployment-options.png rename to content/assets/images/deployment-options.png diff --git a/content/te3/features/images/empty-pivot-grid-highlighted.png b/content/assets/images/empty-pivot-grid-highlighted.png similarity index 100% rename from content/te3/features/images/empty-pivot-grid-highlighted.png rename to content/assets/images/empty-pivot-grid-highlighted.png diff --git a/content/te3/features/images/empty-pivot-grid.png b/content/assets/images/empty-pivot-grid.png similarity index 100% rename from content/te3/features/images/empty-pivot-grid.png rename to content/assets/images/empty-pivot-grid.png diff --git a/content/assets/images/code-action-all-occurrences.png b/content/assets/images/features/code-action-all-occurrences.png similarity index 100% rename from content/assets/images/code-action-all-occurrences.png rename to content/assets/images/features/code-action-all-occurrences.png diff --git a/content/assets/images/code-action-invoke-menu.png b/content/assets/images/features/code-action-invoke-menu.png similarity index 100% rename from content/assets/images/code-action-invoke-menu.png rename to content/assets/images/features/code-action-invoke-menu.png diff --git a/content/assets/images/code-action-margin.png b/content/assets/images/features/code-action-margin.png similarity index 100% rename from content/assets/images/code-action-margin.png rename to content/assets/images/features/code-action-margin.png diff --git a/content/assets/images/code-action-refactor-submenu.png b/content/assets/images/features/code-action-refactor-submenu.png similarity index 100% rename from content/assets/images/code-action-refactor-submenu.png rename to content/assets/images/features/code-action-refactor-submenu.png diff --git a/content/assets/images/code-action-tooltip.png b/content/assets/images/features/code-action-tooltip.png similarity index 100% rename from content/assets/images/code-action-tooltip.png rename to content/assets/images/features/code-action-tooltip.png diff --git a/content/assets/images/dax-debugger-settings.png b/content/assets/images/features/dax-debugger-settings.png similarity index 100% rename from content/assets/images/dax-debugger-settings.png rename to content/assets/images/features/dax-debugger-settings.png diff --git a/content/assets/images/dax-debugger.png b/content/assets/images/features/dax-debugger.png similarity index 100% rename from content/assets/images/dax-debugger.png rename to content/assets/images/features/dax-debugger.png diff --git a/content/assets/images/dax-optimizer-analyze.png b/content/assets/images/features/dax-optimizer-analyze.png similarity index 100% rename from content/assets/images/dax-optimizer-analyze.png rename to content/assets/images/features/dax-optimizer-analyze.png diff --git a/content/assets/images/dax-optimizer-issues.png b/content/assets/images/features/dax-optimizer-issues.png similarity index 100% rename from content/assets/images/dax-optimizer-issues.png rename to content/assets/images/features/dax-optimizer-issues.png diff --git a/content/assets/images/dax-optimizer-preview.png b/content/assets/images/features/dax-optimizer-preview.png similarity index 100% rename from content/assets/images/dax-optimizer-preview.png rename to content/assets/images/features/dax-optimizer-preview.png diff --git a/content/assets/images/dax-optimizer-results.png b/content/assets/images/features/dax-optimizer-results.png similarity index 100% rename from content/assets/images/dax-optimizer-results.png rename to content/assets/images/features/dax-optimizer-results.png diff --git a/content/assets/images/dax-optimizer-view-menu.png b/content/assets/images/features/dax-optimizer-view-menu.png similarity index 100% rename from content/assets/images/dax-optimizer-view-menu.png rename to content/assets/images/features/dax-optimizer-view-menu.png diff --git a/content/assets/images/dax-optimizer-view.png b/content/assets/images/features/dax-optimizer-view.png similarity index 100% rename from content/assets/images/dax-optimizer-view.png rename to content/assets/images/features/dax-optimizer-view.png diff --git a/content/assets/images/debug-from-pivot.png b/content/assets/images/features/debug-from-pivot.png similarity index 100% rename from content/assets/images/debug-from-pivot.png rename to content/assets/images/features/debug-from-pivot.png diff --git a/content/assets/images/debug-from-query.png b/content/assets/images/features/debug-from-query.png similarity index 100% rename from content/assets/images/debug-from-query.png rename to content/assets/images/features/debug-from-query.png diff --git a/content/assets/images/debug-scalar-predicates.png b/content/assets/images/features/debug-scalar-predicates.png similarity index 100% rename from content/assets/images/debug-scalar-predicates.png rename to content/assets/images/features/debug-scalar-predicates.png diff --git a/content/te3/features/images/pivot-grid-menu.png b/content/assets/images/features/pivot-grid-menu.png similarity index 100% rename from content/te3/features/images/pivot-grid-menu.png rename to content/assets/images/features/pivot-grid-menu.png diff --git a/content/te3/features/images/field-list-settings.png b/content/assets/images/field-list-settings.png similarity index 100% rename from content/te3/features/images/field-list-settings.png rename to content/assets/images/field-list-settings.png diff --git a/content/te3/features/images/fit-columns.png b/content/assets/images/fit-columns.png similarity index 100% rename from content/te3/features/images/fit-columns.png rename to content/assets/images/fit-columns.png diff --git a/content/assets/images/Activation_manual_firstprompt.png b/content/assets/images/getting-started/Activation_manual_firstprompt.png similarity index 100% rename from content/assets/images/Activation_manual_firstprompt.png rename to content/assets/images/getting-started/Activation_manual_firstprompt.png diff --git a/content/assets/images/about-te3.png b/content/assets/images/getting-started/about-te3.png similarity index 100% rename from content/assets/images/about-te3.png rename to content/assets/images/getting-started/about-te3.png diff --git a/content/assets/images/activation_manual_dialogbox_filled.png b/content/assets/images/getting-started/activation_manual_dialogbox_filled.png similarity index 100% rename from content/assets/images/activation_manual_dialogbox_filled.png rename to content/assets/images/getting-started/activation_manual_dialogbox_filled.png diff --git a/content/assets/images/activation_manual_jsonobject.png b/content/assets/images/getting-started/activation_manual_jsonobject.png similarity index 100% rename from content/assets/images/activation_manual_jsonobject.png rename to content/assets/images/getting-started/activation_manual_jsonobject.png diff --git a/content/assets/images/collect-telemetry.png b/content/assets/images/getting-started/collect-telemetry.png similarity index 100% rename from content/assets/images/collect-telemetry.png rename to content/assets/images/getting-started/collect-telemetry.png diff --git a/content/assets/images/enter-license-key.png b/content/assets/images/getting-started/enter-license-key.png similarity index 100% rename from content/assets/images/enter-license-key.png rename to content/assets/images/getting-started/enter-license-key.png diff --git a/content/assets/images/install.png b/content/assets/images/getting-started/install.png similarity index 100% rename from content/assets/images/install.png rename to content/assets/images/getting-started/install.png diff --git a/content/assets/images/getting-started/power-bi-desktop-integration.png b/content/assets/images/getting-started/power-bi-desktop-integration.png new file mode 100644 index 0000000..70f41b1 Binary files /dev/null and b/content/assets/images/getting-started/power-bi-desktop-integration.png differ diff --git a/content/assets/images/product-activation.png b/content/assets/images/getting-started/product-activation.png similarity index 100% rename from content/assets/images/product-activation.png rename to content/assets/images/getting-started/product-activation.png diff --git a/content/te3/features/images/pivot-grid-example.png b/content/assets/images/pivot-grid-example.png similarity index 100% rename from content/te3/features/images/pivot-grid-example.png rename to content/assets/images/pivot-grid-example.png diff --git a/content/assets/images/pivot-grid-menu.png b/content/assets/images/pivot-grid-menu.png new file mode 100644 index 0000000..3faeb6f Binary files /dev/null and b/content/assets/images/pivot-grid-menu.png differ diff --git a/content/te3/features/images/pivot-grid-toolbar.png b/content/assets/images/pivot-grid-toolbar.png similarity index 100% rename from content/te3/features/images/pivot-grid-toolbar.png rename to content/assets/images/pivot-grid-toolbar.png diff --git a/content/assets/images/show-fields-pivot.png b/content/assets/images/show-fields-pivot.png index c3d2fed..51fbc6b 100644 Binary files a/content/assets/images/show-fields-pivot.png and b/content/assets/images/show-fields-pivot.png differ diff --git a/content/assets/images/proxy-error.png b/content/assets/images/troubleshooting/proxy-error.png similarity index 100% rename from content/assets/images/proxy-error.png rename to content/assets/images/troubleshooting/proxy-error.png diff --git a/content/assets/images/proxy-settings.png b/content/assets/images/troubleshooting/proxy-settings.png similarity index 100% rename from content/assets/images/proxy-settings.png rename to content/assets/images/troubleshooting/proxy-settings.png diff --git a/content/assets/images/registry-editor.png b/content/assets/images/troubleshooting/registry-editor.png similarity index 100% rename from content/assets/images/registry-editor.png rename to content/assets/images/troubleshooting/registry-editor.png diff --git a/content/assets/images/Incremental-refresh-properties.png b/content/assets/images/tutorials/Incremental-refresh-properties.png similarity index 100% rename from content/assets/images/Incremental-refresh-properties.png rename to content/assets/images/tutorials/Incremental-refresh-properties.png diff --git a/content/assets/images/calendar-create.png b/content/assets/images/tutorials/calendar-create.png similarity index 100% rename from content/assets/images/calendar-create.png rename to content/assets/images/tutorials/calendar-create.png diff --git a/content/assets/images/calendar-example.png b/content/assets/images/tutorials/calendar-example.png similarity index 100% rename from content/assets/images/calendar-example.png rename to content/assets/images/tutorials/calendar-example.png diff --git a/content/assets/images/calendar-tom-explorer.png b/content/assets/images/tutorials/calendar-tom-explorer.png similarity index 100% rename from content/assets/images/calendar-tom-explorer.png rename to content/assets/images/tutorials/calendar-tom-explorer.png diff --git a/content/assets/images/incremental-refresh-apply-refresh-policy.png b/content/assets/images/tutorials/incremental-refresh-apply-refresh-policy.png similarity index 100% rename from content/assets/images/incremental-refresh-apply-refresh-policy.png rename to content/assets/images/tutorials/incremental-refresh-apply-refresh-policy.png diff --git a/content/assets/images/incremental-refresh-delete-partitions.png b/content/assets/images/tutorials/incremental-refresh-delete-partitions.png similarity index 100% rename from content/assets/images/incremental-refresh-delete-partitions.png rename to content/assets/images/tutorials/incremental-refresh-delete-partitions.png diff --git a/content/assets/images/incremental-refresh-deploy-partitions.png b/content/assets/images/tutorials/incremental-refresh-deploy-partitions.png similarity index 100% rename from content/assets/images/incremental-refresh-deploy-partitions.png rename to content/assets/images/tutorials/incremental-refresh-deploy-partitions.png diff --git a/content/assets/images/incremental-refresh-detect-changes-pbi-match.png b/content/assets/images/tutorials/incremental-refresh-detect-changes-pbi-match.png similarity index 100% rename from content/assets/images/incremental-refresh-detect-changes-pbi-match.png rename to content/assets/images/tutorials/incremental-refresh-detect-changes-pbi-match.png diff --git a/content/assets/images/incremental-refresh-detect-changes-pbi.png b/content/assets/images/tutorials/incremental-refresh-detect-changes-pbi.png similarity index 100% rename from content/assets/images/incremental-refresh-detect-changes-pbi.png rename to content/assets/images/tutorials/incremental-refresh-detect-changes-pbi.png diff --git a/content/assets/images/incremental-refresh-enable-refresh-policy-pbi.png b/content/assets/images/tutorials/incremental-refresh-enable-refresh-policy-pbi.png similarity index 100% rename from content/assets/images/incremental-refresh-enable-refresh-policy-pbi.png rename to content/assets/images/tutorials/incremental-refresh-enable-refresh-policy-pbi.png diff --git a/content/assets/images/incremental-refresh-enable-refresh-policy.png b/content/assets/images/tutorials/incremental-refresh-enable-refresh-policy.png similarity index 100% rename from content/assets/images/incremental-refresh-enable-refresh-policy.png rename to content/assets/images/tutorials/incremental-refresh-enable-refresh-policy.png diff --git a/content/assets/images/incremental-refresh-header.png b/content/assets/images/tutorials/incremental-refresh-header.png similarity index 100% rename from content/assets/images/incremental-refresh-header.png rename to content/assets/images/tutorials/incremental-refresh-header.png diff --git a/content/assets/images/incremental-refresh-incremental-granularity-pbi.png b/content/assets/images/tutorials/incremental-refresh-incremental-granularity-pbi.png similarity index 100% rename from content/assets/images/incremental-refresh-incremental-granularity-pbi.png rename to content/assets/images/tutorials/incremental-refresh-incremental-granularity-pbi.png diff --git a/content/assets/images/incremental-refresh-incremental-period-pbi.png b/content/assets/images/tutorials/incremental-refresh-incremental-period-pbi.png similarity index 100% rename from content/assets/images/incremental-refresh-incremental-period-pbi.png rename to content/assets/images/tutorials/incremental-refresh-incremental-period-pbi.png diff --git a/content/assets/images/incremental-refresh-mode-pbi-match.png b/content/assets/images/tutorials/incremental-refresh-mode-pbi-match.png similarity index 100% rename from content/assets/images/incremental-refresh-mode-pbi-match.png rename to content/assets/images/tutorials/incremental-refresh-mode-pbi-match.png diff --git a/content/assets/images/incremental-refresh-mode-pbi.png b/content/assets/images/tutorials/incremental-refresh-mode-pbi.png similarity index 100% rename from content/assets/images/incremental-refresh-mode-pbi.png rename to content/assets/images/tutorials/incremental-refresh-mode-pbi.png diff --git a/content/assets/images/incremental-refresh-modify-a-refresh-policy.png b/content/assets/images/tutorials/incremental-refresh-modify-a-refresh-policy.png similarity index 100% rename from content/assets/images/incremental-refresh-modify-a-refresh-policy.png rename to content/assets/images/tutorials/incremental-refresh-modify-a-refresh-policy.png diff --git a/content/assets/images/incremental-refresh-native-query-formatted.png b/content/assets/images/tutorials/incremental-refresh-native-query-formatted.png similarity index 100% rename from content/assets/images/incremental-refresh-native-query-formatted.png rename to content/assets/images/tutorials/incremental-refresh-native-query-formatted.png diff --git a/content/assets/images/incremental-refresh-native-query-pbi.png b/content/assets/images/tutorials/incremental-refresh-native-query-pbi.png similarity index 100% rename from content/assets/images/incremental-refresh-native-query-pbi.png rename to content/assets/images/tutorials/incremental-refresh-native-query-pbi.png diff --git a/content/assets/images/incremental-refresh-native-query-sql.png b/content/assets/images/tutorials/incremental-refresh-native-query-sql.png similarity index 100% rename from content/assets/images/incremental-refresh-native-query-sql.png rename to content/assets/images/tutorials/incremental-refresh-native-query-sql.png diff --git a/content/assets/images/incremental-refresh-native-query-unformatted.png b/content/assets/images/tutorials/incremental-refresh-native-query-unformatted.png similarity index 100% rename from content/assets/images/incremental-refresh-native-query-unformatted.png rename to content/assets/images/tutorials/incremental-refresh-native-query-unformatted.png diff --git a/content/assets/images/incremental-refresh-period-offset-pbi-match.png b/content/assets/images/tutorials/incremental-refresh-period-offset-pbi-match.png similarity index 100% rename from content/assets/images/incremental-refresh-period-offset-pbi-match.png rename to content/assets/images/tutorials/incremental-refresh-period-offset-pbi-match.png diff --git a/content/assets/images/incremental-refresh-period-offset-pbi.png b/content/assets/images/tutorials/incremental-refresh-period-offset-pbi.png similarity index 100% rename from content/assets/images/incremental-refresh-period-offset-pbi.png rename to content/assets/images/tutorials/incremental-refresh-period-offset-pbi.png diff --git a/content/assets/images/incremental-refresh-policy-windows.png b/content/assets/images/tutorials/incremental-refresh-policy-windows.png similarity index 100% rename from content/assets/images/incremental-refresh-policy-windows.png rename to content/assets/images/tutorials/incremental-refresh-policy-windows.png diff --git a/content/assets/images/incremental-refresh-refresh-all-partitions.png b/content/assets/images/tutorials/incremental-refresh-refresh-all-partitions.png similarity index 100% rename from content/assets/images/incremental-refresh-refresh-all-partitions.png rename to content/assets/images/tutorials/incremental-refresh-refresh-all-partitions.png diff --git a/content/assets/images/incremental-refresh-rolling-granularity-pbi.png b/content/assets/images/tutorials/incremental-refresh-rolling-granularity-pbi.png similarity index 100% rename from content/assets/images/incremental-refresh-rolling-granularity-pbi.png rename to content/assets/images/tutorials/incremental-refresh-rolling-granularity-pbi.png diff --git a/content/assets/images/incremental-refresh-rolling-window-pbi.png b/content/assets/images/tutorials/incremental-refresh-rolling-window-pbi.png similarity index 100% rename from content/assets/images/incremental-refresh-rolling-window-pbi.png rename to content/assets/images/tutorials/incremental-refresh-rolling-window-pbi.png diff --git a/content/assets/images/incremental-refresh-setup-refresh-policy.png b/content/assets/images/tutorials/incremental-refresh-setup-refresh-policy.png similarity index 100% rename from content/assets/images/incremental-refresh-setup-refresh-policy.png rename to content/assets/images/tutorials/incremental-refresh-setup-refresh-policy.png diff --git a/content/assets/images/incremental-refresh-source-expression.png b/content/assets/images/tutorials/incremental-refresh-source-expression.png similarity index 100% rename from content/assets/images/incremental-refresh-source-expression.png rename to content/assets/images/tutorials/incremental-refresh-source-expression.png diff --git a/content/assets/images/incremental-refresh-update-schema-header.png b/content/assets/images/tutorials/incremental-refresh-update-schema-header.png similarity index 100% rename from content/assets/images/incremental-refresh-update-schema-header.png rename to content/assets/images/tutorials/incremental-refresh-update-schema-header.png diff --git a/content/assets/images/incremental-refresh-update-table-schema.png b/content/assets/images/tutorials/incremental-refresh-update-table-schema.png similarity index 100% rename from content/assets/images/incremental-refresh-update-table-schema.png rename to content/assets/images/tutorials/incremental-refresh-update-table-schema.png diff --git a/content/assets/images/incremental-refresh-window-properties.png b/content/assets/images/tutorials/incremental-refresh-window-properties.png similarity index 100% rename from content/assets/images/incremental-refresh-window-properties.png rename to content/assets/images/tutorials/incremental-refresh-window-properties.png diff --git a/content/assets/images/incremental-refresh-workspace-mode-out-of-sync.png b/content/assets/images/tutorials/incremental-refresh-workspace-mode-out-of-sync.png similarity index 100% rename from content/assets/images/incremental-refresh-workspace-mode-out-of-sync.png rename to content/assets/images/tutorials/incremental-refresh-workspace-mode-out-of-sync.png diff --git a/content/assets/images/incremental-refresh-workspace-mode.png b/content/assets/images/tutorials/incremental-refresh-workspace-mode.png similarity index 100% rename from content/assets/images/incremental-refresh-workspace-mode.png rename to content/assets/images/tutorials/incremental-refresh-workspace-mode.png diff --git a/content/assets/images/new-pbi-model.png b/content/assets/images/tutorials/new-pbi-model.png similarity index 100% rename from content/assets/images/new-pbi-model.png rename to content/assets/images/tutorials/new-pbi-model.png diff --git a/content/assets/images/new-udf.png b/content/assets/images/tutorials/new-udf.png similarity index 100% rename from content/assets/images/new-udf.png rename to content/assets/images/tutorials/new-udf.png diff --git a/content/assets/images/udf-comment-tooltips.png b/content/assets/images/tutorials/udf-comment-tooltips.png similarity index 100% rename from content/assets/images/udf-comment-tooltips.png rename to content/assets/images/tutorials/udf-comment-tooltips.png diff --git a/content/assets/images/udf-define.png b/content/assets/images/tutorials/udf-define.png similarity index 100% rename from content/assets/images/udf-define.png rename to content/assets/images/tutorials/udf-define.png diff --git a/content/assets/images/udf-from-query.png b/content/assets/images/tutorials/udf-from-query.png similarity index 100% rename from content/assets/images/udf-from-query.png rename to content/assets/images/tutorials/udf-from-query.png diff --git a/content/assets/images/udf-pass-by-ref.png b/content/assets/images/tutorials/udf-pass-by-ref.png similarity index 100% rename from content/assets/images/udf-pass-by-ref.png rename to content/assets/images/tutorials/udf-pass-by-ref.png diff --git a/content/assets/images/udf-peek-definition.png b/content/assets/images/tutorials/udf-peek-definition.png similarity index 100% rename from content/assets/images/udf-peek-definition.png rename to content/assets/images/tutorials/udf-peek-definition.png diff --git a/content/assets/images/udfs-cl1702.png b/content/assets/images/tutorials/udfs-cl1702.png similarity index 100% rename from content/assets/images/udfs-cl1702.png rename to content/assets/images/tutorials/udfs-cl1702.png diff --git a/content/common/common-features.md b/content/common/common-features.md deleted file mode 100644 index ea07c5e..0000000 --- a/content/common/common-features.md +++ /dev/null @@ -1,5 +0,0 @@ -# Common features - -A lot of Tabular Editor functionality is shared between both Tabular Editor 2.x and Tabular Editor 3.x. This section holds articles that are related to such shared functionality. - -A few minor differences exist, which are highlighted whenever they occur. For example, C# scripting is called "Advanced Scripting" in Tabular Editor 2.x, and macros are called "Custom Actions". diff --git a/content/common/log4j.md b/content/common/log4j.md deleted file mode 100644 index e742ca4..0000000 --- a/content/common/log4j.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -uid: log4j -title: Log4j vulnerability -author: Daniel Otykier -updated: 2021-12-15 ---- -# Log4j vulnerability - -On December 9, 2021, the [Log4j vulnerability](https://logging.apache.org/log4j/2.x/security.html) was uncovered. Naturally, IT organizations worldwide took steps to ensure that affected software was patched immediately. - -For anyone seeking information about whether Tabular Editor is affected by this vulnerability, we hereby state the following: - -> [!IMPORTANT] -> Tabular Editor 2 and Tabular Editor 3 are **not** affected by the Log4j vulnerability. - -No version of Tabular Editor is affected by this vulnerability, since the application itself is a .NET application that does not rely on any Java components. This applies to all versions of Tabular Editor 2 (current and historic major and minor updates), as well as all versions of Tabular Editor 3 (current and historic major and minor updates). - -Should you have any concerns or questions, please reach out to [sales@tabulareditor.com](mailto:sales@tabulareditor.com). \ No newline at end of file diff --git a/content/common/tmdl-common.md b/content/common/tmdl-common.md deleted file mode 100644 index 4389cfe..0000000 --- a/content/common/tmdl-common.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -uid: tmdl-common -title: Tabular Model Definition Language (TMDL) -author: Daniel Otykier -updated: 2023-05-22 -applies_to: - versions: - - version: 2.x - - version: 3.x ---- -[!include[tmdl](~/content/te3/features/tmdl.md)] \ No newline at end of file diff --git a/content/common/toc.md b/content/common/toc.md deleted file mode 100644 index 36aceae..0000000 --- a/content/common/toc.md +++ /dev/null @@ -1,50 +0,0 @@ -# [Common functionality](common-features.md) -## [Power BI Desktop limitations](desktop-limitations.md) -## [XMLA / AS connectivity](xmla-as-connectivity.md) -## [Policies](policies.md) -## [Save to folder](save-to-folder.md) -### @tmdl-common -## [Best Practice Analyzer](xref:using-bpa) -### [BPA Sample Rules Expression](xref:using-bpa-sample-rules-expressions) -## [Semantic Model Types](Semantic Model/semantic-model-types.md) -### [Direct Lake on SQL](Semantic Model/direct-lake-sql-model.md) -### [Direct Query over Analysis Services](Semantic Model/direct-query-over-as.md) - - - - - - -# C#/Advanced Scripting - -## @csharp-script-library - -### @script-library-beginner -#### @script-count-rows -#### @script-create-sum-measures-from-columns -#### @script-create-measure-table -#### @script-create-table-groups -#### @script-create-m-parameter -#### @script-edit-hidden-partitions -#### @script-format-numeric-measures -#### @script-show-data-source-dependencies -#### @create-field-parameter -#### @script-display-unique-column-values - - -### @script-library-advanced -#### @script-count-things -#### @script-output-things -#### @script-create-date-table -#### @script-create-and-replace-parameter -#### @script-format-power-query -#### @script-implement-incremental-refresh -#### @script-remove-measures-with-error -#### @script-find-replace -#### @script-convert-dlsql-to-dlol -#### @script-convert-import-to-dlol -#### @script-databricks-semantic-model-set-up -#### @script-create-databricks-relationships -#### @script-add-databricks-metadata-descriptions - -## @script-helper-methods \ No newline at end of file diff --git a/content/common/using-bpa.md b/content/common/using-bpa.md deleted file mode 100644 index 41feb4a..0000000 --- a/content/common/using-bpa.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -uid: using-bpa -title: Using the Best Practice Analyzer -author: Morten Lønskov -updated: 2023-02-09 ---- - -# Best Practice Analyzer - -The Best Practice Analyzer (BPA) lets you define rules on the metadata of your model, to encourage certain conventions and best practices while developing your Power BI or Analysis Services Model. - -## PBA Overview -The BPA overview shows you all the rules defined in your model that are currently being broken: - -![BPA Overview](~/content/assets/images/common/BPAOverview.png) - -And you will always be able to see in the main UI how many rules you are currently being broken. - -![BPA Overview Line](~/content/assets/images/common/PBAOverviewMenuLine.png) - -Clicking the link (or pressing F10), brings up the full BPA window. - -> [!NOTE] -> If you are more into a video walk through then PowerBI.tips has a video with our own Daniel Otykier showing the Best Practice Analyzer in detail here: -> [!Video https://www.youtube.com/embed/5WnN0NG2nBk] - - -### Functionality - -Whenever a change is made to the model, the Best Practice Analyzer scans your model for issues in the background. You can disable this feature under File > Preferences. - -The BPA Window in both TE2 and TE3 allows you to dock the window on one side of your desktop, while keeping the main window in the other side, allowing you to work with your model while you can see BPA issues. - -The Best Practice Analyzer window continuously lists all the **effective rules** on your model as well as the objects that are in violation of each rule. Right-clicking anywhere inside the list or using the toolbar buttons at the top of the window, let's you perform the following actions: - -* **Manage rules...**: This opens the Manage Rules UI, which we will cover below. This UI can also be accessed through the "Tools > Manage BPA Rules..." menu of the main UI. -* **Go to object...**: Choosing this option or double-clicking on an object in the list, takes you to the same object in the main UI. -* **Ignore item/items**: Selecting one or more objects in the list and choosing this option, will apply an annotation to the chosen objects indicating that the Best Practice Analyzer should ignore the objects going forward. If you ignored an object by mistake, toggle the "Show ignored" button at the top of the screen. This will let you unignore an object that was previously ignored. -* **Ignore rule**: If you've selected one or more rules in the list, this option will put an annotation at the model level that indicates, that the selected rule should always be ignored. Again, by toggling the "Show ignored" button, you can unignore rules as well. -* **Generate fix script**: Rules that have an easy fix (meaning the issue can be resolved simply by setting a single property on the object), will have this option enabled. By clicking, you will get a C# script copied into your clipboard. This script can then be subsequently pasted into the [Advanced Scripting](/Advanced-Scripting) area of Tabular Editor, where you can review it before executing it to apply the fix. -* **Apply fix**: This option is also available for rules than have an easy fix, as mentioned above. Instead of copying the script to the clipboard, it will be executed immediately. - -## Managing Best Practice Rules -If you need to add, remove or modify the rules applying to your model, there's a specific UI for that. You can bring it up by clicking the top-left button on the Best Practice Analyzer window, or by using the "Tools > Manage BPA Rules..." menu item in the main window. - -![BPA Manage Rules](~/content/assets/images/common/BPAOverviewManageRules.png) - -The Manage BPA rules window contains two lists: The top list represents the **collections** of rules that are currently loaded. Selecting a collection in this list, will display all the rules that are defined within this collection in the bottom list. - -![BPA Manage Rules UI](~/content/assets/images/common/PBAOverviewManageRulesPopUp.png) - -### Rule Collections - By default, three rule collections will show up: - - ### [Tabular Editor 3](#tab/TE3Rules) -* **Rules within the current model**: As the name indicates, this is the collection of rules that have been defined within the current model. The rule definitions are stored as an annotation on the Model object. -* **Rules for the local user**: These are rules that are stored in your `%AppData%\..\Local\TabularEditor3\BPARules.json` file. These rules will apply to all models that are loaded in Tabular Editor by the currently logged in Windows user. -* **Rules on the local machine**: These rules are stored in the `%ProgramData%\TabularEditor3\BPARules.json`. These rules will apply to all models that are loaded in Tabular Editor on the current machine. - -### [Tabular Editor 2](#tab/TE2Rules) -* **Rules within the current model**: As the name indicates, this is the collection of rules that have been defined within the current model. The rule definitions are stored as an annotation on the Model object. -* **Rules for the local user**: These are rules that are stored in your `%AppData%\..\Local\TabularEditor\BPARules.json` file. These rules will apply to all models that are loaded in Tabular Editor by the currently logged in Windows user. -* **Rules on the local machine**: These rules are stored in the `%ProgramData%\TabularEditor\BPARules.json`. These rules will apply to all models that are loaded in Tabular Editor on the current machine. -*** - -#### Rule Precedence -If the same rule (by ID) is located in more than one collection, the order of precedence is from top to bottom, meaning a rule defined within the model takes precedence over a rule, with the same ID, defined on the local machine. This allows you to override existing rules, for example to take model specific conventions into account. - -##### Effective Rules -At the top of the list, you'll see a special collection called **(Effective rules)**. Selecting this collection will show you the list of rules that actually apply to the currently loaded model, respecting the precedence of rules with identical ID's, as mentioned above. The lower list will indicate which collection a rule belongs to. Also, you will notice that a rule will have its name striked out, if a rule with a similar ID exists in a collection of higher precedence: - -![BPA Manage Rules UI](~/content/assets/images/common/PBAOverviewManageRulesPopUpHigherPrecedence.png) - -#### Adding additional collections -Tabular Editor provides the possibility of including rules from other sources on a model. If, for example, you have a rules file located on a network share, you can now include that file as a rule collection in the current model. If you have write access to the location of the file, you'll also be able to add/modify/remove rules from the file. Rule collections that are added this way take precedence over rules that are defined within the model. If you add multiple such collections, you can shift them up and down to control their mutual precedence. - -Click the "Add..." button to add a new rule collection to the model. This provides the following options: - -![BPA Manage Rules UI](~/content/assets/images/common/PBAOverviewManageRulesPopUpCreateNewRuleFile.png) - -* **Create new Rule File**: This will create a new, empty, .json file at the specified location, which you can subsequently add rules to. When choosing the file, notice that there is an option for using relative file paths. This is useful when you want to store the rule file in the same code repository as the current model. However, please be aware that a relative rule file reference only works, when the model has been loaded from disk (since there is no working directory when loading a model from an instance of Analysis Services). -* **Include local Rule File**: Use this option if you already have a .json file containing rules, that you want to include in your model. Again, you have the option of using relative file paths, which may be beneficial if the file is located close to the model metadata. If the file is located on a network share (or generally, on a drive different than where the currently loaded model metadata resides), you can only include it using an absolute path. -* **Include Rule File from URL**: This option lets you specify an HTTP/HTTPS URL, that should return a valid rule definition (json). This is useful if you want to include rules from an online source, for example the [Microsoft standard BPA rules](https://raw.githubusercontent.com/microsoft/Analysis-Services/master/BestPracticeRules/BPARules.json) from the [BestPracticeRules GitHub site](https://github.com/microsoft/Analysis-Services/tree/master/BestPracticeRules). Note that rule collections added from online sources will be read-only. - -#### Modifying rules within a collection -The lower part of the screen will let you add, edit, clone and delete rules within the currently selected collection, provided you have write access to the location where the collection is stored. Also, the "Move to..." button allows you to move or copy the selected rule to another collection, making it easy to manage multiple collections of rules. Please see our article with [samples of rule expressions ](/common/using-bpa-sample-rules-expressions.md) for more information on how to use that. - -#### Rule Description Placeholders -You can use placeholder values within the Best Practice Rule's description. This provides more customizable descriptions that will appear as tooltips in the Best Practice UI: - -* `%object%` returns a fully qualified DAX reference (if applicable) to the current object -* `%objectname%` returns only the name of the current object -* `%objecttype%` returns the type of the current object - -![BPA Manage Rules UI](~/content/assets/images/common/BPAOverviewRuleDescriptionPlaceHolders.png) diff --git a/content/te2/Best-Practice-Analyzer-Improvements.md b/content/features/Best-Practice-Analyzer.md similarity index 93% rename from content/te2/Best-Practice-Analyzer-Improvements.md rename to content/features/Best-Practice-Analyzer.md index 52fa839..902ab01 100644 --- a/content/te2/Best-Practice-Analyzer-Improvements.md +++ b/content/features/Best-Practice-Analyzer.md @@ -1,4 +1,20 @@ -# Best Practice Analyzer Improvements +--- +uid: best-practice-analyzer +title: Best Practice Analyzer +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +# Best Practice Analyzer As of [Tabular Editor 2.8.1](https://github.com/TabularEditor/TabularEditor/releases/tag/2.8.1), the Best Practice Analyzer has received a major overhaul. @@ -20,7 +36,7 @@ The Best Practice Analyzer window continuously lists all the **effective rules** * **Go to object...**: Choosing this option or double-clicking on an object in the list, takes you to the same object in the main UI. * **Ignore item/items**: Selecting one or more objects in the list and choosing this option, will apply an annotation to the chosen objects indicating that the Best Practice Analyzer should ignore the objects going forward. If you ignored an object by mistake, toggle the "Show ignored" button at the top of the screen. This will let you unignore an object that was previously ignored. * **Ignore rule**: If you've selected one or more rules in the list, this option will put an annotation at the model level that indicates, that the selected rule should always be ignored. Again, by toggling the "Show ignored" button, you can unignore rules as well. -* **Generate fix script**: Rules that have an easy fix (meaning the issue can be resolved simply by setting a single property on the object), will have this option enabled. By clicking, you will get a C# script copied into your clipboard. This script can then be subsequently pasted into the [Advanced Scripting](/Advanced-Scripting) area of Tabular Editor, where you can review it before executing it to apply the fix. +* **Generate fix script**: Rules that have an easy fix (meaning the issue can be resolved simply by setting a single property on the object), will have this option enabled. By clicking, you will get a C# script copied into your clipboard. This script can then be subsequently pasted into the [Advanced Scripting](../how-tos/Advanced-Scripting.md) area of Tabular Editor, where you can review it before executing it to apply the fix. * **Apply fix**: This option is also available for rules than have an easy fix, as mentioned above. Instead of copying the script to the clipboard, it will be executed immediately. ## Managing Best Practice Rules @@ -52,7 +68,7 @@ Click the "Add..." button to add a new rule collection to the model. This provid * **Include Rule File from URL**: This option lets you specify an HTTP/HTTPS URL, that should return a valid rule definition (json). This is useful if you want to include rules from an online source, for example the [standard BPA rules](https://raw.githubusercontent.com/microsoft/Analysis-Services/master/BestPracticeRules/BPARules.json) from the [BestPracticeRules GitHub site](https://github.com/microsoft/Analysis-Services/tree/master/BestPracticeRules). Note that rule collections added from online sources will be read-only. ### Modifying rules within a collection -The lower part of the screen will let you add, edit, clone and delete rules within the currently selected collection, provided you have write access to the location where the collection is stored. Also, the "Move to..." button allows you to move or copy the selected rule to another collection, making it easy to manage multiple collections of rules. The UI for editing a rule definition is unchanged from previous versions of Tabular Editor, so please refer to the [old Best Practice Analyzer article](/Best-Practice-Analyzer#rule-expression-samples) for more information on how to use that. +The lower part of the screen will let you add, edit, clone and delete rules within the currently selected collection, provided you have write access to the location where the collection is stored. Also, the "Move to..." button allows you to move or copy the selected rule to another collection, making it easy to manage multiple collections of rules. ### Rule Description Placeholders One small improvement compared to previous versions, is that you can now use the following placeholder values within the Best Practice Rule's description. This provides more customisable descriptions that will appear as tooltips in the Best Practice UI: diff --git a/content/common/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.md b/content/features/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.md similarity index 99% rename from content/common/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.md rename to content/features/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.md index 8a8c6ce..583e973 100644 --- a/content/common/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.md +++ b/content/features/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.md @@ -4,9 +4,11 @@ title: Add Databricks Metadata Descriptions author: Johnny Winter updated: 2025-09-04 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Add Databricks Metadata Descriptions diff --git a/content/common/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.md b/content/features/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.md similarity index 98% rename from content/common/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.md rename to content/features/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.md index c358d4a..b307558 100644 --- a/content/common/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.md +++ b/content/features/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.md @@ -4,9 +4,11 @@ title: Convert Direct Lake on SQL to OneLake author: Daniel Otykier updated: 2025-06-20 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Convert Direct Lake on SQL to OneLake diff --git a/content/common/CSharpScripts/Advanced/script-convert-import-to-dlol.md b/content/features/CSharpScripts/Advanced/script-convert-import-to-dlol.md similarity index 98% rename from content/common/CSharpScripts/Advanced/script-convert-import-to-dlol.md rename to content/features/CSharpScripts/Advanced/script-convert-import-to-dlol.md index 7f319f0..7ec901d 100644 --- a/content/common/CSharpScripts/Advanced/script-convert-import-to-dlol.md +++ b/content/features/CSharpScripts/Advanced/script-convert-import-to-dlol.md @@ -4,9 +4,11 @@ title: Convert Import to Direct Lake on OneLake author: Daniel Otykier updated: 2025-06-20 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Convert Import to Direct Lake on OneLake diff --git a/content/common/CSharpScripts/Advanced/script-count-things.md b/content/features/CSharpScripts/Advanced/script-count-things.md similarity index 98% rename from content/common/CSharpScripts/Advanced/script-count-things.md rename to content/features/CSharpScripts/Advanced/script-count-things.md index 936263c..da05536 100644 --- a/content/common/CSharpScripts/Advanced/script-count-things.md +++ b/content/features/CSharpScripts/Advanced/script-count-things.md @@ -4,9 +4,11 @@ title: Count Model Objects author: Kurt Buhler updated: 2023-02-27 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Count Things in the Model diff --git a/content/common/CSharpScripts/Advanced/script-create-and-replace-M-parameter.md b/content/features/CSharpScripts/Advanced/script-create-and-replace-M-parameter.md similarity index 98% rename from content/common/CSharpScripts/Advanced/script-create-and-replace-M-parameter.md rename to content/features/CSharpScripts/Advanced/script-create-and-replace-M-parameter.md index 4459ce8..fa748ca 100644 --- a/content/common/CSharpScripts/Advanced/script-create-and-replace-M-parameter.md +++ b/content/features/CSharpScripts/Advanced/script-create-and-replace-M-parameter.md @@ -4,8 +4,11 @@ title: Create M Parameter (Auto-Replace) author: Kurt Buhler updated: 2023-02-28 applies_to: - versions: - - version: 3.x + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + full: true --- # Create New M Parameter and Add it to Existing M Partitions diff --git a/content/common/CSharpScripts/Advanced/script-create-databricks-relationships.md b/content/features/CSharpScripts/Advanced/script-create-databricks-relationships.md similarity index 99% rename from content/common/CSharpScripts/Advanced/script-create-databricks-relationships.md rename to content/features/CSharpScripts/Advanced/script-create-databricks-relationships.md index 4a0afd5..ae444fa 100644 --- a/content/common/CSharpScripts/Advanced/script-create-databricks-relationships.md +++ b/content/features/CSharpScripts/Advanced/script-create-databricks-relationships.md @@ -4,9 +4,11 @@ title: Create Databricks Relationships author: Johnny Winter updated: 2025-09-04 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Create Databricks Relationships diff --git a/content/common/CSharpScripts/Advanced/script-create-date-table.md b/content/features/CSharpScripts/Advanced/script-create-date-table.md similarity index 99% rename from content/common/CSharpScripts/Advanced/script-create-date-table.md rename to content/features/CSharpScripts/Advanced/script-create-date-table.md index be25999..d214bca 100644 --- a/content/common/CSharpScripts/Advanced/script-create-date-table.md +++ b/content/features/CSharpScripts/Advanced/script-create-date-table.md @@ -4,9 +4,11 @@ title: Create Date Table author: Kurt Buhler updated: 2023-02-28 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Create a Date Table diff --git a/content/common/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.md b/content/features/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.md similarity index 97% rename from content/common/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.md rename to content/features/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.md index 1df8a1c..4c3e4fc 100644 --- a/content/common/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.md +++ b/content/features/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.md @@ -4,9 +4,11 @@ title: Databricks Semantic Model Set-Up author: Johnny Winter updated: 2025-09-04 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Databricks Semantic Model Set-Up diff --git a/content/common/CSharpScripts/Advanced/script-find-replace-selected-measures.md b/content/features/CSharpScripts/Advanced/script-find-replace-selected-measures.md similarity index 98% rename from content/common/CSharpScripts/Advanced/script-find-replace-selected-measures.md rename to content/features/CSharpScripts/Advanced/script-find-replace-selected-measures.md index 996d09a..f80005e 100644 --- a/content/common/CSharpScripts/Advanced/script-find-replace-selected-measures.md +++ b/content/features/CSharpScripts/Advanced/script-find-replace-selected-measures.md @@ -4,9 +4,11 @@ title: Find/Replace Measure DAX author: Kurt Buhler updated: 2023-03-01 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Find & Replace Substring in Measures diff --git a/content/common/CSharpScripts/Advanced/script-format-power-query.md b/content/features/CSharpScripts/Advanced/script-format-power-query.md similarity index 97% rename from content/common/CSharpScripts/Advanced/script-format-power-query.md rename to content/features/CSharpScripts/Advanced/script-format-power-query.md index b1b680d..c936182 100644 --- a/content/common/CSharpScripts/Advanced/script-format-power-query.md +++ b/content/features/CSharpScripts/Advanced/script-format-power-query.md @@ -4,8 +4,11 @@ title: Format Power Query author: Kurt Buhler updated: 2023-02-28 applies_to: - versions: - - version: 3.x + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + full: true --- # Format Power Query diff --git a/content/common/CSharpScripts/Advanced/script-implement-incremental-refresh.md b/content/features/CSharpScripts/Advanced/script-implement-incremental-refresh.md similarity index 99% rename from content/common/CSharpScripts/Advanced/script-implement-incremental-refresh.md rename to content/features/CSharpScripts/Advanced/script-implement-incremental-refresh.md index c4e86de..c610806 100644 --- a/content/common/CSharpScripts/Advanced/script-implement-incremental-refresh.md +++ b/content/features/CSharpScripts/Advanced/script-implement-incremental-refresh.md @@ -4,9 +4,11 @@ title: Setup Incremental Refresh author: Kurt Buhler updated: 2023-03-01 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Configure Incremental Refresh diff --git a/content/common/CSharpScripts/Advanced/script-output-things.md b/content/features/CSharpScripts/Advanced/script-output-things.md similarity index 96% rename from content/common/CSharpScripts/Advanced/script-output-things.md rename to content/features/CSharpScripts/Advanced/script-output-things.md index 1eb01e7..61979af 100644 --- a/content/common/CSharpScripts/Advanced/script-output-things.md +++ b/content/features/CSharpScripts/Advanced/script-output-things.md @@ -4,9 +4,11 @@ title: Output Object Details in a Grid author: Daniel Otykier updated: 2024-12-13 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Output Object Details in a Grid diff --git a/content/common/CSharpScripts/Advanced/script-remove-measures-with-error.md b/content/features/CSharpScripts/Advanced/script-remove-measures-with-error.md similarity index 98% rename from content/common/CSharpScripts/Advanced/script-remove-measures-with-error.md rename to content/features/CSharpScripts/Advanced/script-remove-measures-with-error.md index 840cf81..0291bce 100644 --- a/content/common/CSharpScripts/Advanced/script-remove-measures-with-error.md +++ b/content/features/CSharpScripts/Advanced/script-remove-measures-with-error.md @@ -4,8 +4,11 @@ title: View/Remove Measures with Errors author: Kurt Buhler updated: 2023-02-28 applies_to: - versions: - - version: 3.x + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + full: true --- # View/Remove Measures with Errors diff --git a/content/common/CSharpScripts/Beginner/script-count-rows.md b/content/features/CSharpScripts/Beginner/script-count-rows.md similarity index 94% rename from content/common/CSharpScripts/Beginner/script-count-rows.md rename to content/features/CSharpScripts/Beginner/script-count-rows.md index bfc1df0..843cec9 100644 --- a/content/common/CSharpScripts/Beginner/script-count-rows.md +++ b/content/features/CSharpScripts/Beginner/script-count-rows.md @@ -4,9 +4,11 @@ title: Count Table Rows author: Kurt Buhler updated: 2023-02-27 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Count Rows in a Table diff --git a/content/common/CSharpScripts/Beginner/script-create-field-parameter.md b/content/features/CSharpScripts/Beginner/script-create-field-parameter.md similarity index 96% rename from content/common/CSharpScripts/Beginner/script-create-field-parameter.md rename to content/features/CSharpScripts/Beginner/script-create-field-parameter.md index f3bc4c5..16b5b22 100644 --- a/content/common/CSharpScripts/Beginner/script-create-field-parameter.md +++ b/content/features/CSharpScripts/Beginner/script-create-field-parameter.md @@ -4,9 +4,11 @@ title: Create Field Parameter author: Daniel Otykier updated: 2024-01-27 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Create Field Parameters in diff --git a/content/common/CSharpScripts/Beginner/script-create-m-parameter.md b/content/features/CSharpScripts/Beginner/script-create-m-parameter.md similarity index 94% rename from content/common/CSharpScripts/Beginner/script-create-m-parameter.md rename to content/features/CSharpScripts/Beginner/script-create-m-parameter.md index 773fadf..7ddee7e 100644 --- a/content/common/CSharpScripts/Beginner/script-create-m-parameter.md +++ b/content/features/CSharpScripts/Beginner/script-create-m-parameter.md @@ -4,9 +4,11 @@ title: Create M Parameter author: Kurt Buhler updated: 2023-02-28 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Create M Partition diff --git a/content/common/CSharpScripts/Beginner/script-create-measure-table.md b/content/features/CSharpScripts/Beginner/script-create-measure-table.md similarity index 80% rename from content/common/CSharpScripts/Beginner/script-create-measure-table.md rename to content/features/CSharpScripts/Beginner/script-create-measure-table.md index 44d9b2c..85dcab0 100644 --- a/content/common/CSharpScripts/Beginner/script-create-measure-table.md +++ b/content/features/CSharpScripts/Beginner/script-create-measure-table.md @@ -4,9 +4,11 @@ title: Create Measure Table author: Morten Lønskov updated: 2023-11-29 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Create Measure Table diff --git a/content/common/CSharpScripts/Beginner/script-create-sum-measures-from-columns.md b/content/features/CSharpScripts/Beginner/script-create-sum-measures-from-columns.md similarity index 94% rename from content/common/CSharpScripts/Beginner/script-create-sum-measures-from-columns.md rename to content/features/CSharpScripts/Beginner/script-create-sum-measures-from-columns.md index 81dd08c..752a10e 100644 --- a/content/common/CSharpScripts/Beginner/script-create-sum-measures-from-columns.md +++ b/content/features/CSharpScripts/Beginner/script-create-sum-measures-from-columns.md @@ -4,9 +4,11 @@ title: Create SUM Measure from Column author: Morten Lønskov updated: 2023-02-22 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Create SUM Measure from Column diff --git a/content/common/CSharpScripts/Beginner/script-create-table-groups.md b/content/features/CSharpScripts/Beginner/script-create-table-groups.md similarity index 93% rename from content/common/CSharpScripts/Beginner/script-create-table-groups.md rename to content/features/CSharpScripts/Beginner/script-create-table-groups.md index 3a20ebc..7f89ea5 100644 --- a/content/common/CSharpScripts/Beginner/script-create-table-groups.md +++ b/content/features/CSharpScripts/Beginner/script-create-table-groups.md @@ -4,8 +4,11 @@ title: Create Table Groups author: Morten Lønskov updated: 2023-11-29 applies_to: - versions: - - version: 3.x + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + full: true --- # Create Table Groups diff --git a/content/common/CSharpScripts/Beginner/script-display-unique-column-values.md b/content/features/CSharpScripts/Beginner/script-display-unique-column-values.md similarity index 88% rename from content/common/CSharpScripts/Beginner/script-display-unique-column-values.md rename to content/features/CSharpScripts/Beginner/script-display-unique-column-values.md index 8d6c50d..1dbaf85 100644 --- a/content/common/CSharpScripts/Beginner/script-display-unique-column-values.md +++ b/content/features/CSharpScripts/Beginner/script-display-unique-column-values.md @@ -4,9 +4,11 @@ title: Distinct Column Values author: Morten Lønskov updated: 2024-05-27 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Distinct Column Values diff --git a/content/common/CSharpScripts/Beginner/script-edit-hidden-partitions.md b/content/features/CSharpScripts/Beginner/script-edit-hidden-partitions.md similarity index 90% rename from content/common/CSharpScripts/Beginner/script-edit-hidden-partitions.md rename to content/features/CSharpScripts/Beginner/script-edit-hidden-partitions.md index 592d9bd..967b133 100644 --- a/content/common/CSharpScripts/Beginner/script-edit-hidden-partitions.md +++ b/content/features/CSharpScripts/Beginner/script-edit-hidden-partitions.md @@ -4,9 +4,11 @@ title: Edit Hidden Partitions author: Morten Lønskov updated: 2023-02-21 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Edit Hidden Partitions diff --git a/content/common/CSharpScripts/Beginner/script-format-numeric-measures.md b/content/features/CSharpScripts/Beginner/script-format-numeric-measures.md similarity index 92% rename from content/common/CSharpScripts/Beginner/script-format-numeric-measures.md rename to content/features/CSharpScripts/Beginner/script-format-numeric-measures.md index f87c022..8057806 100644 --- a/content/common/CSharpScripts/Beginner/script-format-numeric-measures.md +++ b/content/features/CSharpScripts/Beginner/script-format-numeric-measures.md @@ -4,8 +4,11 @@ title: Format Numeric Measures author: Morten Lønskov updated: 2023-11-29 applies_to: - versions: - - version: 3.x + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + full: true --- # Format Numeric Measures diff --git a/content/common/CSharpScripts/Beginner/script-show-data-source-dependencies.md b/content/features/CSharpScripts/Beginner/script-show-data-source-dependencies.md similarity index 95% rename from content/common/CSharpScripts/Beginner/script-show-data-source-dependencies.md rename to content/features/CSharpScripts/Beginner/script-show-data-source-dependencies.md index dc622e8..c95f110 100644 --- a/content/common/CSharpScripts/Beginner/script-show-data-source-dependencies.md +++ b/content/features/CSharpScripts/Beginner/script-show-data-source-dependencies.md @@ -4,9 +4,11 @@ title: Show Data Source Dependencies author: David Bojsen updated: 2023-09-12 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # Show Data Source Dependencies diff --git a/content/common/CSharpScripts/Template/csharp-script-Template.md b/content/features/CSharpScripts/Template/csharp-script-Template.md similarity index 100% rename from content/common/CSharpScripts/Template/csharp-script-Template.md rename to content/features/CSharpScripts/Template/csharp-script-Template.md diff --git a/content/common/CSharpScripts/csharp-script-library-advanced.md b/content/features/CSharpScripts/csharp-script-library-advanced.md similarity index 85% rename from content/common/CSharpScripts/csharp-script-library-advanced.md rename to content/features/CSharpScripts/csharp-script-library-advanced.md index 2348935..be131c5 100644 --- a/content/common/CSharpScripts/csharp-script-library-advanced.md +++ b/content/features/CSharpScripts/csharp-script-library-advanced.md @@ -1,11 +1,14 @@ --- uid: script-library-advanced title: Advanced C# Scripts +author: Morten Lønskov updated: 2025-09-04 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # C# Script Library: Advanced Scripts @@ -21,10 +24,13 @@ These are more advanced scripts with sophisticated functionalities requiring a m | [Output Object Details in a Grid](xref:script-output-things) | Outputs object details in a grid view. | When you need to output object details in a grid view for inspection. | | [Create Date Table](xref:script-create-date-table) | Creates a formatted Date table based on selected Date columns in the model. | When you need to create a new date table based on a template. | | [Create M Parameter (Auto-Replace)](xref:script-create-and-replace-parameter) | Creates a new M Parameter and automatically adds it to M Partitions. | When you want to replace strings in multiple partitions (i.e. connection strings) with a dynamic M Parameter. | + | [Format Power Query](xref:script-format-power-query) | Formats the Power Query of a selected M Partition by using the powerqueryformatter.com API. | When you have complex Power Query and need to make it more readable for reading or making changes. | | [Implement Incremental Refresh](xref:script-implement-incremental-refresh) | Configures Incremental Refresh automatically using parameters from a UI dialogue box. | When you need to implement incremental refresh but aren't comfortable with the configuration in the table settings. | | [Remove Measures with Errors](xref:script-remove-measures-with-error) | Creates a new M Parameter and automatically adds it to M Partitions. | When you want to replace strings in multiple partitions (i.e. connection strings) with a dynamic M Parameter. | | [Find & Replace in Selected Measures](xref:script-find-replace) | Searches for a substring in the DAX of selected measures, replacing with another substring. | When you need to quickly find/replace values in multiple DAX measures (i.e. `CALCULATE` filter or broken object references). | | [Databricks Semantic Model Set-up](xref:script-databricks-semantic-model-set-up) | Friendly name tables and columns and set column best practices | When your Databricks object names need making more user friendly. | | [Create Databricks Relationships](xref:script-create-databricks-relationships) | Create relationships based on primary and foreign key definitions in Databricks Unity Catalog | When you want to re-use Databricks relationship definitions that have already been defined in Unity Catalog. | -| [Add Databricks Metadata Descriptions](xref:script-add-databricks-metadata-descriptions) | Update table and column descriptions based on Databricks Unity Catalog | When you want to re-use Databricks table and column comments that have already been defined in Unity Catalog. | \ No newline at end of file +| [Add Databricks Metadata Descriptions](xref:script-add-databricks-metadata-descriptions) | Update table and column descriptions based on Databricks Unity Catalog | When you want to re-use Databricks table and column comments that have already been defined in Unity Catalog. | +| [Convert DL/SQL to DL/OL](xref:script-convert-dlsql-to-dlol) | Changes the partitions of a Direct Lake over SQL model to Direct Lake over OneLake | Useful for easily migrating to Direct Lake over OneLake | +| [Convert Import to DL/OL](xref:script-convert-dlsql-to-dlol) | Changes the partitions of a Import model to Direct Lake over OneLake | Useful for easily migrating to Direct Lake over OneLake | \ No newline at end of file diff --git a/content/common/CSharpScripts/csharp-script-library-beginner.md b/content/features/CSharpScripts/csharp-script-library-beginner.md similarity index 95% rename from content/common/CSharpScripts/csharp-script-library-beginner.md rename to content/features/CSharpScripts/csharp-script-library-beginner.md index d8d0345..544e3bd 100644 --- a/content/common/CSharpScripts/csharp-script-library-beginner.md +++ b/content/features/CSharpScripts/csharp-script-library-beginner.md @@ -1,11 +1,14 @@ --- uid: script-library-beginner title: Beginner C# Scripts +author: Morten Lønskov updated: 2023-02-27 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # C# Script Library: Beginner Scripts diff --git a/content/common/CSharpScripts/csharp-script-library.md b/content/features/CSharpScripts/csharp-script-library.md similarity index 100% rename from content/common/CSharpScripts/csharp-script-library.md rename to content/features/CSharpScripts/csharp-script-library.md diff --git a/content/te2/Command-line-Options.md b/content/features/Command-line-Options.md similarity index 99% rename from content/te2/Command-line-Options.md rename to content/features/Command-line-Options.md index 73b720b..0c140f8 100644 --- a/content/te2/Command-line-Options.md +++ b/content/features/Command-line-Options.md @@ -3,6 +3,12 @@ uid: command-line-options title: Command Line author: Daniel Otykier updated: 2021-08-26 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + none: true --- # Command Line diff --git a/content/te2/Custom-Actions.md b/content/features/Custom-Actions-hidden.md similarity index 98% rename from content/te2/Custom-Actions.md rename to content/features/Custom-Actions-hidden.md index fdae44d..dd2cbce 100644 --- a/content/te2/Custom-Actions.md +++ b/content/features/Custom-Actions-hidden.md @@ -1,4 +1,8 @@ -# Custom Actions +--- +uid: custom-actions +title: Custom Actions +--- +# Custom Actions > [!NOTE] > Please note that this functionality is unrelated to the Custom Actions feature available for Multidimensional models. diff --git a/content/common/Semantic Model/direct-lake-sql-model.md b/content/features/Semantic-Model/direct-lake-sql-model.md similarity index 89% rename from content/common/Semantic Model/direct-lake-sql-model.md rename to content/features/Semantic-Model/direct-lake-sql-model.md index 61df5cf..a1d5af2 100644 --- a/content/common/Semantic Model/direct-lake-sql-model.md +++ b/content/features/Semantic-Model/direct-lake-sql-model.md @@ -4,22 +4,24 @@ title: Direct Lake on SQL Semantic Models author: Morten Lønskov updated: 2024-08-22 applies_to: - versions: - - version: 2.x - - version: 3.x - editions: - - edition: Desktop - none: x - - edition: Business - none: x - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + none: true + - edition: Enterprise + full: true --- # Direct Lake Semantic Models Direct Lake on SQL semantic models connect directly to data sources stored in [OneLake in Fabric](https://learn.microsoft.com/en-us/fabric/onelake/onelake-overview) through the SQL Endpoint. > [!IMPORTANT] -> As of [Tabular Editor 3.22.0](~/content/te3/other/release-notes/3_22_0.md), Tabular Editor 3 supports Direct Lake on OneLake, which is recommended in most scenarios. See our [Direct Lake guidance](xref:direct-lake-guidance) article for more information. +> As of [Tabular Editor 3.22.0](../../references/release-notes/3_22_0.md), Tabular Editor 3 supports Direct Lake on OneLake, which is recommended in most scenarios. See our [Direct Lake guidance](xref:direct-lake-guidance) article for more information. Tabular Editor 3 can create and connect to this type of model. For a tutorial on this please refer to our blog article: [Direct Lake semantic models: How to use them with Tabular Editor](https://blog.tabulareditor.com/2023/09/26/fabric-direct-lake-with-tabular-editor-part-2-creation/). Tabular Editor 3 can create direct lake semantic models with both the Lakehouse and Datawarehouse SQL Endpoint. @@ -44,7 +46,7 @@ Using the checkbox ensures that Direct Lake specific properties and annotations For more information please see this blog post by Kurt Buhler: [Case-sensitive models in Power BI: consequences & considerations](https://data-goblins.com/power-bi/case-specific) > [!IMPORTANT] -> As of [Tabular Editor 3.22.0](~/content/te3/other/release-notes/3_22_0.md), the Direct Lake checkbox has been removed from the New Model dialog. You must [manually set the collation on your model to match that of your Fabric Warehouse](xref:direct-lake-guidance#collation) if using Direct Lake on SQL. +> As of [Tabular Editor 3.22.0](../../references/release-notes/3_22_0.md), the Direct Lake checkbox has been removed from the New Model dialog. You must [manually set the collation on your model to match that of your Fabric Warehouse](xref:direct-lake-guidance#collation) if using Direct Lake on SQL. ## Framing New Models and Table Imports diff --git a/content/common/Semantic Model/direct-query-over-as.md b/content/features/Semantic-Model/direct-query-over-as.md similarity index 91% rename from content/common/Semantic Model/direct-query-over-as.md rename to content/features/Semantic-Model/direct-query-over-as.md index 5f976b3..f7a7792 100644 --- a/content/common/Semantic Model/direct-query-over-as.md +++ b/content/features/Semantic-Model/direct-query-over-as.md @@ -4,13 +4,17 @@ title: Direct Query over Analysis Services author: Morten Lønskov updated: 2025-07-14 applies_to: - versions: - - version: 2.x - - version: 3.x - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- ## Overview diff --git a/content/common/Semantic Model/semantic-model-types.md b/content/features/Semantic-Model/semantic-model-types.md similarity index 93% rename from content/common/Semantic Model/semantic-model-types.md rename to content/features/Semantic-Model/semantic-model-types.md index ae0fac3..a9ad7db 100644 --- a/content/common/Semantic Model/semantic-model-types.md +++ b/content/features/Semantic-Model/semantic-model-types.md @@ -4,13 +4,17 @@ title: Power BI Semantic model Types author: Morten Lønskov updated: 2025-06-19 applies_to: - versions: - - version: 2.x - - version: 3.x - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- diff --git a/content/te2/Useful-script-snippets.md b/content/features/Useful-script-snippets.md similarity index 99% rename from content/te2/Useful-script-snippets.md rename to content/features/Useful-script-snippets.md index 8a21797..49c3fa5 100644 --- a/content/te2/Useful-script-snippets.md +++ b/content/features/Useful-script-snippets.md @@ -2,6 +2,18 @@ uid: useful-script-snippets title: Useful script snippets author: Daniel Otykier +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Useful Script Snippets diff --git a/content/te2/Workspace-Database.md b/content/features/Workspace-Database.md similarity index 91% rename from content/te2/Workspace-Database.md rename to content/features/Workspace-Database.md index 88cbe45..ea2c4d2 100644 --- a/content/te2/Workspace-Database.md +++ b/content/features/Workspace-Database.md @@ -1,4 +1,20 @@ -## Introducing Workspace Databases +--- +uid: workspace-databases +title: Introducing Workspace Databases +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +## Introducing Workspace Databases Tabular Editor 3.0 supports editing model metadata loaded from disk with a simultaneous connection to a database deployed to an instance of Analysis Services. We call this database the _workspace database_. Going forward, this is the recommended approach to tabular modeling within Tabular Editor. This makes the development workflow a lot simpler, since you only need to hit Save (Ctrl+S) once, to simultaneously save your changes to the disk **and** update the metadata in the workspace database. This also has the advantage, that any error messages returned from Analysis Services, are immediately visible in Tabular Editor upon hitting Save. In a sense, this is similar to the way SSDT / Visual Studio or Power BI Desktop does, except that you are in control of when the workspace database is updated. diff --git a/content/te3/features/code-actions.md b/content/features/code-actions.md similarity index 95% rename from content/te3/features/code-actions.md rename to content/features/code-actions.md index c6c6c39..f1d1c58 100644 --- a/content/te3/features/code-actions.md +++ b/content/features/code-actions.md @@ -4,10 +4,18 @@ title: Code Actions author: Daniel Otykier updated: 2024-10-30 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + since: 3.18.0 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Code Actions @@ -36,19 +44,19 @@ Code Actions are separated into three different categories: A new command and corresponding toolbar/menu buttons have been added, **Show Code Actions**, with a default keyboard shortcut of `Ctrl+.`. This command will show the applicable Code Actions at the current cursor position: -![Code Action Invoke Menu](~/content/assets/images/code-action-invoke-menu.png) +![Code Action Invoke Menu](~/content/assets/images/features/code-action-invoke-menu.png) You can also find the applicable Code Actions through the **Refactor** submenu of the right-click context menu: -![Code Action Refactor Submenu](~/content/assets/images/code-action-refactor-submenu.png) +![Code Action Refactor Submenu](~/content/assets/images/features/code-action-refactor-submenu.png) Lastly, a lightbulb or screwdriver icon is shown in the editor's left margin when the cursor is placed on a code segment with applicable actions. Clicking on the icon will also bring up the Code Actions menu: -![Code Actions Margin](~/content/assets/images/code-action-margin.png) +![Code Actions Margin](~/content/assets/images/features/code-action-margin.png) When you hover the mouse cursor over an action in the Code Actions menu, a tooltip will show more information about the action. Click the "Learn more" link, to view the knowledge-base (KB) article for the action. -![Code Action Tooltip](~/content/assets/images/code-action-tooltip.png)] +![Code Action Tooltip](~/content/assets/images/features/code-action-tooltip.png)] ## Code Action indicators @@ -64,7 +72,7 @@ Some Code Actions can be applied to all occurrences within the current DAX expre In the screenshot below, for example, the **Prefix variable with '_'** action can be applied to all occurrences (i.e., all variables) in the document, not just the `totalSales` variable under the cursor: -![Code Action All Occurrences](~/content/assets/images/code-action-all-occurrences.png) +![Code Action All Occurrences](~/content/assets/images/features/code-action-all-occurrences.png) ## List of Code Actions diff --git a/content/te3/tutorials/creating-macros.md b/content/features/creating-macros.md similarity index 92% rename from content/te3/tutorials/creating-macros.md rename to content/features/creating-macros.md index 26791b3..f8603b8 100644 --- a/content/te3/tutorials/creating-macros.md +++ b/content/features/creating-macros.md @@ -1,13 +1,20 @@ --- -uid: creating-macros +uid: macros title: Creating macros author: Morten Lønskov updated: 2023-12-07 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # (Tutorial) Creating macros diff --git a/content/te3/features/csharp-scripts.md b/content/features/csharp-scripts.md similarity index 98% rename from content/te3/features/csharp-scripts.md rename to content/features/csharp-scripts.md index 00ff694..fd64855 100644 --- a/content/te3/features/csharp-scripts.md +++ b/content/features/csharp-scripts.md @@ -4,10 +4,17 @@ title: C# Scripts author: Daniel Otykier updated: 2025-08-27 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + true: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # C# Scripts diff --git a/content/te3/features/dax-debugger.md b/content/features/dax-debugger.md similarity index 96% rename from content/te3/features/dax-debugger.md rename to content/features/dax-debugger.md index f044cee..891900c 100644 --- a/content/te3/features/dax-debugger.md +++ b/content/features/dax-debugger.md @@ -4,10 +4,17 @@ title: DAX debugger author: Daniel Otykier updated: 2022-01-19 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # DAX debugger @@ -49,7 +56,7 @@ Once the debugger is started, you are presented with a number of new views that 3. (Optional) Add one or more columns to the Pivot Grid in the Filter area, Columns area or Row area. 4. Right-click on the value cell within the Pivot Grid and choose **Debug this value**. -![Debug From Pivot](~/content/assets/images/debug-from-pivot.png) +![Debug From Pivot](~/content/assets/images/features/debug-from-pivot.png) # Debugging through a DAX Query @@ -61,7 +68,7 @@ Once the debugger is started, you are presented with a number of new views that 3. Hit F5 to execute the query within Tabular Editor 3. Locate the value you want to debug, right-click the cell and choose **Debug**. -![Debug From Query](~/content/assets/images/debug-from-query.png) +![Debug From Query](~/content/assets/images/features/debug-from-query.png) # Debug views @@ -83,7 +90,7 @@ You can inspect a locals value by clicking on the magnifying glass button within If you prefer to inspect the locals value in a separate DAX query window, you can toggle off the **Use popup inspector** option under **Tools > Preferences > DAX Debugger > Locals**. -![Dax Debugger Settings](~/content/assets/images/dax-debugger-settings.png) +![Dax Debugger Settings](~/content/assets/images/features/dax-debugger-settings.png) ## Watch This view allows you to enter any DAX expression, which will be calculated within the current evaluation context. You can enter scalar as well as table expressions and you can use all DAX functions available and refer to variables within the current evaluation scope. Watch values are automatically updated when stepping to a different subexpression, or when the evaluation context is changed. **Watch values are always evaluated at the scope of the currently selected item in the evaluation context stack**. @@ -166,7 +173,7 @@ The `FILTER` function is an iterator that iterates over the table `ALL(Geography When debugging a scalar predicate, the **Locals** view will show two special items, **(Current expression)** and **(Filter expression)**. These are described below: -![Debug Scalar Predicates](~/content/assets/images/debug-scalar-predicates.png) +![Debug Scalar Predicates](~/content/assets/images/features/debug-scalar-predicates.png) In the above screenshot: diff --git a/content/te3/features/dax-editor.md b/content/features/dax-editor.md similarity index 93% rename from content/te3/features/dax-editor.md rename to content/features/dax-editor.md index 0c6795f..2d70107 100644 --- a/content/te3/features/dax-editor.md +++ b/content/features/dax-editor.md @@ -3,6 +3,18 @@ uid: dax-editor title: DAX Editor author: Daniel Otykier updated: 2023-02-03 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # DAX Editor @@ -14,7 +26,7 @@ It comes in three different *flavours*: - **DAX Query** (Connected feature) Used for writing DAX queries in order to retrieve data from the connected instance of Analysis Services / Power BI. - **DAX Script** Used for viewing and editing DAX expressions and basic properties across multiple objects in a single document. -All three flavours support the same operations in terms of [keyboard shortcuts](xref:shortcuts#dax-code), syntax highlighting, code assist, etc. +All three flavours support the same operations in terms of [keyboard shortcuts](xref:shortcuts3#dax-code), syntax highlighting, code assist, etc. ## Code Assist features diff --git a/content/te3/features/dax-optimizer-integration.md b/content/features/dax-optimizer-integration.md similarity index 93% rename from content/te3/features/dax-optimizer-integration.md rename to content/features/dax-optimizer-integration.md index 95fcb98..ea6a7dc 100644 --- a/content/te3/features/dax-optimizer-integration.md +++ b/content/features/dax-optimizer-integration.md @@ -4,10 +4,17 @@ title: DAX Optimizer Integration author: Daniel Otykier updated: 2024-10-30 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # DAX Optimizer Integration @@ -29,11 +36,11 @@ Watch Marco Russo from [SQLBI](https://www.sqlbi.com) introduce the DAX Optimize To access this feature, go to the **View** menu and choose **DAX Optimizer**. -![Dax Optimizer](~/content/assets/images/dax-optimizer-view-menu.png) +![Dax Optimizer](~/content/assets/images/features/dax-optimizer-view-menu.png) You will be presented with a new view similar to the figure below: -![Dax Optimizer View](~/content/assets/images/dax-optimizer-view.png) +![Dax Optimizer View](~/content/assets/images/features/dax-optimizer-view.png) To connect Tabular Editor 3 to the DAX Optimizer service, click **Connect...** through the **Options** menu. You will be prompted to enter your Tabular Tools (DAX Optimizer) credentials. @@ -58,13 +65,13 @@ Once the analysis is complete, you will be presented with a summary showing the Go to the **Issues** or **Measures** tab to view detailed results. Use the column headers to sort and filter the results. -![Dax Optimizer Issues](~/content/assets/images/dax-optimizer-issues.png) +![Dax Optimizer Issues](~/content/assets/images/features/dax-optimizer-issues.png) ## Navigating issues and measures When you double-click on an issue or measure in the detailed view shown above, you will be taken to the **DAX Optimizer Results** view, where the original DAX expression of the measure is shown, along with highlights of the problematic areas. The list on the left side of the screen lets you toggle which issues to highlight. Moreover, you can mark issues as **Fixed** or **Ignored** using the checkboxes within the list. -![Dax Optimizer Results](~/content/assets/images/dax-optimizer-results.png) +![Dax Optimizer Results](~/content/assets/images/features/dax-optimizer-results.png) Click on the **Find in TOM Explorer...** button in the top-right area of the view, to navigate to the corresponding measure in the currently loaded model. @@ -111,7 +118,7 @@ If no dictionary file is provided, you will only be able to browse the obfuscate Once a VPAX file has been uploaded, please allow a few seconds for the file to be "verified" by the DAX Optimizer service. Once verified, you can perform a DAX Optimizer "run" by checking the "You agree to **consume 1 run** to analyze this model." checkbox, and then clicking the **Analyze** button in the **DAX Optimizer** view: -![Dax Optimizer Analyze](~/content/assets/images/dax-optimizer-analyze.png) +![Dax Optimizer Analyze](~/content/assets/images/features/dax-optimizer-analyze.png) The analysis will take a few minutes to complete, depending on the size of the model and the number of measures. Once the analysis is complete, you will be presented with a summary of the issues detected. diff --git a/content/te3/features/dax-package-manager.md b/content/features/dax-package-manager.md similarity index 97% rename from content/te3/features/dax-package-manager.md rename to content/features/dax-package-manager.md index 16f3abb..ba8c7f8 100644 --- a/content/te3/features/dax-package-manager.md +++ b/content/features/dax-package-manager.md @@ -1,13 +1,20 @@ ---- +--- uid: dax-package-manager title: DAX Package Manager author: Daniel Otykier updated: 2025-11-03 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # DAX Package Manager @@ -23,7 +30,6 @@ You can use the DAX Package Manager with any model that supports DAX User-Define > [!WARNING] > DAX User-Defined Functions is currently (as of November 2025) a preview feature of Power BI. Consider their [limitations](https://learn.microsoft.com/en-us/dax/best-practices/dax-user-defined-functions#considerations-and-limitations) before use. - --- ![DAX Package Manager](~/content/assets/images/dax-package-manager-overview.png) @@ -64,7 +70,6 @@ Enter your search keywords or the (partial) name of the package, to filter the l > [!NOTE] > We currently only show the top 20 packages matching the search criteria. There is no pagination feature yet - this will come in a future update. If you need to browse all available packages, go to the source, e.g. https://daxlib.org. - --- ### 4. Package Detail Pane @@ -90,7 +95,6 @@ Packages for which newer versions are available, will show an **“Update”** b > [!WARNING] > If you remove or update a package in which you have made modifications to the DAX expression of one or more UDFs, you will see a warning message indicating that your changes will be lost. - --- ### 5. Update notifications @@ -130,7 +134,6 @@ All associated UDFs will be removed from the model. > [!CAUTION] > Removing UDFs may cause DAX expressions in other areas of the model (measures, calculation columns, etc.) to become invalid. If this happens, you can always hit **Undo** (Ctrl+Z) to undo the package removal. Use the **Show dependencies** (Shift+F12) feature to identify where the UDFs are used before removing a package. - --- ## Technical considerations @@ -153,7 +156,6 @@ Moreover, each UDFs imported through the DAX Package Manager will have the follo > [!CAUTION] > Modifying or deleting these extended properties manually may lead to unexpected behavior in the DAX Package Manager. - ## Handling conflicts ### Modifying UDFs from packages @@ -170,7 +172,6 @@ You have the following options: > [!TIP] > If you wish to "unlink" existing UDFs from the DAX Package Manager, remove the extended properties `TabularEditor_ObjDaxPkgHandle` and `TabularEditor_ObjDaxPkgContentHash` from the UDF objects. This way, the DAX Package Manager will no longer track these UDFs, and they will not be affected by future package updates or removals. However, you still need to be aware of name conflicts. - ### Installing a package with name conflicts If you attempt to install a package containing a UDF that has the same name as an existing UDF in the model (regardless of whether it was imported from another package or created manually), you will see the following prompt: diff --git a/content/te3/features/dax-query.md b/content/features/dax-query.md similarity index 96% rename from content/te3/features/dax-query.md rename to content/features/dax-query.md index 324277e..07ec5bb 100644 --- a/content/te3/features/dax-query.md +++ b/content/features/dax-query.md @@ -4,10 +4,17 @@ title: DAX Queries author: Morten Lønskov updated: 2025-08-27 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # DAX Queries diff --git a/content/te3/features/dax-scripts.md b/content/features/dax-scripts.md similarity index 97% rename from content/te3/features/dax-scripts.md rename to content/features/dax-scripts.md index e0f0459..0b863b0 100644 --- a/content/te3/features/dax-scripts.md +++ b/content/features/dax-scripts.md @@ -4,10 +4,17 @@ title: DAX Scripts author: Daniel Otykier updated: 2021-09-08 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # DAX Scripts diff --git a/content/te3/features/deployment.md b/content/features/deployment.md similarity index 93% rename from content/te3/features/deployment.md rename to content/features/deployment.md index 814d61f..ff5654f 100644 --- a/content/te3/features/deployment.md +++ b/content/features/deployment.md @@ -1,16 +1,21 @@ --- uid: deployment title: Model deployment -author: Daniel Otykier -updated: 2021-09-08 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true --- -# Model deployment + +## Model deployment Tabular Editor 3 (Business and Enterprise Edition) can take a copy of the currently loaded semantic model metadata, and deploy it to an Analysis Services instance, or the Power BI / Fabric XMLA endpoint. @@ -23,7 +28,7 @@ To perform a deployment, launch the **Deployment Wizard** through the **Model > After selecting the destination server and database to deploy, you are presented with a list of **Deployment options**, as shown in the screenshot below. -![Deployment Options](images/deployment-options.png) +![Deployment Options](~/content/assets/images/deployment-options.png) These are: @@ -65,4 +70,4 @@ The following changes may require a **Full refresh**: - Adding/editing partitions, tables and columns > [!WARNING] -> Because of the potential impact of deploying a semantic model this way, we recommend not using this option to perform a deployment against a production environment. It is better to set up a [CI/CD pipeline for deploying models to production environments](https://blog.tabulareditor.com/category/ci-cd/). +> Because of the potential impact of deploying a semantic model this way, we recommend not using this option to perform a deployment against a production environment. It is better to set up a [CI/CD pipeline for deploying models to production environments](https://blog.tabulareditor.com/category/ci-cd/). \ No newline at end of file diff --git a/content/features/hierarchical-display.md b/content/features/hierarchical-display.md new file mode 100644 index 0000000..4919834 --- /dev/null +++ b/content/features/hierarchical-display.md @@ -0,0 +1,26 @@ +--- +uid: hierarchical-display +title: Hierarchical display +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +## Hierarchical display +Objects of the loaded model are shown in the TOM Explorer Tree. By default, all object types (visible tables, roles, relationships, etc.) are shown. If you only want to see tables, measures, columns and hierarchies, go to the "View" menu and toggle off "Show all object types". + +![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/AllObjectTypes.png) + +Expanding a table in the "Tables" group, you will find the measures, columns and hierarchies contained in the table presented in their respective display folders by default. This way, objects are arranged similar to how end-users would see them in client tools: + +![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/DisplayFolders.png) + +Use the buttons immediately above the Explorer Tree, to toggle invisible objects, display folders, measures, columns and hierarchies, or to filter objects by name. You can rename an object by selecting it in then hitting F2. This also works for display folders. If you double-click a measure or calculated column, you may edit its [DAX expression](dax-editor.md). Right-clicking will show a context menu, providing a range of handy shortcuts for operations such as setting visibility, perspective inclusion, adding columns to a hierarchy, etc. diff --git a/content/te3/import-tables.partial.md b/content/features/import-tables.partial.md similarity index 97% rename from content/te3/import-tables.partial.md rename to content/features/import-tables.partial.md index 0d67b0d..6a573a6 100644 --- a/content/te3/import-tables.partial.md +++ b/content/features/import-tables.partial.md @@ -1,3 +1,19 @@ +--- +uid: import-tables +title: Import Tables +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- Tabular Editor 3 includes a **Table Import Wizard** that helps you create a data source in your model and import tables/views from relational data sources such as a SQL Server database. ![Import Tables Wizard](~/content/assets/images/import-tables-wizard.png) diff --git a/content/features/index.md b/content/features/index.md new file mode 100644 index 0000000..19dc581 --- /dev/null +++ b/content/features/index.md @@ -0,0 +1,58 @@ +# Features + +This section contains documentation about Tabular Editor features. + +## In this section + +### DAX Features +- @dax-debugger - Debug your DAX expressions step by step +- @dax-editor - Advanced DAX editing capabilities +- @dax-query - Query execution and testing +- @dax-scripts - Batch DAX operations and automation +- @code-actions - Automated code improvements and refactoring +- @dax-package-manager - DAX package Manager + +### Scripting and Automation +- @csharp-scripts - Custom scripting capabilities overview +- C# Script Library + - @csharp-script-library + - @script-library-beginner + - @script-library-advanced +- @script-helper-methods - Built-in scripting utilities +- @useful-script-snippets - Common script examples +- @macros - Create Macros + +### Model Analysis and Quality +- @best-practice-analyzer - Model quality analysis and rules + - @using-bpa - How to use the Best Practice Analyzer + - @using-bpa-sample-rules-expressions - Example BPA rules +- @dax-optimizer-integration - Performance optimization with DAX optimizer + +### Data Exploration and Connectivity +- @import-tables - Table import functionality +- @pivot-grid - Data analysis and visualization +- @semantic-model-types + - @direct-lake-sql-model + - @dq-over-as-limitations + +### Advanced Modelling Features +- @metadata-translation-editor - Multi-language support +- @perspective-editor - Managing model perspectives + + +### Model Organization +- @hierarchical-display - Object tree navigation and organization +- @table-groups - Organizing tables in logical groups + +### Model Deployment and Management +- @supported-files - File format support +- [Model deployment](deployment.md) - Deployment options and strategies +- @workspace-databases - Working with workspace databases +- @workspace-mode - Collaborative development mode +- @tmdl - Tabular Model Definition Language support +- @save-to-folder - Serialize models to folder structures + +### Command Line and Integration +- @command-line-options - CLI usage and automation + +--- diff --git a/content/te3/features/metadata-translation-editor.md b/content/features/metadata-translation-editor.md similarity index 92% rename from content/te3/features/metadata-translation-editor.md rename to content/features/metadata-translation-editor.md index e81f26c..0aadd2b 100644 --- a/content/te3/features/metadata-translation-editor.md +++ b/content/features/metadata-translation-editor.md @@ -4,10 +4,17 @@ title: Metadata Translation Editor author: Šarūnas Jučius updated: 2023-04-18 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Metadata Translation Editor diff --git a/content/te3/features/perspective-editor.md b/content/features/perspective-editor.md similarity index 90% rename from content/te3/features/perspective-editor.md rename to content/features/perspective-editor.md index 13f141d..b823606 100644 --- a/content/te3/features/perspective-editor.md +++ b/content/features/perspective-editor.md @@ -4,10 +4,17 @@ title: Perspective Editor author: Šarūnas Jučius updated: 2022-03-16 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Perspective Editor diff --git a/content/te3/features/pivot-grid.md b/content/features/pivot-grid.md similarity index 93% rename from content/te3/features/pivot-grid.md rename to content/features/pivot-grid.md index 98f93fa..f729cbb 100644 --- a/content/te3/features/pivot-grid.md +++ b/content/features/pivot-grid.md @@ -4,10 +4,17 @@ title: Pivot Grids author: Daniel Otykier updated: 2024-05-28 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Pivot Grids @@ -16,7 +23,7 @@ applies_to: While developing semantic models, you may often want to test that your DAX expressions return the expected values. Traditionally, this was done using client tools such as Excel or Power BI. With Tabular Editor 3, you can use **Pivot Grids** which behave much like the widely known PivotTables in Excel. The Pivot Grid lets you quickly create summarized views of the data in your model, allowing you to test the behavior of your DAX measures when filtering and slicing by various columns and hierarchies. -![Pivot Grid Example](images/pivot-grid-example.png) +![Pivot Grid Example](~/content/assets/images/pivot-grid-example.png) The screenshot above shows a Pivot Grid containing two measures, `[Total Net Order Value]` and `[Net Orders]`, which is sliced horizontally by Year, filtered to 2021 and 2022, and vertically by the Product Hierarchy. Tabular Editor 3 users can use this feature to ensure that DAX expressions behind the measures are working as expected and to quickly validate the data in the model. @@ -36,7 +43,7 @@ By default, the Pivot Grid auto-updates every time you save changes to the seman You can create a new, empty Pivot Grid through the **File > New > New Pivot Grid** menu option. Alternatively, select one or more measures in the **TOM Explorer**, right-click or go to the **Measure** menu and select **Add to Pivot Grid**, to create a new Pivot Grid with the selected measures. -![Create Pivot Grid From TOM Explorer](images/create-pivot-grid-from-TOM-Explorer.png) +![Create Pivot Grid From TOM Explorer](~/content/assets/images/create-pivot-grid-from-TOM-Explorer.png) You can create as many Pivot Grids as you like. @@ -47,7 +54,7 @@ You can create as many Pivot Grids as you like. The Pivot Grid is divided into 4 areas: **Filter Area**, **Column Area**, **Row Area**, and **Data Area**. You can drag fields from the **Field List** or the **TOM Explorer** into these areas to create a Pivot Grid layout. The **Data Area** area is where you place measures or KPIs, while the **Row Area** and **Column Area** are used to slice the data by hierarchies and columns. The **Filter Area** is used to filter the data based on values in columns or hierarchies. -![Empty Pivot Grid Highlighted](images/empty-pivot-grid-highlighted.png) +![Empty Pivot Grid Highlighted](~/content/assets/images/empty-pivot-grid-highlighted.png) The screenshot above shows an empty Pivot Grid layout. The 4 empty boxes at the bottom of the Field List represent the 4 areas of the Pivot Grid. You can drag fields from the Field List into these listboxes to create a Pivot Grid layout. Alternatively, you can drag fields directly into the Pivot Grid. @@ -55,9 +62,9 @@ The screenshot above shows an empty Pivot Grid layout. The 4 empty boxes at the By default, when a Pivot Grid is the active window in Tabular Editor 3, a **Pivot Grid** menu and toolbar are available. The menu contains the same actions as the toolbar. -![Pivot Grid Toolbar](images/pivot-grid-toolbar.png) +![Pivot Grid Toolbar](~/content/assets/images/pivot-grid-toolbar.png) -![Pivot Grid Menu](images/pivot-grid-menu.png) +![Pivot Grid Menu](~/content/assets/images/pivot-grid-menu.png) These actions are: @@ -80,7 +87,7 @@ If you would like the Field List to not be shown by default, uncheck the **Alway You can change the default layout of the Field List under **Tools > Preferences > Data Browsing > Pivot Grid > Field List > Layout**. You can also change the layout of any field lists, by right-clicking in an empty area of the Field List and choosing the desired layout from the context menu. -![Field List Settings](images/field-list-settings.png) +![Field List Settings](~/content/assets/images/field-list-settings.png) By default, any field you add to the Pivot Grid remains visible in the Field List. If you would like to hide fields that are added to the Pivot Grid, you can uncheck the **Keep fields visible** option under **Tools > Preferences > Data Browsing > Pivot Grid > Field List** (this behavior is similar to how Pivot Grid worked prior to Tabular Editor v. 3.16.0). @@ -103,7 +110,7 @@ There are several ways to add a field to a Pivot Grid: - All of the options above are also available through the **Measure**, **Column**, and **Hierarchy** menus (respectively), when one or more such objects are selected in the TOM Explorer. - In addition to the above, you can also drag one or more measures, columns, or hierarchies from the TOM Explorer into the Pivot Grid areas. -![Add hierarchy to Pivot Grid through TOM Explorer](images/add-through-tom-explorer.png) +![Add hierarchy to Pivot Grid through TOM Explorer](~/content/assets/images/add-through-tom-explorer.png) **From the Field List:** @@ -113,13 +120,13 @@ There are several ways to add a field to a Pivot Grid: - If a field is already showing in the Pivot Grid, the right-click context menu will also have an option to remove the field, or move it to a different area (column/hierarchy fields only). - Double-clicking on a field will immediately add it to the Pivot Grid. Measures/KPIs are added to the Data Area, while columns and hierarchies are added to the Filter Area. -![Add Through Field List](images/add-through-field-list.png) +![Add Through Field List](~/content/assets/images/add-through-field-list.png) ### Adjusting fields After fields have been added to the Pivot Grid, you can adjust the width of columns to better accommodate their content. Double-clicking on a column header separator will automatically adjust the column width to fit the content of the column. You can also drag the column header separator to manually adjust the column width. Lastly, you can use the **Best Fit** or **Set width...** context menu options by right-clicking on the column header. -![Best Fit Columns 2](images/best-fit-columns-2.png) +![Best Fit Columns 2](~/content/assets/images/best-fit-columns-2.png) To apply a "Best Fit" or set a specific pixel width for all columns in the Pivot Grid simultaneously, right-click on the "Values" header and select the desired option from the context menu. @@ -133,7 +140,7 @@ If you want measures to be displayed on rows rather than on columns, drag the "V You can add visualization rules to cells in the Pivot Grids, which is useful for highlighting cells based on their values, for example in order to better spot outliers. To add visualization rules, right-click on any Data Area cell in the Pivot Grid, and choose which rules to apply from the context menu (see screenshot below). -![Customizing Pivot Grids](images/customizing-pivot-grids.png) +![Customizing Pivot Grids](~/content/assets/images/customizing-pivot-grids.png) ## Persisting Pivot Grid layouts diff --git a/content/common/save-to-folder.md b/content/features/save-to-folder.md similarity index 91% rename from content/common/save-to-folder.md rename to content/features/save-to-folder.md index fff0e0d..30ee426 100644 --- a/content/common/save-to-folder.md +++ b/content/features/save-to-folder.md @@ -4,16 +4,24 @@ title: Save to folder author: Morten Lønskov updated: 2023-08-08 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Save to folder Save to Folder allows you to store your model metadata as individual files, which can be easily managed by version control systems. Instead of having a single file (.bim or .pbix) that contains all the objects of your data model, such as tables, measures, relationships, etc., you can split them into separate files and store them in a folder. This way, you can use source control tools to track the changes, compare versions, and collaborate with other developers on your data model. > [!NOTE] ->You can save your data model to a folder using two different formats: JSON or [TMDL](tmdl-common.md). +>You can save your data model to a folder using two different formats: JSON or [TMDL](tmdl.md). To save your model to folder, follow these steps: diff --git a/content/common/script-helper-methods.md b/content/features/script-helper-methods.md similarity index 96% rename from content/common/script-helper-methods.md rename to content/features/script-helper-methods.md index d0c56a4..fa86802 100644 --- a/content/common/script-helper-methods.md +++ b/content/features/script-helper-methods.md @@ -1,11 +1,20 @@ --- uid: script-helper-methods title: C# Script Helper Methods +author: Daniel Otykier updated: 2023-02-27 applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + true: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # C# Script Helper Methods diff --git a/content/common/script-helper-methods.tt b/content/features/script-helper-methods.tt similarity index 94% rename from content/common/script-helper-methods.tt rename to content/features/script-helper-methods.tt index 3d3b127..25427cc 100644 --- a/content/common/script-helper-methods.tt +++ b/content/features/script-helper-methods.tt @@ -34,14 +34,22 @@ // // ********************************* #> ---- -uid: script-helper-methods +---uid: script-helper-methods title: C# Script Helper Methods +author: Daniel Otykier updated: <#=DateTime.Today.ToString("yyyy-MM-dd")#> applies_to: - versions: - - version: 2.x - - version: 3.x + products: + - product: Tabular Editor 2 + true: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # C# Script Helper Methods diff --git a/content/te3/features/table-groups.md b/content/features/table-groups.md similarity index 93% rename from content/te3/features/table-groups.md rename to content/features/table-groups.md index 15c9779..61f02c7 100644 --- a/content/te3/features/table-groups.md +++ b/content/features/table-groups.md @@ -4,10 +4,17 @@ title: Table Groups author: Daniel Otykier updated: 2023-03-08 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Table Groups diff --git a/content/te3/features/tmdl.md b/content/features/tmdl.md similarity index 88% rename from content/te3/features/tmdl.md rename to content/features/tmdl.md index 804b256..952b930 100644 --- a/content/te3/features/tmdl.md +++ b/content/features/tmdl.md @@ -4,11 +4,18 @@ title: Tabular Model Definition Language (TMDL) author: Daniel Otykier updated: 2023-05-22 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Tabular Model Definition Language (TMDL) diff --git a/content/features/toc.md b/content/features/toc.md new file mode 100644 index 0000000..b84b532 --- /dev/null +++ b/content/features/toc.md @@ -0,0 +1,59 @@ +# User Interface +## @user-interface +## @tom-explorer-view +## @properties-view +## @bpa-view +## @data-refresh-view +## @find-replace +## @messages-view +## @diagram-view + +# DAX Features +## @dax-debugger +## @dax-editor +## @dax-query +## @dax-scripts +## @code-actions +## @dax-package-manager + +# Scripting and Automation +## @csharp-scripts +## C# Script Library +### @csharp-script-library +### @script-library-beginner +### @script-library-advanced +## @script-helper-methods +## @useful-script-snippets +## @macros + +# Model Analysis and Quality +## @best-practice-analyzer +### @using-bpa +### @using-bpa-sample-rules-expressions +## @dax-optimizer-integration + +# Data Exploration and Connectivity +## @import-tables +## @pivot-grid +## @semantic-model-types +### @direct-lake-sql-model +### @dq-over-as-limitations + +# Advanced Modelling Features +## @metadata-translation-editor +## @perspective-editor + + +# Model Organization +## @hierarchical-display +## @table-groups + +# Model Deployment and Management +## [Model deployment](deployment.md) +## @workspace-databases +## @workspace-mode +## @tmdl +## @save-to-folder + +# Command Line and Integration +## @command-line-options \ No newline at end of file diff --git a/content/common/using-bpa-sample-rules-expressions.md b/content/features/using-bpa-sample-rules-expressions.md similarity index 96% rename from content/common/using-bpa-sample-rules-expressions.md rename to content/features/using-bpa-sample-rules-expressions.md index 2951858..6484d38 100644 --- a/content/common/using-bpa-sample-rules-expressions.md +++ b/content/features/using-bpa-sample-rules-expressions.md @@ -3,6 +3,18 @@ uid: using-bpa-sample-rules-expressions title: BPA Sample Rules Expression author: Morten Lønskov updated: 2023-02-21 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Rule Expression Samples In this section, you'll see some examples of Dynamic LINQ expressions that can be used to define rules. The expression that is entered in the Rule Expression Editor, will be evaluated whenever focus leaves the textbox, and any syntax errors will be shown on top of the screen: diff --git a/content/features/using-bpa.md b/content/features/using-bpa.md new file mode 100644 index 0000000..3e1beda --- /dev/null +++ b/content/features/using-bpa.md @@ -0,0 +1,62 @@ +--- +uid: using-bpa +title: Using the Best Practice Analyzer +author: Morten Lønskov +updated: 2023-02-09 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- + +# Best Practice Analyzer + +The Best Practice Analyzer (BPA) lets you define rules on the metadata of your model, to encourage certain conventions and best practices while developing your Power BI or Analysis Services Model. + +## BPA Overview +The BPA overview shows you all the rules defined in your model that are currently being broken: + +![BPA Overview](~/content/assets/images/common/BPAOverview.png) + +And you will always be able to see in the main UI how many rules you are currently being broken. + +![BPA Overview Line](~/content/assets/images/common/PBAOverviewMenuLine.png) + +Clicking the link (or pressing F10), brings up the full BPA window. + +> [!NOTE] +> If you are more into a video walk through then PowerBI.tips has a video with our own Daniel Otykier showing the Best Practice Analyzer in detail here: +> [!Video https://www.youtube.com/embed/5WnN0NG2nBk] + + +### Functionality + +Whenever a change is made to the model, the Best Practice Analyzer scans your model for issues in the background. You can disable this feature under File > Preferences. + +The BPA Window in both TE2 and TE3 allows you to dock the window on one side of your desktop, while keeping the main window in the other side, allowing you to work with your model while you can see BPA issues. + +The Best Practice Analyzer window continuously lists all the **effective rules** on your model as well as the objects that are in violation of each rule. Right-clicking anywhere inside the list or using the toolbar buttons at the top of the window, let's you perform the following actions: + +* **Manage rules...**: This opens the Manage Rules UI, which we will cover below. This UI can also be accessed through the "Tools > Manage BPA Rules..." menu of the main UI. +* **Go to object...**: Choosing this option or double-clicking on an object in the list, takes you to the same object in the main UI. +* **Ignore item/items**: Selecting one or more objects in the list and choosing this option, will apply an annotation to the chosen objects indicating that the Best Practice Analyzer should ignore the objects going forward. If you ignored an object by mistake, toggle the "Show ignored" button at the top of the screen. This will let you unignore an object that was previously ignored. +* **Ignore rule**: If you've selected one or more rules in the list, this option will put an annotation at the model level that indicates, that the selected rule should always be ignored. Again, by toggling the "Show ignored" button, you can unignore rules as well. +* **Generate fix script**: Rules that have an easy fix (meaning the issue can be resolved simply by setting a single property on the object), will have this option enabled. By clicking, you will get a C# script copied into your clipboard. This script can then be subsequently pasted into the [Advanced Scripting](/Advanced-Scripting) area of Tabular Editor, where you can review it before executing it to apply the fix. +* **Apply fix**: This option is also available for rules than have an easy fix, as mentioned above. Instead of copying the script to the clipboard, it will be executed immediately. + +## Managing Best Practice Rules +If you need to add, remove or modify the rules applying to your model, there's a specific UI for that. You can bring it up by clicking the top-left button on the Best Practice Analyzer window, or by using the "Tools > Manage BPA Rules..." menu item in the main window. + +![BPA Manage Rules](~/content/assets/images/common/BPAOverviewManageRules.png) + +The Manage BPA rules window contains two lists: The top list represents the **collections** of rules that are currently loaded. Selecting a collection in this list, will display all the rules that are defined within this collection in the bottom list. + +![BPA Manage Rules UI](~/content/assets/images/common/PBAOverviewManageRulesPopUp.png) \ No newline at end of file diff --git a/content/features/views/bpa-view.md b/content/features/views/bpa-view.md new file mode 100644 index 0000000..c3e81dc --- /dev/null +++ b/content/features/views/bpa-view.md @@ -0,0 +1,20 @@ +--- +uid: bpa-view +title: Best Practice Analyzer view +author: Daniel Otykier +updated: 2021-09-08 +applies_to: +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +[!include[using-bpa](../../features/using-bpa.md)] diff --git a/content/te3/views/data-refresh-view.md b/content/features/views/data-refresh-view.md similarity index 83% rename from content/te3/views/data-refresh-view.md rename to content/features/views/data-refresh-view.md index e9bf9b5..75fe076 100644 --- a/content/te3/views/data-refresh-view.md +++ b/content/features/views/data-refresh-view.md @@ -4,11 +4,17 @@ title: Data Refresh view author: Daniel Otykier updated: 2021-09-08 applies_to: - editions: - - edition: Desktop - partial: TE3 Desktop Edition includes this feature, however refreshing tables through External Tools is not currently supported by Microsoft and may cause issues in Power BI Desktop. - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Data Refresh View The Data Refresh view allows you to investigate in detail how your data is being refreshed on the server. @@ -26,4 +32,4 @@ A new refresh will run in the background so that you can continue to build your > All the messages and durations shown in the Data Refresh window are estimates only. Tabular Editor listens to [trace events from SSAS](https://learn.microsoft.com/en-us/analysis-services/trace-events/analysis-services-trace-events?view=asallproducts-allversions) during processing. SSAS is not guaranteed to send all trace messages to the client (for example it may throttle the trace event notifications during times of peak CPU/memory consumption). > [!TIP] -> If you need accurate and reliable information about refresh progress and durations, you should connect [SQL Server Profiler](https://learn.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler?view=sql-server-ver16) to your SSAS instance, and collect the information manually during processing. +> If you need accurate and reliable information about refresh progress and durations, you should connect [SQL Server Profiler](https://learn.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler?view=sql-server-ver16) to your SSAS instance, and collect the information manually during processing. \ No newline at end of file diff --git a/content/te3/features/diagram-view.md b/content/features/views/diagram-view.md similarity index 96% rename from content/te3/features/diagram-view.md rename to content/features/views/diagram-view.md index f7f081f..f24af85 100644 --- a/content/te3/features/diagram-view.md +++ b/content/features/views/diagram-view.md @@ -3,6 +3,18 @@ uid: diagram-view title: Diagram View author: Morten Lønskov updated: 2025-04-24 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Diagram View diff --git a/content/te3/views/find-replace.md b/content/features/views/find-replace.md similarity index 91% rename from content/te3/views/find-replace.md rename to content/features/views/find-replace.md index cdad389..e8ea546 100644 --- a/content/te3/views/find-replace.md +++ b/content/features/views/find-replace.md @@ -4,10 +4,18 @@ title: Find/Replace author: Morten Lønskov updated: 2023-03-22 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + partial: true + note: "Works differently than shown in this article" + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Find In Tabular Editor, you can use the advanced Find functionality to search for specific expressions throughout your open documents and dataset. The Find dialog box is accessible through the keyboard shortcut Ctrl+F. diff --git a/content/te3/views/macros-view.md b/content/features/views/macros-view.md similarity index 89% rename from content/te3/views/macros-view.md rename to content/features/views/macros-view.md index e36120d..371f9dd 100644 --- a/content/te3/views/macros-view.md +++ b/content/features/views/macros-view.md @@ -4,10 +4,17 @@ title: Macros view author: Morten Lønskov updated: 2023-03-22 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Macros view Macros are a powerful feature of Tabular Editor that allow you to automate repetitive tasks or create custom actions for your models. A macro is a script written in C# that can access and manipulate the Tabular Object Model (TOM). diff --git a/content/te3/views/messages-view.md b/content/features/views/messages-view.md similarity index 87% rename from content/te3/views/messages-view.md rename to content/features/views/messages-view.md index f2628c6..a48bd92 100644 --- a/content/te3/views/messages-view.md +++ b/content/features/views/messages-view.md @@ -4,10 +4,17 @@ title: Messages view author: Daniel Otykier updated: 2021-09-08 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Messages view diff --git a/content/te3/views/properties-view.md b/content/features/views/properties-view.md similarity index 82% rename from content/te3/views/properties-view.md rename to content/features/views/properties-view.md index 5c46390..9031d9b 100644 --- a/content/te3/views/properties-view.md +++ b/content/features/views/properties-view.md @@ -4,14 +4,21 @@ title: Properties view author: Daniel Otykier updated: 2021-09-08 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- -# Using the Properties grid in Tabular Editor 3 +# Using the Properties grid in Tabular Editor -The Properties view in Tabular Editor 3 allows you to inspect and modify the properties of any object in your tabular model. +The Properties view in Tabular Editor allows you to inspect and modify the properties of any object in your tabular model. You access the properties view by selecting an object in the TOM Explorer. You will then see a list of properties that are relevant for the selected object type, such as name, description, data type, format string, etc. You can also access advanced properties that are not available in other tools like Visual Studio or Power BI Desktop. diff --git a/content/te3/views/tom-explorer-view.md b/content/features/views/tom-explorer-view.md similarity index 86% rename from content/te3/views/tom-explorer-view.md rename to content/features/views/tom-explorer-view.md index 74d2a69..2d037ed 100644 --- a/content/te3/views/tom-explorer-view.md +++ b/content/features/views/tom-explorer-view.md @@ -4,10 +4,18 @@ title: TOM Explorer view author: Morten Lønskov updated: 2023-02-21 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + partial: true + note: "Works differently than shown in this article" + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Using the TOM Explorer in Tabular Editor 3 The TOM Explorer is your main window for interacting with the objects of your data mode. Objects such has tables, columns, measures, security groups etc. are all displayed in a hierarchical structure. A Tabular data model is represented by the so called [Tabular Object Model (TOM)](https://docs.microsoft.com/en-us/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions) and it is the metadata of your TOM that is displayed in the TOM Explorer. @@ -21,9 +29,9 @@ The TOM Explorer consists of two main areas, firstly the data model objects and ## Data Model Objects You can fold out objects in the TOM Explorer to see their children and follow the hierarchy of objects downwards. And if you right click on any object you will be given a list of options to interact with that specific object. As you can see below there are several options that you can use with a table. It is with this menu that you for example can easily refresh your tables and see the status of that refresh in the @data-refresh-view -![Tom Explorer Interaction](~/content/assets/images/user-interface/TomExplorerRightClick.png) +![Tom Explorer Interaction](~/content/assets/images/user-interface/TomExplorerRightClick.png) -The right click menu has the following items some of which can be expanded for more actions. The menu depends on the object type chosen (Table, partition, measure, column etc.) and the list below is not exhaustive for all types of objects but contains those most used. +The right click menu has the following items some of which can be expanded for more actions. The menu depends on the object type chosen (Table, partition, measure, column etc.) and the list below is not exhaustive for all types of objects but contains those most used. ### Options in Right-click menu - **Update table schema...**: @@ -66,6 +74,7 @@ Visualizes dependencies between the selected table and other model objects. Can - **Export script**: Exports the selected objects as a TMSL or TMDL script for use in deployment or source control. +Exports the selected objects as a TMSL or TMDL script for use in deployment or source control. - **Macro Menus**: Macros can be placed into folders and run against the selected object. In the example above the user has a Modelling and Analysis folder for Macro scripts on table objects. @@ -105,6 +114,11 @@ The toolbar allow you to show and hide different types of objects, toggling pers Controls whether calendars are visible. **Shortcut:** `Ctrl+4` +6. **Show/Hide Display Folders** +5. **Show/Hide Calendars** + Controls whether calendars are visible. + **Shortcut:** `Ctrl+4` + 6. **Show/Hide Display Folders** Enables or disables the display of folder organization within tables. **Shortcut:** `Ctrl+5` @@ -112,17 +126,24 @@ The toolbar allow you to show and hide different types of objects, toggling pers 7. **Group User-Defined Functions by Namespace When enabled, DAX User-Defined Functions are grouped hierarchically by [namespace](xref:udfs#namespaces), rather than being shown as a flat list. +8. **Show/Hide Hidden Objects** +7. **Group User-Defined Functions by Namespace + When enabled, DAX User-Defined Functions are grouped hierarchically by [namespace](xref:udfs#namespaces), rather than being shown as a flat list. + 8. **Show/Hide Hidden Objects** Toggles whether hidden objects are shown. **Shortcut:** `Ctrl+6` +9. **Show/Hide Info Columns** 9. **Show/Hide Info Columns** Shows or hides metadata columns, such as data types or object status. **Shortcut:** `Ctrl+7` +10. **Perspective Selector** 10. **Perspective Selector** Drop-down to choose a specific perspective. Only objects in the selected perspective will be shown in the TOM Explorer. +11. **Language Selector** 11. **Language Selector** Allows switching between different languages for model metadata localization. @@ -130,4 +151,8 @@ The toolbar allow you to show and hide different types of objects, toggling pers Collaps all nodes in the TOM Explorer tree view. 13. **Search Bar** - Provides real-time filtering and navigation within the TOM Explorer. Type to search across all visible model objects. +12. **Colapse All** + Collaps all nodes in the TOM Explorer tree view. + +13. **Search Bar** + Provides real-time filtering and navigation within the TOM Explorer. Type to search across all visible model objects. \ No newline at end of file diff --git a/content/te3/views/user-interface.md b/content/features/views/user-interface.md similarity index 98% rename from content/te3/views/user-interface.md rename to content/features/views/user-interface.md index 3791fd6..444a627 100644 --- a/content/te3/views/user-interface.md +++ b/content/features/views/user-interface.md @@ -3,6 +3,18 @@ uid: user-interface title: Basic user interface author: Daniel Otykier updated: 2021-09-08 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Getting to know Tabular Editor 3's User Interface @@ -142,7 +154,7 @@ The **Model** menu displays actions that can be performed at the level of the Mo ![View Menu](~/content/assets/images/model-menu.png) -- **Deploy...**: Launches the Tabular Editor Deployment wizard. For more information, see @deployment. +- **Deploy...**: Launches the Tabular Editor Deployment wizard. For more information, see [Model deployment](../deployment.md). > [!IMPORTANT] > The **Deploy** option is not available in Tabular Editor 3 Desktop Edition. For more information see @editions. @@ -217,6 +229,6 @@ You can change the behavior of these dynamic menus under **Tools > Preferences > # Next steps -- [Using the TOM Explorer in Tabular Editor 3](xref:tom-explorer-view) +- @tom-explorer-view - @supported-files - @preferences \ No newline at end of file diff --git a/content/te3/workspace-mode.partial.md b/content/features/workspace-mode.partial.md similarity index 92% rename from content/te3/workspace-mode.partial.md rename to content/features/workspace-mode.partial.md index c96a7be..f2ef282 100644 --- a/content/te3/workspace-mode.partial.md +++ b/content/features/workspace-mode.partial.md @@ -1,4 +1,21 @@ -Tabular Editor 3 introduces the concept of **workspace mode** when creating a new model inside the tool, or when loading a Model.bim or Database.json file of an existing model. +--- +uid: workspace-mode +title: Workspace Mode +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +## Workspace Mode +Tabular Editor 3 introduces the concept of **workspace mode** when creating a new model inside the tool, or when loading a Model.bim or Database.json file of an existing model. Using workspace mode, Tabular Editor will synchronize your model metadata changes to a **workspace database**, whenever you hit Save (Ctrl+S), while also saving the metadata changes to the file(s) on disk. diff --git a/content/te2/Getting-Started.md b/content/getting-started/Getting-Started-te2.md similarity index 95% rename from content/te2/Getting-Started.md rename to content/getting-started/Getting-Started-te2.md index 0e06ff6..a8da12d 100644 --- a/content/te2/Getting-Started.md +++ b/content/getting-started/Getting-Started-te2.md @@ -1,8 +1,14 @@ --- uid: getting-started-te2 -title: Getting Started +title: Getting Started with Tabular Editor 2 author: Daniel Otykier updated: 2021-09-21 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + none: true --- # Getting Started @@ -28,7 +34,7 @@ Load a Model.bim file by choosing the Open > From File... option in the File men ![Connecting to an already deployed Tabular Model](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/Connect.png) -This also works with the new Azure Analysis Services PaaS. The "Local Instance" dropdown, may be used to browse and connect to any running instances of Power BI Desktop or Visual Studio Integrated Workspaces. **Note that although Tabular Editor can make changes to a Power BI model through the TOM, not all modeling operations are supported by Microsoft. [More information](/te2/Power-BI-Desktop-Integration.html)** +This also works with the new Azure Analysis Services PaaS. The "Local Instance" dropdown, may be used to browse and connect to any running instances of Power BI Desktop or Visual Studio Integrated Workspaces. **Note that although Tabular Editor can make changes to a Power BI model through the TOM, not all modeling operations are supported by Microsoft. [More information](Power-BI-Desktop-Integration.md)** After clicking "OK", you will be presented with a list of databases on the server. @@ -83,7 +89,7 @@ By default, partitions, data sources and roles will not be overwritten in the ta * `-R` Overwrite **r**oles * `-M` Overwrite role **m**embers -More information on command-line options can be found [here](/te2/Command-line-Options.html). +More information on command-line options can be found [here](../features/Command-line-Options.md). > [!NOTE] > Since TabularEditor.exe is a Windows Forms application, running it from the command line will execute the application in a different thread, returning control to the caller immediately. This may cause issues when running deployments as part of a batch job where you need to await succesful deployment before proceeding with the job. If you experience these issues, use `start /wait` to let TabularEditor finish its job before returning control to the caller: @@ -100,4 +106,4 @@ The Advanced Script editor has some limited IntelliSense functionality to get yo ![IntelliSense helps you create scripts for Tabular Editor](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/AdvancedEditor%20intellisense.png) -More documentation and examples on Advanced Scripting, can be [found here](/te2/Advanced-Scripting.html). +More documentation and examples on Advanced Scripting, can be [found here](../how-tos/Advanced-Scripting.md). diff --git a/content/getting-started/Power-BI-Desktop-Integration.md b/content/getting-started/Power-BI-Desktop-Integration.md new file mode 100644 index 0000000..8dc82f2 --- /dev/null +++ b/content/getting-started/Power-BI-Desktop-Integration.md @@ -0,0 +1,50 @@ +--- +uid: desktop-integration +title: Power BI Desktop Integration +applies to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +# Power BI Desktop Integration + +[Power BI Desktop supports External Tools](https://docs.microsoft.com/da-dk/power-bi/create-reports/desktop-external-tools) which allows Tabular Editor to perform modeling operations when working with Imported or DirectQuery data in Desktop. + +![image](~/content/assets/images/getting-started/power-bi-desktop-integration.png) + +## Prerequisites + +- [Power BI Desktop](https://www.microsoft.com/en-us/download/details.aspx?id=58494) (July 2020 or newer) +- [Latest version of Tabular Editor](https://tabulareditor.com/downloads) + +Also, it is highly recommended that [automatic date/time](https://docs.microsoft.com/en-us/power-bi/transform-model/desktop-auto-date-time) is **disabled** (Power BI Desktop setting under "Data Load"). + +## External Tool architecture + +When a Power BI Desktop report contains a data model (that is, one or more tables have been added in Import or DirectQuery mode), that data model is hosted inside an instance of Analysis Services managed by Power BI Desktop. External Tools may connect to this instance of Analysis Services for different purposes. + +> [!IMPORTANT] +> Power BI Desktop reports that use a **Live Connection** to SSAS, Azure AS or a dataset in a Power BI workspace do not contain a data model. As such, these reports **can not** be used with external tools such as Tabular Editor. + +> [!IMPORTANT] +> Power BI Desktop reports that directly edits a **Direct Lake** or other model Fabric do not contain a data model. Instead, Tabular Editor will open the model directly from the service which is essentially what Power BI Desktop also does. + +External tools may connect to the instance of Analysis Services managed by Power BI Desktop through a specific port number assigned by Power BI Desktop. When a tool is launched directly from the "External Tools" ribbon in Power BI Desktop, this port number is passed to the external tool as a command line argument. In Tabular Editor's case, this causes the data model to be loaded in Tabular Editor. + + + +Once connected to the instance of Analysis Services, an external tool can obtain information about the model metadata, execute DAX or MDX queries against the data model, an even apply changes to the model metadata through [Microsoft-provided client libraries](https://docs.microsoft.com/en-us/analysis-services/client-libraries?view=asallproducts-allversions). In this regard, the Analysis Services instance managed by Power BI Desktop is no different from any other type of Analysis Services instance. + +## Supported Modeling Operations + +As of the June 2025 Power BI Desktop update, there are no longer any unsupported write operations. In other words, third party tools can now freely modify any aspect of the semantic model hosted in Power BI Desktop, including adding and removing tables and columns, changing data types, etc. However, if you're using a version of Power BI Desktop prior to the June 2025 update, please view the limitations in the [Desktop Limitations](xref: desktop-limitations) article. + +More information in [the official blog post](https://powerbi.microsoft.com/en-us/blog/open-and-edit-any-semantic-model-with-power-bi-tools/). diff --git a/content/te3/azure-marketplace.md b/content/getting-started/azure-marketplace.md similarity index 100% rename from content/te3/azure-marketplace.md rename to content/getting-started/azure-marketplace.md diff --git a/content/onboarding/boosting-productivity-te3.md b/content/getting-started/boosting-productivity-te3.md similarity index 89% rename from content/onboarding/boosting-productivity-te3.md rename to content/getting-started/boosting-productivity-te3.md index 4a7bce6..01306b7 100644 --- a/content/onboarding/boosting-productivity-te3.md +++ b/content/getting-started/boosting-productivity-te3.md @@ -3,12 +3,24 @@ uid: boosting-productivity-te3 title: Boosting productivity with Tabular Editor 3 author: Daniel Otykier updated: 2021-09-30 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Boosting productivity with Tabular Editor 3 - + This section contains a number of articles that will let you quickly become familiar with Tabular Editor 3 and its main features, with an emphasis on how to get stuff done in the most productive way possible. Below is an overview of the articles and what you will learn in each: diff --git a/content/onboarding/bpa.md b/content/getting-started/bpa.md similarity index 97% rename from content/onboarding/bpa.md rename to content/getting-started/bpa.md index 28500ec..1cfbe94 100644 --- a/content/onboarding/bpa.md +++ b/content/getting-started/bpa.md @@ -3,6 +3,18 @@ uid: bpa title: Improve code quality with the Best Practice Analyzer author: Daniel Otykier updated: 2021-11-02 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Improve code quality with the Best Practice Analyzer diff --git a/content/onboarding/creating-and-testing-dax.md b/content/getting-started/creating-and-testing-dax.md similarity index 97% rename from content/onboarding/creating-and-testing-dax.md rename to content/getting-started/creating-and-testing-dax.md index 4a1d8a0..4f4a2e4 100644 --- a/content/onboarding/creating-and-testing-dax.md +++ b/content/getting-started/creating-and-testing-dax.md @@ -4,10 +4,17 @@ title: Adding measures and other calculated objects author: Daniel Otykier updated: 2021-10-08 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Adding measures and other calculated objects diff --git a/content/onboarding/cs-scripts-and-macros.md b/content/getting-started/cs-scripts-and-macros.md similarity index 100% rename from content/onboarding/cs-scripts-and-macros.md rename to content/getting-started/cs-scripts-and-macros.md diff --git a/content/onboarding/dax-script-introduction.md b/content/getting-started/dax-script-introduction.md similarity index 97% rename from content/onboarding/dax-script-introduction.md rename to content/getting-started/dax-script-introduction.md index 645a8c0..16bb426 100644 --- a/content/onboarding/dax-script-introduction.md +++ b/content/getting-started/dax-script-introduction.md @@ -4,10 +4,17 @@ title: Using the DAX Scripting feature author: Daniel Otykier updated: 2021-10-08 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Using the DAX Scripting feature diff --git a/content/common/desktop-limitations.md b/content/getting-started/desktop-limitations.md similarity index 90% rename from content/common/desktop-limitations.md rename to content/getting-started/desktop-limitations.md index fcfe9d2..50f936c 100644 --- a/content/common/desktop-limitations.md +++ b/content/getting-started/desktop-limitations.md @@ -1,20 +1,24 @@ --- uid: desktop-limitations -title: Power BI Desktop Limitations +title: Power BI Desktop Limitations (Outdated) author: Morten Lønskov updated: 2023-08-21 applies_to: - versions: - - version: 2.x - - version: 3.x - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- - # Power BI Desktop limitations + When using Tabular Editor (any edition) as an [external tool for Power BI Desktop](https://docs.microsoft.com/en-us/power-bi/transform-model/desktop-external-tools), there are a few limitations to be aware about. The limitations mentioned in this article apply to Tabular Editor 2.x as well. @@ -27,14 +31,15 @@ More information in [the official blog post](https://powerbi.microsoft.com/en-us ## Power BI file types -When using Power BI, you will encounter two different file types commonly used: +When using Power BI, you will encounter three different file types commonly used: - **.pbix** (Power BI Report) - **.pbit** (Power BI Template) +- **.pbip** (Power BI Project) Both these files can be opened in Power BI Desktop and essentially defines everything related to a Power BI report: Data sources, Power Query transformations, the tabular data model, report pages, visuals, bookmarks, etc. -The main difference between the two, is that the **.pbix file contains model data**, where as the **.pbit file contains no data**. In addition, it turns out that the latter of the two contains model **metadata** in the JSON-based [Tabular Object Model (TOM)](https://docs.microsoft.com/en-us/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions) format, which can be loaded by Tabular Editor. A .pbix file on the other hand, does not contain the model metadata in this format, and therefore, **a .pbix file cannot be loaded directly in Tabular Editor** in any way. Instead, you will have to rely on the External Tools integration, which requires you to load the .pbix file in Power BI Desktop, as described below. +The main difference between, is that the **.pbix and .pbip file contains model data**, where as the **.pbit file contains no data**. In addition, a **.pbix** file does not contain the model metadata in this format, and therefore, **a .pbix file cannot be loaded directly in Tabular Editor** in any way. Instead, you will have to rely on the External Tools integration, which requires you to load the .pbix file in Power BI Desktop, as described below. > [!WARNING] > Even though it is technically possible to load and save model metadata to and from a .pbit file, this approach is unsupported by Power BI Desktop. As such, there is always a risk of making changes to the .pbit file which would cause the file to become unloadable in Power BI Desktop, or cause stability issues once loaded. In this case, Microsoft support will be unable to assist you. diff --git a/content/te3/editions.md b/content/getting-started/editions.md similarity index 98% rename from content/te3/editions.md rename to content/getting-started/editions.md index 026c3b3..88d37eb 100644 --- a/content/te3/editions.md +++ b/content/getting-started/editions.md @@ -3,6 +3,12 @@ uid: editions title: Compare editions author: Søren Toft Joensen updated: 2025-02-07 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + full: true --- # Tabular Editor 3 Editions diff --git a/content/onboarding/general-introduction.md b/content/getting-started/general-introduction.md similarity index 98% rename from content/onboarding/general-introduction.md rename to content/getting-started/general-introduction.md index 61d32ff..bee4249 100644 --- a/content/onboarding/general-introduction.md +++ b/content/getting-started/general-introduction.md @@ -3,6 +3,12 @@ uid: general-introduction title: General introduction and architecture author: Daniel Otykier updated: 2021-09-30 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true --- # General introduction and architecture diff --git a/content/te3/getting-started.md b/content/getting-started/getting-started.md similarity index 90% rename from content/te3/getting-started.md rename to content/getting-started/getting-started.md index bfe21c6..664ec18 100644 --- a/content/te3/getting-started.md +++ b/content/getting-started/getting-started.md @@ -1,8 +1,20 @@ --- uid: getting-started -title: Getting Started +title: Installation and Activation author: Morten Lønskov updated: 2025-09-23 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Getting Started @@ -28,13 +40,13 @@ Tabular Editor 3 is commercial software. Visit our [home page](https://tabulared The first time you launch Tabular Editor 3 on a new machine, you are prompted to activate the product. -![Product activation](~/content/assets/images/product-activation.png) +![Product activation](~/content/assets/images/getting-started/product-activation.png) ### Activating using an existing license key Once you purchase a license for Tabular Editor 3, you should receive an e-mail with a 25-character string which is your license key. When prompted, enter the license key and hit "Next >" to activate the product. -![Enter License Key](~/content/assets/images/enter-license-key.png) +![Enter License Key](~/content/assets/images/getting-started/enter-license-key.png) > [!NOTE] > For multi-user license types, you will need to enter your e-mail address in addition to the license key. Tabular Editor 3 will prompt you to do so, if the license key you enter represents a multi-user license. @@ -52,7 +64,7 @@ If you haven't used Tabular Editor 3 before, you are eligible to a free 30-day t When Tabular Editor 3 is activated, you may change your license key in the Help menu by choosing "About Tabular Editor". -![About Te3](~/content/assets/images/about-te3.png) +![About Te3](~/content/assets/images/getting-started/about-te3.png) In the dialog, select "Change license key". Note that this option is only available if no model is loaded in Tabular Editor. If you already loaded a model you can close it under File > Close model. Once you click "Change license key", Tabular Editor will prompt you whether you want to remove the current license: @@ -77,7 +89,7 @@ You can also use `regedit.exe` (Windows Registry Editor) and navigate to `HKEY_C A system administrator may also proactively assign Tabular Editor 3 licenses to a machine by specifying the **LicenseKey** and **User** values under each user’s `SOFTWARE\Kapacity\Tabular Editor 3` registry key. -![Registry Editor](~/content/assets/images/registry-editor.png) +![Registry Editor](~/content/assets/images/troubleshooting/registry-editor.png) ### Changing a license key through the registry @@ -129,6 +141,4 @@ For details on available MSI command-line options, please refer to the official ## Next steps -- [Overview of Tabular Editor 3's user interface](xref:user-interface) -- [What's new in Tabular Editor 3](whats-new.md) -- [Tabular Editor 3 Onboarding Guide](xref:onboarding-te3) \ No newline at end of file +- [Overview of Tabular Editor 3's user interface](xref:user-interface) \ No newline at end of file diff --git a/content/onboarding/importing-tables-data-modeling.md b/content/getting-started/importing-tables-data-modeling.md similarity index 92% rename from content/onboarding/importing-tables-data-modeling.md rename to content/getting-started/importing-tables-data-modeling.md index 0c582e9..ff7e3d3 100644 --- a/content/onboarding/importing-tables-data-modeling.md +++ b/content/getting-started/importing-tables-data-modeling.md @@ -4,11 +4,17 @@ title: Importing tables and data modeling author: Daniel Otykier updated: 2021-10-08 applies_to: - editions: - - edition: Desktop - partial: TE3 Desktop Edition includes this feature. External tools adding/editing tables, columns and relationships against a Power BI Desktop model is not supported by Microsoft, however. - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Importing tables and data modeling @@ -16,7 +22,7 @@ This article describes how to use the [Table Import Wizard](#table-import-wizard ## Table Import Wizard -[!include[importing-tables1](~/content/te3/import-tables.partial.md)] +[!include[importing-tables1](../features/import-tables.partial.md)] # Working with diagrams diff --git a/content/onboarding/index.md b/content/getting-started/index.md similarity index 75% rename from content/onboarding/index.md rename to content/getting-started/index.md index f369454..e6abb1a 100644 --- a/content/onboarding/index.md +++ b/content/getting-started/index.md @@ -5,13 +5,14 @@ author: Daniel Otykier --- # Welcome + **Thank you for choosing Tabular Editor 3!** -To help you get the most out of the tool, we have collected all of our onboarding material in this onboarding guide, that we hope you will enjoy. We recommend all new users of Tabular Editor 3 to read through this guide, skipping any topics that they are already familiar with. +To help you get the most out of the tool, we have collected all of our onboarding material in this getting started section, that we hope you will enjoy. We recommend all new users of Tabular Editor 3 to read through this guide, skipping any topics that they are already familiar with. -> [!NOTE] +> [!NOTE] > Some articles in this guide reference Tabular Editor 2, specifically the Command-Line Interface (CLI), for purposes of automated deployment and testing. A standalone CLI application to accompany Tabular Editor 3 is planned for release at a later time. As this training material is focused on the Tabular Editor product, we assume that you already have a basic understanding of tabular data modeling (using either Power BI Desktop, Visual Studio or Tabular Editor 2.x). If you are new to tabular data modeling, we highly recommend looking into some of the training material and courses offered by third parties such as [sqlbi.com](https://sqlbi.com). @@ -23,10 +24,28 @@ As this training material is focused on the Tabular Editor product, we assume th - @migrate-from-vs - @migrate-from-desktop - @migrate-from-te2 + +- @getting-started + - @editions + - @training-telearn + +- @getting-started-te2 +- @desktop-integration + - @desktop-limitations + +- @user-interface + - @bpa-view + - @data-refresh-view + - @find-replace + - @macros-view + - @messages-view + - @properties-view + - @tom-explorer-view + - @diagram-view + - @parallel-development - @optimizing-workflow-workspace-mode - - @powerbi-cicd - - @as-cicd + - @boosting-productivity-te3 - @importing-tables-data-modeling - @refresh-preview-query @@ -39,7 +58,8 @@ As this training material is focused on the Tabular Editor product, we assume th **Additional resources:** - [TE3 reference docs](xref:getting-started) -- @downloads +- [Download Tabular Editor](https://tabulareditor.com/download) +- [Tabular Editor Learn](https://tabulareditor.com/learn) - [Dedicated support (Enterprise Edition customers only)](mailto:support@tabulareditor.com) - [Community support](https://github.com/TabularEditor/TabularEditor3/issues) - [Community discussions](https://github.com/TabularEditor/TabularEditor3/discussions) \ No newline at end of file diff --git a/content/onboarding/installation.md b/content/getting-started/installation.md similarity index 81% rename from content/onboarding/installation.md rename to content/getting-started/installation.md index 921413f..316745a 100644 --- a/content/onboarding/installation.md +++ b/content/getting-started/installation.md @@ -3,6 +3,18 @@ uid: installation-activation-basic title: Installation, activation and basic configuration author: Daniel Otykier updated: 2021-09-30 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- ## Installation @@ -11,19 +23,19 @@ In order to install Tabular Editor 3, download the latest version from our [down We recommend downloading the MSI 64-bit installer, which is suitable in most scenarios. Once downloaded, doubleclick the MSI file and go through the installation pages. -![Install](~/content/assets/images/install.png) +![Install](~/content/assets/images/getting-started/install.png) ## Activating your installation The first time you launch Tabular Editor 3 on a new machine, you are prompted to activate the product. -![Product activation](~/content/assets/images/product-activation.png) +![Product activation](~/content/assets/images/getting-started/product-activation.png) ### Activating using an existing license key Once you purchase a license for Tabular Editor 3, you should receive an e-mail with a 25-character string which is your license key. When prompted, enter the license key and hit "Next >" to activate the product. -![Enter License Key](~/content/assets/images/enter-license-key.png) +![Enter License Key](~/content/assets/images/getting-started/enter-license-key.png) > [!NOTE] > For multi-user license types, you will need to enter your e-mail address in addition to the license key. Tabular Editor 3 will prompt you to do so, if the license key you enter represents a multi-user license. @@ -31,19 +43,19 @@ Once you purchase a license for Tabular Editor 3, you should receive an e-mail w #### Manual Activation (No Internet) If you do not have access to the internet e.g., due to a proxy Tabular Editor will prompt you to do a manual activation. -![Manual Activation Prompt](~/content/assets/images/Activation_manual_firstprompt.png) +![Manual Activation Prompt](~/content/assets/images/getting-started/Activation_manual_firstprompt.png) After entering your email, a dialog box appears with a link to an activation key. Copy the URL and open it in a web-browser that is connected to the internet. The URL returns a JSON object: -![Manual Activation JSON Object](~/content/assets/images/activation_manual_jsonobject.png) +![Manual Activation JSON Object](~/content/assets/images/getting-started/activation_manual_jsonobject.png) Copy the full JSON object and paste the full JSON object given into the dialog box. Your manual activation dialog should end up looking like below. -![Manual Activation Filled In](~/content/assets/images/activation_manual_dialogbox_filled.png) +![Manual Activation Filled In](~/content/assets/images/getting-started/activation_manual_dialogbox_filled.png) Your Tabular Editor 3 license will thereby be verified. @@ -51,7 +63,7 @@ Your Tabular Editor 3 license will thereby be verified. When Tabular Editor 3 is activated, you may change your license key in the Help menu by choosing "About Tabular Editor". -![About Te3](~/content/assets/images/about-te3.png) +![About Te3](~/content/assets/images/getting-started/about-te3.png) In the dialog, select "Change license key". Note that this option is only available if no model is loaded in Tabular Editor. IF you already loaded a model you can close it under File > Close model. @@ -72,7 +84,7 @@ By default, whenever Tabular Editor 3 is launched, the tool will check online to Tabular Editor 3 collects anonymous usage data and telemetry, which helps us improve the product. You can opt out at any time by launching Tabular Editor 3 and navigating to **Tools > Preferences > Updates and Feedback**. Uncheck the **Help improve Tabular Editor by collecting anonymous usage data** checkbox to opt out. -![Collect Telemetry](~/content/assets/images/collect-telemetry.png) +![Collect Telemetry](~/content/assets/images/getting-started/collect-telemetry.png) ### Proxy settings diff --git a/content/onboarding/migrate-from-desktop.md b/content/getting-started/migrate-from-desktop.md similarity index 98% rename from content/onboarding/migrate-from-desktop.md rename to content/getting-started/migrate-from-desktop.md index a200acf..c3aec21 100644 --- a/content/onboarding/migrate-from-desktop.md +++ b/content/getting-started/migrate-from-desktop.md @@ -3,6 +3,18 @@ uid: migrate-from-desktop title: Migrating from Power BI Desktop author: Daniel Otykier updated: 2021-09-30 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Migrating from Power BI Desktop @@ -60,7 +72,7 @@ The typical workflow in this scenario, is the following: 4. If using workspace mode, changes should be immediately visible in the Power BI service every time you hit Save (CTRL+S) in Tabular Editor. 5. If not using workspace mode or when done making changes, use Tabular Editor's **Model > Deploy...** option to publish the changes to the Power BI service. -As the model metadata "source of truth" in this scenario, is the file or folder structure stored on disk, this scenario not only enables parallel development with version control integration, but also continuous integration/continuous deployment (CI/CD) using an automated build server such as Azure DevOps. See for more information. +As the model metadata "source of truth" in this scenario, is the file or folder structure stored on disk, this scenario not only enables parallel development with version control integration, but also continuous integration/continuous deployment (CI/CD) using an automated build server such as Azure DevOps. > [!WARNING] > As soon as you apply changes to a Power BI dataset through the Power BI service XMLA endpoint, that dataset can no longer be downloaded as a .pbix file. See [Dataset connectivity with the XMLA endpoint](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-connect-tools#power-bi-desktop-authored-datasets) for more information. diff --git a/content/onboarding/migrate-from-te2.md b/content/getting-started/migrate-from-te2.md similarity index 97% rename from content/onboarding/migrate-from-te2.md rename to content/getting-started/migrate-from-te2.md index cb6a475..be9e7d8 100644 --- a/content/onboarding/migrate-from-te2.md +++ b/content/getting-started/migrate-from-te2.md @@ -3,6 +3,18 @@ uid: migrate-from-te2 title: Migrating from Tabular Editor 2.x author: Daniel Otykier updated: 2021-09-30 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Migrating from Tabular Editor 2.x diff --git a/content/onboarding/migrate-from-vs.md b/content/getting-started/migrate-from-vs.md similarity index 98% rename from content/onboarding/migrate-from-vs.md rename to content/getting-started/migrate-from-vs.md index a69ca66..e3bc0fd 100644 --- a/content/onboarding/migrate-from-vs.md +++ b/content/getting-started/migrate-from-vs.md @@ -3,6 +3,18 @@ uid: migrate-from-vs title: Migrating from Visual Studio author: Daniel Otykier updated: 2021-09-30 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Migrating from Visual Studio / SQL Server Data Tools @@ -200,7 +212,7 @@ Once tables have been added to the diagram, you can create relationship between Tabular Editor lets you easily deploy the model metadata to any instance of Analysis Services. You can invoke Tabular Editor's Deployment Wizard under **Model > Deploy...** or by hitting CTRL+SHIFT+D. -For more information, see . +For more information, see [Model deployment](../features/deployment.md). ## Next steps diff --git a/content/getting-started/optimizing-workflow-workspace-mode.md b/content/getting-started/optimizing-workflow-workspace-mode.md new file mode 100644 index 0000000..3a93022 --- /dev/null +++ b/content/getting-started/optimizing-workflow-workspace-mode.md @@ -0,0 +1,25 @@ +--- +uid: optimizing-workflow-workspace-mode +title: Optimizing development workflow using Workspace Mode +author: Daniel Otykier +updated: 2021-10-05 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- + +# Optimizing development workflow using Workspace Mode +[!include[workspace-mode](~/content/features/workspace-mode.partial.md)] + +# Next steps + +- @boosting-productivity-te3 \ No newline at end of file diff --git a/content/onboarding/parallel-development.md b/content/getting-started/parallel-development.md similarity index 97% rename from content/onboarding/parallel-development.md rename to content/getting-started/parallel-development.md index 57ec06f..0171b84 100644 --- a/content/onboarding/parallel-development.md +++ b/content/getting-started/parallel-development.md @@ -4,28 +4,34 @@ title: Enabling parallel development using Git and Save to Folder author: Daniel Otykier updated: 2021-09-30 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Enabling parallel development using Git and Save to Folder - + This article describes the principles of parallel model development (that is, the ability for multiple developers to work in parallel on the same data model) and the role of Tabular Editor in this regard. -# Prerequisites +## Prerequisites - The destination of your data model must be one of the following: - SQL Server 2016 (or newer) Analysis Services Tabular - Azure Analysis Services - - Power BI Premium Capacity/Power BI Premium-per-user with [XMLA read/write enabled](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-connect-tools#enable-xmla-read-write) + - Fabric/Power BI Premium Capacity/Power BI Premium-per-user with [XMLA read/write enabled](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-connect-tools#enable-xmla-read-write) - Git repository accessible by all team members (on-premises or hosted in Azure DevOps, GitHub, etc.) -# TOM as source code +## TOM as source code Parallel development has traditionally been difficult to implement on Analysis Services tabular models and Power BI datasets (in this article, we will call both types of models "tabular models" for brevity). With the introduction of the JSON-based model metadata used by the [Tabular Object Model (TOM)](https://docs.microsoft.com/en-us/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions), integrating model metadata in version control has certainly become easier. @@ -41,7 +47,7 @@ Power BI dataset developers have it much worse, since they do not even have acce Tabular Editor aims to simplify this process by providing an easy way to extract only the semantically meaningful metadata from the Tabular Object Model, regardless of whether that model is an Analysis Services tabular model or a Power BI dataset. Moreover, Tabular Editor can split up this metadata into several smaller files using its Save to Folder feature. -# What is Save to Folder? +## What is Save to Folder? As mentioned above, the model metadata for a tabular model is traditionally stored in a single, monolithic JSON file, typically named **Model.bim**, which is not well suited for version control integration. Since the JSON in this file represents the [Tabular Object Model (TOM)](https://docs.microsoft.com/en-us/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions), it turns out that there is a straight forward way to break the file down into smaller pieces: The TOM contains arrays of objects at almost all levels, such as the list of tables within a model, the list of measures within a table, the list of annotations within a measure, etc. When using Tabular Editor's **Save to Folder** feature, these arrays are simply removed from the JSON, and instead, a subfolder is generated containing one file for each object in the original array. This process can be nested. The result is a folder structure, where each folder contains a set of smaller JSON files and subfolders, which semantically contains exactly the same information as the original Model.bim file: @@ -84,7 +90,7 @@ The checklist allows you to specify which objects will be serialized as individu In most cases, it is recommended to always serialize objects to the lowest level. However, there may be special cases where this level of detail is not needed. -# Power BI and version control +## Power BI and version control As mentioned above, integrating a Power BI report (.pbix) or Power BI template (.pbit) file in version control, does not enable parallel development or conflict resolution, due to these files using a binary file format. At the same time, we have to be aware of the current limitations of using Tabular Editor (or other third party tools) with Power BI Desktop or the Power BI XMLA endpoint respectively. @@ -102,7 +108,7 @@ To enable parallel development, we must be able to store the model metadata in o > [!NOTE] > Power BI Desktop is still needed for purpose of creating the visual part of the report. It is a [best practice to always separate reports from models](https://docs.microsoft.com/en-us/power-bi/guidance/report-separate-from-model). In case you have an existing Power BI file that contains both, [this blog post](https://powerbi.tips/2020/06/split-an-existing-power-bi-file-into-a-model-and-report/) ([video](https://www.youtube.com/watch?v=PlrtBm9YN_Q)) describes how to split it into a model file and a report file. -# Tabular Editor and git +## Tabular Editor and git Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. It is the most popular version control system right now, and it is available through multiple hosted options, such as [Azure DevOps](https://azure.microsoft.com/en-us/services/devops/repos/), [GitHub](https://github.com/), [GitLab](https://about.gitlab.com/) and others. @@ -180,7 +186,7 @@ The exact workflow depends on your branching strategy and how your git repositor We present more details about how to configure git branch policies, set up automated build and deployment pipelines, etc. using Azure DevOps in the following articles. Similar techniques can be used in other automated build and git hosting environments, such as TeamCity, GitHub, etc. -# Next steps +## Next steps - @powerbi-cicd - @as-cicd diff --git a/content/onboarding/personalizing-te3.md b/content/getting-started/personalizing-te3.md similarity index 97% rename from content/onboarding/personalizing-te3.md rename to content/getting-started/personalizing-te3.md index 3e05203..fe9b592 100644 --- a/content/onboarding/personalizing-te3.md +++ b/content/getting-started/personalizing-te3.md @@ -3,6 +3,18 @@ uid: personalizing-te3 title: Personalizing and configuring Tabular Editor 3 to suit your needs author: Daniel Otykier updated: 2021-09-28 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Personalizing and configuring Tabular Editor 3 to suit your needs diff --git a/content/onboarding/refresh-preview-query.md b/content/getting-started/refresh-preview-query.md similarity index 97% rename from content/onboarding/refresh-preview-query.md rename to content/getting-started/refresh-preview-query.md index c3bb5b4..c8e73e6 100644 --- a/content/onboarding/refresh-preview-query.md +++ b/content/getting-started/refresh-preview-query.md @@ -4,11 +4,17 @@ title: Refreshing, previewing and querying data author: Daniel Otykier updated: 2021-09-30 applies_to: - editions: - - edition: Desktop - partial: Refreshing tables through external tools is currently not supported by Power BI Desktop, even though Tabular Editor 3 Desktop Edition allows this operation. Querying data is fully supported. - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Refreshing, previewing and querying data diff --git a/content/getting-started/toc.md b/content/getting-started/toc.md new file mode 100644 index 0000000..724e055 --- /dev/null +++ b/content/getting-started/toc.md @@ -0,0 +1,44 @@ +# [Welcome](index.md) + +# Introduction to Tabular Editor +## @general-introduction +## @installation-activation-basic +## @migrate-from-vs +## @migrate-from-desktop +## @migrate-from-te2 + +# Getting Started with Tabular Editor 3 +## @getting-started +## @editions +## @training-telearn + +# @getting-started-te2 + +# Power BI Desktop & Tabular Editor +## @desktop-integration +## @desktop-limitations + +# User Interface +## @user-interface-reference +## @bpa-view-reference +## @data-refresh-view-reference +## @find-replace-reference +## @macros-view-reference +## @messages-view-reference +## @properties-view-reference +## @tom-explorer-view-reference +## @diagram-view-reference + +# Parallel development +## @parallel-development +## @optimizing-workflow-workspace-mode + +# Built models faster with Tabular Editor +## @boosting-productivity-te3 +## @importing-tables-data-modeling +## @refresh-preview-query +## @creating-and-testing-dax +## @dax-script-introduction +## @bpa +## @cs-scripts-and-macros +## @personalizing-te3 \ No newline at end of file diff --git a/content/getting-started/training-telearn.md b/content/getting-started/training-telearn.md new file mode 100644 index 0000000..b397eab --- /dev/null +++ b/content/getting-started/training-telearn.md @@ -0,0 +1,27 @@ +--- +uid: training-telearn +title: Tabular Editor Learn +author: Morten Lønskov +updated: 2025-11-12 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +# Tabular Editor Learn + +[Tabular Editor Learn](https://tabulareditor.com/learn) is a free interactive learning environment designed to help you master Tabular Editor 3 and its features. Whether you're a beginner or an experienced user, it offers a variety of courses, tutorials, and hands-on exercises to enhance your skills. + +## Self-paced learning +The learn platform contains both starter courses and deep-dive courses into all aspects of Tabular Editor. Additionally, we also offer courses in Pro Development skills within Power BI such as TMDL, Notebooks and User-Defined Functions. + +## Tabular Editor Training Partners +In person training is also available through [certified training partners.](https://tabulareditor.com/certified-training-partners) Check out and contact them for your bespoke Tabular Editor training. \ No newline at end of file diff --git a/content/getting-started/views/bpa-view-reference.md b/content/getting-started/views/bpa-view-reference.md new file mode 100644 index 0000000..9c73820 --- /dev/null +++ b/content/getting-started/views/bpa-view-reference.md @@ -0,0 +1,19 @@ +--- +uid: bpa-view-reference +title: Best Practice Analyzer view +author: Daniel Otykier +updated: 2021-09-08 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +[!include[using-bpa](../../features/using-bpa.md)] diff --git a/content/getting-started/views/data-refresh-view-reference.md b/content/getting-started/views/data-refresh-view-reference.md new file mode 100644 index 0000000..fd65f88 --- /dev/null +++ b/content/getting-started/views/data-refresh-view-reference.md @@ -0,0 +1,19 @@ +--- +uid: data-refresh-view-reference +title: Data Refresh view +author: Daniel Otykier +updated: 2021-09-08 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +[!include[using-bpa](../../features/views/data-refresh-view.md)] \ No newline at end of file diff --git a/content/getting-started/views/diagram-view-reference.md b/content/getting-started/views/diagram-view-reference.md new file mode 100644 index 0000000..f9d6d0f --- /dev/null +++ b/content/getting-started/views/diagram-view-reference.md @@ -0,0 +1,19 @@ +--- +uid: diagram-view-reference +title: Diagram View +author: Morten Lønskov +updated: 2025-04-24 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +[!include[using-bpa](../../features/views/data-refresh-view.md)] \ No newline at end of file diff --git a/content/getting-started/views/find-replace-reference.md b/content/getting-started/views/find-replace-reference.md new file mode 100644 index 0000000..cf2c77d --- /dev/null +++ b/content/getting-started/views/find-replace-reference.md @@ -0,0 +1,20 @@ +--- +uid: find-replace-reference +title: Find/Replace +author: Morten Lønskov +updated: 2023-03-22 +applies_to: + products: + - product: Tabular Editor 2 + partial: true + note: "Works differently than showed in this article" + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +[!include[using-bpa](../../features/views/find-replace.md)] \ No newline at end of file diff --git a/content/getting-started/views/macros-view-reference.md b/content/getting-started/views/macros-view-reference.md new file mode 100644 index 0000000..d4e75a3 --- /dev/null +++ b/content/getting-started/views/macros-view-reference.md @@ -0,0 +1,24 @@ +--- +uid: macros-view-reference +title: Macros view +author: Morten Lønskov +updated: 2023-03-22 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- + +[!include[using-bpa](../../features/views/macros-view.md)] + +## Next steps + +- @creating-macros diff --git a/content/getting-started/views/messages-view-reference.md b/content/getting-started/views/messages-view-reference.md new file mode 100644 index 0000000..67e6976 --- /dev/null +++ b/content/getting-started/views/messages-view-reference.md @@ -0,0 +1,19 @@ +--- +uid: messages-view-reference +title: Messages view +author: Daniel Otykier +updated: 2021-09-08 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +[!include[using-bpa](../../features/views/messages-view.md)] diff --git a/content/getting-started/views/properties-view-reference.md b/content/getting-started/views/properties-view-reference.md new file mode 100644 index 0000000..69b420f --- /dev/null +++ b/content/getting-started/views/properties-view-reference.md @@ -0,0 +1,19 @@ +--- +uid: properties-view-reference +title: Properties view +author: Daniel Otykier +updated: 2021-09-08 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +[!include[using-bpa](../../features/views/properties-view.md)] diff --git a/content/getting-started/views/tom-explorer-view-reference.md b/content/getting-started/views/tom-explorer-view-reference.md new file mode 100644 index 0000000..3904e30 --- /dev/null +++ b/content/getting-started/views/tom-explorer-view-reference.md @@ -0,0 +1,21 @@ +--- +uid: tom-explorer-view-reference +title: TOM Explorer view +author: Morten Lønskov +updated: 2023-02-21 +applies_to: +applies_to: + products: + - product: Tabular Editor 2 + partial: true + note: "Works differently than showed in this article" + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +[!include[using-bpa](../../features/views/tom-explorer-view.md)] diff --git a/content/getting-started/views/user-interface-reference.md b/content/getting-started/views/user-interface-reference.md new file mode 100644 index 0000000..ac43c14 --- /dev/null +++ b/content/getting-started/views/user-interface-reference.md @@ -0,0 +1,25 @@ +--- +uid: user-interface-reference +title: Basic user interface +author: Daniel Otykier +updated: 2021-09-08 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +[!include[using-bpa](../../features/views/user-interface.md)] + +# Next steps + +- @tom-explorer-view +- @supported-files +- @preferences \ No newline at end of file diff --git a/content/te2/Advanced-Filtering-of-the-Explorer-Tree.md b/content/how-tos/Advanced-Filtering-of-the-Explorer-Tree.md similarity index 95% rename from content/te2/Advanced-Filtering-of-the-Explorer-Tree.md rename to content/how-tos/Advanced-Filtering-of-the-Explorer-Tree.md index 95fe28e..e17f0e6 100644 --- a/content/te2/Advanced-Filtering-of-the-Explorer-Tree.md +++ b/content/how-tos/Advanced-Filtering-of-the-Explorer-Tree.md @@ -1,4 +1,15 @@ -# Advanced Object Filtering +--- +uid: advanced-filtering-explorer-tree +title: Advanced Object Filtering +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + partial: true +--- + +# Advanced Object Filtering This article describes how to use the "Filter" textbox within Tabular Editor - an incredibly useful feature when navigating complex models. diff --git a/content/te2/Advanced-Scripting.md b/content/how-tos/Advanced-Scripting.md similarity index 98% rename from content/te2/Advanced-Scripting.md rename to content/how-tos/Advanced-Scripting.md index bd6fce5..1b6a5c3 100644 --- a/content/te2/Advanced-Scripting.md +++ b/content/how-tos/Advanced-Scripting.md @@ -1,4 +1,15 @@ -# Advanced Scripting +--- +uid: advanced-scripting +title: Advanced Scripting +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +# Advanced Scripting This is an introduction to the Advanced Scripting capabilities of Tabular Editor. Information in this document is subject to change. Also, make sure to check out our script library @csharp-script-library, for some more real-life examples of what you can do with the scripting capabilities of Tabular Editor. ## What is Advanced Scripting? diff --git a/content/te2/Importing-Tables.md b/content/how-tos/Importing-Tables.md similarity index 97% rename from content/te2/Importing-Tables.md rename to content/how-tos/Importing-Tables.md index fb9e63a..48f98e1 100644 --- a/content/te2/Importing-Tables.md +++ b/content/how-tos/Importing-Tables.md @@ -1,10 +1,16 @@ --- uid: importing-tables-te2 -title: Importing Tables +title: Importing Tables in TE2 author: Daniel Otykier updated: 2020-05-03 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + partial: true --- -'# Importing Tables +# Importing Tables in Tabular Editor 2 If you already have a Legacy Data Source in your model, you can right click it, and choose "Import Tables...". Tabular Editor will attempt to connect using the data provider and credentials specified in the Data Source. If successful, you should get a list of all the databases, tables and views accessible through the Data Source: @@ -116,7 +122,7 @@ Provider=MSOLEDBSQL;Data Source=.database.windows.net;User ID=d ``` 3. To import tables from this source, right-click on the data source and choose "Import Tables...", the Import Table Wizard UI should appear showing a list of tables/views from the source. Note, that for Synapse SQL pools, you may have to specify "TOP (without NOLOCK)" as a row clause, in order for the data preview to work. -4. When deploying your model to Analysis Services, you will most likely need to specify other credentials, such as a Service Principal application ID and secret or a SQL account, in order for Analysis Services to authenticate itself against the source when refreshing table data. This can be specified using TMSL or SSMS post-deployment, or you can set this up as [part of your CI/CD deployment pipeline](https://tabulareditor.com/2020/06/20/DevOps5.html#creating-your-first-release-pipeline). +4. When deploying your model to Analysis Services, you will most likely need to specify other credentials, such as a Service Principal application ID and secret or a SQL account, in order for Analysis Services to authenticate itself against the source when refreshing table data. This can be specified using TMSL or SSMS post-deployment, or you can set this up as [part of your CI/CD deployment pipeline](https://tabulareditor.com/blog/youre-deploying-it-wrong-as-edition-part-5#creating-your-first-release-pipeline). ## Manually importing schema/metadata diff --git a/content/te2/Master-model-pattern.md b/content/how-tos/Master-model-pattern.md similarity index 97% rename from content/te2/Master-model-pattern.md rename to content/how-tos/Master-model-pattern.md index 9a6d7bc..4c6c7a0 100644 --- a/content/te2/Master-model-pattern.md +++ b/content/how-tos/Master-model-pattern.md @@ -1,4 +1,15 @@ -# Master Model Pattern +--- +uid: master-model-pattern +title: Master Model Pattern +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +# Master Model Pattern It is not uncommon to have several Tabular models in an organisation, with a substantial amount of functional overlap. For the development team, keeping these models up to date with shared features can be a pain point. In this article, we'll see an alternate approach that may be suitable in situations where it makes sense to combine all these models into a single "Master" model, that is then deployed partially into several different subset models. Tabular Editor enables this approach by utilising perspectives in a special way (while still allowing perspectives to work the usual way). @@ -122,7 +133,7 @@ For measures, we do the same thing, but simplified to only remove measures that * The measure is hidden (or the table in which the measure resides is hidden) * The measure is not directly or indirectly referenced in any DAX expressions on other visible objects in the perspective -If you're a team of developers working on the model, you should already be using Tabular Editors ["Save to Folder" functionality](/Advanced-features#folder-serialization) together with a source control environment such as Git. Make sure to check the "Serialize perspectives per-object" option under "File" > "Preferences" > "Save to Folder", to avoid getting heaps of merge conflicts on your perspective definitions. +If you're a team of developers working on the model, you should already be using Tabular Editors ["Save to Folder" functionality](xref:folder-serialization) together with a source control environment such as Git. Make sure to check the "Serialize perspectives per-object" option under "File" > "Preferences" > "Save to Folder", to avoid getting heaps of merge conflicts on your perspective definitions. ![image](https://user-images.githubusercontent.com/8976200/44029969-935e0efe-9eff-11e8-93de-c1223f7ebe7f.png) @@ -273,7 +284,7 @@ start /wait /d "c:\Program Files (x86)\Tabular Editor" TabularEditor.exe Model.b This assumes that you are executing the command line within the directory of your Model.bim file (or Database.json file if using the "Save to Folder"-functionality). The -S switch instructs Tabular Editor to apply the supplied script to the model, and the -D switch performs the deployment. The -O switch allows overwriting an existing database with the same name, and the -R switch indicates that we also want to overwrite roles of the target database. ## Master model processing -If you have a dedicated processing server and large amounts of data overlap between the individual models, it may make sense for you to process the data into the master model first, before splitting it up. This way, you can avoid processing the same data several times, into individual models. **This assumes, however, that you are not processing any tables where the partition query has been changed between versions, as shown in [this section](/Master-model-pattern#altering-partition-queries).** The recipe for this is outlined below: +If you have a dedicated processing server and large amounts of data overlap between the individual models, it may make sense for you to process the data into the master model first, before splitting it up. This way, you can avoid processing the same data several times, into individual models. **This assumes, however, that you are not processing any tables where the partition query has been changed between versions, as shown in [this section](/xref:Master-model-pattern#altering-partition-queries).** The recipe for this is outlined below: 1. (Optional - in case there were metadata changes) Deploy your master model to your processing server 2. Perform the processing you need on your master model (do not process tables that have version-specific partition queries). diff --git a/content/how-tos/connect-ssas.md b/content/how-tos/connect-ssas.md new file mode 100644 index 0000000..83f3c6b --- /dev/null +++ b/content/how-tos/connect-ssas.md @@ -0,0 +1,21 @@ +--- +uid: connect-ssas +title: Connect & Deploy to SSAS +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +## Connect/deploy to SSAS Tabular Databases +Hitting CTRL+SHIFT+O lets you open a Tabular Model directly from a Tabular Database that has already been deployed. Enter the server address and (optionally) provide a username and password. After hitting "OK", you will be prompted with a list of databases and the server. Select the one you want to load, and click "OK" again. + +![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/Connect.png) + +The dialog shown also lets you connect to Azure Analysis Services instances, if you provide the full name of the Azure AS instance, starting with "azureas://". The "Local Instance" dropdown, may be used to browse and connect to any running instances of Power BI Desktop or Visual Studio Integrated Workspaces. **Note that although Tabular Editor can make changes to a Power BI model through the TOM, this is not supported by Microsoft and may corrupt your .pbix file. Proceed at your own risk!** + +Any time you press CTRL+S after the database has been loaded, the database will be updated with any changes you've made in Tabular Editor. Client tools (Excel, Power BI, DAX Studio, etc.) should be able to immediately view the changes in the database after this. Note that you may need to manually recalculate objects in the model, depending on the changes made, to successfully query the model. + +If you want to save the connected model to a Model.bim file, choose "Save As..." from the "File" menu. \ No newline at end of file diff --git a/content/how-tos/deploy-current-model.md b/content/how-tos/deploy-current-model.md new file mode 100644 index 0000000..1b9e5a8 --- /dev/null +++ b/content/how-tos/deploy-current-model.md @@ -0,0 +1,23 @@ +--- +uid: deploy-current-model +title: Deploy Current Loaded Model +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- +## Deployment + +If you want to deploy the currently loaded model to a new database, or overwrite an existing database with the model changes (for example when loading from a Model.bim file), use the Deployment Wizard under "Model" > "Deploy...". + +Tabular Editor comes with a deployment wizard that provides a few benefits compared to deploying from SSDT - especially when deploying to an existing database. After choosing a server and a database to deploy to, you have the following options for the deployment at hand: + +![Deployment Wizard](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/Deployment.png) + +Leaving the "Deploy Connections" box unchecked, will make sure that all the data sources on the target database stay untouched. You will get an error if your model contains one or more tables with a data source, that does not already exist in the target database. + +Similarly, leaving out "Deploy Table Partitions", will make sure that existing partitions on your tables are not changed, leaving the data in the partitions intact. + +When the "Deploy Roles" box is checked, the roles in the target database will be updated to reflect what you have in the loaded model, however if the "Deploy Role Members" is unchecked, the members of each role will be unchanged in the target database. \ No newline at end of file diff --git a/content/how-tos/drag-drop.md b/content/how-tos/drag-drop.md new file mode 100644 index 0000000..d1c6085 --- /dev/null +++ b/content/how-tos/drag-drop.md @@ -0,0 +1,19 @@ +--- +uid: drag-drop +title: Drag and drop objects +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +## Drag and drop objects +By far the most useful feature of Tabular Editor, when working on models with many measures/columns organised in display folders. Check out the animation below: + +![](https://github.com/TabularEditor/TabularEditor/blob/master/Documentation/DragDropFolders.gif) + +Notice how the display folder property of every single object below the folder is changed, when the entire folder is dragged. No more going over measures/columns one-by-one, to change the display folder structure. What you see is what you get. + +(This works with translations too!) \ No newline at end of file diff --git a/content/how-tos/duplicate-batchrename.md b/content/how-tos/duplicate-batchrename.md new file mode 100644 index 0000000..05e68e9 --- /dev/null +++ b/content/how-tos/duplicate-batchrename.md @@ -0,0 +1,17 @@ +--- +uid: duplicate-and-batch +title: Duplicating Objects and Batch Rename +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +## Duplicate objects and batch renamings +The right-click context menu in the Explorer Tree lets you duplicate measures and columns. The duplicated objects will have their names suffixed by "copy". Furthermore, you can perform batch renames by selecting multiple objects and right-clicking in the Explorer Tree. + +![](https://github.com/TabularEditor/TabularEditor/blob/master/Documentation/BatchRename.png) + +You may use RegEx for your renamings, and optionally choose whether translations should be renamed as well. \ No newline at end of file diff --git a/content/how-tos/edit-properties.md b/content/how-tos/edit-properties.md new file mode 100644 index 0000000..0293b29 --- /dev/null +++ b/content/how-tos/edit-properties.md @@ -0,0 +1,21 @@ +--- +uid: editing-properties +title: Editing properties +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +## Editing properties +The Property Grid on the lower right side of the screen, shows most of the properties for the object(s) selected in the Explorer Tree. If you select multiple objects at once, the Property Grid lets you simultaneously edit properties for the selected objects. This is useful for example when setting the Format String property. Examples of properties you can set through the Property Grid: + +* Name (you can rename objects directly in the Explorer Tree by hitting F2) +* Description +* Display Folder (can also be renamed directly in the Explorer Tree, also [drag/drop](drag-drop.md)) +* Hidden (can be set for multiple objects through the right-click context menu in the Explorer Tree) +* Format String + +Different properties exist, depending on what kind of object was selected. \ No newline at end of file diff --git a/content/how-tos/folder-serialization.md b/content/how-tos/folder-serialization.md new file mode 100644 index 0000000..b0501ca --- /dev/null +++ b/content/how-tos/folder-serialization.md @@ -0,0 +1,24 @@ +--- +uid: folder-serialization +title: Folder Serialization +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- +## Folder Serialization +This feature allows you to more easily integrate your SSAS Tabular Models in a file-based source control environment such as TFS, SubVersion or Git. By choosing "File" > "Save to Folder...", Tabular Editor will deconstruct the Model.bim file and save its content as separate files in a folder structure similar to the structure of the JSON within the Model.bim. When subsequently saving the model, only files with changed metadata will be touched, meaning most version control systems can easily detect which changes have been done to the model, making source merging and conflict handling a lot easier, than when working with a single Model.bim file. + +![image](https://cloud.githubusercontent.com/assets/8976200/22483167/5e07ad52-e7fc-11e6-890f-5c0d20fff0cb.png) + +By default, objects are serialized down to the lowest object level (meaning measures, columns and hierarchies are stored as individual .json files). + +Additionally, Tabular Editor's [command-line syntax](xref:command-line-options) supports loading a model from this folder structure and deploying it directly to a database, making it easy for you to automate builds for continuous integration workflows. + +If you want to customize the granularity at which metadata is saved to individual files, go to File > Preferences and click the "Save to folder"-tab. Here, it's possible to toggle some serialization options which are passed to the TOM when serializing into JSON. Furthermore, you can check/uncheck the types of objects for which individual files will be generated. In some Version Control scenarios, you might want to store everything related to one table in a file on its own, where as in other scenarios you may need individual files for columns and measures. + +These settings are saved in an annotation on the model, the first time you use the Save to Folder function, so that the settings are reused when the model is loaded and the "Save"-button is subsequently clicked. If you want to apply new settings, use "File > Save to Folder..." again. + + diff --git a/content/how-tos/formula-fixup-dependencies.md b/content/how-tos/formula-fixup-dependencies.md new file mode 100644 index 0000000..84a2aaa --- /dev/null +++ b/content/how-tos/formula-fixup-dependencies.md @@ -0,0 +1,17 @@ +--- +uid: formula-fix-up-dependencies +title: Formula Fix-up and Formula Dependencies +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +## Formula Fix-up and Formula Dependencies +Tabular Editor continuously parses the DAX expressions of all measures, calculated columns and calculated tables in your model, to construct a dependency tree of these objects. This dependency tree is used for the Formula Fix-up functionality, which may be enabled under "File" > "Preferences". Formula Fix-up automatically updates the DAX expression of any measure, calculated column or calculated table, whenever an object that was referenced in the expression is renamed. + +To visualize the dependency tree, right-click the object in the explorer tree and choose "Show dependencies..." + +![image](https://cloud.githubusercontent.com/assets/8976200/22482528/b37d27e2-e7f9-11e6-8b89-c503f9fffcac.png) \ No newline at end of file diff --git a/content/how-tos/import-export-translations.md b/content/how-tos/import-export-translations.md new file mode 100644 index 0000000..d4847c3 --- /dev/null +++ b/content/how-tos/import-export-translations.md @@ -0,0 +1,13 @@ +--- +uid: import-export-translations +title: Import/Export Translations +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +## Import/Export Translations +Select one or more cultures in the Explorer Tree, right-click and choose "Export Translations..." to generate a .json file that can be imported later in either Tabular Editor or Visual Studio. Choose "Import Translations..." to import a corresponding .json file. You can choose whether to overwrite existing translations. If you don't, translations defined in the .json file will only be applied to objects that do not already have a translation for the given culture. \ No newline at end of file diff --git a/content/te2/importing-tables-from-excel.md b/content/how-tos/importing-tables-from-excel.md similarity index 100% rename from content/te2/importing-tables-from-excel.md rename to content/how-tos/importing-tables-from-excel.md diff --git a/content/te2/incremental-refresh.md b/content/how-tos/incremental-refresh2-h.md similarity index 95% rename from content/te2/incremental-refresh.md rename to content/how-tos/incremental-refresh2-h.md index 8f123ce..4a0cefd 100644 --- a/content/te2/incremental-refresh.md +++ b/content/how-tos/incremental-refresh2-h.md @@ -3,6 +3,19 @@ uid: incremental-refresh-policy title: Incremental Refresh author: Daniel Otykier updated: 2021-02-15 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + partial: true + note: "Limited to SQL Server Standard Edition" + - edition: Enterprise + full: true --- # Incremental Refresh diff --git a/content/how-tos/index.md b/content/how-tos/index.md new file mode 100644 index 0000000..d425078 --- /dev/null +++ b/content/how-tos/index.md @@ -0,0 +1,47 @@ +# How-tos + +This section contains step-by-step guides for accomplishing specific tasks with Tabular Editor. + +## In this section + +### Scripting and Automation +- [Advanced Scripting](Advanced-Scripting.md) - C# scripting for model manipulation and automation +- [Script Reference Objects](script-reference-objects.md) - Working with object references in scripts + +### Model Management and Deployment +- [Deployment](../features/deployment.md) - Deploy models to Analysis Services databases +- [Connect to SSAS](connect-ssas.md) - Connect to and work with SSAS Tabular databases +- [Load and Save](load-save.md) - Loading and saving model files +- [Folder Serialization](folder-serialization.md) - Save models as folder structures for version control +- [Master Model Pattern](Master-model-pattern.md) - Managing multiple models with perspectives + +### Data Import and Tables +- [Importing Tables](Importing-Tables.md) - Import tables from various data sources +- [Importing Tables from Excel](importing-tables-from-excel.md) - Excel-specific import procedures +- [Replace Tables](replace-tables.md) - Replace existing tables with new data sources + +### Model Organization and Structure +- [Advanced Filtering of Explorer Tree](Advanced-Filtering-of-the-Explorer-Tree.md) - Filter and organize model objects +- [Drag and Drop](drag-drop.md) - Using drag and drop functionality +- [Duplicate and Batch Rename](duplicate-batchrename.md) - Efficiently manage object names +- [Edit Properties](edit-properties.md) - Modify object properties + +### Translations and Perspectives +- [Import/Export Translations](import-export-translations.md) - Manage multi-language support +- [Perspectives and Translations](perspectives-translations.md) - Working with model perspectives + +### Data Security and Roles +- [Roles and Row-Level Security](roles-rls.md) - Implement data security with RLS + +### Connectivity and Integration +- [XMLA Analysis Services Connectivity](xmla-as-connectivity.md) - Connect via XMLA endpoints +- [Power BI XMLA PBIX Workaround](powerbi-xmla-pbix-workaround.md) - Work with Power BI through XMLA + +### Model Maintenance +- [Formula Fixup Dependencies](formula-fixup-dependencies.md) - Automatically fix formula references +- [Metadata Backup](metadata-backup.md) - Backup and restore model metadata +- [Undo and Redo](undo-redo.md) - Using undo/redo functionality + +--- + +*Navigate using the table of contents to find guides for specific tasks.* \ No newline at end of file diff --git a/content/how-tos/load-save.md b/content/how-tos/load-save.md new file mode 100644 index 0000000..83cb647 --- /dev/null +++ b/content/how-tos/load-save.md @@ -0,0 +1,13 @@ +--- +uid: load-save-model +title: Load/save Model.bim files +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +## Load/save Model.bim files +Hitting CTRL+O shows an Open File dialog, which lets you select a Model.bim file to load in Tabular Editor. The file must be of Compatibility Level 1200 or newer (JSON format). CTRL+S saves any changes you make in Tabular Editor back to the file (we recommend backing up your Model.bim files before using Tabular Editor). If you want to deploy the loaded model to an Analysis Services server instance, see [Deployment](../features/deployment.md). \ No newline at end of file diff --git a/content/how-tos/metadata-backup.md b/content/how-tos/metadata-backup.md new file mode 100644 index 0000000..2eeeccf --- /dev/null +++ b/content/how-tos/metadata-backup.md @@ -0,0 +1,18 @@ +--- +uid: metadata-backup +title: Metadata Backup +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- +## Metadata Backup +If you wish, Tabular Editor can automatically save a backup copy of the existing model metadata, prior to each save (when connected to an existing database) or deployment. This is useful if you're not using a version control system, but still need to rollback to a previous version of your model. + +To enable this setting, go to "File" > "Preferences", enable the checkbox and choose a folder to place the metadata backups: + + + +If the setting is enabled, a compressed (zipped) version of the existing model metadata will be saved to this location whenever you use the Deployment Wizard, or when you click the "Save" button while connected to a (workspace) database. \ No newline at end of file diff --git a/content/how-tos/perspectives-translations.md b/content/how-tos/perspectives-translations.md new file mode 100644 index 0000000..a76bf67 --- /dev/null +++ b/content/how-tos/perspectives-translations.md @@ -0,0 +1,28 @@ +--- +uid: perspectives-translations +title: Perspectives and Translations +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true + note: Includes dedicated Perspective and Translation Editors +--- + +## Working with Perspectives and Translations +You can add/edit existing perspectives and translations (cultures), by clicking the Model node in the Explorer Tree, and locating the relevant properties at the bottom of the property grid. Alternatively, when your Explorer Tree is [showing all object types](../features/hierarchical-display.md), you can view and edit perspectives, cultures and roles directly in the tree. + +![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/RolesPerspectivesTranslations.png) + +You can duplicate an existing perspective, role or translation by opening the right-click menu and choose "Duplicate". This will create an exact copy of the object, which you can then modify to your needs. + +To view perspectives and/or translations "in action", use the two dropdown lists in the toolbar near the top of the screen. Choosing a perspective will hide all objects that are not included in that perspective, while choosing a translation will show all objects in the tree using the translated names and display folders. When hitting F2 to change the names of objects/display folders or when dragging objects around in the tree, the changes will only apply to the selected translation. + +## Perspectives/Translations within object context +When one or more objects are selected in the tree, you will find 4 special property collections within the Property Grid: + +* **Captions**, **Descriptions** and **Display Folders** shows a list of all cultures in the model, with the translated names, descripions and display folders respectively of the selected objects for each culture. +* **Perspectives** shows a list of all perspectives in the model, with an indication of whether or nor the selected objects belong to each perspective. + +You can use these collections in the Property Grid to change the translations and perspective inclusions for one or more objects at at time. \ No newline at end of file diff --git a/content/te3/powerbi-xmla-pbix-workaround.md b/content/how-tos/powerbi-xmla-pbix-workaround.md similarity index 93% rename from content/te3/powerbi-xmla-pbix-workaround.md rename to content/how-tos/powerbi-xmla-pbix-workaround.md index ef4ee51..5acb1b9 100644 --- a/content/te3/powerbi-xmla-pbix-workaround.md +++ b/content/how-tos/powerbi-xmla-pbix-workaround.md @@ -4,12 +4,18 @@ title: Creating PBIX File from XMLA Endpoint. author: Morten Lønskov updated: 2023-10-18 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - partial: Tabular Editor 3 Business Edition only allows connecting to the XMLA endpoint of Premium-Per-User (PPU) workspaces. - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + partial: true + note: "Only Premium Per User XMLA Endpoints" + - edition: Enterprise + full: true --- # Downloading a Power BI dataset to a .pbix using the XMLA endpoint diff --git a/content/how-tos/replace-tables.md b/content/how-tos/replace-tables.md new file mode 100644 index 0000000..3516522 --- /dev/null +++ b/content/how-tos/replace-tables.md @@ -0,0 +1,16 @@ +--- +uid: replace-tables +title: Replace tables +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- +## Replace tables +You can replace a table simply by copying (CTRL+C) one table - even from another instance of Tabular Editor - and then selecting the table you want to replace, before hitting paste (CTRL+V). A prompt will ask you to confirm whether you really want to replace the table ("Yes"), insert as a new table ("No") or cancel the operation entirely: + +![image](https://user-images.githubusercontent.com/8976200/36545892-40983114-17ea-11e8-8825-e8de6fd4e284.png) + +If you choose "Yes", the selected table will be replaced with the table in the clipboard. Furthermore, all relationships pointing to or from that table will be updated to use the new table. For this to work, columns participating in relationships must have the same name and data type in both the original table, and the inserted table. \ No newline at end of file diff --git a/content/how-tos/roles-rls.md b/content/how-tos/roles-rls.md new file mode 100644 index 0000000..19b8912 --- /dev/null +++ b/content/how-tos/roles-rls.md @@ -0,0 +1,21 @@ +--- +uid: roles-and-rls +title: Roles and Row-Level Security +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- +## Roles and Row-Level Security + +Roles are visible in the Explorer Tree. You can right-click the tree to create new roles, delete or duplicate existing roles. You can view and edit the members of each role, by locating the role in the Explorer Tree, and navigating to the "Role Members" property in the Property Grid. Note that when deploying, the [Deployment Wizard](../features/deployment.md) does not deploy role members by default. + +The biggest advantage of working with Roles through Tabular Editor, is that each Table object has a "Row Level Filters" property, which lets you view and edit the filters defined on that table, across all roles: + +![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/RLSTableContext.png) + +Of course, you can also view the filters across all tables in one particular role, similar to the UI of SSMS or Visual Studio: + +![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/RLSRoleContext.png) \ No newline at end of file diff --git a/content/how-tos/script-reference-objects.md b/content/how-tos/script-reference-objects.md new file mode 100644 index 0000000..64362b6 --- /dev/null +++ b/content/how-tos/script-reference-objects.md @@ -0,0 +1,20 @@ +--- +uid: scripting-referencing-objects +title: Scripting/referencing objects +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- + +## Scripting/referencing objects +You can use drag-and-drop functionality, to script out objects in the following ways: + +* Drag one or more objects to another Windows application (text editor or SSMS) +JSON code representing the dragged object(s) will be created. When dragging the Model node, a Table, a Role or a Data Source, a "createOrReplace" script is created. + +* Dragging an object (measure, column or table) into the DAX expression editor, will insert a fully-qualified DAX-reference to the object in question. + +* Dragging an object to the Advanced Script editor, will insert the C# code necessary to access the object through the TOM tree. \ No newline at end of file diff --git a/content/how-tos/toc.md b/content/how-tos/toc.md new file mode 100644 index 0000000..a6d1e68 --- /dev/null +++ b/content/how-tos/toc.md @@ -0,0 +1,37 @@ +# Scripting and Automation +## [Advanced Scripting](Advanced-Scripting.md) +## [Script Reference Objects](script-reference-objects.md) + +# Model Management and Deployment +## [Deploy Current Model](deploy-current-model.md) +## [Connect to SSAS](connect-ssas.md) +## [Load and Save](load-save.md) +## [Folder Serialization](folder-serialization.md) +## [Master Model Pattern](Master-model-pattern.md) + +# Data Import and Tables +## [Importing Tables (TE2)](Importing-Tables.md) +## [Importing Tables from Excel (TE2)](importing-tables-from-excel.md) +## [Replace Tables](replace-tables.md) + +# Model Organization and Structure +## [Advanced Filtering of Explorer Tree](Advanced-Filtering-of-the-Explorer-Tree.md) +## [Drag and Drop](drag-drop.md) +## [Duplicate and Batch Rename](duplicate-batchrename.md) +## [Edit Properties](edit-properties.md) + +# Translations and Perspectives +## [Import/Export Translations](import-export-translations.md) +## [Perspectives and Translations](perspectives-translations.md) + +# Data Security and Roles +## [Roles and Row-Level Security](roles-rls.md) + +# Connectivity and Integration +## [XMLA Analysis Services Connectivity](xmla-as-connectivity.md) +## [Power BI XMLA PBIX Workaround](powerbi-xmla-pbix-workaround.md) + +# Model Maintenance +## [Formula Fixup Dependencies](formula-fixup-dependencies.md) +## [Metadata Backup](metadata-backup.md) +## [Undo and Redo](undo-redo.md) \ No newline at end of file diff --git a/content/how-tos/undo-redo.md b/content/how-tos/undo-redo.md new file mode 100644 index 0000000..dd5824b --- /dev/null +++ b/content/how-tos/undo-redo.md @@ -0,0 +1,14 @@ +--- +uid: undo-redo +title: Undo/Redo support +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + full: true +--- +## Undo/Redo support +Any change you make in Tabular Editor can be undone using CTRL+Z and subsequently redone using CTRL+Y. There is no limit to the number of operations that can be undone, but the stack is reset when you open a Model.bim file or load a model from a database. + +When deleting objects from the model, all translations, perspectives and relationships that reference the deleted objects are also automatically deleted (where as Visual Studio normally shows an error message that the object cannot be deleted). If you make a mistake, you can use the Undo functionality to restore the deleted object, which will also restore any translations, perspectives or relationships that were deleted. Note that even though Tabular Editor can detect [DAX formula dependencies](), Tabular Editor will not warn you in case you delete a measure or column which is used in the DAX expression of another measure or calculated column. \ No newline at end of file diff --git a/content/common/xmla-as-connectivity.md b/content/how-tos/xmla-as-connectivity.md similarity index 98% rename from content/common/xmla-as-connectivity.md rename to content/how-tos/xmla-as-connectivity.md index 86343aa..95bfb87 100644 --- a/content/common/xmla-as-connectivity.md +++ b/content/how-tos/xmla-as-connectivity.md @@ -4,12 +4,18 @@ title: XMLA / Analysis Services connectivity author: Daniel Otykier updated: 2024-05-01 applies_to: - versions: - - version: 2.x - - version: 3.x - editions: - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + partial: true + note: "Only Premium Per User XMLA Endpoints" + - edition: Enterprise + full: true --- # XMLA / Analysis Services connectivity diff --git a/content/index.md b/content/index.md index 8ea5703..eae00c0 100644 --- a/content/index.md +++ b/content/index.md @@ -23,7 +23,7 @@ Tabular Editor 3 is the evolution of Tabular Editor 2. It has been designed for ### [Tabular Editor 3](#tab/TE3) Tabular Editor 3 is a more advanced application which offers a premium experience with many convenient features to combine all your data modeling and development needs in one single tool. -![Tabular Editor 3](~/content/assets/images/te3.png) +![Tabular Editor 3](assets/images/te3.png) **Tabular Editor 3 main features:** @@ -42,7 +42,7 @@ Tabular Editor 3 is a more advanced application which offers a premium experienc Tabular Editor 2.x is a lightweight application for quickly modifying the TOM (Tabular Object Model) of an Analysis Services or Power BI data model. The tool was originally released in 2016 and receives regular updates and bugfixes. -![Tabular Editor 2.x](~/content/assets/images/te2.png) +![Tabular Editor 2.x](assets/images/te2.png) **Tabular Editor 2.x main features:** @@ -120,7 +120,7 @@ If you are new to tabular modeling in general, we recommend that you use the sta ## Next steps -- [Tabular Editor 2.x documentation](te2/Getting-Started.md) -- [Tabular Editor 3.x documentation](te3/getting-started.md) +- [Get Started with Tabular Editor 2](xref:getting-started-te2) +- [Get Started with Tabular Editor 3](xref:getting-started) - [Tabular Editor 3 roadmap](xref:roadmap) -- [Common features](common/common-features.md) + diff --git a/content/onboarding/optimizing-workflow-workspace-mode.md b/content/onboarding/optimizing-workflow-workspace-mode.md deleted file mode 100644 index d238a35..0000000 --- a/content/onboarding/optimizing-workflow-workspace-mode.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -uid: optimizing-workflow-workspace-mode -title: Optimizing development workflow using Workspace Mode -author: Daniel Otykier -updated: 2021-10-05 -applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise ---- - -# Optimizing development workflow using Workspace Mode -[!include[workspace-mode](~/content/te3/workspace-mode.partial.md)] - -# Next steps - -- @powerbi-cicd -- @as-cicd -- @boosting-productivity-te3 \ No newline at end of file diff --git a/content/onboarding/toc.md b/content/onboarding/toc.md deleted file mode 100644 index 004605a..0000000 --- a/content/onboarding/toc.md +++ /dev/null @@ -1,18 +0,0 @@ -# [Welcome](index.md) -# @general-introduction -## @installation-activation-basic -## @migrate-from-vs -## @migrate-from-desktop -## @migrate-from-te2 -# @parallel-development -## @optimizing-workflow-workspace-mode - -# @boosting-productivity-te3 -## @importing-tables-data-modeling -## @refresh-preview-query -## @creating-and-testing-dax -## @dax-script-introduction -## @bpa -## @cs-scripts-and-macros -## @personalizing-te3 diff --git a/content/te2/FAQ.md b/content/references/FAQ.md similarity index 84% rename from content/te2/FAQ.md rename to content/references/FAQ.md index f2db681..a52f303 100644 --- a/content/te2/FAQ.md +++ b/content/references/FAQ.md @@ -1,12 +1,16 @@ -# Frequently Asked Questions +--- +uid: faq +title: Frequently Asked Questions +--- +# Frequently Asked Questions ## What is Tabular Editor? Essentially, Tabular Editor provides a UI for editing the metadata making up an Analysis Services Tabular Model. The main difference between using Tabular Editor for editing a model versus using Visual Studio, is that Tabular Editor does not load any _data_ - only _metadata_. This means that no validations or calculations are performed when you create and modify measures, display folders, etc. Validations and calculations are performed only when the user chooses to persist the changes to the database. This provides a better developer experience for medium to large sized models, which tend to be slow to work with in Visual Studio. -Additionally, Tabular Editor has a lot of [features](Features-at-a-glance.md) that will generally boost your productivity and make certain tasks easier. +Additionally, Tabular Editor has a lot of [features](../getting-started/boosting-productivity-te3.md) that will generally boost your productivity and make certain tasks easier. ## Why do we need yet another tool for SSAS Tabular? -Working with Analysis Services Tabular, you may already be familiar with SQL Server Data Tools (Visual Studio), [DAX Editor](https://www.sqlbi.com/tools/dax-editor/), [DAX Studio](https://www.sqlbi.com/tools/dax-studio/), [BISM Normalizer](http://bism-normalizer.com/) and [BIDSHelper](https://bidshelper.codeplex.com/). These are all excellent tools, each with their own purposes. Tabular Editor is not intended to replace any of these tools, but should rather be seen as a supplement to them. Please view the [Features at a glance](Features-at-a-glance.md) article, to see why Tabular Editor is justified. +Working with Analysis Services Tabular, you may already be familiar with SQL Server Data Tools (Visual Studio), [DAX Editor](https://www.sqlbi.com/tools/dax-editor/), [DAX Studio](https://www.sqlbi.com/tools/dax-studio/), [BISM Normalizer](http://bism-normalizer.com/) and [BIDSHelper](https://bidshelper.codeplex.com/). These are all excellent tools, each with their own purposes. Tabular Editor is not intended to replace any of these tools, but should rather be seen as a supplement to them. Please view the [Why Tabular Editor](https://tabulareditor.com/why-tabular-editor) article, to see why Tabular Editor is justified. ## Why isn't Tabular Editor available as a plug-in for Visual Studio? While a better user experience for working with Tabular Models inside Visual Studio would definitely be appreciated, a stand-alone tool provides some benefits over a plug-in: First of all, you **don't need a Visual Studio/SSDT installation to use Tabular Editor**. Tabular Editor only requires the AMO libraries, which is quite a small installation compared to VS. Secondly, TabularEditor.exe can be executed with command-line options for deployment, scripting, etc., which would not be possible in a .vsix (plug-in) project. @@ -14,4 +18,4 @@ While a better user experience for working with Tabular Models inside Visual Stu Also worth mentioning: Tabular Editor can be downloaded as a [standalone .zip file](https://github.com/TabularEditor/TabularEditor/releases/latest/download/TabularEditor.Portable.zip), meaning you do not need to install anything. In other words, you can run Tabular Editor without having admin rights on your Windows machine. Simply download the zip file, extract it, and run TabularEditor.exe. ## What features are planned for upcoming releases? -You can view the current roadmap [here](Roadmap.md). +You can view the current roadmap [here](roadmap.md). diff --git a/content/te2/FormatDax.md b/content/references/FormatDax.md similarity index 88% rename from content/te2/FormatDax.md rename to content/references/FormatDax.md index 2e6548c..1f798e6 100644 --- a/content/te2/FormatDax.md +++ b/content/references/FormatDax.md @@ -1,6 +1,16 @@ -# FormatDax deprecation - -The `FormatDax` method (which is one of the available [helper methods](/Advanced-Scripting.md#helper-methods) in Tabular Editor) has been deprecated with the release of Tabular Editor 2.13.0. +--- +uid: formatdax +title: FormatDax deprecation +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + none: true +--- +# FormatDax deprecation + +The `FormatDax` method (which is one of the available [helper methods](xref:advanced-scripting#helper-methods) in Tabular Editor) has been deprecated with the release of Tabular Editor 2.13.0. The reason for the deprecation is that the web service at https://www.daxformatter.com/ was starting to experience a heavy load of multiple request in quick succession, which were causing issues at their end. This is because the `FormatDax` method performs a web request each time it is called in a script, and many people have been using scripts such as the following: diff --git a/content/te2/Keyboard-Shortcuts.md b/content/references/Keyboard-Shortcuts2.md similarity index 88% rename from content/te2/Keyboard-Shortcuts.md rename to content/references/Keyboard-Shortcuts2.md index 2c99434..18406be 100644 --- a/content/te2/Keyboard-Shortcuts.md +++ b/content/references/Keyboard-Shortcuts2.md @@ -1,4 +1,14 @@ -# Keyboard Shortcuts +--- +uid: shortcuts2 +title: Keyboard shortcuts Tabular Editor 2 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + none: true +--- +# Keyboard Shortcuts As of version 2.7.3, Tabular Editor now supports the following keyboard shortcuts: diff --git a/content/te2/Roadmap.md b/content/references/Roadmap2-h.md similarity index 100% rename from content/te2/Roadmap.md rename to content/references/Roadmap2-h.md diff --git a/content/te2/SQL-Server-2017-support.md b/content/references/SQL-Server-2017-support-h.md similarity index 100% rename from content/te2/SQL-Server-2017-support.md rename to content/references/SQL-Server-2017-support-h.md diff --git a/content/te2/TabularEditor.TOMWrapper.md b/content/references/TabularEditor.TOMWrapper-h.md similarity index 100% rename from content/te2/TabularEditor.TOMWrapper.md rename to content/references/TabularEditor.TOMWrapper-h.md diff --git a/content/te3/other/downloads.md b/content/references/downloads.md similarity index 99% rename from content/te3/other/downloads.md rename to content/references/downloads.md index 6a04597..edef45d 100644 --- a/content/te3/other/downloads.md +++ b/content/references/downloads.md @@ -79,4 +79,4 @@ It is not necessary to remove previous installations when upgrading to a newer v - .NET 6 portable (.zip): [x64](https://cdn.tabulareditor.com/files/TabularEditor.3.20.0.x64.zip), [x86](https://cdn.tabulareditor.com/files/TabularEditor.3.20.0.x86.zip) - .NET 6 installer (.msi): [x64](https://cdn.tabulareditor.com/files/TabularEditor.3.20.0.x64.msi), [x86](https://cdn.tabulareditor.com/files/TabularEditor.3.20.0.x86.msi) -For earlier builds, see the [full release history](release-history.md). +For earlier builds, see the [full release history](release-history.md). \ No newline at end of file diff --git a/content/references/index.md b/content/references/index.md new file mode 100644 index 0000000..fecd5e5 --- /dev/null +++ b/content/references/index.md @@ -0,0 +1,29 @@ +# References + +This section contains reference materials for Tabular Editor. + +## In this section + +### Downloads and Releases +- @downloads - Download links and installation packages for Tabular Editor 3 +- @release-history - Complete version history with download links +- @whats-new - Latest features and updates + +### Technical Reference +- @faq - Frequently asked questions and answers +- @preferences - Application settings and configuration options +- @policies - The use of group policies +- @shortcuts3 - Keyboard shortcuts reference with Tabular Editor 3 +- @shortcuts2 - Keyboard shortcuts reference with Tabular Editor 2 +- @user-options - Tabular Model User Options (.tmuo) File + +### Development and Planning +- @roadmap - Product roadmap and future plans + +### Deprecated Features +- @formatdax - Information about deprecated DAX formatting functionality + +--- + +*Use this section to find detailed reference information, downloads, and technical documentation.* + diff --git a/content/common/policies.md b/content/references/policies.md similarity index 91% rename from content/common/policies.md rename to content/references/policies.md index 0f44e02..d6bd550 100644 --- a/content/common/policies.md +++ b/content/references/policies.md @@ -3,6 +3,18 @@ uid: policies title: Policies author: Daniel Otykier updated: 2024-10-30 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Policies @@ -39,4 +51,4 @@ If you want to ensure that Tabular Editor does not perform web requests, specify ## Disabling custom scripts -If you want to ensure that Tabular Editor does not allow users to execute arbitrary code, specify the `DisableCSharpScripts` and `DisableMacros` policies. +If you want to ensure that Tabular Editor does not allow users to execute arbitrary code, specify the `DisableCSharpScripts` and `DisableMacros` policies. \ No newline at end of file diff --git a/content/te3/features/preferences.md b/content/references/preferences.md similarity index 96% rename from content/te3/features/preferences.md rename to content/references/preferences.md index 0eded79..93c70aa 100644 --- a/content/te3/features/preferences.md +++ b/content/references/preferences.md @@ -3,6 +3,18 @@ uid: preferences title: Controlling preferences author: Daniel Otykier updated: 2021-09-08 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Tabular Editor 3 Preferences diff --git a/content/te3/other/release-history.md b/content/references/release-history.md similarity index 99% rename from content/te3/other/release-history.md rename to content/references/release-history.md index ddb3ce3..b603c3a 100644 --- a/content/te3/other/release-history.md +++ b/content/references/release-history.md @@ -1,3 +1,7 @@ +--- +uid: release-history +title: Full release history +--- # Full release history - 2025-11-11 **Tabular Editor 3.24.2** (*[Release notes](release-notes/3_24_2.md)*) diff --git a/content/te3/other/release-notes/3_0_1.md b/content/references/release-notes/3_0_1.md similarity index 97% rename from content/te3/other/release-notes/3_0_1.md rename to content/references/release-notes/3_0_1.md index d29b399..eaa08f5 100644 --- a/content/te3/other/release-notes/3_0_1.md +++ b/content/references/release-notes/3_0_1.md @@ -1,7 +1,7 @@ # Tabular Editor 3.0.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.0.1](https://cdn.tabulareditor.com/files/TabularEditor.3.0.1.x86.msi) - Download [Tabular Editor 3.0.1 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.1.x64.msi) diff --git a/content/te3/other/release-notes/3_0_10.md b/content/references/release-notes/3_0_10.md similarity index 97% rename from content/te3/other/release-notes/3_0_10.md rename to content/references/release-notes/3_0_10.md index 295c610..4a09302 100644 --- a/content/te3/other/release-notes/3_0_10.md +++ b/content/references/release-notes/3_0_10.md @@ -1,7 +1,7 @@ # Tabular Editor 3.0.10 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.0.10 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.10.x64.msi) *(recommended)* - Download [Tabular Editor 3.0.10](https://cdn.tabulareditor.com/files/TabularEditor.3.0.10.x86.msi) diff --git a/content/te3/other/release-notes/3_0_2.md b/content/references/release-notes/3_0_2.md similarity index 97% rename from content/te3/other/release-notes/3_0_2.md rename to content/references/release-notes/3_0_2.md index 3b0857f..640a845 100644 --- a/content/te3/other/release-notes/3_0_2.md +++ b/content/references/release-notes/3_0_2.md @@ -1,7 +1,7 @@ # Tabular Editor 3.0.2 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.0.2](https://cdn.tabulareditor.com/files/TabularEditor.3.0.2.x86.msi) - Download [Tabular Editor 3.0.2 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.2.x64.msi) diff --git a/content/te3/other/release-notes/3_0_3.md b/content/references/release-notes/3_0_3.md similarity index 97% rename from content/te3/other/release-notes/3_0_3.md rename to content/references/release-notes/3_0_3.md index 774902c..e53733e 100644 --- a/content/te3/other/release-notes/3_0_3.md +++ b/content/references/release-notes/3_0_3.md @@ -1,7 +1,7 @@ # Tabular Editor 3.0.3 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.0.3](https://cdn.tabulareditor.com/files/TabularEditor.3.0.3.x86.msi) - Download [Tabular Editor 3.0.3 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.3.x64.msi) diff --git a/content/te3/other/release-notes/3_0_4.md b/content/references/release-notes/3_0_4.md similarity index 97% rename from content/te3/other/release-notes/3_0_4.md rename to content/references/release-notes/3_0_4.md index 010c337..c5d3be4 100644 --- a/content/te3/other/release-notes/3_0_4.md +++ b/content/references/release-notes/3_0_4.md @@ -1,7 +1,7 @@ # Tabular Editor 3.0.4 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.0.4](https://cdn.tabulareditor.com/files/TabularEditor.3.0.4.x86.msi) - Download [Tabular Editor 3.0.4 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.4.x64.msi) diff --git a/content/te3/other/release-notes/3_0_5.md b/content/references/release-notes/3_0_5.md similarity index 94% rename from content/te3/other/release-notes/3_0_5.md rename to content/references/release-notes/3_0_5.md index 8deb4b1..f6d6460 100644 --- a/content/te3/other/release-notes/3_0_5.md +++ b/content/references/release-notes/3_0_5.md @@ -1,9 +1,9 @@ # Tabular Editor 3.0.5 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). -- Download [Tabular Editor 3.0.5](https://cdn.tabulareditor.com/files/TabularEditor.3.0.5.x86.msi) + Download [Tabular Editor 3.0.5](https://cdn.tabulareditor.com/files/TabularEditor.3.0.5.x86.msi) - Download [Tabular Editor 3.0.5 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.5.x64.msi) *If you haven't used Tabular Editor 3 before, you are eligible to a 30 day trial, which can be requested after installation. You can also [purchase a license](https://tabulareditor.com/#licensing).* diff --git a/content/te3/other/release-notes/3_0_6.md b/content/references/release-notes/3_0_6.md similarity index 97% rename from content/te3/other/release-notes/3_0_6.md rename to content/references/release-notes/3_0_6.md index 84f360e..fdcd7af 100644 --- a/content/te3/other/release-notes/3_0_6.md +++ b/content/references/release-notes/3_0_6.md @@ -1,7 +1,7 @@ # Tabular Editor 3.0.6 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.0.6 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.6.x64.msi) *(recommended)* - Download [Tabular Editor 3.0.6](https://cdn.tabulareditor.com/files/TabularEditor.3.0.6.x86.msi) @@ -18,7 +18,7 @@ ## Improvements in 3.0.6: -- Support for consultancy licenses. [More details](https://tabulareditor.com/consultancy-edition/). +- Support for consultancy licenses. [More details](https://tabulareditor.com/license-terms). - DAX queries now display row counts and timings (see issue [#10](https://github.com/TabularEditor/TabularEditor3/issues/10)) - DAX queries are now limited to 1000 rows by default, to prevent timeouts/memory issues. This limit can be changed in Tools > Preferences > Data Browsing > DAX Query. - Columns in the DAX query results can now be sorted and filtered (local sorting/filtering only). See issue [#60](https://github.com/TabularEditor/TabularEditor3/issues/60) diff --git a/content/te3/other/release-notes/3_0_7.md b/content/references/release-notes/3_0_7.md similarity index 97% rename from content/te3/other/release-notes/3_0_7.md rename to content/references/release-notes/3_0_7.md index cc9d02d..61e8539 100644 --- a/content/te3/other/release-notes/3_0_7.md +++ b/content/references/release-notes/3_0_7.md @@ -1,7 +1,7 @@ # Tabular Editor 3.0.7 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.0.7 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.7.x64.msi) *(recommended)* - Download [Tabular Editor 3.0.7](https://cdn.tabulareditor.com/files/TabularEditor.3.0.7.x86.msi) diff --git a/content/te3/other/release-notes/3_0_8.md b/content/references/release-notes/3_0_8.md similarity index 98% rename from content/te3/other/release-notes/3_0_8.md rename to content/references/release-notes/3_0_8.md index de8215c..8ac0a6f 100644 --- a/content/te3/other/release-notes/3_0_8.md +++ b/content/references/release-notes/3_0_8.md @@ -1,7 +1,7 @@ # Tabular Editor 3.0.8 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.0.8 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.8.x64.msi) *(recommended)* - Download [Tabular Editor 3.0.8](https://cdn.tabulareditor.com/files/TabularEditor.3.0.8.x86.msi) diff --git a/content/te3/other/release-notes/3_0_9.md b/content/references/release-notes/3_0_9.md similarity index 98% rename from content/te3/other/release-notes/3_0_9.md rename to content/references/release-notes/3_0_9.md index 416f418..9826f4d 100644 --- a/content/te3/other/release-notes/3_0_9.md +++ b/content/references/release-notes/3_0_9.md @@ -1,7 +1,7 @@ # Tabular Editor 3.0.9 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.0.9 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.9.x64.msi) *(recommended)* - Download [Tabular Editor 3.0.9](https://cdn.tabulareditor.com/files/TabularEditor.3.0.9.x86.msi) diff --git a/content/te3/other/release-notes/3_10_0.md b/content/references/release-notes/3_10_0.md similarity index 98% rename from content/te3/other/release-notes/3_10_0.md rename to content/references/release-notes/3_10_0.md index 3d3e76e..49f7e93 100644 --- a/content/te3/other/release-notes/3_10_0.md +++ b/content/references/release-notes/3_10_0.md @@ -4,7 +4,7 @@ uid: release-3-10-0 # Tabular Editor 3.10.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) @@ -78,7 +78,7 @@ Check out our [release blog](https://blog.tabulareditor.com/2023/08/23/tabular-e --- ## Coming from Tabular Editor 2.x? -Watch [this video](https://www.youtube.com/watch?v=pt3DdcjfImY) to get an idea of the new features in Tabular Editor 3. Also, make sure to check our [onboarding guide](https://docs.tabulareditor.com/onboarding/index.html). +Watch [this video](https://www.youtube.com/watch?v=pt3DdcjfImY) to get an idea of the new features in Tabular Editor 3. Also, make sure to check our [onboarding guide](https://docs.tabulareditor.com/getting-started/index.html). **Tabular Editor 3 major features overview:** - Fully customizable IDE, with multi-monitor, Hi-DPI support and themes diff --git a/content/te3/other/release-notes/3_10_1.md b/content/references/release-notes/3_10_1.md similarity index 98% rename from content/te3/other/release-notes/3_10_1.md rename to content/references/release-notes/3_10_1.md index 042b5b1..84dbd6b 100644 --- a/content/te3/other/release-notes/3_10_1.md +++ b/content/references/release-notes/3_10_1.md @@ -4,7 +4,7 @@ uid: release-3-10-1 # Tabular Editor 3.10.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) @@ -82,7 +82,7 @@ Check out our [release blog](https://blog.tabulareditor.com/2023/08/23/tabular-e --- ## Coming from Tabular Editor 2.x? -Watch [this video](https://www.youtube.com/watch?v=pt3DdcjfImY) to get an idea of the new features in Tabular Editor 3. Also, make sure to check our [onboarding guide](https://docs.tabulareditor.com/onboarding/index.html). +Watch [this video](https://www.youtube.com/watch?v=pt3DdcjfImY) to get an idea of the new features in Tabular Editor 3. Also, make sure to check our [onboarding guide](https://docs.tabulareditor.com/getting-started/index.html). **Tabular Editor 3 major features overview:** - Fully customizable IDE, with multi-monitor, Hi-DPI support and themes diff --git a/content/te3/other/release-notes/3_11_0.md b/content/references/release-notes/3_11_0.md similarity index 98% rename from content/te3/other/release-notes/3_11_0.md rename to content/references/release-notes/3_11_0.md index 60c6b2a..ef56a0c 100644 --- a/content/te3/other/release-notes/3_11_0.md +++ b/content/references/release-notes/3_11_0.md @@ -4,7 +4,7 @@ uid: release-3-11-0 # Tabular Editor 3.11.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) @@ -66,7 +66,7 @@ Check out our [release blog](https://blog.tabulareditor.com/2023/09/25/september --- ## Coming from Tabular Editor 2.x? -Watch [this video](https://www.youtube.com/watch?v=pt3DdcjfImY) to get an idea of the new features in Tabular Editor 3. Also, make sure to check our [onboarding guide](https://docs.tabulareditor.com/onboarding/index.html). +Watch [this video](https://www.youtube.com/watch?v=pt3DdcjfImY) to get an idea of the new features in Tabular Editor 3. Also, make sure to check our [onboarding guide](https://docs.tabulareditor.com/getting-started/index.html). **Tabular Editor 3 major features overview:** - Fully customizable IDE, with multi-monitor, Hi-DPI support and themes diff --git a/content/te3/other/release-notes/3_12_0.md b/content/references/release-notes/3_12_0.md similarity index 95% rename from content/te3/other/release-notes/3_12_0.md rename to content/references/release-notes/3_12_0.md index 5faefdc..a937ac4 100644 --- a/content/te3/other/release-notes/3_12_0.md +++ b/content/references/release-notes/3_12_0.md @@ -4,7 +4,7 @@ uid: release-3-12-0 # Tabular Editor 3.12.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) @@ -39,7 +39,7 @@ Tabular Editor 3.3.0 (and newer) uses .NET 6. You may have to install the [.NET Check out our [release blog](https://blog.tabulareditor.com/2023/11/27/tabular-editor-3-november-2023-release) to get a brief overview of the most important updates in this release. - Tabular Editor now displays a "What's New" page when the application is updated. The page informs you of new Tabular Editor features, along with community updates and other relevant news for Tabular Editor users. If the page is hidden, you can access it from the **Help > What's New**. You can disable this feature by unchecking **Tools > Preferences > Updates and Feedback > Show "What's New" page on startup**. -- When prototyping new measures, it is quite common to specify them within the `DEFINE` block of a DAX query. In this update, we've added an easy way to create/update model measures based on measures defined within the DAX query. On the toolbar, through the **Query** menu, and through the right-click context menu of the DAX query editor, you will see 4 new options light up, which work very similarly to the "Apply" actions in [DAX Scripts](https://docs.tabulareditor.com/te3/features/dax-scripts.html#shortcuts), with the exception that only a measures' name and expression is applied (since it's not possible to specify other properties like Description, Display Folder, etc. through a DAX query). More details in the [blog post](https://blog.tabulareditor.com). +- When prototyping new measures, it is quite common to specify them within the `DEFINE` block of a DAX query. In this update, we've added an easy way to create/update model measures based on measures defined within the DAX query. On the toolbar, through the **Query** menu, and through the right-click context menu of the DAX query editor, you will see 4 new options light up, which work very similarly to the "Apply" actions in [DAX Scripts](https://docs.tabulareditor.com/features/dax-scripts.html#shortcuts), with the exception that only a measures' name and expression is applied (since it's not possible to specify other properties like Description, Display Folder, etc. through a DAX query). More details in the [blog post](https://blog.tabulareditor.com). - Please be aware that we're now using a new certificate to sign the binaries, in case your IT organization needs to expclitly approve 3rd party code certificates. The new certificate is issued by [GlobalSign GCC](https://www.globalsign.com/en) and the certificate is issued directly to [Tabular Editor ApS](https://tabulareditor.com/contact). ## Improvements in 3.12.0 @@ -77,7 +77,7 @@ Check out our [release blog](https://blog.tabulareditor.com/2023/11/27/tabular-e --- ## Coming from Tabular Editor 2.x? -Watch [this video](https://www.youtube.com/watch?v=pt3DdcjfImY) to get an idea of the new features in Tabular Editor 3. Also, make sure to check our [onboarding guide](https://docs.tabulareditor.com/onboarding/index.html). +Watch [this video](https://www.youtube.com/watch?v=pt3DdcjfImY) to get an idea of the new features in Tabular Editor 3. Also, make sure to check our [onboarding guide](https://docs.tabulareditor.com/getting-started/index.html). **Tabular Editor 3 major features overview:** - Fully customizable IDE, with multi-monitor, Hi-DPI support and themes diff --git a/content/te3/other/release-notes/3_12_1.md b/content/references/release-notes/3_12_1.md similarity index 99% rename from content/te3/other/release-notes/3_12_1.md rename to content/references/release-notes/3_12_1.md index 7ea25ba..5815f8e 100644 --- a/content/te3/other/release-notes/3_12_1.md +++ b/content/references/release-notes/3_12_1.md @@ -4,7 +4,7 @@ uid: release-2-12-1 # Tabular Editor 3.12.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_13_0.md b/content/references/release-notes/3_13_0.md similarity index 97% rename from content/te3/other/release-notes/3_13_0.md rename to content/references/release-notes/3_13_0.md index 2668277..258c28d 100644 --- a/content/te3/other/release-notes/3_13_0.md +++ b/content/references/release-notes/3_13_0.md @@ -1,9 +1,9 @@ # Tabular Editor 3.13.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). -# [**Downloads**](#tab/downloads) + A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). Tabular Editor 3.13.0 downloads: diff --git a/content/te3/other/release-notes/3_14_0.md b/content/references/release-notes/3_14_0.md similarity index 99% rename from content/te3/other/release-notes/3_14_0.md rename to content/references/release-notes/3_14_0.md index 99564fa..565a472 100644 --- a/content/te3/other/release-notes/3_14_0.md +++ b/content/references/release-notes/3_14_0.md @@ -4,7 +4,7 @@ uid: release-3-14-0 # Tabular Editor 3.14.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_15_0.md b/content/references/release-notes/3_15_0.md similarity index 98% rename from content/te3/other/release-notes/3_15_0.md rename to content/references/release-notes/3_15_0.md index a508237..8efb405 100644 --- a/content/te3/other/release-notes/3_15_0.md +++ b/content/references/release-notes/3_15_0.md @@ -4,7 +4,7 @@ uid: release-3-15-0 # Tabular Editor 3.15.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) @@ -38,7 +38,7 @@ Tabular Editor 3 uses .NET 6. If you're using the portable version, you may have Check out our [release blog](https://blog.tabulareditor.com/2024/04/24/tabular-editor-3-april-2024-release/) to get a brief overview of the most important updates in this release. -- We have a new **Preview** feature this month: **DAX Optimizer integration**. If you have a DAX Optimizer account, you can connect to your workspaces, upload VPAX files, and view [DAX Optimizer](https://daxoptimizer.com) results directly in Tabular Editor. [More information](https://docs.tabulareditor.com/te3/features/dax-optimizer-integration). +- We have a new **Preview** feature this month: **DAX Optimizer integration**. If you have a DAX Optimizer account, you can connect to your workspaces, upload VPAX files, and view [DAX Optimizer](https://daxoptimizer.com) results directly in Tabular Editor. [More information](https://docs.tabulareditor.com/features/dax-optimizer-integration.html). - We now support adding [Data Coverage Definition expressions](https://learn.microsoft.com/en-us/analysis-services/tom/table-partitions?view=asallproducts-allversions#define-the-data-coverage-of-the-directquery-partition) to partitions in DirectQuery mode. - Tabular Editor will now add a `__TEdtr` annotation to your model when metadata is saved to disk (either as Model.bim, Database.json or TMDL). This annotation is used by Microsoft for analytics about Tabular Editor usage for semantic models published to a Power BI or Fabric workspace. This annotation may also be required for certain features to work correctly in Power BI / Fabric, when a model was edited using Tabular Editor. - The **New Model** dialog now has a **Direct Lake** checkbox*, which will configure the model to use the new Direct Lake storage mode in Fabric. [More information](https://docs.tabulareditor.com/common/Datasets/direct-lake-dataset.html). Moreover, you can now explicitly choose the *Compatibility Mode* when entering the *Compatibility Level* manually. diff --git a/content/te3/other/release-notes/3_16_0.md b/content/references/release-notes/3_16_0.md similarity index 97% rename from content/te3/other/release-notes/3_16_0.md rename to content/references/release-notes/3_16_0.md index 920463b..3b266e6 100644 --- a/content/te3/other/release-notes/3_16_0.md +++ b/content/references/release-notes/3_16_0.md @@ -4,7 +4,7 @@ uid: release-3-16-0 # Tabular Editor 3.16.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). ## [**Downloads**](#tab/downloads) @@ -44,7 +44,7 @@ We have substantially overhauled how **Pivot Grids** work in this release. Some - Hidden objects (measures, columns, hierarchies) can now be used in a Pivot Grid, and object renames should no longer cause the Pivot Grid to lose its layout or clear any filters. - A new and improved Pivot Grid **Field List**, which is now shown by default, and provides a more familiar experience when adding fields to the Pivot Grid. - Head on over to the [Pivot Grid documentation](https://docs.tabulareditor.com/te3/features/pivot-grid.html) to learn more about these changes. + Head on over to the [Pivot Grid documentation](https://docs.tabulareditor.com/features/pivot-grid.html) to learn more about these changes. ## Improvements in 3.16.0 @@ -63,7 +63,7 @@ We have substantially overhauled how **Pivot Grids** work in this release. Some - Pressing control-key combinations that do not have any keybinding assigned, should no longer cause special control chars to be inserted in code editors. - Macros that have been modified and saved, should no longer execute multiple times when invoked through the UI. - The `.Output()` method should now show the output dialog on subsequent macro executions, even when the **Don't show more outputs** option was checked on a previous execution. -- Unquoted table name references that also happen to be DAX keywords (such as `Currency`), will no longer be treated as keywords during auto-formatting (i.e. they will not be capitalized). Moreover, certain object properties in DAX scripts can now also be empty. View the updated [DAX Scripts documentation](https://docs.tabulareditor.com/te3/features/dax-scripts.html) for more information. +- Unquoted table name references that also happen to be DAX keywords (such as `Currency`), will no longer be treated as keywords during auto-formatting (i.e. they will not be capitalized). Moreover, certain object properties in DAX scripts can now also be empty. View the updated [DAX Scripts documentation](https://docs.tabulareditor.com/features/dax-scripts.html) for more information. - Errors during DAX script execution are now handled gracefully, and the changes made by the script before the error was encountered, are automatically rolled back. - Fixed a bug where macro buttons assigned to custom toolbars did not persist after restarting the application. - Fixed a bug that would cause Tabular Editor to crash when using the `ForEach(IEnumerable, Action)` extension method in a C# script. diff --git a/content/te3/other/release-notes/3_16_1.md b/content/references/release-notes/3_16_1.md similarity index 99% rename from content/te3/other/release-notes/3_16_1.md rename to content/references/release-notes/3_16_1.md index ba4cd11..beacd90 100644 --- a/content/te3/other/release-notes/3_16_1.md +++ b/content/references/release-notes/3_16_1.md @@ -4,7 +4,7 @@ uid: release-3-16-1 # Tabular Editor 3.16.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). ## [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_16_2.md b/content/references/release-notes/3_16_2.md similarity index 99% rename from content/te3/other/release-notes/3_16_2.md rename to content/references/release-notes/3_16_2.md index 1941639..5274249 100644 --- a/content/te3/other/release-notes/3_16_2.md +++ b/content/references/release-notes/3_16_2.md @@ -4,7 +4,7 @@ uid: release-3-16-2 # Tabular Editor 3.16.2 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). ## [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_17_0.md b/content/references/release-notes/3_17_0.md similarity index 99% rename from content/te3/other/release-notes/3_17_0.md rename to content/references/release-notes/3_17_0.md index 7b930c1..e891fe8 100644 --- a/content/te3/other/release-notes/3_17_0.md +++ b/content/references/release-notes/3_17_0.md @@ -4,7 +4,7 @@ uid: release-3-17-0 # Tabular Editor 3.17.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_17_1.md b/content/references/release-notes/3_17_1.md similarity index 99% rename from content/te3/other/release-notes/3_17_1.md rename to content/references/release-notes/3_17_1.md index 6e7ae9c..6f2d215 100644 --- a/content/te3/other/release-notes/3_17_1.md +++ b/content/references/release-notes/3_17_1.md @@ -4,7 +4,7 @@ uid: release-3-17-1 # Tabular Editor 3.17.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_18_0.md b/content/references/release-notes/3_18_0.md similarity index 99% rename from content/te3/other/release-notes/3_18_0.md rename to content/references/release-notes/3_18_0.md index 3489da9..c3672c4 100644 --- a/content/te3/other/release-notes/3_18_0.md +++ b/content/references/release-notes/3_18_0.md @@ -4,7 +4,7 @@ uid: release-3-18-0 # Tabular Editor 3.18.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_18_1.md b/content/references/release-notes/3_18_1.md similarity index 99% rename from content/te3/other/release-notes/3_18_1.md rename to content/references/release-notes/3_18_1.md index c6da362..fb97deb 100644 --- a/content/te3/other/release-notes/3_18_1.md +++ b/content/references/release-notes/3_18_1.md @@ -4,7 +4,7 @@ uid: release-3-18-1 # Tabular Editor 3.18.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_18_2.md b/content/references/release-notes/3_18_2.md similarity index 99% rename from content/te3/other/release-notes/3_18_2.md rename to content/references/release-notes/3_18_2.md index a319c6b..818fb3b 100644 --- a/content/te3/other/release-notes/3_18_2.md +++ b/content/references/release-notes/3_18_2.md @@ -4,7 +4,7 @@ uid: release-3-18-2 # Tabular Editor 3.18.2 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_19_0.md b/content/references/release-notes/3_19_0.md similarity index 99% rename from content/te3/other/release-notes/3_19_0.md rename to content/references/release-notes/3_19_0.md index 2241923..c10bbee 100644 --- a/content/te3/other/release-notes/3_19_0.md +++ b/content/references/release-notes/3_19_0.md @@ -4,7 +4,7 @@ uid: release-3-19-0 # Tabular Editor 3.19.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_1_0.md b/content/references/release-notes/3_1_0.md similarity index 98% rename from content/te3/other/release-notes/3_1_0.md rename to content/references/release-notes/3_1_0.md index 4430232..e68ce4c 100644 --- a/content/te3/other/release-notes/3_1_0.md +++ b/content/references/release-notes/3_1_0.md @@ -1,7 +1,7 @@ # Tabular Editor 3.1.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.1.0 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.0.x64.msi) *(recommended)* - Download [Tabular Editor 3.1.0](https://cdn.tabulareditor.com/files/TabularEditor.3.1.0.x86.msi) diff --git a/content/te3/other/release-notes/3_1_1.md b/content/references/release-notes/3_1_1.md similarity index 98% rename from content/te3/other/release-notes/3_1_1.md rename to content/references/release-notes/3_1_1.md index a046476..2b0eba0 100644 --- a/content/te3/other/release-notes/3_1_1.md +++ b/content/references/release-notes/3_1_1.md @@ -1,7 +1,7 @@ # Tabular Editor 3.1.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.1.1 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.1.x64.msi) *(recommended)* - Download [Tabular Editor 3.1.1](https://cdn.tabulareditor.com/files/TabularEditor.3.1.1.x86.msi) diff --git a/content/te3/other/release-notes/3_1_2.md b/content/references/release-notes/3_1_2.md similarity index 98% rename from content/te3/other/release-notes/3_1_2.md rename to content/references/release-notes/3_1_2.md index 4a4ebdd..22f5fc6 100644 --- a/content/te3/other/release-notes/3_1_2.md +++ b/content/references/release-notes/3_1_2.md @@ -1,7 +1,7 @@ # Tabular Editor 3.1.2 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.1.2 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.2.x64.msi) *(recommended)* - Download [Tabular Editor 3.1.2](https://cdn.tabulareditor.com/files/TabularEditor.3.1.2.x86.msi) diff --git a/content/te3/other/release-notes/3_1_3.md b/content/references/release-notes/3_1_3.md similarity index 98% rename from content/te3/other/release-notes/3_1_3.md rename to content/references/release-notes/3_1_3.md index d24700f..4e79453 100644 --- a/content/te3/other/release-notes/3_1_3.md +++ b/content/references/release-notes/3_1_3.md @@ -1,7 +1,7 @@ # Tabular Editor 3.1.3 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.1.3 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.3.x64.msi) *(recommended)* diff --git a/content/te3/other/release-notes/3_1_4.md b/content/references/release-notes/3_1_4.md similarity index 97% rename from content/te3/other/release-notes/3_1_4.md rename to content/references/release-notes/3_1_4.md index 667b0c2..2f3c6c4 100644 --- a/content/te3/other/release-notes/3_1_4.md +++ b/content/references/release-notes/3_1_4.md @@ -1,7 +1,7 @@ # Tabular Editor 3.1.4 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.1.4 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.4.x64.msi) *(recommended)* - Download [Tabular Editor 3.1.4](https://cdn.tabulareditor.com/files/TabularEditor.3.1.4.x86.msi) diff --git a/content/te3/other/release-notes/3_1_5.md b/content/references/release-notes/3_1_5.md similarity index 97% rename from content/te3/other/release-notes/3_1_5.md rename to content/references/release-notes/3_1_5.md index ec89ba7..c789267 100644 --- a/content/te3/other/release-notes/3_1_5.md +++ b/content/references/release-notes/3_1_5.md @@ -1,7 +1,7 @@ # Tabular Editor 3.1.5 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.1.5 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.5.x64.msi) *(recommended)* - Download [Tabular Editor 3.1.5](https://cdn.tabulareditor.com/files/TabularEditor.3.1.5.x86.msi) diff --git a/content/te3/other/release-notes/3_1_6.md b/content/references/release-notes/3_1_6.md similarity index 98% rename from content/te3/other/release-notes/3_1_6.md rename to content/references/release-notes/3_1_6.md index 35e2548..cc90b8a 100644 --- a/content/te3/other/release-notes/3_1_6.md +++ b/content/references/release-notes/3_1_6.md @@ -1,7 +1,7 @@ # Tabular Editor 3.1.6 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.1.6 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.6.x64.msi) *(recommended)* - Download [Tabular Editor 3.1.6](https://cdn.tabulareditor.com/files/TabularEditor.3.1.6.x86.msi) diff --git a/content/te3/other/release-notes/3_1_7.md b/content/references/release-notes/3_1_7.md similarity index 98% rename from content/te3/other/release-notes/3_1_7.md rename to content/references/release-notes/3_1_7.md index aca2877..6048b8c 100644 --- a/content/te3/other/release-notes/3_1_7.md +++ b/content/references/release-notes/3_1_7.md @@ -1,7 +1,7 @@ # Tabular Editor 3.1.7 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.1.7 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.7.x64.msi) *(recommended)* - Download [Tabular Editor 3.1.7](https://cdn.tabulareditor.com/files/TabularEditor.3.1.7.x86.msi) diff --git a/content/te3/other/release-notes/3_20_0.md b/content/references/release-notes/3_20_0.md similarity index 99% rename from content/te3/other/release-notes/3_20_0.md rename to content/references/release-notes/3_20_0.md index fc033c6..d4bbcf5 100644 --- a/content/te3/other/release-notes/3_20_0.md +++ b/content/references/release-notes/3_20_0.md @@ -4,7 +4,7 @@ uid: release-3-20-0 # Tabular Editor 3.20.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_20_1.md b/content/references/release-notes/3_20_1.md similarity index 99% rename from content/te3/other/release-notes/3_20_1.md rename to content/references/release-notes/3_20_1.md index ff9bb8b..e3ebbc4 100644 --- a/content/te3/other/release-notes/3_20_1.md +++ b/content/references/release-notes/3_20_1.md @@ -4,7 +4,7 @@ uid: release-3-20-1 # Tabular Editor 3.20.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_21_0.md b/content/references/release-notes/3_21_0.md similarity index 99% rename from content/te3/other/release-notes/3_21_0.md rename to content/references/release-notes/3_21_0.md index 19526cf..f537e5c 100644 --- a/content/te3/other/release-notes/3_21_0.md +++ b/content/references/release-notes/3_21_0.md @@ -4,7 +4,7 @@ uid: release-3-21-0 # Tabular Editor 3.21.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_22_0.md b/content/references/release-notes/3_22_0.md similarity index 99% rename from content/te3/other/release-notes/3_22_0.md rename to content/references/release-notes/3_22_0.md index 3a5764f..d749b52 100644 --- a/content/te3/other/release-notes/3_22_0.md +++ b/content/references/release-notes/3_22_0.md @@ -4,7 +4,7 @@ uid: release-3-22-0 # Tabular Editor 3.22.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_22_1.md b/content/references/release-notes/3_22_1.md similarity index 99% rename from content/te3/other/release-notes/3_22_1.md rename to content/references/release-notes/3_22_1.md index 2627449..de5aee1 100644 --- a/content/te3/other/release-notes/3_22_1.md +++ b/content/references/release-notes/3_22_1.md @@ -4,7 +4,7 @@ uid: release-3-22-1 # Tabular Editor 3.22.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_23_0.md b/content/references/release-notes/3_23_0.md similarity index 99% rename from content/te3/other/release-notes/3_23_0.md rename to content/references/release-notes/3_23_0.md index 6c7e7bc..3c3f3d3 100644 --- a/content/te3/other/release-notes/3_23_0.md +++ b/content/references/release-notes/3_23_0.md @@ -4,7 +4,7 @@ uid: release-3-23-0 # Tabular Editor 3.23.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_23_1.md b/content/references/release-notes/3_23_1.md similarity index 98% rename from content/te3/other/release-notes/3_23_1.md rename to content/references/release-notes/3_23_1.md index 42b3ef5..416f497 100644 --- a/content/te3/other/release-notes/3_23_1.md +++ b/content/references/release-notes/3_23_1.md @@ -4,7 +4,7 @@ uid: release-3-23-1 # Tabular Editor 3.23.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_24_0.md b/content/references/release-notes/3_24_0.md similarity index 99% rename from content/te3/other/release-notes/3_24_0.md rename to content/references/release-notes/3_24_0.md index 968c3ec..694dd28 100644 --- a/content/te3/other/release-notes/3_24_0.md +++ b/content/references/release-notes/3_24_0.md @@ -4,7 +4,7 @@ uid: release-3-24-0 # Tabular Editor 3.24.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) @@ -109,4 +109,3 @@ Watch [this video](https://youtu.be/O4ATwdzCvWc) to get a quick tour of the main *=Only while connected to an instance of Analysis Services or Power BI --- - diff --git a/content/te3/other/release-notes/3_24_1.md b/content/references/release-notes/3_24_1.md similarity index 98% rename from content/te3/other/release-notes/3_24_1.md rename to content/references/release-notes/3_24_1.md index 46cd6bf..d80c078 100644 --- a/content/te3/other/release-notes/3_24_1.md +++ b/content/references/release-notes/3_24_1.md @@ -4,7 +4,7 @@ uid: release-3-24-1 # Tabular Editor 3.24.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_24_2.md b/content/references/release-notes/3_24_2.md similarity index 100% rename from content/te3/other/release-notes/3_24_2.md rename to content/references/release-notes/3_24_2.md diff --git a/content/te3/other/release-notes/3_2_0.md b/content/references/release-notes/3_2_0.md similarity index 97% rename from content/te3/other/release-notes/3_2_0.md rename to content/references/release-notes/3_2_0.md index 4d6116f..a41c0dd 100644 --- a/content/te3/other/release-notes/3_2_0.md +++ b/content/references/release-notes/3_2_0.md @@ -1,7 +1,7 @@ # Tabular Editor 3.2.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.2.0 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.2.0.x64.msi) *(recommended)* - Download [Tabular Editor 3.2.0](https://cdn.tabulareditor.com/files/TabularEditor.3.2.0.x86.msi) diff --git a/content/te3/other/release-notes/3_2_1.md b/content/references/release-notes/3_2_1.md similarity index 98% rename from content/te3/other/release-notes/3_2_1.md rename to content/references/release-notes/3_2_1.md index e67a691..061be1c 100644 --- a/content/te3/other/release-notes/3_2_1.md +++ b/content/references/release-notes/3_2_1.md @@ -1,7 +1,7 @@ # Tabular Editor 3.2.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.2.1 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.2.1.x64.msi) *(recommended)* - Download [Tabular Editor 3.2.1](https://cdn.tabulareditor.com/files/TabularEditor.3.2.1.x86.msi) diff --git a/content/te3/other/release-notes/3_2_2.md b/content/references/release-notes/3_2_2.md similarity index 98% rename from content/te3/other/release-notes/3_2_2.md rename to content/references/release-notes/3_2_2.md index 6614830..62caaf9 100644 --- a/content/te3/other/release-notes/3_2_2.md +++ b/content/references/release-notes/3_2_2.md @@ -1,7 +1,7 @@ # Tabular Editor 3.2.2 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.2.2 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.2.2.x64.msi) *(recommended)* - Download [Tabular Editor 3.2.2](https://cdn.tabulareditor.com/files/TabularEditor.3.2.2.x86.msi) diff --git a/content/te3/other/release-notes/3_2_3.md b/content/references/release-notes/3_2_3.md similarity index 98% rename from content/te3/other/release-notes/3_2_3.md rename to content/references/release-notes/3_2_3.md index 22a161d..959af24 100644 --- a/content/te3/other/release-notes/3_2_3.md +++ b/content/references/release-notes/3_2_3.md @@ -1,7 +1,7 @@ # Tabular Editor 3.2.3 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.2.3 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.2.3.x64.msi) *(recommended)* - Download [Tabular Editor 3.2.3](https://cdn.tabulareditor.com/files/TabularEditor.3.2.3.x86.msi) diff --git a/content/te3/other/release-notes/3_3_0.md b/content/references/release-notes/3_3_0.md similarity index 99% rename from content/te3/other/release-notes/3_3_0.md rename to content/references/release-notes/3_3_0.md index 5f76186..39e8bca 100644 --- a/content/te3/other/release-notes/3_3_0.md +++ b/content/references/release-notes/3_3_0.md @@ -1,7 +1,7 @@ # Tabular Editor 3.3.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.3.0 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.0.x64.msi) *(recommended)* - Download [Tabular Editor 3.3.0](https://cdn.tabulareditor.com/files/TabularEditor.3.3.0.x86.msi) diff --git a/content/te3/other/release-notes/3_3_1.md b/content/references/release-notes/3_3_1.md similarity index 99% rename from content/te3/other/release-notes/3_3_1.md rename to content/references/release-notes/3_3_1.md index e9db2df..c3aa53c 100644 --- a/content/te3/other/release-notes/3_3_1.md +++ b/content/references/release-notes/3_3_1.md @@ -1,7 +1,7 @@ # Tabular Editor 3.3.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.3.1 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.1.Installer.x64.exe) *(recommended)* - Download [Tabular Editor 3.3.1](https://cdn.tabulareditor.com/files/TabularEditor.3.3.1.Installer.x86.exe) diff --git a/content/te3/other/release-notes/3_3_2.md b/content/references/release-notes/3_3_2.md similarity index 99% rename from content/te3/other/release-notes/3_3_2.md rename to content/references/release-notes/3_3_2.md index cf4e9af..e629c7a 100644 --- a/content/te3/other/release-notes/3_3_2.md +++ b/content/references/release-notes/3_3_2.md @@ -1,7 +1,7 @@ # Tabular Editor 3.3.2 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.3.2 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.2.Installer.x64.exe) *(recommended)* - Download [Tabular Editor 3.3.2](https://cdn.tabulareditor.com/files/TabularEditor.3.3.2.Installer.x86.exe) diff --git a/content/te3/other/release-notes/3_3_3.md b/content/references/release-notes/3_3_3.md similarity index 99% rename from content/te3/other/release-notes/3_3_3.md rename to content/references/release-notes/3_3_3.md index a6b3537..18c5200 100644 --- a/content/te3/other/release-notes/3_3_3.md +++ b/content/references/release-notes/3_3_3.md @@ -1,7 +1,7 @@ # Tabular Editor 3.3.3 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.3.3 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.3.Installer.x64.exe) *(recommended)* - Download [Tabular Editor 3.3.3](https://cdn.tabulareditor.com/files/TabularEditor.3.3.3.Installer.x86.exe) diff --git a/content/te3/other/release-notes/3_3_4.md b/content/references/release-notes/3_3_4.md similarity index 98% rename from content/te3/other/release-notes/3_3_4.md rename to content/references/release-notes/3_3_4.md index 21e4a5a..44b1704 100644 --- a/content/te3/other/release-notes/3_3_4.md +++ b/content/references/release-notes/3_3_4.md @@ -1,7 +1,7 @@ # Tabular Editor 3.3.4 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3.3.4 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.Installer.x64.exe) *(recommended)* - Download [Tabular Editor 3.3.4](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.Installer.x86.exe) diff --git a/content/te3/other/release-notes/3_3_5.md b/content/references/release-notes/3_3_5.md similarity index 98% rename from content/te3/other/release-notes/3_3_5.md rename to content/references/release-notes/3_3_5.md index 907514c..53e8a96 100644 --- a/content/te3/other/release-notes/3_3_5.md +++ b/content/references/release-notes/3_3_5.md @@ -1,7 +1,7 @@ # Tabular Editor 3.3.5 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_3_6.md b/content/references/release-notes/3_3_6.md similarity index 98% rename from content/te3/other/release-notes/3_3_6.md rename to content/references/release-notes/3_3_6.md index 2133be1..00dd2df 100644 --- a/content/te3/other/release-notes/3_3_6.md +++ b/content/references/release-notes/3_3_6.md @@ -1,7 +1,7 @@ # Tabular Editor 3.3.6 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_4_0.md b/content/references/release-notes/3_4_0.md similarity index 99% rename from content/te3/other/release-notes/3_4_0.md rename to content/references/release-notes/3_4_0.md index 28ba57f..ba8aec4 100644 --- a/content/te3/other/release-notes/3_4_0.md +++ b/content/references/release-notes/3_4_0.md @@ -1,7 +1,7 @@ # Tabular Editor 3.4.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_4_1.md b/content/references/release-notes/3_4_1.md similarity index 98% rename from content/te3/other/release-notes/3_4_1.md rename to content/references/release-notes/3_4_1.md index 59f502c..3fccb82 100644 --- a/content/te3/other/release-notes/3_4_1.md +++ b/content/references/release-notes/3_4_1.md @@ -1,7 +1,7 @@ # Tabular Editor 3.4.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_4_2.md b/content/references/release-notes/3_4_2.md similarity index 98% rename from content/te3/other/release-notes/3_4_2.md rename to content/references/release-notes/3_4_2.md index 6a017c7..9968216 100644 --- a/content/te3/other/release-notes/3_4_2.md +++ b/content/references/release-notes/3_4_2.md @@ -1,7 +1,7 @@ # Tabular Editor 3.4.2 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_5_0.md b/content/references/release-notes/3_5_0.md similarity index 98% rename from content/te3/other/release-notes/3_5_0.md rename to content/references/release-notes/3_5_0.md index 4117af7..881c8d3 100644 --- a/content/te3/other/release-notes/3_5_0.md +++ b/content/references/release-notes/3_5_0.md @@ -4,7 +4,7 @@ uid: release-3-5-0 # Tabular Editor 3.5.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_5_1.md b/content/references/release-notes/3_5_1.md similarity index 98% rename from content/te3/other/release-notes/3_5_1.md rename to content/references/release-notes/3_5_1.md index f08bb12..6d9a486 100644 --- a/content/te3/other/release-notes/3_5_1.md +++ b/content/references/release-notes/3_5_1.md @@ -4,7 +4,7 @@ uid: release-3-5-1 # Tabular Editor 3.5.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_6_0.md b/content/references/release-notes/3_6_0.md similarity index 98% rename from content/te3/other/release-notes/3_6_0.md rename to content/references/release-notes/3_6_0.md index 23bd7d6..d9dae63 100644 --- a/content/te3/other/release-notes/3_6_0.md +++ b/content/references/release-notes/3_6_0.md @@ -4,7 +4,7 @@ uid: release-3-6-0 # Tabular Editor 3.6.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_7_0.md b/content/references/release-notes/3_7_0.md similarity index 99% rename from content/te3/other/release-notes/3_7_0.md rename to content/references/release-notes/3_7_0.md index 3e88839..a398780 100644 --- a/content/te3/other/release-notes/3_7_0.md +++ b/content/references/release-notes/3_7_0.md @@ -4,7 +4,7 @@ uid: release-3-7-0 # Tabular Editor 3.7.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). > [!IMPORTANT] > A bug preventing creation of new models with workspace databases was identified in this version of Tabular Editor 3. Please use [version 3.7.1](xref:release-3-7-1) instead. diff --git a/content/te3/other/release-notes/3_7_1.md b/content/references/release-notes/3_7_1.md similarity index 99% rename from content/te3/other/release-notes/3_7_1.md rename to content/references/release-notes/3_7_1.md index 535022f..d16329f 100644 --- a/content/te3/other/release-notes/3_7_1.md +++ b/content/references/release-notes/3_7_1.md @@ -4,7 +4,7 @@ uid: release-3-7-1 # Tabular Editor 3.7.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_8_0.md b/content/references/release-notes/3_8_0.md similarity index 98% rename from content/te3/other/release-notes/3_8_0.md rename to content/references/release-notes/3_8_0.md index 9d9aa17..a1a2619 100644 --- a/content/te3/other/release-notes/3_8_0.md +++ b/content/references/release-notes/3_8_0.md @@ -4,7 +4,7 @@ uid: release-3-8-0 # Tabular Editor 3.8.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/3_9_0.md b/content/references/release-notes/3_9_0.md similarity index 99% rename from content/te3/other/release-notes/3_9_0.md rename to content/references/release-notes/3_9_0.md index 85a343d..abc6132 100644 --- a/content/te3/other/release-notes/3_9_0.md +++ b/content/references/release-notes/3_9_0.md @@ -4,7 +4,7 @@ uid: release-3-9-0 # Tabular Editor 3.9.0 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). # [**Downloads**](#tab/downloads) diff --git a/content/te3/other/release-notes/beta-16_6.md b/content/references/release-notes/beta-16_6.md similarity index 98% rename from content/te3/other/release-notes/beta-16_6.md rename to content/references/release-notes/beta-16_6.md index b0d0cc2..c7670e9 100644 --- a/content/te3/other/release-notes/beta-16_6.md +++ b/content/references/release-notes/beta-16_6.md @@ -1,7 +1,7 @@ # Tabular Editor 3 BETA-16.6 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3 BETA-16.6](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-16.6.x86.msi) - Download [Tabular Editor 3 BETA-16.6 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-16.6.x64.msi) diff --git a/content/te3/other/release-notes/beta-17_4.md b/content/references/release-notes/beta-17_4.md similarity index 98% rename from content/te3/other/release-notes/beta-17_4.md rename to content/references/release-notes/beta-17_4.md index c2b354d..b47e7ed 100644 --- a/content/te3/other/release-notes/beta-17_4.md +++ b/content/references/release-notes/beta-17_4.md @@ -1,7 +1,7 @@ # Tabular Editor 3 BETA-17.4 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3 BETA-17.4](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-17.4.x86.msi) - Download [Tabular Editor 3 BETA-17.4 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-17.4.x64.msi) diff --git a/content/te3/other/release-notes/beta-18_1.md b/content/references/release-notes/beta-18_1.md similarity index 98% rename from content/te3/other/release-notes/beta-18_1.md rename to content/references/release-notes/beta-18_1.md index 29f81bd..60f0d87 100644 --- a/content/te3/other/release-notes/beta-18_1.md +++ b/content/references/release-notes/beta-18_1.md @@ -1,7 +1,7 @@ # Tabular Editor 3 BETA-18.1 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3 BETA-18.1](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.1.x86.msi) - Download [Tabular Editor 3 BETA-18.1 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.1.x64.msi) diff --git a/content/te3/other/release-notes/beta-18_2.md b/content/references/release-notes/beta-18_2.md similarity index 98% rename from content/te3/other/release-notes/beta-18_2.md rename to content/references/release-notes/beta-18_2.md index e1cd8cf..bbb976a 100644 --- a/content/te3/other/release-notes/beta-18_2.md +++ b/content/references/release-notes/beta-18_2.md @@ -1,7 +1,7 @@ # Tabular Editor 3 BETA-18.2 Release Notes > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3 BETA-18.2](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.2.x86.msi) - Download [Tabular Editor 3 BETA-18.2 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.2.x64.msi) diff --git a/content/te3/other/release-notes/beta-18_3.md b/content/references/release-notes/beta-18_3.md similarity index 98% rename from content/te3/other/release-notes/beta-18_3.md rename to content/references/release-notes/beta-18_3.md index c453d3c..be6aa96 100644 --- a/content/te3/other/release-notes/beta-18_3.md +++ b/content/references/release-notes/beta-18_3.md @@ -1,7 +1,7 @@ # Tabular Editor 3 BETA-18.3 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3 BETA-18.3](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.3.x86.msi) - Download [Tabular Editor 3 BETA-18.3 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.3.x64.msi) diff --git a/content/te3/other/release-notes/beta-18_4.md b/content/references/release-notes/beta-18_4.md similarity index 98% rename from content/te3/other/release-notes/beta-18_4.md rename to content/references/release-notes/beta-18_4.md index 647c11a..6ebfe59 100644 --- a/content/te3/other/release-notes/beta-18_4.md +++ b/content/references/release-notes/beta-18_4.md @@ -1,7 +1,7 @@ # Tabular Editor 3 BETA-18.4 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3 BETA-18.4](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.4.x86.msi) - Download [Tabular Editor 3 BETA-18.4 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.4.x64.msi) diff --git a/content/te3/other/release-notes/beta-18_5.md b/content/references/release-notes/beta-18_5.md similarity index 95% rename from content/te3/other/release-notes/beta-18_5.md rename to content/references/release-notes/beta-18_5.md index 4174500..7ad03ae 100644 --- a/content/te3/other/release-notes/beta-18_5.md +++ b/content/references/release-notes/beta-18_5.md @@ -1,7 +1,7 @@ # Tabular Editor 3 BETA-18.5 > [!IMPORTANT] -> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes). +> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes). - Download [Tabular Editor 3 BETA-18.5](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.5.x86.msi) diff --git a/content/te3/other/roadmap.md b/content/references/roadmap.md similarity index 82% rename from content/te3/other/roadmap.md rename to content/references/roadmap.md index c55c38d..9d2fd10 100644 --- a/content/te3/other/roadmap.md +++ b/content/references/roadmap.md @@ -3,6 +3,12 @@ uid: roadmap title: Roadmap author: Morten Lønskov updated: 2025-10-29 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + full: true --- # Tabular Editor 3 Roadmap @@ -116,3 +122,6 @@ Below is an overview of major new features to be shipped with Tabular Editor 3 u ✅ Offline DAX formatting +# Tabular Editor 2 Roadmap +> [!NOTE] +>Tabular Editor 2 is no longer under active development and will not receive any major feature additions or improvements from our side. We are, however, committed to keeping it up-to-date, ensuring support for new semantic modelling features as they are released from Microsoft, and also fixing any critical or blocking issues. As the project is open-source under MIT, anyone is welcome to submit pull requests, which will be reviewed and approved by our team. \ No newline at end of file diff --git a/content/te3/features/shortcuts.md b/content/references/shortcuts3.md similarity index 91% rename from content/te3/features/shortcuts.md rename to content/references/shortcuts3.md index f84611a..a7906ed 100644 --- a/content/te3/features/shortcuts.md +++ b/content/references/shortcuts3.md @@ -1,13 +1,21 @@ --- -uid: shortcuts -title: Keyboard shortcuts +uid: shortcuts3 +title: Keyboard shortcuts Tabular Editor 3 author: Daniel Otykier updated: 2021-09-08 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Keyboard shortcuts diff --git a/content/te3/features/supported-files.md b/content/references/supported-files.md similarity index 97% rename from content/te3/features/supported-files.md rename to content/references/supported-files.md index e8ea3c4..a2bb3a6 100644 --- a/content/te3/features/supported-files.md +++ b/content/references/supported-files.md @@ -4,10 +4,18 @@ title: Supported file types author: Morten Lønskov updated: 2023-10-17 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + partial: true + note: "Desktop Edition does not support model metadata files" + - edition: Business + full: true + - edition: Enterprise + full: true --- # Supported file types diff --git a/content/references/toc.md b/content/references/toc.md new file mode 100644 index 0000000..0589b90 --- /dev/null +++ b/content/references/toc.md @@ -0,0 +1,20 @@ +# Downloads and Releases +## @downloads +## @release-history +## @whats-new + +# Technical Reference +## @faq +## @preferences +## @policies +## @shortcuts3 +## @shortcuts2 +## @user-options +## @supported-files +## @user-setting-files-te2 + +# Development and Planning +## @roadmap + +# Deprecated Features +## @formatdax \ No newline at end of file diff --git a/content/te3/features/user-options.md b/content/references/user-options.md similarity index 92% rename from content/te3/features/user-options.md rename to content/references/user-options.md index 8cf12a1..c1a16c4 100644 --- a/content/te3/features/user-options.md +++ b/content/references/user-options.md @@ -3,6 +3,18 @@ uid: user-options title: User options (.tmuo) file author: Daniel Otykier updated: 2021-09-27 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Tabular Model User Options (.tmuo) File diff --git a/content/references/user-settings-files-te2.md b/content/references/user-settings-files-te2.md new file mode 100644 index 0000000..6dac543 --- /dev/null +++ b/content/references/user-settings-files-te2.md @@ -0,0 +1,27 @@ +--- +uid: user-setting-files-te2 +title: User Settings Files Tabular Editor 2 +applies_to: + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + none: true +--- + +## User Settings Files Tabular Editor 2 + +When Tabular Editor 2 is started, it writes some additional files to the disk at various locations. What follows is a description of these files and their content: + +### In %ProgramData%\TabularEditor + +- **BPARules.json** Best Practice Analyzer rules that are available to all users. +- **TOMWrapper.dll** This file is used when executing scripts inside Tabular Editor. You can also reference the .dll in your own .NET projects, to utilise the wrapper code. If you are having issues executing advanced scripts after upgrading Tabular Editor, please delete this file and restart Tabular Editor. +- **Preferences.json** This file stores all preferences set in the File > Preferences dialog. + +### In %AppData%\Local\TabularEditor + +- **BPARules.json** Best Practice Analyzer rules that are available only to the current user. +- **CustomActions.json** Custom script actions that can be invoked from the right-click menu or the Tools-menu of the Explorer Tree. These actions can be created on the Advanced Script Editor tab. +- **RecentFiles.json** Stores a list of recently opened .bim files. The last most 10 items in this list is displayed in the File > Recent Files menu. +- **RecentServers.json** Stores a list of recently accessed server names. These are displayed in the dropdown portion of the "Connect to Database" dialog box and in the Deployment Wizard. diff --git a/content/te3/whats-new.md b/content/references/whats-new.md similarity index 100% rename from content/te3/whats-new.md rename to content/references/whats-new.md diff --git a/content/te2/gdpr-delete.md b/content/security/gdpr-delete.md similarity index 62% rename from content/te2/gdpr-delete.md rename to content/security/gdpr-delete.md index 597edfd..202e914 100644 --- a/content/te2/gdpr-delete.md +++ b/content/security/gdpr-delete.md @@ -1,3 +1,7 @@ -# User Data Deletion +--- +uid: gdpr-delete +title: GDPR Deletion +--- +# User Data Deletion In order to request a complete data deletion of all user records, please send an e-mail to gdpr@tabulareditor.com. diff --git a/content/security/index.md b/content/security/index.md new file mode 100644 index 0000000..bc587a0 --- /dev/null +++ b/content/security/index.md @@ -0,0 +1,15 @@ +# Security + +This section contains information about security, privacy, and licensing. + +## In this section + +- @security-privacy - Security and privacy considerations of Tabular Editor 3 +- @privacy-policy - Privacy policy and data handling +- @gdpr-delete - User Data Deletion +- @te3-eula - The latest version of our license terms +- @third-party-notices - Third-party component licenses and notices + +--- + +*Important information about security, privacy, and legal matters.* diff --git a/content/te3/other/privacy-policy.md b/content/security/privacy-policy.md similarity index 98% rename from content/te3/other/privacy-policy.md rename to content/security/privacy-policy.md index ecafe09..35e671a 100644 --- a/content/te3/other/privacy-policy.md +++ b/content/security/privacy-policy.md @@ -3,6 +3,18 @@ uid: privacy-policy title: Privacy Policy author: Søren Toft Joensen updated: 2021-09-08 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Privacy Policy @@ -158,4 +170,4 @@ Don’t hesitate to contact us if you have any questions. - Via this Link: https://tabulareditor.com/contact #### Complaints -If you wish to complain about the processing of your personal data, please contact us at [contact@tabulareditor.com](mailto:contact@tabulareditor.com). You may also contact the Data Protection Agency, Borgergade 28, 5., 1300 Copenhagen K. +If you wish to complain about the processing of your personal data, please contact us at [contact@tabulareditor.com](mailto:contact@tabulareditor.com). You may also contact the Data Protection Agency, Borgergade 28, 5., 1300 Copenhagen K. \ No newline at end of file diff --git a/content/te3/features/security-privacy.md b/content/security/security-privacy.md similarity index 97% rename from content/te3/features/security-privacy.md rename to content/security/security-privacy.md index b1fdeb2..33589d3 100644 --- a/content/te3/features/security-privacy.md +++ b/content/security/security-privacy.md @@ -3,6 +3,18 @@ uid: security-privacy title: Security overview author: Daniel Otykier updated: 2024-10-30 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Tabular Editor 3 Security and Privacy diff --git a/content/security/te3-eula.md b/content/security/te3-eula.md new file mode 100644 index 0000000..b23da0f --- /dev/null +++ b/content/security/te3-eula.md @@ -0,0 +1,21 @@ +--- +uid: te3-eula +title: Standard License Terms +author: Søren Toft Joensen +updated: 2021-07-10 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +# Tabular Editor 3 Standard License Terms + +The latest version of our license terms is always available on https://tabulareditor.com/license-terms diff --git a/content/te3/other/third-party-notices.md b/content/security/third-party-notices.md similarity index 99% rename from content/te3/other/third-party-notices.md rename to content/security/third-party-notices.md index b4d0f00..27a2a1e 100644 --- a/content/te3/other/third-party-notices.md +++ b/content/security/third-party-notices.md @@ -3,6 +3,18 @@ uid: third-party-notices title: Third Party Notices author: Daniel Otykier updated: 2021-06-01 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Tabular Editor 3 Third Party Notices diff --git a/content/security/toc.md b/content/security/toc.md new file mode 100644 index 0000000..be14723 --- /dev/null +++ b/content/security/toc.md @@ -0,0 +1,7 @@ +# @security-privacy + +# Legal +## @te3-eula +## @third-party-notices +## @privacy-policy +## @gdpr-delete \ No newline at end of file diff --git a/content/te2/Advanced-Scripting-and-Dynamic-LINQ-quiz.md b/content/te2/Advanced-Scripting-and-Dynamic-LINQ-quiz.md deleted file mode 100644 index 7363fb5..0000000 --- a/content/te2/Advanced-Scripting-and-Dynamic-LINQ-quiz.md +++ /dev/null @@ -1,114 +0,0 @@ -Are you a Tabular Editor pro? - -Test your knowledge of Tabular Editor's Advanced Scripting and Dynamic LINQ filter expressions. All the questions here may be answered using just one line of code. - -If you're new to these features, the solutions presented here (both the C# and Dynamic LINQ version), provides a lot of useful information on how this stuff works, so make sure to check them out. - -*** - -#### Question #1) Total number of measures -* How would you obtain the total number of measures in your model? - -
C# script solution -
Model.AllMeasures.Count().Output();
-Explanation: The Model object represents the root of the TOM tree. It supports most of the properties found in the API documentation with the addition of a number of extra properties and methods, that are only available inside Tabular Editor. The AllMeasures property is one of these extra properties, added for convenience. It simply returns a collection of all measures across all tables in the model. All collections (or more precisely, enumerables) support the powerful .NET LINQ methods. Count() is one such method, which simply returns the number of elements in the collection as an integer. Once we have that, the only thing left is to Output() it.

-
- -
Dynamic LINQ solution -
:ObjectType="Measure"
-Explanation: When you put a ':' as the first character of the Filter textbox, you enable Dynamic LINQ filtering. What that means is, that Tabular Editor evaluates the expression after the ':' character against every object in the TOM tree, returning only those objects where the expression evaluates to true. Putting the expression above into the Filter textbox, will have Tabular Editor display all objects whose ObjectType property is "Measure". The search result count at the bottom of the screen, should then tell you how many measures you have in total.

-
- -*** - -#### Question #2) Find all measures with "TODO" in their expression - -* What's the easiest way to find all measures that contain the word "TODO" inside their Expression property? - -
C# script solution -
Model.AllMeasures.Where(m => m.Expression.Contains("TODO")).Output();
-Explanation: The first part of this script is the same as in question 1. Where(x => y) is another .NET LINQ method, that filters the preceding collection based on a so-called predicate. The predicate is expressed using the special C# Lambda notation x => y. On the left side of the arrow, you declare a variable with a name of your choice. The expression to the right of the arrow will be evaluated for every object in the collection, using the variable on the left to represent individual objects. This expression can be any valid C# expression that evaluates to a boolean value (true or false). Thus, the Where method simply filters the collection to return only those objects where the Lambda expression evaluates to true. So in the example above, we decide to use m as the name of our variable, which will represent the individual measures of our model. But we only want to keep measures whose Expression property Contains the word "TODO". Makes sense?

-
- -
Dynamic LINQ solution -
:ObjectType="Measure" and Expression.Contains("TODO")
-Explanation: The first part of this Dynamic LINQ expression is identical to question 1. Dynamic LINQ lets you use many different operators such as and or or to express complex logic. Notice how the second part of the expression is similar to the C# Lambda expression used above, except that we don't declare a variable to represent the measure. Since Dynamic LINQ is evaluated against every object in the TOM tree, any property or method name we add to the expression will implicitly be evaluated against the current object. Since different types of objects have different properties, no error is produced if the Filter box contains an invalid expression. However, when writing Dynamic LINQ expressions within the Best Practice Analyzer, an error will be shown if you try to access a property or method that doesn't exist on the chosen object types. -
- -*** - -#### Question #3) Count the number of direct measure dependencies -* How can we know the number of measures that directly reference the currently selected measure? You can always check your answer against the "Show dependencies" dialog. - -
C# script solution -
Selected.Measure.ReferencedBy.Measures.Count().Output();
-Explanation: Selected.Measure refers to the currently selected measure in the explorer tree. All objects that can be referenced through DAX (measures, tables, columns, KPIs) have the ReferencedBy property, which is a special collection of objects that directly reference the former. Although we could use the LINQ-method .OfType<Measure>() to filter the collection to measures only, this particular collection contains a set of convenient properties that does this for us. One of them, is Measures.

-
- -
Dynamic LINQ solution -
:ObjectType="Measure" and DependsOn.Measures.Any(Name="Reseller Total Sales")
-Explanation: It's not possible to create a Dynamic LINQ filter expression based on the current selection, so instead we consider a specific measure in this example, [Reseller Total Sales]. The example here, will return all those objects who have a direct dependency on a measure named "Reseller Total Sales". The reason we're using "DependsOn" instead of "ReferencedBy" here, is that search filter expressions are evaluated against every single object in the model. That's the opposite of what we're doing in the C# script, where we already have a handle to a specific measure and want to obtain the list of measures referencing that measure. -
- -*** - -#### Question #4) Recursively count the number of measure dependencies -* Let's go deeper. How would you obtain the number of measures that depend recursively on the currently selected measure? - -
C# script solution -
Selected.Measure.ReferencedBy.Deep().OfType<Measure>().Count().Output();
-Here, we add the Deep() method to recursively traverse the dependency tree, to get a collection of all objects that reference the original measure either directly, or indirectly through other objects. We have to manually filter this collection to objects of type "Measure", to avoid seeing Calculated Columns, RLS Expressions, etc. The only thing left then, is to Count() the number of items in this result and Output() it to the screen.

By the way, if we wanted to display a list of these measures instead of just the count, we could write: -
Selected.Measure.ReferencedBy.Deep().OfType().Output();
-
- -
Dynamic LINQ solution -
:ObjectType="Measure" and DependsOn.Deep().Any(Name="Reseller Total Sales")
-Explanation: All methods that can be called using C# may also be called using Dynamic LINQ. So just like we did above, we're calling the Deep() method to recursively traverse the dependency tree upwards, to find all objects that have a dependency on an object named "Reseller Total Sales". Strictly speaking, this is not exactly the same as the C# expression above, as we would also get a positive hit on non-measure type objects with the name "Reseller Total Sales". To work around that, we could either explicitly state that we only want to consider measures... -
:DependsOn.Deep().Any(Name="Reseller Total Sales" and ObjectType="Measure")
-...or we could use the DaxObjectFullName property to check for a hit (column names would be fully qualified, and measures must be uniquely named across the entire model): -
:DependsOn.Deep().Any(DaxObjectFullName="[Reseller Total Sales]")
-
- -*** - -#### Question #5) List all related dimensions -* Given a fact table `'Reseller Sales'`, how do we obtain a list of all related dimension tables? - -
C# script solution -
var t = Model.Tables["Reseller Sales"];
-t.UsedInRelationships.Where(r => r.FromTable == t).Select(r => r.ToTable).Output();
-Explanation: Okay, I admit, this one is a little tricky and because I used a variable to hold the given table, we end up with 2 lines of code instead of one. The naïve approach would be to simply write t.RelatedTables.Output();, but since the question specifically asked us to output only related dimension tables, we need to consider only those relationships where our given table is on the "From" side. That is the purpose of t.UsedInRelationships.Where(r => r.FromTable == t). If we just wanted the list of outgoing relationships, we'd be done here, but since we want a list of the tables pointed to by those relationships, we need to project this list to get the `ToTable` property of each relationship. That's exactly what .Select(r => r.ToTable) does. Makes sense? Now check out the Dynamic LINQ solution below.

- -
Dynamic LINQ solution -
:UsedInRelationships.Any(ToTable=current and FromTable.Name = "Reseller Sales")
-Explanation: Let's read this expression from left to right, keeping in mind that this is evaluated for every object in the model. UsedInRelationships is a list of relationships in which the current object participates. At this point, we've ruled out anything that's not a table or a column object, as these are the only ones that have the UsedInRelationships property. To filter anything that's not a dimension table, we only want to consider relationships pointing to the current object, from the table in question. .Any( ... ) evaluates to true if at least one of the relationships satisfies the condition: ToTable=current and FromTable.Name = "Reseller Total Sales". The special keyword current refers to the current object being evaluated. As we're equating this with the ToTable property of the relationship, we're ruling out columns from the search result, as this property can only be of type Table. FromTable.Name = ... is self-explanatory. -
- -*** - -#### Question #6) Find all objects with the words "Total" and "Amount" (in that order) in their name - -![image](https://user-images.githubusercontent.com/8976200/44931220-c2dd4680-ad15-11e8-9e52-29ec07f1edb6.png) - -Hint: The regular expression for that would be `Total.*Amount` - -
C# script solution -
Model.AllMeasures.Where(m => System.Text.RegularExpressions.Regex.IsMatch(m.Name, "Total.*Amount")).Output();
-Explanation: This one is actually quite annoying to do in the Advanced Script tab. Strictly speaking, we would actually have to search all the collections (Tables, AllMeasures, AllColumns, AllHierarchies, ...) and then concatenate the result, if we wanted to see them all in one view. Additionally, since the System.Text.RegularExpressions namespace is not in scope by default, the script is not really that typing-friendly. Check out the Dynamic LINQ solution instead.

- -
Dynamic LINQ solution -
:Regex.IsMatch(Name, "Total.*Amount")
-Beautiful, isn't it? -
- -*** - -#### Question #7) Same as #6 but with a case-*in*sensitive search - -
C# script solution -
Model.AllMeasures.Where(m => System.Text.RegularExpressions.Regex.IsMatch(m.Name, "Total.*Amount", RegexOptions.IgnoreCase)).Output();
- -
Dynamic LINQ solution -
:Regex.IsMatch(Name, "Total.*Amount", "IgnoreCase")
- -#### Stay tuned for more... diff --git a/content/te2/Advanced-features.md b/content/te2/Advanced-features.md deleted file mode 100644 index 1f23db0..0000000 --- a/content/te2/Advanced-features.md +++ /dev/null @@ -1,98 +0,0 @@ -# Advanced Features - -In addition to the features mentioned in the [Features at a glance](/te2/Features-at-a-glance) article, Tabular Editor also supports the following features for advanced usage. - -## Replace tables -As of version 2.7, you can now replace a table simply by copying (CTRL+C) one table - even from another instance of Tabular Editor - and then selecting the table you want to replace, before hitting paste (CTRL+V). A prompt will ask you to confirm whether you really want to replace the table ("Yes"), insert as a new table ("No") or cancel the operation entirely: - -![image](https://user-images.githubusercontent.com/8976200/36545892-40983114-17ea-11e8-8825-e8de6fd4e284.png) - -If you choose "Yes", the selected table will be replaced with the table in the clipboard. Furthermore, all relationships pointing to or from that table will be updated to use the new table. For this to work, columns participating in relationships must have the same name and data type in both the original table, and the inserted table. - -## Roles and Row-Level Security -As of version 2.1, Roles are now visible in the Explorer Tree. You can right-click the tree to create new roles, delete or duplicate existing roles. You can view and edit the members of each role, by locating the role in the Explorer Tree, and navigating to the "Role Members" property in the Property Grid. Note that when deploying, the [Deployment Wizard](/te2/Advanced-features#deployment-wizard) does not deploy role members by default. - -The biggest advantage of working with Roles through Tabular Editor, is that each Table object has a "Row Level Filters" property, which lets you view and edit the filters defined on that table, across all roles: - -![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/RLSTableContext.png) - -Of course, you can also view the filters across all tables in one particular role, similar to the UI of SSMS or Visual Studio: - -![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/RLSRoleContext.png) - -## View Table Partitions -TODO -## DAX Expression Editor -TODO -## Script Editor -TODO (For now, please view [this article](/te2/Advanced-Scripting)) -## Scripting/referencing objects -You can use drag-and-drop functionality, to script out objects in the following ways: - -* Drag one or more objects to another Windows application (text editor or SSMS) -JSON code representing the dragged object(s) will be created. When dragging the Model node, a Table, a Role or a Data Source, a "createOrReplace" script is created. - -* Dragging an object (measure, column or table) into the DAX expression editor, will insert a fully-qualified DAX-reference to the object in question. - -* Dragging an object to the Advanced Script editor, will insert the C# code necessary to access the object through the TOM tree. -## Deployment Wizard -Tabular Editor comes with a deployment wizard that provides a few benefits compared to deploying from SSDT - especially when deploying to an existing database. After choosing a server and a database to deploy to, you have the following options for the deployment at hand: - -![Deployment Wizard](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/Deployment.png) - -Leaving the "Deploy Connections" box unchecked, will make sure that all the data sources on the target database stay untouched. You will get an error if your model contains one or more tables with a data source, that does not already exist in the target database. - -Similarly, leaving out "Deploy Table Partitions", will make sure that existing partitions on your tables are not changed, leaving the data in the partitions intact. - -When the "Deploy Roles" box is checked, the roles in the target database will be updated to reflect what you have in the loaded model, however if the "Deploy Role Members" is unchecked, the members of each role will be unchanged in the target database. - -## Metadata Backup -If you wish, Tabular Editor can automatically save a backup copy of the existing model metadata, prior to each save (when connected to an existing database) or deployment. This is useful if you're not using a version control system, but still need to rollback to a previous version of your model. - -To enable this setting, go to "File" > "Preferences", enable the checkbox and choose a folder to place the metadata backups: - - - -If the setting is enabled, a compressed (zipped) version of the existing model metadata will be saved to this location whenever you use the Deployment Wizard, or when you click the "Save" button while connected to a (workspace) database. - -## Formula Fix-up and Formula Dependencies -Tabular Editor continuously parses the DAX expressions of all measures, calculated columns and calculated tables in your model, to construct a dependency tree of these objects. This dependency tree is used for the Formula Fix-up functionality, which may be enabled under "File" > "Preferences". Formula Fix-up automatically updates the DAX expression of any measure, calculated column or calculated table, whenever an object that was referenced in the expression is renamed. - -To visualize the dependency tree, right-click the object in the explorer tree and choose "Show dependencies..." - -![image](https://cloud.githubusercontent.com/assets/8976200/22482528/b37d27e2-e7f9-11e6-8b89-c503f9fffcac.png) - -## Import/Export Translations -Select one or more cultures in the Explorer Tree, right-click and choose "Export Translations..." to generate a .json file that can be imported later in either Tabular Editor or Visual Studio. Choose "Import Translations..." to import a corresponding .json file. You can choose whether to overwrite existing translations. If you don't, translations defined in the .json file will only be applied to objects that do not already have a translation for the given culture. - -## Folder Serialization -This feature allows you to more easily integrate your SSAS Tabular Models in a file-based source control environment such as TFS, SubVersion or Git. By choosing "File" > "Save to Folder...", Tabular Editor will deconstruct the Model.bim file and save its content as separate files in a folder structure similar to the structure of the JSON within the Model.bim. When subsequently saving the model, only files with changed metadata will be touched, meaning most version control systems can easily detect which changes have been done to the model, making source merging and conflict handling a lot easier, than when working with a single Model.bim file. - -![image](https://cloud.githubusercontent.com/assets/8976200/22483167/5e07ad52-e7fc-11e6-890f-5c0d20fff0cb.png) - -By default, objects are serialized down to the lowest object level (meaning measures, columns and hierarchies are stored as individual .json files). - -Additionally, Tabular Editor's [command-line syntax](xref:command-line-options) supports loading a model from this folder structure and deploying it directly to a database, making it easy for you to automate builds for continuous integration workflows. - -If you want to customize the granularity at which metadata is saved to individual files, go to File > Preferences and click the "Save to folder"-tab. Here, it's possible to toggle some serialization options which are passed to the TOM when serializing into JSON. Furthermore, you can check/uncheck the types of objects for which individual files will be generated. In some Version Control scenarios, you might want to store everything related to one table in a file on its own, where as in other scenarios you may need individual files for columns and measures. - -These settings are saved in an annotation on the model, the first time you use the Save to Folder function, so that the settings are reused when the model is loaded and the "Save"-button is subsequently clicked. If you want to apply new settings, use "File > Save to Folder..." again. - - - -## User Settings Files - -When Tabular Editor is executed, it writes some additional files to the disk at various locations. What follows is a description of these files and their content: - -### In %ProgramData%\TabularEditor - -- **BPARules.json** Best Practice Analyzer rules that are available to all users. -- **TOMWrapper.dll** This file is used when executing scripts inside Tabular Editor. You can also reference the .dll in your own .NET projects, to utilise the wrapper code. If you are having issues executing advanced scripts after upgrading Tabular Editor, please delete this file and restart Tabular Editor. -- **Preferences.json** This file stores all preferences set in the File > Preferences dialog. - -### In %AppData%\Local\TabularEditor - -- **BPARules.json** Best Practice Analyzer rules that are available only to the current user. -- **CustomActions.json** Custom script actions that can be invoked from the right-click menu or the Tools-menu of the Explorer Tree. These actions can be created on the Advanced Script Editor tab. -- **RecentFiles.json** Stores a list of recently opened .bim files. The last most 10 items in this list is displayed in the File > Recent Files menu. -- **RecentServers.json** Stores a list of recently accessed server names. These are displayed in the dropdown portion of the "Connect to Database" dialog box and in the Deployment Wizard. diff --git a/content/te2/Best-Practice-Analyzer.md b/content/te2/Best-Practice-Analyzer.md deleted file mode 100644 index ae0a548..0000000 --- a/content/te2/Best-Practice-Analyzer.md +++ /dev/null @@ -1,145 +0,0 @@ -# Best Practice Analyzer - -> [!NOTE] -> Some of the information and screenshots in this article is outdated, as the Best Practice Analyzer has received a [complete overhaul in Tabular Editor v. 2.8.1](Best-Practice-Analyzer-Improvements.md). Information on Dynamic LINQ (rule expressions) is still up-to-date. - -Inspired by [this excellent suggestion](https://github.com/TabularEditor/TabularEditor/issues/39), I am proud to present the Best Practice Analyzer (BPA) - a brand new feature of Tabular Editor. Go to the Tools-menu and click "Best Practice Analyzer...", this will open the following window (you can continue working on your model in the main window, while the BPA window stays open): - -![image](https://cloud.githubusercontent.com/assets/8976200/25298153/07cb3ae0-26f3-11e7-84cb-1c27a5911560.png) - -BPA lets you define rules on the metadata of your model, to encourage certain conventions and best practices while developing in SSAS Tabular. - -Clicking one of the rules in the top list, will show you all objects that satisfy the conditions of the given rule in the bottom list: - -![image](https://cloud.githubusercontent.com/assets/8976200/25298226/9c036214-26f3-11e7-97ea-03ef82366eb5.png) - -Double-clicking an object in the list switches the focus back to the main Tabular Editor window, where the object will be selected in the Explorer Tree ("Go to object..."). It is also possible to specify that a rule should be ignored entirely (can also be done by removing the checkmarks from the rule list), or ignored only for a specific object. Ignores are stored in the metadata annotations of the Model.bim file. - -To create a new rule, simply click "Add rule..." while you have a Tabular Model loaded in Tabular Editor. This opens a new window, where you can give your rule a name, a description and specify the conditions of the rule: - -![image](https://cloud.githubusercontent.com/assets/8976200/25298330/4178cbe4-26f4-11e7-97ee-d80c1dbc54ed.png) - -A visual rule builder is planned for a later release. For now, you specify the rule condition using a [Dynamic LINQ expression](https://github.com/kahanu/System.Linq.Dynamic/wiki/Dynamic-Expressions) that allows you to access all properties on the type(s) of object(s) specified in the dropdown. All objects that satisfy the condition will show up in the BPA UI when the rule is selected. - -By default, a rule created this way will be added to the metadata annotations of the Model object and stored in the Model.bim file or the connected database, when you click "Save" in Tabular Editor. You can promote a rule stored locally in a model to a "global" rule. Global rules are stored in your %AppData%\Local\TabularEditor folder in a file called "BPARules.json". You can also put the BPARules.json in the %ProgramData%\TabularEditor folder, to make the rules available to all users on the machine. - -Note that the rule ID's must always be unique. In case a rule within the model metadata has the same ID as a rule in the %AppData% or %ProgramData% folder, the order of precedence is: - -- Rules stored locally in the model -- Rules stored in the %AppData%\Local folder -- Rules stored in the %ProgramData% folder - -## Rule Expression Samples -In this section, you'll see some examples of Dynamic LINQ expressions that can be used to define rules. The expression that is entered in the Rule Expression Editor, will be evaluated whenever focus leaves the textbox, and any syntax errors will be shown on top of the screen: - -![image](https://cloud.githubusercontent.com/assets/8976200/25380170/9f01634e-29af-11e7-952e-e10a1f28df32.png) - -Your rule expressions may access any public properties on the objects in the TOM. If you try to access a property that does not exist on that type of object, an error will also be shown: - -![image](https://cloud.githubusercontent.com/assets/8976200/25381302/798bab98-29b3-11e7-931e-789e5286fc45.png) - -"Expression" does not exist on the "Column" object, but if we switch the dropdown to "Calculated Columns", the statement above works fine: - -![image](https://cloud.githubusercontent.com/assets/8976200/25380451/87b160da-29b0-11e7-8e2e-c4e47593007d.png) - -Dynamic LINQ supports all the standard arithmetic, logical and comparison operators, and using the "."-notation, you can access subproperties and -methods of all objects. - -``` -String.IsNullOrWhitespace(Expression) and not Name.StartsWith("Dummy") -``` - -The above statement, applied to Calculated Columns, Calculated Tables or Measures, flags those that have an empty DAX expression unless the object's name starts with the text "Dummy". - -Using LINQ, we can also work with collections of objects. The following expression, applied to tables, will find those that have more than 10 columns which are not organized in Display Folders: - -``` -Columns.Count(DisplayFolder = "") > 10 -``` - -Whenever we use a LINQ method to iterate over a collection, the expression used as an argument to the LINQ method is evaluated on the items in the collection. Indeed, DisplayFolder is a property on columns that does not exist at the Table level. - -Here, we see this rule in action on the Adventure Works tabular model. Note how the "Reseller" table shows up as being in violation, while the "Reseller Sales" does not show up (columns in the latter have been organized in Display Folders): - -![image](https://cloud.githubusercontent.com/assets/8976200/25380809/d9d1c3a4-29b1-11e7-839e-29450ad39c8a.png) - -To refer to the parent object inside a LINQ method, use the special "outerIt" syntax. This rule, applied to tables, will find those that contain columns whose name does not start with the table name: - -``` -Columns.Any(not Name.StartsWith(outerIt.Name)) -``` - -It would probably make more sense to apply this rule to Columns directly, in which case it should be written as: - -``` -not Name.StartsWith(Table.Name) -``` - -To compare against enumeration properties, simply pass the enumerated value as a string. This rule, will find all columns whose name end with the word "Key" or "ID", but where the SummarizeBy property has not been set to "None": - -``` -(Name.EndsWith("Key") or Name.EndsWith("ID")) and SummarizeBy <> "None" -``` - -## Finding unused objects -When building Tabular Models it is important to avoid high-cardinality columns at all costs. Typical culprits are system timestamps, technical keys, etc. that have been imported to the model by mistake. In general, we should make sure that the model only contains columns that are actually needed. Wouldn't it be nice if the Best Practice Analyzer could tell us which columns are likely not needed at all? - -The following rule will report columns that: - -- ...are hidden (or whose parent table is hidden) -- ...are not referenced by any DAX expressions (considers all DAX expressions in the model - even drillthrough and RLS filter expressions) -- ...do not participate in any relationships -- ...are not used as the "Sort By"-column of any other column -- ...are not used as levels of a hierarchy. - -The Dynamic LINQ expression for this BPA rule is: - -``` -(IsHidden or Table.IsHidden) -and ReferencedBy.Count = 0 -and (not UsedInRelationships.Any()) -and (not UsedInSortBy.Any()) -and (not UsedInHierarchies.Any()) -``` - -The same technique can be used to find unused measures. It's a little simpler, since measures can't participate in relationships, etc. So instead, let's spice things up a bit, by also considering whether any downstream objects that reference a given measure, are visible or not. That is, if measure [A] is referenced by measure [B], and both measure [A]" and [B] are hidden, and no other DAX expressions refer to these two measures, we should let the developer know that it is safe to remove both of them: - -``` -(IsHidden or Table.IsHidden) -and not ReferencedBy.AllMeasures.Any(not IsHidden) -and not ReferencedBy.AllColumns.Any(not IsHidden) -and not ReferencedBy.AllTables.Any(not IsHidden) -and not ReferencedBy.Roles.Any() -``` - -## Fixing objects -In some cases, it is possible to automatically fix the issues on objects satisfying the criteria of a rule. For example when it's just a matter of setting a simple property on the object. Take a closer look at the JSON behind the following rule: - -```json -{ - "ID": "FKCOLUMNS_HIDDEN", - "Name": "Hide foreign key columns", - "Category": null, - "Description": "Columns used on the Many side of a relationship should be hidden.", - "Severity": 1, - "Scope": "Column", - "Expression": "Model.Relationships.Any(FromColumn = outerIt) and not IsHidden and not Table.IsHidden", - "FixExpression": "IsHidden = true", - "Compatibility": [ - 1200, - 1400 - ], - "IsValid": false -} -``` - -This rule finds all columns that are used in a relationship (on the "Many"/"From" side), but where the column or its parent table are not hidden. It is recommended that such columns are never shown, as users should filter data using the related (dimension) table instead. So the fix in this case, would be to set the columns IsHidden property to true, which is exactly what the "FixExpression" string above does. To see this in action, right-click any objects that violate the rule, and choose "Generate Fix Script". This puts a small script into the clipboard, which can be pasted into the Advanced Script Editor, from where you can easily review the code and execute it: - -![image](https://cloud.githubusercontent.com/assets/8976200/25298489/9035bab6-26f5-11e7-8134-8502daaf4132.png) - -Remember that you can always undo (CTRL+Z) changes done to a model after script execution. - -Feedback on this new tool is most welcome! In the future, we plan to provide a set of universal Best Practices that will ship with Tabular Editor to get you started. Furthermore, plans are in motion to make the Best Practice Analyzer available as a plug-in to Visual Studio, so those of you not using Tabular Editor can still benefit from it. - -## Official Best Practice Rules - -Microsoft has provided a set of standard Best Practice Rules. The definition of these rules is available in [this GitHub repository](https://github.com/microsoft/Analysis-Services/tree/master/BestPracticeRules). Microsoft encourages community contributions and feedback to this repository. For more details and background on these rules, please view [this official blogpost](https://powerbi.microsoft.com/en-us/blog/best-practice-rules-to-improve-your-models-performance/). diff --git a/content/te2/Features-at-a-glance.md b/content/te2/Features-at-a-glance.md deleted file mode 100644 index a983045..0000000 --- a/content/te2/Features-at-a-glance.md +++ /dev/null @@ -1,80 +0,0 @@ -# Basic Features - -The following article will give you a quick overview of the most important features of Tabular Editor. - -## Load/save Model.bim files -Hitting CTRL+O shows an Open File dialog, which lets you select a Model.bim file to load in Tabular Editor. The file must be of Compatibility Level 1200 or newer (JSON format). CTRL+S saves any changes you make in Tabular Editor back to the file (we recommend backing up your Model.bim files before using Tabular Editor). If you want to deploy the loaded model to an Analysis Services server instance, see [Deployment](/te2/Features-at-a-glance#deployment) below. - -## Connect/deploy to SSAS Tabular Databases -Hitting CTRL+SHIFT+O lets you open a Tabular Model directly from a Tabular Database that has already been deployed. Enter the server address and (optionally) provide a username and password. After hitting "OK", you will be prompted with a list of databases and the server. Select the one you want to load, and click "OK" again. - -![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/Connect.png) - -The dialog shown also lets you connect to Azure Analysis Services instances, if you provide the full name of the Azure AS instance, starting with "azureas://". The "Local Instance" dropdown, may be used to browse and connect to any running instances of Power BI Desktop or Visual Studio Integrated Workspaces. **Note that although Tabular Editor can make changes to a Power BI model through the TOM, this is not supported by Microsoft and may corrupt your .pbix file. Proceed at your own risk!** - -Any time you press CTRL+S after the database has been loaded, the database will be updated with any changes you've made in Tabular Editor. Client tools (Excel, Power BI, DAX Studio, etc.) should be able to immediately view the changes in the database after this. Note that you may need to manually recalculate objects in the model, depending on the changes made, to successfully query the model. - -If you want to save the connected model to a Model.bim file, choose "Save As..." from the "File" menu. - -## Deployment -If you want to deploy the currently loaded model to a new database, or overwrite an existing database with the model changes (for example when loading from a Model.bim file), use the Deployment Wizard under "Model" > "Deploy...". The wizard will guide you through the deployment process, and allow you to choose which areas of the model to deploy. More information can be found [here](/te2/Advanced-features#deployment-wizard). - -## Hierarchical display -Objects of the loaded model are shown in the Explorer Tree, on the left side of the screen. By default, all object types (visible tables, roles, relationships, etc.) are shown. If you only want to see tables, measures, columns and hierarchies, go to the "View" menu and toggle off "Show all object types". - -![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/AllObjectTypes.png) - -Expanding a table in the "Tables" group, you will find the measures, columns and hierarchies contained in the table presented in their respective display folders by default. This way, objects are arranged similar to how end-users would see them in client tools: - -![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/DisplayFolders.png) - -Use the buttons immediately above the Explorer Tree, to toggle invisible objects, display folders, measures, columns and hierarchies, or to filter objects by name. You can rename an object by selecting it in then hitting F2. This also works for display folders. If you double-click a measure or calculated column, you may edit its [DAX expression](/te2/Advanced-features#dax-expression-editor). Right-clicking will show a context menu, providing a range of handy shortcuts for operations such as setting visibility, perspective inclusion, adding columns to a hierarchy, etc. - -## Editing properties -The Property Grid on the lower right side of the screen, shows most of the properties for the object(s) selected in the Explorer Tree. If you select multiple objects at once, the Property Grid lets you simultaneously edit properties for the selected objects. This is useful for example when setting the Format String property. Examples of properties you can set through the Property Grid: - -* Name (you can rename objects directly in the Explorer Tree by hitting F2) -* Description -* Display Folder (can also be renamed directly in the Explorer Tree, also [drag/drop](/te2/Features-at-a-glance#drag-and-drop-objects)) -* Hidden (can be set for multiple objects through the right-click context menu in the Explorer Tree) -* Format String - -Different properties exist, depending on what kind of object was selected. - -## Duplicate objects and batch renamings -The right-click context menu in the Explorer Tree lets you duplicate measures and columns. The duplicated objects will have their names suffixed by "copy". Furthermore, you can perform batch renames by selecting multiple objects and right-clicking in the Explorer Tree. - -![](https://github.com/TabularEditor/TabularEditor/blob/master/Documentation/BatchRename.png) - -You may use RegEx for your renamings, and optionally choose whether translations should be renamed as well. - -## Drag and drop objects -By far the most useful feature of Tabular Editor, when working on models with many measures/columns organised in display folders. Check out the animation below: - -![](https://github.com/TabularEditor/TabularEditor/blob/master/Documentation/DragDropFolders.gif) - -Notice how the display folder property of every single object below the folder is changed, when the entire folder is dragged. No more going over measures/columns one-by-one, to change the display folder structure. What you see is what you get. - -(This works with translations too!) - -## Working with Perspectives and Translations -You can add/edit existing perspectives and translations (cultures), by clicking the Model node in the Explorer Tree, and locating the relevant properties at the bottom of the property grid. Alternatively, when your Explorer Tree is [showing all object types](/te2/Features-at-a-glance#hierarchical-display), you can view and edit perspectives, cultures and roles directly in the tree. - -![](https://raw.githubusercontent.com/TabularEditor/TabularEditor/master/Documentation/RolesPerspectivesTranslations.png) - -You can duplicate an existing perspective, role or translation by opening the right-click menu and choose "Duplicate". This will create an exact copy of the object, which you can then modify to your needs. - -To view perspectives and/or translations "in action", use the two dropdown lists in the toolbar near the top of the screen. Choosing a perspective will hide all objects that are not included in that perspective, while choosing a translation will show all objects in the tree using the translated names and display folders. When hitting F2 to change the names of objects/display folders or when dragging objects around in the tree, the changes will only apply to the selected translation. - -## Perspectives/Translations within object context -When one or more objects are selected in the tree, you will find 4 special property collections within the Property Grid: - -* **Captions**, **Descriptions** and **Display Folders** shows a list of all cultures in the model, with the translated names, descripions and display folders respectively of the selected objects for each culture. -* **Perspectives** shows a list of all perspectives in the model, with an indication of whether or nor the selected objects belong to each perspective. - -You can use these collections in the Property Grid to change the translations and perspective inclusions for one or more objects at at time. - -## Undo/Redo support -Any change you make in Tabular Editor can be undone using CTRL+Z and subsequently redone using CTRL+Y. There is no limit to the number of operations that can be undone, but the stack is reset when you open a Model.bim file or load a model from a database. - -When deleting objects from the model, all translations, perspectives and relationships that reference the deleted objects are also automatically deleted (where as Visual Studio normally shows an error message that the object cannot be deleted). If you make a mistake, you can use the Undo functionality to restore the deleted object, which will also restore any translations, perspectives or relationships that were deleted. Note that even though Tabular Editor can detect [DAX formula dependencies](), Tabular Editor will not warn you in case you delete a measure or column which is used in the DAX expression of another measure or calculated column. diff --git a/content/te2/Power-BI-Desktop-Integration.md b/content/te2/Power-BI-Desktop-Integration.md deleted file mode 100644 index 8428f12..0000000 --- a/content/te2/Power-BI-Desktop-Integration.md +++ /dev/null @@ -1,25 +0,0 @@ -# Power BI Desktop Integration - -As of July 2020, [Power BI Desktop adds support for External Tools](https://docs.microsoft.com/da-dk/power-bi/create-reports/desktop-external-tools). This allows Tabular Editor to perform certain modeling operations when working with Imported or DirectQuery data in Desktop. - -![image](https://user-images.githubusercontent.com/8976200/87296924-dcea3180-c507-11ea-9cf9-2f647d26a2a9.png) - -## Prerequisites - -- [July 2020 version of Power BI Desktop](https://www.microsoft.com/en-us/download/details.aspx?id=58494) (or newer) -- [Latest version of Tabular Editor](https://github.com/TabularEditor/TabularEditor/releases/latest) -- Enable [Enhanced Metadata](https://docs.microsoft.com/en-us/power-bi/connect-data/desktop-enhanced-dataset-metadata) under Power BI Desktop's Preview Features - -Also, it is highly recommended that [automatic date/time](https://docs.microsoft.com/en-us/power-bi/transform-model/desktop-auto-date-time) is **disabled** (Power BI Desktop setting under "Data Load"). - -## Supported Modeling Operations - -By default, Tabular Editor will only let you edit a limited number of objects and properties when connected to a Power BI Desktop model. These are: - -- Measures (add/remove/edit any property) -- Calculation Groups and Calculation Items (add/remove/edit any property) -- Perspectives (add/remove/edit any property) -- Translations (add/remove) - - You can apply metadata translations to any object in the model, although be aware that Power BI Desktop does not yet support translations to the default model culture. - -**Note:** If you enable the "Allow unsupported Power BI features (experimental)" option under Tabular Editor's File > Preferences dialog, Tabular Editor will let you edit **any** object and property, potentially causing model changes that are not supported by Power BI Desktop, which may cause a crash or a corrupt .pbix file. In this case, Microsoft Support will not be able to help you, so use at your own risk, and keep a backup of your .pbix file just in case. diff --git a/content/te2/Training-Webinar-for-Tabular-Editor.md b/content/te2/Training-Webinar-for-Tabular-Editor.md deleted file mode 100644 index 6a392e3..0000000 --- a/content/te2/Training-Webinar-for-Tabular-Editor.md +++ /dev/null @@ -1,25 +0,0 @@ -# Video Tutorials - -In collaboration with [PowerBI.Tips](https://powerbi.tips/about/) Daniel Otykier conducts 4 hours of training related to the Tabular Editor Program. Watch the following videos below to learn more about this tool and see how to use it in your everyday job. - -Webinar Topics -* Introduction to Tabular Editor -* Using Scripting -* Reviewing your data model with the Best Practice Analyzer -* Deploying your model with Azure DevOps - -## Introduction to Tabular Editor -[![Intro to Tabular Editor](http://img.youtube.com/vi/c-jZMzsvKnM/0.jpg)](http://www.youtube.com/watch?v=c-jZMzsvKnM "Intro To Tabular Editor") - -## Using Scripting -[![Intro to Tabular Editor](http://img.youtube.com/vi/EHs5r3XCkO8/0.jpg)](http://www.youtube.com/watch?v=EHs5r3XCkO8 "Intro To Tabular Editor") - -## Best Practice Analyzer -[![Intro to Tabular Editor](http://img.youtube.com/vi/5WnN0NG2nBk/0.jpg)](http://www.youtube.com/watch?v=5WnN0NG2nBk "Intro To Tabular Editor") - -## Deploying with DevOps -[![Intro to Tabular Editor](http://img.youtube.com/vi/fzZgXe3MjhI/0.jpg)](http://www.youtube.com/watch?v=fzZgXe3MjhI "Intro To Tabular Editor") - -Special thanks to PowerBI.Tips for setting up these free webinars. -Visit PowerBI.tips on YouTube - https://www.youtube.com/powerbitips -Visit PowerBI.tips - https://powerbi.tips diff --git a/content/te2/toc.md b/content/te2/toc.md deleted file mode 100644 index 2540cb5..0000000 --- a/content/te2/toc.md +++ /dev/null @@ -1,25 +0,0 @@ -# Introduction -## [Getting Started](Getting-Started.md) -## [Power BI Desktop Integration](Power-BI-Desktop-Integration.md) -## [Importing Tables](Importing-Tables.md) -## [Video Tutorials](Training-Webinar-for-Tabular-Editor.md) -## [Frequently Asked Questions](FAQ.md) -## [Keyboard Shortcuts](Keyboard-Shortcuts.md) - -# Feature Overview -## [Basic](Features-at-a-glance.md) -## [Advanced](Advanced-features.md) - -# Advanced Topics -## [Advanced Scripting](Advanced-Scripting.md) -### @csharp-script-library -## [FormatDax deprecation](FormatDax.md) -## [Useful Script Snippets](Useful-script-snippets.md) -## [Custom Actions](Custom-Actions.md) -## [Command Line](Command-line-Options.md) -## [Best Practice Analyzer](Best-Practice-Analyzer.md) -## [Best Practice Analyzer 2.0](Best-Practice-Analyzer-Improvements.md) -## [Advanced Filtering](Advanced-Filtering-of-the-Explorer-Tree.md) -## [Master Model Pattern](Master-model-pattern.md) -## [Incremental Refresh](incremental-refresh.md) -## [Importing Tables from Excel](importing-tables-from-excel.md) \ No newline at end of file diff --git a/content/te3/desktop-limitations.md b/content/te3/desktop-limitations.md deleted file mode 100644 index 04e2779..0000000 --- a/content/te3/desktop-limitations.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -uid: desktop-limitations-te3 -title: Power BI Desktop limitations -author: Morten Lønskov -updated: 2023-08-21 -applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise ---- -[!include[Desktop limitations](~/content/common/desktop-limitations.md)] - -# Next steps - -- [Editing a Power BI dataset through the XMLA endpoint](xref:powerbi-xmla) diff --git a/content/te3/features/images/customizing-pivot-grids.png b/content/te3/features/images/customizing-pivot-grids.png deleted file mode 100644 index 75031d2..0000000 Binary files a/content/te3/features/images/customizing-pivot-grids.png and /dev/null differ diff --git a/content/te3/features/images/show-fields-pivot.png b/content/te3/features/images/show-fields-pivot.png deleted file mode 100644 index 51fbc6b..0000000 Binary files a/content/te3/features/images/show-fields-pivot.png and /dev/null differ diff --git a/content/te3/other/te3-eula.md b/content/te3/other/te3-eula.md deleted file mode 100644 index 41e10bf..0000000 --- a/content/te3/other/te3-eula.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -uid: te3-eula -title: Standard License Terms -author: Søren Toft Joensen -updated: 2021-07-10 ---- -# Tabular Editor 3 Standard License Terms - -The latest version of our license terms is always available on https://tabulareditor.com/license-terms diff --git a/content/te3/toc.md b/content/te3/toc.md deleted file mode 100644 index 75b6c86..0000000 --- a/content/te3/toc.md +++ /dev/null @@ -1,92 +0,0 @@ -# Introduction -## @getting-started -## @whats-new -## @editions -## @desktop-limitations-te3 - -## Power BI XMLA Endpoint -### @powerbi-xmla -### @powerbi-xmla-pbix-workaround -## @proxy-settings - -# Documentation -## User interface -### @user-interface -### @tom-explorer-view -### @bpa-view -### @messages-view -### @data-refresh-view -### @macros-view -### @find-replace - -## Features -### @csharp-scripts -### @deployment -### @dax-debugger -### @dax-editor -### @dax-optimizer-integration -### @dax-package-manager -### @dax-scripts -### @dax-query -### @diagram-view -### @metadata-translation-editor -### @perspective-editor -### @pivot-grid -### @table-groups -### @code-actions - -## Files formats -### @supported-files -### @tmdl -## @preferences -## @shortcuts -## @user-options -## @security-privacy - -# Tutorials and walkthroughs - -## Connect to a Model -### @workspace-mode - -## Create a New Model -### @new-as-model -### @new-pbi-model -### @direct-lake-guidance - -## Adding Tables & Data Sources -### @importing-tables -### @connecting-to-azure-databricks - -## Configuring Data Security -### @data-security-about -### @data-security-setup-rls -### @data-security-setup-ols -### @data-security-testing - -## Incremental Refresh -### @incremental-refresh-about -### @incremental-refresh-modify -### @incremental-refresh-setup -### @incremental-refresh-schema -### @incremental-refresh-workspace-mode - -## Advanced Modelling -### @udfs -### @calendars - -## Automation with C# Scripting -### @creating-macros -### @csharp-script-library - -# Troubleshooting -## @direct-lake-entity-updates-reverting -## @locale-not-supported - -# Other resources -## @downloads -## @roadmap - -# Legal -## @te3-eula -## @third-party-notices -## @privacy-policy diff --git a/content/te3/tutorials/importing-tables.md b/content/te3/tutorials/importing-tables.md deleted file mode 100644 index 10ae6f9..0000000 --- a/content/te3/tutorials/importing-tables.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -uid: importing-tables -title: Importing Tables -author: Daniel Otykier -updated: 2021-09-06 -applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise ---- -# (Tutorial) Importing Tables - -[!include[importing-tables](~/content/te3/import-tables.partial.md)] \ No newline at end of file diff --git a/content/te3/tutorials/workspace-mode.md b/content/te3/tutorials/workspace-mode.md deleted file mode 100644 index 7e7c8a0..0000000 --- a/content/te3/tutorials/workspace-mode.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -uid: workspace-mode -title: Workspace Mode -author: Daniel Otykier -updated: 2021-09-06 -applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise ---- -# (Walkthrough) Workspace Mode -[!include[workspace-mode](~/content/te3/workspace-mode.partial.md)] \ No newline at end of file diff --git a/content/te3/views/bpa-view.md b/content/te3/views/bpa-view.md deleted file mode 100644 index 7050e9b..0000000 --- a/content/te3/views/bpa-view.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -uid: bpa-view -title: Best Practice Analyzer view -author: Daniel Otykier -updated: 2021-09-08 -applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise ---- -[!include[using-bpa](~/content/common/using-bpa.md)] diff --git a/content/toc.yml b/content/toc.yml index feebe1f..8b3cef9 100644 --- a/content/toc.yml +++ b/content/toc.yml @@ -1,17 +1,26 @@ - name: Home href: index.md -- name: TE2 Docs - href: te2/ - homepage: te2/Getting-Started.md -- name: TE3 Docs - href: te3/ - homepage: te3/getting-started.md -- name: Common features - href: common/ - homepage: common/common-features.md -- name: TE3 Onboarding Guide - href: onboarding/ - homepage: onboarding/index.md +- name: Getting started + href: getting-started/ + homepage: getting-started/index.md +- name: Features + href: features/ + homepage: features/index.md +- name: How-tos + href: how-tos/ + homepage: how-tos/index.md +- name: Tutorials + href: tutorials/ + homepage: tutorials/index.md +- name: References + href: references/ + homepage: references/index.md +- name: Troubleshooting + href: troubleshooting/ + homepage: troubleshooting/index.md +- name: Security + href: security/ + homepage: security/index.md - name: API href: api/ homepage: api/index.md \ No newline at end of file diff --git a/content/te2/Maintaining-Calculations-using-Scripting.md b/content/todo/Maintaining-Calculations-using-Scripting.md similarity index 100% rename from content/te2/Maintaining-Calculations-using-Scripting.md rename to content/todo/Maintaining-Calculations-using-Scripting.md diff --git a/content/onboarding/as-cicd.md b/content/todo/as-cicd.md similarity index 100% rename from content/onboarding/as-cicd.md rename to content/todo/as-cicd.md diff --git a/content/onboarding/powerbi-cicd.md b/content/todo/powerbi-cicd.md similarity index 100% rename from content/onboarding/powerbi-cicd.md rename to content/todo/powerbi-cicd.md diff --git a/content/todo/te2-advanced.md b/content/todo/te2-advanced.md new file mode 100644 index 0000000..7cd22ae --- /dev/null +++ b/content/todo/te2-advanced.md @@ -0,0 +1,6 @@ +## View Table Partitions +TODO +## DAX Expression Editor +TODO +## Script Editor +TODO (For now, please view [this article](../how-tos/Advanced-Scripting.md)) \ No newline at end of file diff --git a/content/te3/troubleshooting/calendar-blank-value.md b/content/troubleshooting/calendar-blank-value.md similarity index 90% rename from content/te3/troubleshooting/calendar-blank-value.md rename to content/troubleshooting/calendar-blank-value.md index 31722b5..0441b2d 100644 --- a/content/te3/troubleshooting/calendar-blank-value.md +++ b/content/troubleshooting/calendar-blank-value.md @@ -4,10 +4,17 @@ title: Calendar function blank date error author: Morten Lønskov updated: 2025-10-20 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Calendar function blank date error diff --git a/content/te3/troubleshooting/direct-lake-entity-updates-reverting.md b/content/troubleshooting/direct-lake-entity-updates-reverting.md similarity index 96% rename from content/te3/troubleshooting/direct-lake-entity-updates-reverting.md rename to content/troubleshooting/direct-lake-entity-updates-reverting.md index 70aef52..164e251 100644 --- a/content/te3/troubleshooting/direct-lake-entity-updates-reverting.md +++ b/content/troubleshooting/direct-lake-entity-updates-reverting.md @@ -4,12 +4,17 @@ title: Entity Name Changes Revert in Direct Lake Models author: Morten Lønskov updated: 2025-10-14 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - none: x - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + none: true + - edition: Enterprise + full: true --- # Entity Name Changes Revert in Direct Lake Models @@ -310,7 +315,8 @@ public class BatchEntityEditor : Form } } ``` -> [!NOTE] The script was generated using an LLM for code assistance, but has been tested by the Tabular Editor team. +> [!NOTE] +> The script was generated using an LLM for code assistance, but has been tested by the Tabular Editor team. Running the script updates only the tables that receive a new entity name. After the script finishes, review the changes, save the model, and refresh in Power BI to confirm the metadata persists. diff --git a/content/troubleshooting/index.md b/content/troubleshooting/index.md new file mode 100644 index 0000000..ab99628 --- /dev/null +++ b/content/troubleshooting/index.md @@ -0,0 +1,15 @@ +# Troubleshooting + +This section contains troubleshooting guides and solutions for common issues. + +## In this section + +- @licensing-activation - Resolving license and activation issues +- @proxy-settings - Proxy setting issues +- @locale-not-supported - Locale Not Supported +- @calendar-blank-value - Calendar function blank date error +- @direct-lake-entity-updates-reverting - Entity Name Changes Revert in Direct Lake Models + +--- + +*Find solutions to common problems and get help when needed.* \ No newline at end of file diff --git a/content/te3/index.md b/content/troubleshooting/licensing-activation.md similarity index 84% rename from content/te3/index.md rename to content/troubleshooting/licensing-activation.md index 6ddc56a..7655691 100644 --- a/content/te3/index.md +++ b/content/troubleshooting/licensing-activation.md @@ -1,13 +1,22 @@ --- -title: Tabular Editor 3 +uid: licensing-activation +title: Install and Activate Tabular Editor 3 author: Daniel Otykier +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Tabular Editor 3 -This is the documentation site for Tabular Editor 3 - the ultimate productivity tool for Analysis Services and Power BI data models. - -Use the menu on the left side to navigate between topics. - ## Installation Download the latest version of Tabular Editor 3 from our [downloads page](xref:downloads). @@ -27,13 +36,13 @@ Tabular Editor 3 is commercial software. Visit our [home page](https://tabulared The first time you launch Tabular Editor 3 on a new machine, you are prompted to activate the product. -![Product activation](~/content/assets/images/product-activation.png) +![Product activation](~/content/assets/images/getting-started/product-activation.png) ### Activating using an existing license key Once you purchase a license for Tabular Editor 3, you should receive an e-mail with a 25-character string which is your license key. When prompted, enter the license key and hit "Next >" to activate the product. -![Enter License Key](~/content/assets/images/enter-license-key.png) +![Enter License Key](~/content/assets/images/getting-started/enter-license-key.png) > [!NOTE] > For multi-user license types, you will need to enter your e-mail address in addition to the license key. Tabular Editor 3 will prompt you to do so, if the license key you enter represents a multi-user license. @@ -49,7 +58,7 @@ If you haven't used Tabular Editor 3 before, you are eligible to a free 30-day t When Tabular Editor 3 is activated, you may change your license key in the Help menu by choosing "About Tabular Editor". -![About Te3](~/content/assets/images/about-te3.png) +![About Te3](~/content/assets/images/getting-started/about-te3.png) In the dialog, select "Change license key". Note that this option is only available if no model is loaded in Tabular Editor. IF you already loaded a model you can close it under File > Close model. @@ -67,7 +76,7 @@ You can also use `regedit.exe` (Windows Registry Editor) and navigate to `HKEY_C A system administrator may also proactively assign Tabular Editor 3 licenses to a machine by specifying the **LicenseKey** and **User** values under each user’s `SOFTWARE\Kapacity\Tabular Editor 3` registry key. -![Registry Editor](~/content/assets/images/registry-editor.png) +![Registry Editor](~/content/assets/images/troubleshooting/registry-editor.png) ### Changing a license key through the registry @@ -85,10 +94,4 @@ Alternatively, run the following command in a Windows Command Prompt (Start > Ru REG DELETE "HKCU\Software\Kapacity\Tabular Editor 3" /va ``` -The next time you launch Tabular Editor 3, you will be prompted for a license key, just as when the tool was first installed on the machine. - -## Next steps - -- [Overview of Tabular Editor 3's user interface](xref:user-interface) -- [What's new in Tabular Editor 3](whats-new.md) -- [Tabular Editor 3 Onboarding Guide](xref:onboarding-te3) \ No newline at end of file +The next time you launch Tabular Editor 3, you will be prompted for a license key, just as when the tool was first installed on the machine. \ No newline at end of file diff --git a/content/te3/troubleshooting/locale-not-supported.md b/content/troubleshooting/locale-not-supported.md similarity index 83% rename from content/te3/troubleshooting/locale-not-supported.md rename to content/troubleshooting/locale-not-supported.md index c2b92b5..892cb68 100644 --- a/content/te3/troubleshooting/locale-not-supported.md +++ b/content/troubleshooting/locale-not-supported.md @@ -4,10 +4,17 @@ title: Locale Not Supported author: Morten Lønskov updated: 2025-09-02 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Locale Not Supported You may encounter the warning message: @@ -56,4 +63,4 @@ Adjust your local system’s regional and language settings to match a supported - **Recommended settings:** - **Regional format:** English (United States) - - **Windows Display Language:** English (United States) + - **Windows Display Language:** English (United States) \ No newline at end of file diff --git a/content/te3/proxy-settings.md b/content/troubleshooting/proxy-settings.md similarity index 90% rename from content/te3/proxy-settings.md rename to content/troubleshooting/proxy-settings.md index a488a16..3699cbf 100644 --- a/content/te3/proxy-settings.md +++ b/content/troubleshooting/proxy-settings.md @@ -4,10 +4,17 @@ title: Proxy settings author: Daniel Otykier updated: 2024-11-07 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Proxy settings @@ -16,7 +23,7 @@ Due to different proxy behavior between .NET Core (used by Tabular Editor 3) and For example, you might see the following error message when trying to connect to the Power BI service: -![No such host is known-error](~/content/assets/images/proxy-error.png) +![No such host is known-error](~/content/assets/images/troubleshooting/proxy-error.png) Typical error messages you would see, are: @@ -30,7 +37,7 @@ Typical error messages you would see, are: When this happens, the first thing you should try is to change the proxy settings in Tabular Editor 3. You can find these settings under **Tools > Preferences > Proxy Settings**: -![Proxy settings in Tabular Editor 3](~/content/assets/images/proxy-settings.png) +![Proxy settings in Tabular Editor 3](~/content/assets/images/troubleshooting/proxy-settings.png) In most cases, changing the **Proxy Type** from `None` to `System` will resolve the issue. This setting tells Tabular Editor 3 to use the system-wide proxy settings configured in Windows. If you are still experiencing issues, you can try setting the **Proxy Type** to `Custom` and enter the proxy server address and port manually. diff --git a/content/troubleshooting/toc.md b/content/troubleshooting/toc.md new file mode 100644 index 0000000..c4e7b75 --- /dev/null +++ b/content/troubleshooting/toc.md @@ -0,0 +1,9 @@ +# @licensing-activation + +# @proxy-settings + +# @locale-not-supported + +# @calendar-blank-value + +# @direct-lake-entity-updates-reverting \ No newline at end of file diff --git a/content/te3/tutorials/calendars.md b/content/tutorials/calendars.md similarity index 83% rename from content/te3/tutorials/calendars.md rename to content/tutorials/calendars.md index a561677..24cf09c 100644 --- a/content/te3/tutorials/calendars.md +++ b/content/tutorials/calendars.md @@ -4,27 +4,33 @@ title: Calendars (Enhanced Time Intelligence) author: Daniel Otykier updated: 2025-09-15 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + since: 3.23.0 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Calendars (Enhanced Time Intelligence) The September 2025 release of Power BI Desktop introduced a new Public Preview feature called "Enhanced Time Intelligence". This feature lets you define custom calendars in your semantic model, and it also introduces 8 new DAX functions that work with these calendars, enabling week-based time intelligence calculations that were difficult to perform previously. -Tabular Editor 3 has support for Calendars and the new DAX functions since version 3.23.0. - ## Defining a Calendar -![Creating a calendar](~/content/assets/images/calendar-create.png) +![Creating a calendar](~/content/assets/images/tutorials/calendar-create.png) 1. Right-click on a table in your model (typically a Date table) and select **Create > Calendar...**. 2. Give your calendar a name, e.g. "Fiscal" Once calendars are added to a table, they will be shown in the TOM Explorer under the **Calendars** node: -![Calendar in TOM Explorer](~/content/assets/images/calendar-tom-explorer.png) +![Calendar in TOM Explorer](~/content/assets/images/tutorials/calendar-tom-explorer.png) Before you can use a calendar in your DAX calculations, you need to configure it by specifying which columns in the table represent the different calendar attributes. You can do this by right-clicking on the calendar in the TOM Explorer, then choosing the **Edit Column Mappings...** option: @@ -32,7 +38,7 @@ Before you can use a calendar in your DAX calculations, you need to configure it For each calendar, you can add one or more so-called **Column Associations**. Each such association maps a column from the table, to a specific **Time Unit** (e.g. Year, Month, Week, etc.). You can also add additional associated columns for each mapping, which are typically used for columns that represent the same time unit, but in a different format. For example, you might have a "Month" column that contains the month number (1-12), and a "Month Name" column that contains the month name ("January", "February", etc.). Both of these columns can be associated with the "MonthOfYear" time unit. -![Calendar column associations](~/content/assets/images/calendar-example.png) +![Calendar column associations](~/content/assets/images/tutorials/calendar-example.png) ## Using Calendars in DAX diff --git a/content/te3/tutorials/connecting-to-azure-databricks.md b/content/tutorials/connecting-to-azure-databricks.md similarity index 97% rename from content/te3/tutorials/connecting-to-azure-databricks.md rename to content/tutorials/connecting-to-azure-databricks.md index a1b4bcb..baddeba 100644 --- a/content/te3/tutorials/connecting-to-azure-databricks.md +++ b/content/tutorials/connecting-to-azure-databricks.md @@ -4,10 +4,18 @@ title: Connecting to Azure Databricks author: David Bojsen updated: 2025-08-05 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + since: 3.15.0 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # (Tutorial) Connecting to Azure Databricks diff --git a/content/tutorials/creating-macros.md b/content/tutorials/creating-macros.md new file mode 100644 index 0000000..38d8c32 --- /dev/null +++ b/content/tutorials/creating-macros.md @@ -0,0 +1,75 @@ +--- +uid: creating-macros +title: Creating macros +author: Morten Lønskov +updated: 2023-12-07 +applies_to: + products: + - product: Tabular Editor 2 + full: true + note: "Called Custom Actions" + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +# (Tutorial) Creating macros + +Macros are C# scripts that have been saved in Tabular Editor to be easily reused across semantic models. +Saving a script as a Macro will allow that macro to be used when right clicking on the objects in the TOM Explorer making it simple to apply the script to your model. + +> [!NOTE] +> In Tabular Editor 2, the feature to reuse C# Script is called @custom-actions. + +## Creating a Macro + +The first step in creating a Macro is to create and test a C# script. + +> [!TIP] +>One easy way to get started with C# scripting is to use the built in record function that lets you record the actions you take in the TOM Explorer. +>This way you can see how to interact with the different model objects and create reusable scripts. +>Another way is to reuse existing scripts such as those in our [script library](xref:csharp-script-library). +>In this tutorial we use the script [Format Numeric Measures](xref:script-format-numeric-measures) to showcase the Macro functionality. + +Once the script works according requirements the script can be saved using the toolbar button "Save as Macro" which will open the "Save Macro" window. + +![Macro Create infobox](~/content/assets/images/features/macros/macro_tutorial_create_infobox.png) + +The "Save Macro" window allows three options: +1. Macro Name: Give the Macro a name and use backslash "\" to create folder path for the macro (See below) +2. Provide a tooltip for the Macro to remember what it does in detail +3. Select a context where the Macro should be available. + +![Macro Save infobox](~/content/assets/images/features/macros/macro_tutorial_save_window.png) + +In the above example the Macro will be saved in a folder called Formatting\Beginner and the script is called "Format Numeric Measures". It will be saved in the context of measures. + +### Macro Context +Macros are saved in a "valid context" that determines which objects in the model the script can be applied to. + +This Macro can then be used when Right Clicking on a measure in the TOM Explorer. The context given while saving the Macro determines which objects will show the Macro when right clicking on that object. + +Tabular Editor will suggest a context based on the script that is being saved. + +![Macro Menu Shortcut](~/content/assets/images/features/macros/macro_tutorial_menu_shortcut.png) + +## Edit a Macro + +A macro can be opened by double clicking it in the Macro pane and after editing the C# script saved using _Ctrl + S_ or the Edit Macro button. + +![Macro Edit Infobox](~/content/assets/images/features/macros/macro_tutorial_edit_infobox.png) + + +## Macro JSON file + +Macros are stored in the %LocalAppFolder%/TabularEditor3 as a JSON file called MacroActions.json. For more information on file types in Tabular Editor please see [Supported File Types](xref:supported-files#macroactionsjson) + +## Macro file example + +An example of a MacroActions.JSON file can be found here. It contains several of the C# scripts from our script library: [Download example MacroActions File](https://raw.githubusercontent.com/TabularEditor/TabularEditorDocs/main/content/assets/file-types/MacroActions.json) + + diff --git a/content/te3/tutorials/data-security/data-security-about.md b/content/tutorials/data-security/data-security-about.md similarity index 99% rename from content/te3/tutorials/data-security/data-security-about.md rename to content/tutorials/data-security/data-security-about.md index fab2e5c..4731605 100644 --- a/content/te3/tutorials/data-security/data-security-about.md +++ b/content/tutorials/data-security/data-security-about.md @@ -4,10 +4,17 @@ title: What is Data Security? author: Kurt Buhler updated: 2023-03-02 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # What is Data Security? diff --git a/content/te3/tutorials/data-security/data-security-setup-ols.md b/content/tutorials/data-security/data-security-setup-ols.md similarity index 96% rename from content/te3/tutorials/data-security/data-security-setup-ols.md rename to content/tutorials/data-security/data-security-setup-ols.md index 8601dfe..2e53697 100644 --- a/content/te3/tutorials/data-security/data-security-setup-ols.md +++ b/content/tutorials/data-security/data-security-setup-ols.md @@ -4,10 +4,17 @@ title: Setup or Modify OLS author: Kurt Buhler updated: 2023-03-02 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Setup or Modify Object-Level Security (OLS) diff --git a/content/te3/tutorials/data-security/data-security-setup-rls.md b/content/tutorials/data-security/data-security-setup-rls.md similarity index 97% rename from content/te3/tutorials/data-security/data-security-setup-rls.md rename to content/tutorials/data-security/data-security-setup-rls.md index 1e3a80e..f565edd 100644 --- a/content/te3/tutorials/data-security/data-security-setup-rls.md +++ b/content/tutorials/data-security/data-security-setup-rls.md @@ -4,10 +4,17 @@ title: Setup or Modify RLS author: Kurt Buhler updated: 2023-03-14 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Configure Row-Level Security (RLS) diff --git a/content/te3/tutorials/data-security/data-security-testing.md b/content/tutorials/data-security/data-security-testing.md similarity index 95% rename from content/te3/tutorials/data-security/data-security-testing.md rename to content/tutorials/data-security/data-security-testing.md index 5aa2a73..1e96927 100644 --- a/content/te3/tutorials/data-security/data-security-testing.md +++ b/content/tutorials/data-security/data-security-testing.md @@ -4,11 +4,17 @@ title: Testing RLS/OLS author: Kurt Buhler updated: 2023-03-02 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Testing Data Security with Impersonation diff --git a/content/te3/tutorials/direct-lake-guidance.md b/content/tutorials/direct-lake-guidance.md similarity index 91% rename from content/te3/tutorials/direct-lake-guidance.md rename to content/tutorials/direct-lake-guidance.md index 7283850..2f73524 100644 --- a/content/te3/tutorials/direct-lake-guidance.md +++ b/content/tutorials/direct-lake-guidance.md @@ -4,12 +4,18 @@ title: Direct Lake Guidance author: Daniel Otykier updated: 2024-06-18 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - none: x - - edition: Enterprise + products: + - product: Tabular Editor 2 + partial: true + - product: Tabular Editor 3 + since: 3.22.0 + editions: + - edition: Desktop + none: true + - edition: Business + none: true + - edition: Enterprise + full: true --- # Direct Lake Guidance @@ -64,23 +70,23 @@ For a **Direct Lake on SQL** model, the collation is case-insensitive for querie To add Direct Lake tables using Tabular Editor 3's Table Import Wizard, choose **Microsoft Fabric Lakehouse**, **Microsoft Fabric Warehouse**, **Microsoft Fabric SQL Database** or **Microsoft Fabric Mirrored Database** as the source: -![Import Table Wizard Fabric](../../assets/images/import-table-wizard-fabric.png) +![Import Table Wizard Fabric](../assets/images/import-table-wizard-fabric.png) After signing in, you will be presented with a list of all available Fabric Lakehouses/Warehouses in workspaces you have access to. Select the one you want to connect to and hit **OK**: -![Import Table Wizard Select Lakehouse](../../assets/images/import-table-wizard-select-lakehouse.png) +![Import Table Wizard Select Lakehouse](../assets/images/import-table-wizard-select-lakehouse.png) Unless you want to specify a custom SQL query, or configure the tables for DirectQuery mode, simply hit **Next** to select the tables from a list of tables/views in the source: -![Import Table Wizard Select Vs Custom Query](../../assets/images/import-table-wizard-select-vs-custom-query.png) +![Import Table Wizard Select Vs Custom Query](../assets/images/import-table-wizard-select-vs-custom-query.png) Select the tables/views you wish to import. Note that **non-materialized views** are not supported in Direct Lake on OneLake mode. Attempting to add such a view to the model will result in an error upon saving the model metadata. -![Import Table Wizard Select Objects](../../assets/images/import-table-wizard-select-objects.png) +![Import Table Wizard Select Objects](../assets/images/import-table-wizard-select-objects.png) On the last page, choose which mode you want the table partition to be configured with: -![Table Import Wizard Partition Mode](../../assets/images/table-import-wizard-partition-mode.png) +![Table Import Wizard Partition Mode](../assets/images/table-import-wizard-partition-mode.png) The choices are: @@ -101,7 +107,7 @@ To manually set up a table for **Direct Lake on OneLake** mode, you need to do t 1. **Create Shared Expression**: Direct Lake tables use "Entity" partitions, which much reference a Shared Expression in the model. Start out by creating this shared expression, if you don't have it already. Name it `DatabaseQuery`: -![Create Shared Expression](../../assets/images/create-shared-expression.png) +![Create Shared Expression](../assets/images/create-shared-expression.png) 2. **Configure Shared Expression**: Set the **Kind** property of the expression you created in step 1 to "M", and set the *Expression** property to the following M query, replacing the IDs in the URL for your Fabric workspace and Lakehouse/Warehouse: @@ -114,7 +120,7 @@ in 3. **Create Table and Entity Partition**: Create a new table in the model (Alt+5), then expand the table partitions in the TOM Explorer, and create new *Entity Partition*: - ![Create Entity Partition](../../assets/images/create-entity-partition.png) + ![Create Entity Partition](../assets/images/create-entity-partition.png) Delete the regular import partition that was automatically created when you created the table. @@ -130,11 +136,11 @@ in The final result should look like this: -![Configure Entity Partition](../../assets/images/configure-entity-partition.png) +![Configure Entity Partition](../assets/images/configure-entity-partition.png) 5. **Update column metadata**: At this stage, you should be able to use Tabular Editor's **Update Table Schema** feature to update the column metadata for the table. This will automatically retrieve the column names and data types from the Lakehouse/Warehouse: -![Update Table Schema Entity](../../assets/images/update-table-schema-entity.png) +![Update Table Schema Entity](../assets/images/update-table-schema-entity.png) Alternatively, manually add Data Columns to the table (Alt+4) and specify the `Name`, `Data Type`, `Source Column` and any other relevant properties for each column. @@ -160,7 +166,7 @@ If you want to configure a table for **Import** mode while sourcing data from a 1. **Create table**: Create a new table in the model (Alt+5), then expand the table partitions in the TOM Explorer. By default, you should see a single partition of type "Import" created automatically: -![M Import Partition](../../assets/images/m-import-partition.png) +![M Import Partition](../assets/images/m-import-partition.png) 2. **Configure Import Partition**: Set the following M query on the Import Partition: diff --git a/content/tutorials/importing-tables.md b/content/tutorials/importing-tables.md new file mode 100644 index 0000000..ca1a157 --- /dev/null +++ b/content/tutorials/importing-tables.md @@ -0,0 +1,21 @@ +--- +uid: importing-tables +title: Importing Tables +author: Daniel Otykier +updated: 2021-09-06 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +# (Tutorial) Importing Tables + +[!include[importing-tables](~/content/features/import-tables.partial.md)] \ No newline at end of file diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-about.md b/content/tutorials/incremental-refresh/incremental-refresh-about.md similarity index 94% rename from content/te3/tutorials/incremental-refresh/incremental-refresh-about.md rename to content/tutorials/incremental-refresh/incremental-refresh-about.md index 5f9344f..87a1ac4 100644 --- a/content/te3/tutorials/incremental-refresh/incremental-refresh-about.md +++ b/content/tutorials/incremental-refresh/incremental-refresh-about.md @@ -4,15 +4,21 @@ title: What is a Refresh Policy? author: Kurt Buhler updated: 2023-01-09 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # What is a Refresh Policy? -![Incremental Refresh Visual Abstract](~/content/assets/images/incremental-refresh-header.png) +![Incremental Refresh Visual Abstract](~/content/assets/images/tutorials/incremental-refresh-header.png) --- @@ -120,7 +126,7 @@ A _Refresh Policy_ determines how the data is partitioned, and which of these Po ### Refresh Policy properties -Properties of Incremental Refresh +Properties of Incremental Refresh Four different kinds of properties make up a basic Refresh Policy: 1. __Incremental window__ __properties__: The period window wherein data is _kept up-to-date_. @@ -128,7 +134,7 @@ Four different kinds of properties make up a basic Refresh Policy: 3. __Source expressions__: Define table schema and Power Query transformations of the table. 4. __Mode__: Whether `Import` or `Hybrid` tables are used. -![Incremental Refresh Policy Windows](~/content/assets/images/incremental-refresh-policy-windows.png) +![Incremental Refresh Policy Windows](~/content/assets/images/tutorials/incremental-refresh-policy-windows.png) --- @@ -136,7 +142,7 @@ Four different kinds of properties make up a basic Refresh Policy: In Power BI Desktop, these properties are named differently. Below is an overview of how the properties match the Power BI Desktop user interface. -![Incremental Refresh Policy Windows Properties](~/content/assets/images/incremental-refresh-window-properties.png) +![Incremental Refresh Policy Windows Properties](~/content/assets/images/tutorials/incremental-refresh-window-properties.png) --- @@ -152,7 +158,7 @@ In the __*[hybrid](https://learn.microsoft.com/en-us This is configured with the Mode property when set to Hybrid. -![Incremental Refresh Policy Windows](~/content/assets/images/incremental-refresh-mode-pbi-match.png) +![Incremental Refresh Policy Windows](~/content/assets/images/tutorials/incremental-refresh-mode-pbi-match.png) # [Only Refresh Complete Periods](#tab/completeperiods) In this configuration, the policy range will not include the current period in the rolling window. @@ -161,7 +167,7 @@ In the standard configuration of Incremental Refresh, the current period is alwa This is configured with the IncrementalPeriodsOffset property. In the above example, a value of -1 for an IncrementalGranularity of Day will exclude the current date from the incremental window and thus the data scope; only complete days will be refreshed. -![Incremental Refresh Policy Windows](~/content/assets/images/incremental-refresh-period-offset-pbi-match.png) +![Incremental Refresh Policy Windows](~/content/assets/images/tutorials/incremental-refresh-period-offset-pbi-match.png) # [Detect Data Changes](#tab/datachanges) In this configuration, not all records are refreshed in the incremental window. Instead, records are only refreshed if they change. Detect data changes can further optimize refresh performance when using incremental refresh. To identify data changes you use a _Polling Expression_. A Polling Expression is a separate property that expects a valid M Expression to identify a maximum date from a list of dates. @@ -189,7 +195,7 @@ in accountForNu11 ``` -![Incremental Refresh Policy Windows](~/content/assets/images/incremental-refresh-detect-changes-pbi-match.png) +![Incremental Refresh Policy Windows](~/content/assets/images/tutorials/incremental-refresh-detect-changes-pbi-match.png) *** diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-modify.md b/content/tutorials/incremental-refresh/incremental-refresh-modify.md similarity index 89% rename from content/te3/tutorials/incremental-refresh/incremental-refresh-modify.md rename to content/tutorials/incremental-refresh/incremental-refresh-modify.md index 173ff60..0306805 100644 --- a/content/te3/tutorials/incremental-refresh/incremental-refresh-modify.md +++ b/content/tutorials/incremental-refresh/incremental-refresh-modify.md @@ -4,16 +4,22 @@ title: Modify an Existing Refresh Policy author: Kurt Buhler updated: 2023-01-09 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Modifying Incremental Refresh -![Incremental Refresh Visual Abstract](~/content/assets/images/incremental-refresh-modify-a-refresh-policy.png) +![Incremental Refresh Visual Abstract](~/content/assets/images/tutorials/incremental-refresh-modify-a-refresh-policy.png) --- @@ -35,17 +41,17 @@ Below is a general description of how you modify an existing Refresh Policy: 2. __Select the Table:__ Select the table already configured for Incremental Refresh. 3. __Find 'Refresh Policy' properties:__ In the _Properties_ window, go to the _Refresh Policy_ section. - Properties of Incremental Refresh + Properties of Incremental Refresh 4. __Change the property:__ Change the __Property__ specified in the below sections, depending on what you want to change. For an overview of all Refresh Policy properties and what they do, see [here](xref:incremental-refresh-about#overview-of-all-properties). 5. __Apply Changes:__ Deploy the model changes. 4. __Apply Refresh Policy:__ Right-click the table and select _Apply Refresh Policy_. - Apply Refresh Policy + Apply Refresh Policy 7. __Refresh all partitions:__ Shift-click to select all partitions. Right-click and select _Refresh > Full refresh (partition)_. You can right-click the table and select _'Preview data'_ to see the result. - Refresh All Partitions + Refresh All Partitions --- diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-schema.md b/content/tutorials/incremental-refresh/incremental-refresh-schema.md similarity index 91% rename from content/te3/tutorials/incremental-refresh/incremental-refresh-schema.md rename to content/tutorials/incremental-refresh/incremental-refresh-schema.md index 3619949..2cea45c 100644 --- a/content/te3/tutorials/incremental-refresh/incremental-refresh-schema.md +++ b/content/tutorials/incremental-refresh/incremental-refresh-schema.md @@ -4,16 +4,22 @@ title: Add or Remove Columns in a Table that uses Incremental Refresh author: Kurt Buhler updated: 2023-01-09 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Modifying Incremental Refresh Table Schemas -![Incremental Refresh Workspace Mode Visual Abstract](~/content/assets/images/incremental-refresh-update-schema-header.png) +![Incremental Refresh Workspace Mode Visual Abstract](~/content/assets/images/tutorials/incremental-refresh-update-schema-header.png) --- @@ -27,17 +33,17 @@ __When adding or removing columns from a table configured with Incremental Refre 1. __Detect schema changes:__ Right-click the table and select _'Update table schema...'_. - Update Table Schema + Update Table Schema 2. __Apply detected schema changes:__ In the _'Apply Schema Changes'_ dialogue, confirm the desired schema changes. 3. __Apply changes:__ Deploy the model changes. 4. __Apply Refresh Policy:__ Right-click the table and select _Apply Refresh Policy_. - Apply Refresh Policy + Apply Refresh Policy 5. __Refresh all partitions:__ Shift-click to select all partitions. Right-click and select _Refresh > Full refresh (partition)_. You can right-click the table and select _'Preview data'_ to see the result. - Refresh All Partitions + Refresh All Partitions --- diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-setup.md b/content/tutorials/incremental-refresh/incremental-refresh-setup.md similarity index 90% rename from content/te3/tutorials/incremental-refresh/incremental-refresh-setup.md rename to content/tutorials/incremental-refresh/incremental-refresh-setup.md index 2d58bc0..f6d8571 100644 --- a/content/te3/tutorials/incremental-refresh/incremental-refresh-setup.md +++ b/content/tutorials/incremental-refresh/incremental-refresh-setup.md @@ -4,15 +4,21 @@ title: Set Up a New Refresh Policy author: Kurt Buhler updated: 2023-01-09 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Setting up Incremental Refresh -![Incremental Refresh Setup Visual Abstract](~/content/assets/images/incremental-refresh-setup-refresh-policy.png) +![Incremental Refresh Setup Visual Abstract](~/content/assets/images/tutorials/incremental-refresh-setup-refresh-policy.png) --- @@ -47,7 +53,7 @@ To set up Incremental Refresh, you must configure a new Refresh Policy for the t 5. __Enable the Table Refresh Policy:__ In the _'Properties'_ window, set the `EnableRefreshPolicy` property on the table to `True`: -Apply Refresh Policy +Apply Refresh Policy 6. __Configure the Table Refresh:__ Next, select the table for which you want to configure incremental refresh. In the **Expression Editor** window, Select __'Source Expression'__ from the dropdown, insert your Power Query M Expression from step 4 and alter the Power Query M Expression such that there is a filter step on the date column for which you will enable incremental refresh. @@ -81,7 +87,7 @@ To set up Incremental Refresh, you must configure a new Refresh Policy for the t 8. __Apply Model Changes:__ Save your model (Ctrl+S). 9. __Apply Refresh Policy:__ Right-click on the table and choose "Apply Refresh Policy". -Apply Refresh Policy +Apply Refresh Policy __That's it!__ At this point, you should see that the Power BI service has automatically generated the partitions on your table, based on the policy you specified. All that's left is to refresh all the partitions. @@ -89,7 +95,7 @@ To set up Incremental Refresh, you must configure a new Refresh Policy for the t 10. __Refresh all partitions:__ Shift-click to select all partitions. Right-click and select _Refresh > Full refresh (partition)_. You can right-click the table and select _'Preview data'_ to see the result. - Refresh All Partitions + Refresh All Partitions Finally, you can configure the scheduled refresh in Power BI Service. Power BI will automatically handle the partitioning of your table. You can always connect to the remote model to view and validate the partitions, i.e. using the VertiPaq Analyzer. @@ -209,15 +215,15 @@ If you have configured a native query, it may still be possible to configure and 1. __Author and Save the Native Query:__ Write your native query in SQL Server Management Studio or Azure Data Studio. Include a placeholder `WHERE` clause which filters >= a DateTime parameter, and < another DateTime parameter. - Refresh All Partitions + Refresh All Partitionsincremental-refresh-native-query-formatted.png 2. __Replace the Native Query String in the Source Expression:__ Copy the query and replace the existing query, which will be full of characters like (lf) (line feed), (cr) (carraige return) and (n) (new line). Doing this makes the query actually readable and editable without resorting to the Native Query user interface of Power BI Desktop. -Refresh All Partitions +Refresh All Partitions Replace the above text in the `Query` parameter to the below, for example: -Refresh All Partitions +Refresh All Partitions 3. __Add `RangeStart` and `RangeEnd`:__ Concatenate "RangeStart" and "RangeEnd" inside of the `WHERE` clause, replacing the placeholder fields and converting the parameters to date with `Date.From` and to string data types using `Date.ToText` with the `Format` option set to `"yyyy-MM-dd`. Don't forget to include single quotes `'` on either side of the concatenation. Below is an example of what the final query would look like: diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md b/content/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md similarity index 83% rename from content/te3/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md rename to content/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md index 2b1f694..276d6fc 100644 --- a/content/te3/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md +++ b/content/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md @@ -4,14 +4,18 @@ title: Using Workspace Mode on a Model with Incremental Refresh author: Kurt Buhler updated: 2023-01-09 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise - versions: - - version: 2.X - - version: 3.4.2 and earlier + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + since: 3.4.2 and earlier + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # Workspace mode and incremental refresh @@ -22,7 +26,7 @@ applies_to: --- -![Incremental Refresh Workspace Mode Visual Abstract](~/content/assets/images/incremental-refresh-workspace-mode.png) +![Incremental Refresh Workspace Mode Visual Abstract](~/content/assets/images/tutorials/incremental-refresh-workspace-mode.png) --- @@ -37,13 +41,14 @@ Incremental Refresh creates new partitions upon the first scheduled refresh in a ### Workspace Mode is not Recommended The reason is because _Workspace Mode_ will overwrite the remote model metadata with local metadata files; any out-of-sync changes (like to Policy Range partitions) will be lost. When working with _Workspace Mode_ on these models, you would need to _Apply refresh policy_ for tables using incremental refresh before saving changes every day. - ![Workspace mode can get out of sync with local metadata.](~/content/assets/images/incremental-refresh-workspace-mode-out-of-sync.png) + ![Workspace mode can get out of sync with local metadata.](~/content/assets/images/tutorials/incremental-refresh-workspace-mode-out-of-sync.png) ### Recommendation: Develop & Deploy from Local Metadata __Instead, it is recommended to develop the model from the local metadata files.__ Changes can be deployed excluding partitions governed by a Refresh Policy, so there is no risk of overwriting the policies created by Power BI. A second read/refresh instance of Tabular Editor can be connected to the remote model for testing purposes. To deploy the model, go _Model > Deploy..._ which opens the Deployment Wizard. Here you can select whether you want to include partitions governed by Incremental Refresh policies: - ![Deploy partitions, avoiding partitions with refresh policies.](~/content/assets/images/incremental-refresh-deploy-partitions.png) + ![Deploy partitions, avoiding partitions with refresh policies.](~/content/assets/images/tutorials/incremental-refresh-deploy-partitions.png) + By deploying the model without these Policy Range partitions, you are mitigating any potential impact due to out-of-sync incremental refresh partitions between the metadata and remote model. \ No newline at end of file diff --git a/content/tutorials/index.md b/content/tutorials/index.md new file mode 100644 index 0000000..eff1a23 --- /dev/null +++ b/content/tutorials/index.md @@ -0,0 +1,22 @@ +# Tutorials + +This section contains comprehensive tutorials for learning Tabular Editor. + +## In this section + +- @calendars - Creating and managing calendar tables +- @connecting-to-azure-databricks - Database connectivity +- @creating-macros - Automation with macros +- @direct-lake-guidance - Working with Direct Lake models +- @powerbi-xmla - Editing through XMLA endpoint +- @importing-tables - Data import workflows +- @new-as-model - Creating AS models +- @new-pbi-model - Creating Power BI models +- @udfs - Creating custom functions +- @workspace-mode-wt - Collaborative development +- @data-security-about - Row-level and object-level security +- @incremental-refresh-about - Large dataset management + +--- + +*Navigate using the table of contents to find tutorials for your skill level.* \ No newline at end of file diff --git a/content/te3/tutorials/new-as-model.md b/content/tutorials/new-as-model.md similarity index 95% rename from content/te3/tutorials/new-as-model.md rename to content/tutorials/new-as-model.md index c25c8cf..6de11a0 100644 --- a/content/te3/tutorials/new-as-model.md +++ b/content/tutorials/new-as-model.md @@ -4,11 +4,18 @@ title: Create an Analysis Services Model author: Daniel Otykier updated: 2021-09-06 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + partial: true + note: "Limited to SQL Server Standard Edition" + - edition: Enterprise + full: true --- # (Tutorial) Creating your first Analysis Services Model @@ -27,6 +34,9 @@ This page walks you through the process of creating a new Analysis Services tabu - 1200 (Works with SQL Server 2016 or newer, and Azure Analysis Services) - 1400 (Works with SQL Server 2017 or newer, and Azure Analysis Services) - 1500 (Works with SQL Server 2019 or Azure Analysis Services) + - 1600 (Works with SQL Server 2022 or Azure Analysis Services) + - 1700 (Works with SQL Server 2025 or Azure Analysis Services) + - For the best development experience, check the "Use workspace database" option. This requires that you have an instance of Analysis Services available on which your workspace database will be deployed. This could be a local or a remote instance of SQL Server Analysis Services or it could be an instance of Azure Analysis Services. When you click OK, you will be prompted to enter the connection string for the Analysis Services instance in which you want the workspace database created. [Learn more about workspace databases](xref:workspace-mode). diff --git a/content/te3/tutorials/new-pbi-model.md b/content/tutorials/new-pbi-model.md similarity index 64% rename from content/te3/tutorials/new-pbi-model.md rename to content/tutorials/new-pbi-model.md index cf09cfe..485b4f8 100644 --- a/content/te3/tutorials/new-pbi-model.md +++ b/content/tutorials/new-pbi-model.md @@ -4,18 +4,25 @@ title: Create a Power BI Semantic Model author: Daniel Otykier updated: 2021-09-06 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + partial: true + note: "Premium Per User XMLA Endpoints Only" + - edition: Enterprise + full: true --- # (Tutorial) Creating your first Power BI semantic model This page walks you through the process of creating a new Power BI semantic model from scratch using Tabular Editor 3. > [!IMPORTANT] -> Tabular Editor 3 Business Edition is limited to [Power BI Premium Per User](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-per-user-faq). For Power BI Premium or Embedded capacity, you must upgrade to Tabular Editor 3 Enterprise Edition. In either case, the Power BI workspace in which the semantic model is to be deployed, must have its [XMLA read/write endpoint enabled](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-connect-tools#enable-xmla-read-write). +> Tabular Editor 3 Business Edition is limited to [Power BI Premium Per User](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-per-user-faq). For Fabric/Power BI Premium or Embedded capacity, you must upgrade to Tabular Editor 3 Enterprise Edition. In either case, the Power BI workspace in which the semantic model is to be deployed, must have its [XMLA read/write endpoint enabled](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-connect-tools#enable-xmla-read-write). > > Tabular Editor 3 Desktop Edition does not have any support for Power BI semantic models. > @@ -25,7 +32,7 @@ This page walks you through the process of creating a new Power BI semantic mode 1. From the File menu, choose New > Model... or hit `CTRL+N` -![New model](~/content/assets/images/new-pbi-model.png) +![New model](~/content/assets/images/tutorials/new-pbi-model.png) - Provide a name for your model or use the default value. Then, set the compatibility level to "1609 (Power BI / Fabric)". - For the best development experience, check the "Use workspace database" option. This requires that you have a development workspace available in Power BI, with XMLA read/write enabled. When you click OK, you will be prompted to enter the connection string for the Power BI workspace in which you want the workspace database created. diff --git a/content/te3/powerbi-xmla.md b/content/tutorials/powerbi-xmla.md similarity index 83% rename from content/te3/powerbi-xmla.md rename to content/tutorials/powerbi-xmla.md index 9833fb9..038d45f 100644 --- a/content/te3/powerbi-xmla.md +++ b/content/tutorials/powerbi-xmla.md @@ -4,12 +4,18 @@ title: Editing through XMLA endpoint author: Daniel Otykier updated: 2021-10-01 applies_to: - editions: - - edition: Desktop - none: x - - edition: Business - partial: Tabular Editor 3 Business Edition only allows connecting to the XMLA endpoint of Premium-Per-User (PPU) workspaces. - - edition: Enterprise + products: + - product: Tabular Editor 2 + full: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + partial: true + note: Premium Per User XMLA Endpoints Only + - edition: Enterprise + full: true --- # Editing a Power BI dataset through the XMLA endpoint @@ -29,9 +35,6 @@ Tabular Editor requires the XMLA endpoint to allow both read/write access. This When connecting to a dataset through the XMLA endpoint, all data modeling operations supported by the [Tabular Object Model (TOM)](https://docs.microsoft.com/en-us/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions) are available for editing. In other words, the [Power BI Desktop Limitations](xref:desktop-limitations) do not apply when editing a dataset through the XMLA endpoint of the Power BI Service. -> [!WARNING] -> Once a change is made to a Power BI dataset through the XMLA endpoint, it will not be possible to download the dataset as a .pbix file. [More information](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-connect-tools#power-bi-desktop-authored-datasets). -> Please see [Creating PBIX File from XMLA Endoint](xref:powerbi-xmla-pbix-workaround) for a workaround ## Workflow diff --git a/content/tutorials/toc.md b/content/tutorials/toc.md new file mode 100644 index 0000000..5e5849d --- /dev/null +++ b/content/tutorials/toc.md @@ -0,0 +1,33 @@ +# Create a New Model +## @new-as-model +## @new-pbi-model +## @direct-lake-guidance + +# Connect to a Model +## @powerbi-xmla +## @workspace-mode + +# Adding Tables & Data Sources +## @importing-tables +## @connecting-to-azure-databricks + +# Configuring Data Security +## @data-security-about +## @data-security-setup-rls +## @data-security-setup-ols +## @data-security-testing + +# Incremental Refresh +## @incremental-refresh-about +## @incremental-refresh-modify +## @incremental-refresh-setup +## @incremental-refresh-schema +## @incremental-refresh-workspace-mode + +# Advanced Modelling +## @udfs +## @calendars + +# Automation with C# Scripting +## @creating-macros +## @csharp-script-library diff --git a/content/te3/tutorials/udfs.md b/content/tutorials/udfs.md similarity index 93% rename from content/te3/tutorials/udfs.md rename to content/tutorials/udfs.md index 963d555..1f1002c 100644 --- a/content/te3/tutorials/udfs.md +++ b/content/tutorials/udfs.md @@ -4,10 +4,18 @@ title: DAX User-Defined Functions author: Daniel Otykier updated: 2025-09-15 applies_to: - editions: - - edition: Desktop - - edition: Business - - edition: Enterprise + products: + - product: Tabular Editor 2 + partial: true + - product: Tabular Editor 3 + since: 3.23.0 + editions: + - edition: Desktop + full: true + - edition: Business + full: true + - edition: Enterprise + full: true --- # DAX User-Defined Functions @@ -39,10 +47,10 @@ First, verify your model's compatibility level is appropriate for UDFs: 1. Open your model in Tabular Editor 3 2. Select the root node ("Model") in the **TOM Explorer** -2. In the **Properties** panel, expand the **Database** property, then check that the **Compatibility Level** is set to **1702** or higher -3. If needed, update the compatibility level and save your model +3. In the **Properties** panel, expand the **Database** property, then check that the **Compatibility Level** is set to **1702** or higher +4. If needed, update the compatibility level and save your model -![Setting Compatibility Level](~/content/assets/images/udfs-cl1702.png) +![Setting Compatibility Level](~/content/assets/images/tutorials/udfs-cl1702.png) ### Step 2: Add a New Function @@ -51,13 +59,13 @@ First, verify your model's compatibility level is appropriate for UDFs: 3. Select **Create > User-Defined Function** 4. Give your function a descriptive name (spaces and special characters are not allowed; underscores and periods are permitted) -![Creating a UDF](~/content/assets/images/new-udf.png) +![Creating a UDF](~/content/assets/images/tutorials/new-udf.png) You can also add a UDFs through the **Model > Add User-Defined Function** menu option. Alternatively, you can create UDFs directly from the **DEFINE** section of a DAX query, by hitting F7 (Apply) or using the **Query > Apply** menu option. If your query contains multiple query-scoped definitions, you can also select just a subset of them and hit F8 (Apply Selection). -![Creating a UDF from DAX Query](~/content/assets/images/udf-from-query.png) +![Creating a UDF from DAX Query](~/content/assets/images/tutorials/udf-from-query.png) ### Step 3: Define Your Function @@ -118,7 +126,7 @@ ROW( Calling the above function with a measure reference for each parameter, e.g. `MyFunction([Some Measure], [Some Measure])`, will yield different results for the `y` parameter depending on the current filter context, as shown in the screenshot below: -![Pass-by-value vs Pass-by-reference](~/content/assets/images/udf-pass-by-ref.png) +![Pass-by-value vs Pass-by-reference](~/content/assets/images/tutorials/udf-pass-by-ref.png) In addition to specifying the evaluation mode, you can also constrain the parameter type by specifying a data type before the evaluation mode, e.g. `x: INT64 VAL` or `y: TABLE EXPR`. @@ -154,7 +162,7 @@ MEASURE 'Date'[New Measure] = MyFuncRenamed(1,2) Tabular Editor 3 adds powerful new features for working with UDFs in DAX queries. We already mentioned above how you can "apply" a UDF from the **DEFINE** section of a DAX query, to have it become a permanent part of your model. In addition, if using a UDF inside a DAX query, you can right-click on the function invocation and choose **Define Function** to automatically generate the function definition in the **DEFINE** section of your query: -![Define Function from Query](~/content/assets/images/udf-define.png) +![Define Function from Query](~/content/assets/images/tutorials/udf-define.png) As can be seen from the screen above, the following options are available when right-clicking on a UDF invocation: @@ -180,7 +188,7 @@ When you rename a UDF, Tabular Editor 3 automatically updates all references thr The **Peek Definition** feature works with UDFs, allowing you to quickly view the function's implementation without navigating away from your current context. -![Peek Definition for UDFs](~/content/assets/images/udf-peek-definition.png) +![Peek Definition for UDFs](~/content/assets/images/tutorials/udf-peek-definition.png) ### Dependencies View @@ -227,7 +235,7 @@ In Tabular Editor, UDFs also have a "Namespace" *property*, allowing you to cust Tabular Editor 3 automatically picks up any comments and displays them appropriately in autocomplete suggestions and tooltips. -![UDF Autocomplete with Comments](~/content/assets/images/udf-comment-tooltips.png) +![UDF Autocomplete with Comments](~/content/assets/images/tutorials/udf-comment-tooltips.png) ## Common Use Cases diff --git a/content/tutorials/workspace-mode.md b/content/tutorials/workspace-mode.md new file mode 100644 index 0000000..ec8fad8 --- /dev/null +++ b/content/tutorials/workspace-mode.md @@ -0,0 +1,21 @@ +--- +uid: workspace-mode-wt +title: Workspace Mode +author: Daniel Otykier +updated: 2021-09-06 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + partial: true + note: Premium Per User XMLA Endpoints Only + - edition: Enterprise + full: true +--- +# (Walkthrough) Workspace Mode +[!include[workspace-mode](../features/workspace-mode.partial.md)] \ No newline at end of file diff --git a/content/whats-new/index.html b/content/whats-new/index.html index ea48366..8516fc0 100644 --- a/content/whats-new/index.html +++ b/content/whats-new/index.html @@ -138,4 +138,4 @@

The Tabular Editor Team will be at the following conferences:

} - + \ No newline at end of file diff --git a/docfx.json b/docfx-template.json similarity index 62% rename from docfx.json rename to docfx-template.json index 932dae2..4030595 100644 --- a/docfx.json +++ b/docfx-template.json @@ -1,4 +1,8 @@ { + "rules": { + "InvalidAssemblyReference": "Suggestion", + "EmptyTocItemName": "Suggestion" + }, "metadata": [ { "src": [ @@ -14,11 +18,14 @@ ], "build": { "content": [ - { "files": "**/*.md", "src": "content/te3", "dest": "te3" }, - { "files": "**/*.md", "src": "content/te2", "dest": "te2" }, - { "files": "**/*.md", "src": "content/onboarding", "dest": "onboarding" }, - { "files": "**/*.md", "src": "content/common", "dest": "common" }, + { "files": "**/*.md", "src": "content/features", "dest": "features" }, + { "files": "**/*.md", "src": "content/getting-started", "dest": "getting-started" }, + { "files": "**/*.md", "src": "content/how-tos", "dest": "how-tos" }, + { "files": "**/*.md", "src": "content/references", "dest": "references" }, { "files": "**/*.md", "src": "content/kb", "dest": "kb" }, + { "files": "**/*.md", "src": "content/security", "dest": "security" }, + { "files": "**/*.md", "src": "content/troubleshooting", "dest": "troubleshooting" }, + { "files": "**/*.md", "src": "content/tutorials", "dest": "tutorials" }, { "files": "*.md", "src": "content" }, { "files": "toc.yml", "src": "content" }, { "files": "*", "src": "content/api", "dest": "api" } @@ -29,9 +36,8 @@ ], "resource": [ { "files": "**", "src": "content/assets/images", "dest": "images" }, - { "files": "features/images/**", "src": "content/te3", "dest": "te3" }, { "files": "**", "src": "content/whats-new", "dest": "whats-new" }, - { "files": "*.html", "src": "content" } + { "files": "*.html", "src": "content" } ], "globalMetadata": { "_appTitle": "Tabular Editor Documentation", diff --git a/gen_redirects.py b/gen_redirects.py new file mode 100644 index 0000000..f3fc860 --- /dev/null +++ b/gen_redirects.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import json +import os +import posixpath +import sys +import traceback + +def main(args: list[str]) -> int: + config_input_path = "docfx-template.json" + config_output_path = "docfx.json" + redirects_path = "redirects.json" + + with open(config_input_path) as f: + config = json.load(f) + + with open(redirects_path) as f: + data : dict[str, str] = json.load(f) + + dirs = dict[str, list[str]]() + for key, value in data.items(): + dir = posixpath.dirname(key) + if dir in dirs: + dirs[dir].append(key) + else: + dirs[dir] = [key] + content: list[Any] = config["build"]["content"] + content.append({"files": posixpath.relpath(key, "content"), "src": "content"}) + os.makedirs(dir, exist_ok=True) + with open(key, mode="w", encoding="utf-8") as f: + f.write(f"""--- +redirect_url: {value} +--- +""") + + for dir, files in dirs.items(): + with open(posixpath.join(dir, ".gitignore"), "w") as f: + f.writelines("/" + posixpath.basename(file) + "\n" for file in files) + f.write("/.gitignore\n") + + with open(config_output_path, "w") as f: + json.dump(config, f, indent=4) + + return 0 + + +if __name__ == "__main__": + import sys + try: + sys.exit(main(sys.argv[1:])) + except Exception as ex: + traceback.print_exception(ex, file=sys.stderr) + sys.exit(1) diff --git a/redirects.json b/redirects.json new file mode 100644 index 0000000..5e83443 --- /dev/null +++ b/redirects.json @@ -0,0 +1,209 @@ +{ + "content/common/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.md": "/features/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.html", + "content/common/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.md": "/features/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.html", + "content/common/CSharpScripts/Advanced/script-convert-import-to-dlol.md": "/features/CSharpScripts/Advanced/script-convert-import-to-dlol.html", + "content/common/CSharpScripts/Advanced/script-count-things.md": "/features/CSharpScripts/Advanced/script-count-things.html", + "content/common/CSharpScripts/Advanced/script-create-and-replace-M-parameter.md": "/features/CSharpScripts/Advanced/script-create-and-replace-M-parameter.html", + "content/common/CSharpScripts/Advanced/script-create-databricks-relationships.md": "/features/CSharpScripts/Advanced/script-create-databricks-relationships.html", + "content/common/CSharpScripts/Advanced/script-create-date-table.md": "/features/CSharpScripts/Advanced/script-create-date-table.html", + "content/common/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.md": "/features/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.html", + "content/common/CSharpScripts/Advanced/script-find-replace-selected-measures.md": "/features/CSharpScripts/Advanced/script-find-replace-selected-measures.html", + "content/common/CSharpScripts/Advanced/script-format-power-query.md": "/features/CSharpScripts/Advanced/script-format-power-query.html", + "content/common/CSharpScripts/Advanced/script-implement-incremental-refresh.md": "/features/CSharpScripts/Advanced/script-implement-incremental-refresh.html", + "content/common/CSharpScripts/Advanced/script-output-things.md": "/features/CSharpScripts/Advanced/script-output-things.html", + "content/common/CSharpScripts/Advanced/script-remove-measures-with-error.md": "/features/CSharpScripts/Advanced/script-remove-measures-with-error.html", + "content/common/CSharpScripts/Beginner/script-count-rows.md": "/features/CSharpScripts/Beginner/script-count-rows.html", + "content/common/CSharpScripts/Beginner/script-create-field-parameter.md": "/features/CSharpScripts/Beginner/script-create-field-parameter.html", + "content/common/CSharpScripts/Beginner/script-create-m-parameter.md": "/features/CSharpScripts/Beginner/script-create-m-parameter.html", + "content/common/CSharpScripts/Beginner/script-create-measure-table.md": "/features/CSharpScripts/Beginner/script-create-measure-table.html", + "content/common/CSharpScripts/Beginner/script-create-sum-measures-from-columns.md": "/features/CSharpScripts/Beginner/script-create-sum-measures-from-columns.html", + "content/common/CSharpScripts/Beginner/script-create-table-groups.md": "/features/CSharpScripts/Beginner/script-create-table-groups.html", + "content/common/CSharpScripts/Beginner/script-display-unique-column-values.md": "/features/CSharpScripts/Beginner/script-display-unique-column-values.html", + "content/common/CSharpScripts/Beginner/script-edit-hidden-partitions.md": "/features/CSharpScripts/Beginner/script-edit-hidden-partitions.html", + "content/common/CSharpScripts/Beginner/script-format-numeric-measures.md": "/features/CSharpScripts/Beginner/script-format-numeric-measures.html", + "content/common/CSharpScripts/Beginner/script-show-data-source-dependencies.md": "/features/CSharpScripts/Beginner/script-show-data-source-dependencies.html", + "content/common/CSharpScripts/Template/csharp-script-Template.md": "/features/CSharpScripts/Template/csharp-script-Template.html", + "content/common/CSharpScripts/csharp-script-library-advanced.md": "/features/CSharpScripts/csharp-script-library-advanced.html", + "content/common/CSharpScripts/csharp-script-library-beginner.md": "/features/CSharpScripts/csharp-script-library-beginner.html", + "content/common/CSharpScripts/csharp-script-library.md": "/features/CSharpScripts/csharp-script-library.html", + "content/common/Semantic Model/direct-lake-sql-model.md": "/features/Semantic Model/direct-lake-sql-model.html", + "content/common/Semantic Model/direct-query-over-as.md": "/features/Semantic Model/direct-query-over-as.html", + "content/common/Semantic Model/semantic-model-types.md": "/features/Semantic Model/semantic-model-types.html", + "content/common/desktop-limitations.md": "/getting-started/desktop-limitations.html", + "content/common/policies.md": "/references/policies.html", + "content/common/save-to-folder.md": "/features/save-to-folder.html", + "content/common/script-helper-methods.md": "/features/script-helper-methods.html", + "content/common/using-bpa-sample-rules-expressions.md": "/features/using-bpa-sample-rules-expressions.html", + "content/common/xmla-as-connectivity.md": "/how-tos/xmla-as-connectivity.html", + "content/onboarding/as-cicd.md": "/todo/as-cicd.html", + "content/onboarding/boosting-productivity-te3.md": "/getting-started/boosting-productivity-te3.html", + "content/onboarding/bpa.md": "/getting-started/bpa.html", + "content/onboarding/creating-and-testing-dax.md": "/getting-started/creating-and-testing-dax.html", + "content/onboarding/cs-scripts-and-macros.md": "/getting-started/cs-scripts-and-macros.html", + "content/onboarding/dax-script-introduction.md": "/getting-started/dax-script-introduction.html", + "content/onboarding/general-introduction.md": "/getting-started/general-introduction.html", + "content/onboarding/importing-tables-data-modeling.md": "/getting-started/importing-tables-data-modeling.html", + "content/onboarding/index.md": "/getting-started/index.html", + "content/onboarding/installation.md": "/getting-started/installation.html", + "content/onboarding/migrate-from-desktop.md": "/getting-started/migrate-from-desktop.html", + "content/onboarding/migrate-from-te2.md": "/getting-started/migrate-from-te2.html", + "content/onboarding/migrate-from-vs.md": "/getting-started/migrate-from-vs.html", + "content/onboarding/parallel-development.md": "/getting-started/parallel-development.html", + "content/onboarding/personalizing-te3.md": "/getting-started/personalizing-te3.html", + "content/onboarding/powerbi-cicd.md": "/todo/powerbi-cicd.html", + "content/onboarding/refresh-preview-query.md": "/getting-started/refresh-preview-query.html", + "content/te2/Advanced-Filtering-of-the-Explorer-Tree.md": "/how-tos/Advanced-Filtering-of-the-Explorer-Tree.html", + "content/te2/Advanced-Scripting.md": "/how-tos/Advanced-Scripting.html", + "content/te2/Best-Practice-Analyzer-Improvements.md": "/features/Best-Practice-Analyzer.html", + "content/te2/Command-line-Options.md": "/features/Command-line-Options.html", + "content/te2/Custom-Actions.md": "/features/Custom-Actions-hidden.html", + "content/te2/FAQ.md": "/references/FAQ.html", + "content/te2/FormatDax.md": "/references/FormatDax.html", + "content/te2/Getting-Started.md": "/getting-started/Getting-Started-te2.html", + "content/te2/Importing-Tables.md": "/how-tos/Importing-Tables.html", + "content/te2/Keyboard-Shortcuts.md": "/references/Keyboard-Shortcuts2.html", + "content/te2/Maintaining-Calculations-using-Scripting.md": "/todo/Maintaining-Calculations-using-Scripting.html", + "content/te2/Master-model-pattern.md": "/how-tos/Master-model-pattern.html", + "content/te2/Roadmap.md": "/references/Roadmap2-h.html", + "content/te2/SQL-Server-2017-support.md": "/references/SQL-Server-2017-support-h.html", + "content/te2/TabularEditor.TOMWrapper.md": "/references/TabularEditor.TOMWrapper-h.html", + "content/te2/Useful-script-snippets.md": "/features/Useful-script-snippets.html", + "content/te2/Workspace-Database.md": "/features/Workspace-Database.html", + "content/te2/gdpr-delete.md": "/security/gdpr-delete.html", + "content/te2/importing-tables-from-excel.md": "/how-tos/importing-tables-from-excel.html", + "content/te2/incremental-refresh.md": "/how-tos/incremental-refresh2-h.html", + "content/te3/azure-marketplace.md": "/getting-started/azure-marketplace.html", + "content/te3/editions.md": "/getting-started/editions.html", + "content/te3/features/code-actions.md": "/features/code-actions.html", + "content/te3/features/csharp-scripts.md": "/features/csharp-scripts.html", + "content/te3/features/dax-debugger.md": "/features/dax-debugger.html", + "content/te3/features/dax-editor.md": "/features/dax-editor.html", + "content/te3/features/dax-optimizer-integration.md": "/features/dax-optimizer-integration.html", + "content/te3/features/dax-package-manager.md": "/features/dax-package-manager.html", + "content/te3/features/dax-query.md": "/features/dax-query.html", + "content/te3/features/dax-scripts.md": "/features/dax-scripts.html", + "content/te3/features/deployment.md": "/features/deployment.html", + "content/te3/features/diagram-view.md": "/features/views/diagram-view.html", + "content/te3/features/metadata-translation-editor.md": "/features/metadata-translation-editor.html", + "content/te3/features/perspective-editor.md": "/features/perspective-editor.html", + "content/te3/features/pivot-grid.md": "/features/pivot-grid.html", + "content/te3/features/preferences.md": "/references/preferences.html", + "content/te3/features/security-privacy.md": "/security/security-privacy.html", + "content/te3/features/shortcuts.md": "/references/shortcuts3.html", + "content/te3/features/supported-files.md": "/references/supported-files.html", + "content/te3/features/table-groups.md": "/features/table-groups.html", + "content/te3/features/tmdl.md": "/features/tmdl.html", + "content/te3/features/user-options.md": "/references/user-options.html", + "content/te3/getting-started.md": "/getting-started/getting-started.html", + "content/te3/import-tables.partial.md": "/features/import-tables.partial.html", + "content/te3/index.md": "/troubleshooting/licensing-activation.html", + "content/te3/other/downloads.md": "/references/downloads.html", + "content/te3/other/privacy-policy.md": "/security/privacy-policy.html", + "content/te3/other/release-history.md": "/references/release-history.html", + "content/te3/other/release-notes/3_0_1.md": "/references/release-notes/3_0_1.html", + "content/te3/other/release-notes/3_0_10.md": "/references/release-notes/3_0_10.html", + "content/te3/other/release-notes/3_0_2.md": "/references/release-notes/3_0_2.html", + "content/te3/other/release-notes/3_0_3.md": "/references/release-notes/3_0_3.html", + "content/te3/other/release-notes/3_0_4.md": "/references/release-notes/3_0_4.html", + "content/te3/other/release-notes/3_0_5.md": "/references/release-notes/3_0_5.html", + "content/te3/other/release-notes/3_0_6.md": "/references/release-notes/3_0_6.html", + "content/te3/other/release-notes/3_0_7.md": "/references/release-notes/3_0_7.html", + "content/te3/other/release-notes/3_0_8.md": "/references/release-notes/3_0_8.html", + "content/te3/other/release-notes/3_0_9.md": "/references/release-notes/3_0_9.html", + "content/te3/other/release-notes/3_10_0.md": "/references/release-notes/3_10_0.html", + "content/te3/other/release-notes/3_10_1.md": "/references/release-notes/3_10_1.html", + "content/te3/other/release-notes/3_11_0.md": "/references/release-notes/3_11_0.html", + "content/te3/other/release-notes/3_12_0.md": "/references/release-notes/3_12_0.html", + "content/te3/other/release-notes/3_12_1.md": "/references/release-notes/3_12_1.html", + "content/te3/other/release-notes/3_13_0.md": "/references/release-notes/3_13_0.html", + "content/te3/other/release-notes/3_14_0.md": "/references/release-notes/3_14_0.html", + "content/te3/other/release-notes/3_15_0.md": "/references/release-notes/3_15_0.html", + "content/te3/other/release-notes/3_16_0.md": "/references/release-notes/3_16_0.html", + "content/te3/other/release-notes/3_16_1.md": "/references/release-notes/3_16_1.html", + "content/te3/other/release-notes/3_16_2.md": "/references/release-notes/3_16_2.html", + "content/te3/other/release-notes/3_17_0.md": "/references/release-notes/3_17_0.html", + "content/te3/other/release-notes/3_17_1.md": "/references/release-notes/3_17_1.html", + "content/te3/other/release-notes/3_18_0.md": "/references/release-notes/3_18_0.html", + "content/te3/other/release-notes/3_18_1.md": "/references/release-notes/3_18_1.html", + "content/te3/other/release-notes/3_18_2.md": "/references/release-notes/3_18_2.html", + "content/te3/other/release-notes/3_19_0.md": "/references/release-notes/3_19_0.html", + "content/te3/other/release-notes/3_1_0.md": "/references/release-notes/3_1_0.html", + "content/te3/other/release-notes/3_1_1.md": "/references/release-notes/3_1_1.html", + "content/te3/other/release-notes/3_1_2.md": "/references/release-notes/3_1_2.html", + "content/te3/other/release-notes/3_1_3.md": "/references/release-notes/3_1_3.html", + "content/te3/other/release-notes/3_1_4.md": "/references/release-notes/3_1_4.html", + "content/te3/other/release-notes/3_1_5.md": "/references/release-notes/3_1_5.html", + "content/te3/other/release-notes/3_1_6.md": "/references/release-notes/3_1_6.html", + "content/te3/other/release-notes/3_1_7.md": "/references/release-notes/3_1_7.html", + "content/te3/other/release-notes/3_20_0.md": "/references/release-notes/3_20_0.html", + "content/te3/other/release-notes/3_20_1.md": "/references/release-notes/3_20_1.html", + "content/te3/other/release-notes/3_21_0.md": "/references/release-notes/3_21_0.html", + "content/te3/other/release-notes/3_22_0.md": "/references/release-notes/3_22_0.html", + "content/te3/other/release-notes/3_22_1.md": "/references/release-notes/3_22_1.html", + "content/te3/other/release-notes/3_23_0.md": "/references/release-notes/3_23_0.html", + "content/te3/other/release-notes/3_23_1.md": "/references/release-notes/3_23_1.html", + "content/te3/other/release-notes/3_24_0.md": "/references/release-notes/3_24_0.html", + "content/te3/other/release-notes/3_24_1.md": "/references/release-notes/3_24_1.html", + "content/te3/other/release-notes/3_24_2.md": "/references/release-notes/3_24_2.html", + "content/te3/other/release-notes/3_2_0.md": "/references/release-notes/3_2_0.html", + "content/te3/other/release-notes/3_2_1.md": "/references/release-notes/3_2_1.html", + "content/te3/other/release-notes/3_2_2.md": "/references/release-notes/3_2_2.html", + "content/te3/other/release-notes/3_2_3.md": "/references/release-notes/3_2_3.html", + "content/te3/other/release-notes/3_3_0.md": "/references/release-notes/3_3_0.html", + "content/te3/other/release-notes/3_3_1.md": "/references/release-notes/3_3_1.html", + "content/te3/other/release-notes/3_3_2.md": "/references/release-notes/3_3_2.html", + "content/te3/other/release-notes/3_3_3.md": "/references/release-notes/3_3_3.html", + "content/te3/other/release-notes/3_3_4.md": "/references/release-notes/3_3_4.html", + "content/te3/other/release-notes/3_3_5.md": "/references/release-notes/3_3_5.html", + "content/te3/other/release-notes/3_3_6.md": "/references/release-notes/3_3_6.html", + "content/te3/other/release-notes/3_4_0.md": "/references/release-notes/3_4_0.html", + "content/te3/other/release-notes/3_4_1.md": "/references/release-notes/3_4_1.html", + "content/te3/other/release-notes/3_4_2.md": "/references/release-notes/3_4_2.html", + "content/te3/other/release-notes/3_5_0.md": "/references/release-notes/3_5_0.html", + "content/te3/other/release-notes/3_5_1.md": "/references/release-notes/3_5_1.html", + "content/te3/other/release-notes/3_6_0.md": "/references/release-notes/3_6_0.html", + "content/te3/other/release-notes/3_7_0.md": "/references/release-notes/3_7_0.html", + "content/te3/other/release-notes/3_7_1.md": "/references/release-notes/3_7_1.html", + "content/te3/other/release-notes/3_8_0.md": "/references/release-notes/3_8_0.html", + "content/te3/other/release-notes/3_9_0.md": "/references/release-notes/3_9_0.html", + "content/te3/other/release-notes/beta-16_6.md": "/references/release-notes/beta-16_6.html", + "content/te3/other/release-notes/beta-17_4.md": "/references/release-notes/beta-17_4.html", + "content/te3/other/release-notes/beta-18_1.md": "/references/release-notes/beta-18_1.html", + "content/te3/other/release-notes/beta-18_2.md": "/references/release-notes/beta-18_2.html", + "content/te3/other/release-notes/beta-18_3.md": "/references/release-notes/beta-18_3.html", + "content/te3/other/release-notes/beta-18_4.md": "/references/release-notes/beta-18_4.html", + "content/te3/other/release-notes/beta-18_5.md": "/references/release-notes/beta-18_5.html", + "content/te3/other/roadmap.md": "/references/roadmap.html", + "content/te3/other/third-party-notices.md": "/security/third-party-notices.html", + "content/te3/powerbi-xmla-pbix-workaround.md": "/how-tos/powerbi-xmla-pbix-workaround.html", + "content/te3/powerbi-xmla.md": "/tutorials/powerbi-xmla.html", + "content/te3/proxy-settings.md": "/troubleshooting/proxy-settings.html", + "content/te3/troubleshooting/calendar-blank-value.md": "/troubleshooting/calendar-blank-value.html", + "content/te3/troubleshooting/direct-lake-entity-updates-reverting.md": "/troubleshooting/direct-lake-entity-updates-reverting.html", + "content/te3/troubleshooting/locale-not-supported.md": "/troubleshooting/locale-not-supported.html", + "content/te3/tutorials/calendars.md": "/tutorials/calendars.html", + "content/te3/tutorials/connecting-to-azure-databricks.md": "/tutorials/connecting-to-azure-databricks.html", + "content/te3/tutorials/creating-macros.md": "/features/creating-macros.html", + "content/te3/tutorials/data-security/data-security-about.md": "/tutorials/data-security/data-security-about.html", + "content/te3/tutorials/data-security/data-security-setup-ols.md": "/tutorials/data-security/data-security-setup-ols.html", + "content/te3/tutorials/data-security/data-security-setup-rls.md": "/tutorials/data-security/data-security-setup-rls.html", + "content/te3/tutorials/data-security/data-security-testing.md": "/tutorials/data-security/data-security-testing.html", + "content/te3/tutorials/direct-lake-guidance.md": "/tutorials/direct-lake-guidance.html", + "content/te3/tutorials/incremental-refresh/incremental-refresh-about.md": "/tutorials/incremental-refresh/incremental-refresh-about.html", + "content/te3/tutorials/incremental-refresh/incremental-refresh-modify.md": "/tutorials/incremental-refresh/incremental-refresh-modify.html", + "content/te3/tutorials/incremental-refresh/incremental-refresh-schema.md": "/tutorials/incremental-refresh/incremental-refresh-schema.html", + "content/te3/tutorials/incremental-refresh/incremental-refresh-setup.md": "/tutorials/incremental-refresh/incremental-refresh-setup.html", + "content/te3/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md": "/tutorials/incremental-refresh/incremental-refresh-workspace-mode.html", + "content/te3/tutorials/new-as-model.md": "/tutorials/new-as-model.html", + "content/te3/tutorials/new-pbi-model.md": "/tutorials/new-pbi-model.html", + "content/te3/tutorials/udfs.md": "/tutorials/udfs.html", + "content/te3/views/data-refresh-view.md": "/features/views/data-refresh-view.html", + "content/te3/views/find-replace.md": "/features/views/find-replace.html", + "content/te3/views/macros-view.md": "/features/views/macros-view.html", + "content/te3/views/messages-view.md": "/features/views/messages-view.html", + "content/te3/views/properties-view.md": "/features/views/properties-view.html", + "content/te3/views/tom-explorer-view.md": "/features/views/tom-explorer-view.html", + "content/te3/views/user-interface.md": "/features/views/user-interface.html", + "content/te3/whats-new.md": "/references/whats-new.html", + "content/te3/workspace-mode.partial.md": "/features/workspace-mode.partial.html" +} diff --git a/templates/tabulareditor/ManagedReference.extension.js b/templates/tabulareditor/ManagedReference.extension.js index f389e95..3f2e1eb 100644 --- a/templates/tabulareditor/ManagedReference.extension.js +++ b/templates/tabulareditor/ManagedReference.extension.js @@ -114,4 +114,4 @@ exports.preTransform = function (model) { ] } return model; -} +} \ No newline at end of file diff --git a/templates/tabulareditor/conceptual.html.primary.js b/templates/tabulareditor/conceptual.html.primary.js index 9db16f6..4984d8e 100644 --- a/templates/tabulareditor/conceptual.html.primary.js +++ b/templates/tabulareditor/conceptual.html.primary.js @@ -112,4 +112,4 @@ exports.transform = function (model) { ] } return model; -} +} \ No newline at end of file diff --git a/templates/tabulareditor/layout/_master.tmpl b/templates/tabulareditor/layout/_master.tmpl index bc114e7..672ab3c 100644 --- a/templates/tabulareditor/layout/_master.tmpl +++ b/templates/tabulareditor/layout/_master.tmpl @@ -249,18 +249,48 @@ {{! meta applies to }} {{#applies_to}} -
Applies to:
    - {{#editions}} - {{#none}}
  • {{edition}} Edition
  • {{/none}} - {{#partial}}
  • {{edition}} Edition
  • {{/partial}} - {{^partial}}{{^none}}
  • {{edition}} Edition
  • {{/none}}{{/partial}} - {{/editions}} - {{#versions}} - {{#none}}
  • Tabular Editor {{version}}
  • {{/none}} - {{#partial}}
  • Tabular Editor {{version}}
  • {{/partial}} - {{^partial}}{{^none}}
  • Tabular Editor {{version}}
  • {{/none}}{{/partial}} - {{/versions}} -
+
Applies to: +
    + {{#products}} +
  • + {{^editions}} + {{#full}}{{/full}} + {{#partial}}{{/partial}} + {{#none}}{{/none}} + {{/editions}} + {{#none}}{{product}}{{/none}} + {{^none}}{{product}}{{/none}} + {{^editions}} + {{#full}}{{/full}} + {{#partial}}{{/partial}} + {{/editions}} + {{#since}} + + ({{#until}}Available in {{since}}–{{until}}{{/until}}{{^until}}Available since {{since}}{{/until}}) + + {{/since}} + {{^editions}} + {{#note}}{{note}}{{/note}} + {{/editions}} + {{#editions}} +
    + {{#none}} + {{edition}} + {{/none}} + {{^none}} + {{#partial}} + {{edition}}{{#note}}{{note}}{{/note}} + {{/partial}} + {{^partial}} + {{edition}} + {{/partial}} + {{/none}} +
    + {{/editions}} +
  • + {{/products}} +
+
{{/applies_to}} {{! START CLOSE DIV: Check if document has updated or applies_to metadata, add a begin div to be able to add spacing for the metadata}} @@ -386,4 +416,4 @@ {{/redirect_url}} - + \ No newline at end of file diff --git a/templates/tabulareditor/public/docfx.min.css b/templates/tabulareditor/public/docfx.min.css index fc0a70c..474ccac 100644 --- a/templates/tabulareditor/public/docfx.min.css +++ b/templates/tabulareditor/public/docfx.min.css @@ -1,4 +1,4 @@ -@charset "UTF-8";@font-face{font-display:block;font-family:bootstrap-icons;src:url("./bootstrap-icons-X6UQXWUS.woff2?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff2"),url("./bootstrap-icons-OCU552PF.woff?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff")}.bi:before,[class^=bi-]:before,[class*=" bi-"]:before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123:before{content:"\f67f"}.bi-alarm-fill:before{content:"\f101"}.bi-alarm:before{content:"\f102"}.bi-align-bottom:before{content:"\f103"}.bi-align-center:before{content:"\f104"}.bi-align-end:before{content:"\f105"}.bi-align-middle:before{content:"\f106"}.bi-align-start:before{content:"\f107"}.bi-align-top:before{content:"\f108"}.bi-alt:before{content:"\f109"}.bi-app-indicator:before{content:"\f10a"}.bi-app:before{content:"\f10b"}.bi-archive-fill:before{content:"\f10c"}.bi-archive:before{content:"\f10d"}.bi-arrow-90deg-down:before{content:"\f10e"}.bi-arrow-90deg-left:before{content:"\f10f"}.bi-arrow-90deg-right:before{content:"\f110"}.bi-arrow-90deg-up:before{content:"\f111"}.bi-arrow-bar-down:before{content:"\f112"}.bi-arrow-bar-left:before{content:"\f113"}.bi-arrow-bar-right:before{content:"\f114"}.bi-arrow-bar-up:before{content:"\f115"}.bi-arrow-clockwise:before{content:"\f116"}.bi-arrow-counterclockwise:before{content:"\f117"}.bi-arrow-down-circle-fill:before{content:"\f118"}.bi-arrow-down-circle:before{content:"\f119"}.bi-arrow-down-left-circle-fill:before{content:"\f11a"}.bi-arrow-down-left-circle:before{content:"\f11b"}.bi-arrow-down-left-square-fill:before{content:"\f11c"}.bi-arrow-down-left-square:before{content:"\f11d"}.bi-arrow-down-left:before{content:"\f11e"}.bi-arrow-down-right-circle-fill:before{content:"\f11f"}.bi-arrow-down-right-circle:before{content:"\f120"}.bi-arrow-down-right-square-fill:before{content:"\f121"}.bi-arrow-down-right-square:before{content:"\f122"}.bi-arrow-down-right:before{content:"\f123"}.bi-arrow-down-short:before{content:"\f124"}.bi-arrow-down-square-fill:before{content:"\f125"}.bi-arrow-down-square:before{content:"\f126"}.bi-arrow-down-up:before{content:"\f127"}.bi-arrow-down:before{content:"\f128"}.bi-arrow-left-circle-fill:before{content:"\f129"}.bi-arrow-left-circle:before{content:"\f12a"}.bi-arrow-left-right:before{content:"\f12b"}.bi-arrow-left-short:before{content:"\f12c"}.bi-arrow-left-square-fill:before{content:"\f12d"}.bi-arrow-left-square:before{content:"\f12e"}.bi-arrow-left:before{content:"\f12f"}.bi-arrow-repeat:before{content:"\f130"}.bi-arrow-return-left:before{content:"\f131"}.bi-arrow-return-right:before{content:"\f132"}.bi-arrow-right-circle-fill:before{content:"\f133"}.bi-arrow-right-circle:before{content:"\f134"}.bi-arrow-right-short:before{content:"\f135"}.bi-arrow-right-square-fill:before{content:"\f136"}.bi-arrow-right-square:before{content:"\f137"}.bi-arrow-right:before{content:"\f138"}.bi-arrow-up-circle-fill:before{content:"\f139"}.bi-arrow-up-circle:before{content:"\f13a"}.bi-arrow-up-left-circle-fill:before{content:"\f13b"}.bi-arrow-up-left-circle:before{content:"\f13c"}.bi-arrow-up-left-square-fill:before{content:"\f13d"}.bi-arrow-up-left-square:before{content:"\f13e"}.bi-arrow-up-left:before{content:"\f13f"}.bi-arrow-up-right-circle-fill:before{content:"\f140"}.bi-arrow-up-right-circle:before{content:"\f141"}.bi-arrow-up-right-square-fill:before{content:"\f142"}.bi-arrow-up-right-square:before{content:"\f143"}.bi-arrow-up-right:before{content:"\f144"}.bi-arrow-up-short:before{content:"\f145"}.bi-arrow-up-square-fill:before{content:"\f146"}.bi-arrow-up-square:before{content:"\f147"}.bi-arrow-up:before{content:"\f148"}.bi-arrows-angle-contract:before{content:"\f149"}.bi-arrows-angle-expand:before{content:"\f14a"}.bi-arrows-collapse:before{content:"\f14b"}.bi-arrows-expand:before{content:"\f14c"}.bi-arrows-fullscreen:before{content:"\f14d"}.bi-arrows-move:before{content:"\f14e"}.bi-aspect-ratio-fill:before{content:"\f14f"}.bi-aspect-ratio:before{content:"\f150"}.bi-asterisk:before{content:"\f151"}.bi-at:before{content:"\f152"}.bi-award-fill:before{content:"\f153"}.bi-award:before{content:"\f154"}.bi-back:before{content:"\f155"}.bi-backspace-fill:before{content:"\f156"}.bi-backspace-reverse-fill:before{content:"\f157"}.bi-backspace-reverse:before{content:"\f158"}.bi-backspace:before{content:"\f159"}.bi-badge-3d-fill:before{content:"\f15a"}.bi-badge-3d:before{content:"\f15b"}.bi-badge-4k-fill:before{content:"\f15c"}.bi-badge-4k:before{content:"\f15d"}.bi-badge-8k-fill:before{content:"\f15e"}.bi-badge-8k:before{content:"\f15f"}.bi-badge-ad-fill:before{content:"\f160"}.bi-badge-ad:before{content:"\f161"}.bi-badge-ar-fill:before{content:"\f162"}.bi-badge-ar:before{content:"\f163"}.bi-badge-cc-fill:before{content:"\f164"}.bi-badge-cc:before{content:"\f165"}.bi-badge-hd-fill:before{content:"\f166"}.bi-badge-hd:before{content:"\f167"}.bi-badge-tm-fill:before{content:"\f168"}.bi-badge-tm:before{content:"\f169"}.bi-badge-vo-fill:before{content:"\f16a"}.bi-badge-vo:before{content:"\f16b"}.bi-badge-vr-fill:before{content:"\f16c"}.bi-badge-vr:before{content:"\f16d"}.bi-badge-wc-fill:before{content:"\f16e"}.bi-badge-wc:before{content:"\f16f"}.bi-bag-check-fill:before{content:"\f170"}.bi-bag-check:before{content:"\f171"}.bi-bag-dash-fill:before{content:"\f172"}.bi-bag-dash:before{content:"\f173"}.bi-bag-fill:before{content:"\f174"}.bi-bag-plus-fill:before{content:"\f175"}.bi-bag-plus:before{content:"\f176"}.bi-bag-x-fill:before{content:"\f177"}.bi-bag-x:before{content:"\f178"}.bi-bag:before{content:"\f179"}.bi-bar-chart-fill:before{content:"\f17a"}.bi-bar-chart-line-fill:before{content:"\f17b"}.bi-bar-chart-line:before{content:"\f17c"}.bi-bar-chart-steps:before{content:"\f17d"}.bi-bar-chart:before{content:"\f17e"}.bi-basket-fill:before{content:"\f17f"}.bi-basket:before{content:"\f180"}.bi-basket2-fill:before{content:"\f181"}.bi-basket2:before{content:"\f182"}.bi-basket3-fill:before{content:"\f183"}.bi-basket3:before{content:"\f184"}.bi-battery-charging:before{content:"\f185"}.bi-battery-full:before{content:"\f186"}.bi-battery-half:before{content:"\f187"}.bi-battery:before{content:"\f188"}.bi-bell-fill:before{content:"\f189"}.bi-bell:before{content:"\f18a"}.bi-bezier:before{content:"\f18b"}.bi-bezier2:before{content:"\f18c"}.bi-bicycle:before{content:"\f18d"}.bi-binoculars-fill:before{content:"\f18e"}.bi-binoculars:before{content:"\f18f"}.bi-blockquote-left:before{content:"\f190"}.bi-blockquote-right:before{content:"\f191"}.bi-book-fill:before{content:"\f192"}.bi-book-half:before{content:"\f193"}.bi-book:before{content:"\f194"}.bi-bookmark-check-fill:before{content:"\f195"}.bi-bookmark-check:before{content:"\f196"}.bi-bookmark-dash-fill:before{content:"\f197"}.bi-bookmark-dash:before{content:"\f198"}.bi-bookmark-fill:before{content:"\f199"}.bi-bookmark-heart-fill:before{content:"\f19a"}.bi-bookmark-heart:before{content:"\f19b"}.bi-bookmark-plus-fill:before{content:"\f19c"}.bi-bookmark-plus:before{content:"\f19d"}.bi-bookmark-star-fill:before{content:"\f19e"}.bi-bookmark-star:before{content:"\f19f"}.bi-bookmark-x-fill:before{content:"\f1a0"}.bi-bookmark-x:before{content:"\f1a1"}.bi-bookmark:before{content:"\f1a2"}.bi-bookmarks-fill:before{content:"\f1a3"}.bi-bookmarks:before{content:"\f1a4"}.bi-bookshelf:before{content:"\f1a5"}.bi-bootstrap-fill:before{content:"\f1a6"}.bi-bootstrap-reboot:before{content:"\f1a7"}.bi-bootstrap:before{content:"\f1a8"}.bi-border-all:before{content:"\f1a9"}.bi-border-bottom:before{content:"\f1aa"}.bi-border-center:before{content:"\f1ab"}.bi-border-inner:before{content:"\f1ac"}.bi-border-left:before{content:"\f1ad"}.bi-border-middle:before{content:"\f1ae"}.bi-border-outer:before{content:"\f1af"}.bi-border-right:before{content:"\f1b0"}.bi-border-style:before{content:"\f1b1"}.bi-border-top:before{content:"\f1b2"}.bi-border-width:before{content:"\f1b3"}.bi-border:before{content:"\f1b4"}.bi-bounding-box-circles:before{content:"\f1b5"}.bi-bounding-box:before{content:"\f1b6"}.bi-box-arrow-down-left:before{content:"\f1b7"}.bi-box-arrow-down-right:before{content:"\f1b8"}.bi-box-arrow-down:before{content:"\f1b9"}.bi-box-arrow-in-down-left:before{content:"\f1ba"}.bi-box-arrow-in-down-right:before{content:"\f1bb"}.bi-box-arrow-in-down:before{content:"\f1bc"}.bi-box-arrow-in-left:before{content:"\f1bd"}.bi-box-arrow-in-right:before{content:"\f1be"}.bi-box-arrow-in-up-left:before{content:"\f1bf"}.bi-box-arrow-in-up-right:before{content:"\f1c0"}.bi-box-arrow-in-up:before{content:"\f1c1"}.bi-box-arrow-left:before{content:"\f1c2"}.bi-box-arrow-right:before{content:"\f1c3"}.bi-box-arrow-up-left:before{content:"\f1c4"}.bi-box-arrow-up-right:before{content:"\f1c5"}.bi-box-arrow-up:before{content:"\f1c6"}.bi-box-seam:before{content:"\f1c7"}.bi-box:before{content:"\f1c8"}.bi-braces:before{content:"\f1c9"}.bi-bricks:before{content:"\f1ca"}.bi-briefcase-fill:before{content:"\f1cb"}.bi-briefcase:before{content:"\f1cc"}.bi-brightness-alt-high-fill:before{content:"\f1cd"}.bi-brightness-alt-high:before{content:"\f1ce"}.bi-brightness-alt-low-fill:before{content:"\f1cf"}.bi-brightness-alt-low:before{content:"\f1d0"}.bi-brightness-high-fill:before{content:"\f1d1"}.bi-brightness-high:before{content:"\f1d2"}.bi-brightness-low-fill:before{content:"\f1d3"}.bi-brightness-low:before{content:"\f1d4"}.bi-broadcast-pin:before{content:"\f1d5"}.bi-broadcast:before{content:"\f1d6"}.bi-brush-fill:before{content:"\f1d7"}.bi-brush:before{content:"\f1d8"}.bi-bucket-fill:before{content:"\f1d9"}.bi-bucket:before{content:"\f1da"}.bi-bug-fill:before{content:"\f1db"}.bi-bug:before{content:"\f1dc"}.bi-building:before{content:"\f1dd"}.bi-bullseye:before{content:"\f1de"}.bi-calculator-fill:before{content:"\f1df"}.bi-calculator:before{content:"\f1e0"}.bi-calendar-check-fill:before{content:"\f1e1"}.bi-calendar-check:before{content:"\f1e2"}.bi-calendar-date-fill:before{content:"\f1e3"}.bi-calendar-date:before{content:"\f1e4"}.bi-calendar-day-fill:before{content:"\f1e5"}.bi-calendar-day:before{content:"\f1e6"}.bi-calendar-event-fill:before{content:"\f1e7"}.bi-calendar-event:before{content:"\f1e8"}.bi-calendar-fill:before{content:"\f1e9"}.bi-calendar-minus-fill:before{content:"\f1ea"}.bi-calendar-minus:before{content:"\f1eb"}.bi-calendar-month-fill:before{content:"\f1ec"}.bi-calendar-month:before{content:"\f1ed"}.bi-calendar-plus-fill:before{content:"\f1ee"}.bi-calendar-plus:before{content:"\f1ef"}.bi-calendar-range-fill:before{content:"\f1f0"}.bi-calendar-range:before{content:"\f1f1"}.bi-calendar-week-fill:before{content:"\f1f2"}.bi-calendar-week:before{content:"\f1f3"}.bi-calendar-x-fill:before{content:"\f1f4"}.bi-calendar-x:before{content:"\f1f5"}.bi-calendar:before{content:"\f1f6"}.bi-calendar2-check-fill:before{content:"\f1f7"}.bi-calendar2-check:before{content:"\f1f8"}.bi-calendar2-date-fill:before{content:"\f1f9"}.bi-calendar2-date:before{content:"\f1fa"}.bi-calendar2-day-fill:before{content:"\f1fb"}.bi-calendar2-day:before{content:"\f1fc"}.bi-calendar2-event-fill:before{content:"\f1fd"}.bi-calendar2-event:before{content:"\f1fe"}.bi-calendar2-fill:before{content:"\f1ff"}.bi-calendar2-minus-fill:before{content:"\f200"}.bi-calendar2-minus:before{content:"\f201"}.bi-calendar2-month-fill:before{content:"\f202"}.bi-calendar2-month:before{content:"\f203"}.bi-calendar2-plus-fill:before{content:"\f204"}.bi-calendar2-plus:before{content:"\f205"}.bi-calendar2-range-fill:before{content:"\f206"}.bi-calendar2-range:before{content:"\f207"}.bi-calendar2-week-fill:before{content:"\f208"}.bi-calendar2-week:before{content:"\f209"}.bi-calendar2-x-fill:before{content:"\f20a"}.bi-calendar2-x:before{content:"\f20b"}.bi-calendar2:before{content:"\f20c"}.bi-calendar3-event-fill:before{content:"\f20d"}.bi-calendar3-event:before{content:"\f20e"}.bi-calendar3-fill:before{content:"\f20f"}.bi-calendar3-range-fill:before{content:"\f210"}.bi-calendar3-range:before{content:"\f211"}.bi-calendar3-week-fill:before{content:"\f212"}.bi-calendar3-week:before{content:"\f213"}.bi-calendar3:before{content:"\f214"}.bi-calendar4-event:before{content:"\f215"}.bi-calendar4-range:before{content:"\f216"}.bi-calendar4-week:before{content:"\f217"}.bi-calendar4:before{content:"\f218"}.bi-camera-fill:before{content:"\f219"}.bi-camera-reels-fill:before{content:"\f21a"}.bi-camera-reels:before{content:"\f21b"}.bi-camera-video-fill:before{content:"\f21c"}.bi-camera-video-off-fill:before{content:"\f21d"}.bi-camera-video-off:before{content:"\f21e"}.bi-camera-video:before{content:"\f21f"}.bi-camera:before{content:"\f220"}.bi-camera2:before{content:"\f221"}.bi-capslock-fill:before{content:"\f222"}.bi-capslock:before{content:"\f223"}.bi-card-checklist:before{content:"\f224"}.bi-card-heading:before{content:"\f225"}.bi-card-image:before{content:"\f226"}.bi-card-list:before{content:"\f227"}.bi-card-text:before{content:"\f228"}.bi-caret-down-fill:before{content:"\f229"}.bi-caret-down-square-fill:before{content:"\f22a"}.bi-caret-down-square:before{content:"\f22b"}.bi-caret-down:before{content:"\f22c"}.bi-caret-left-fill:before{content:"\f22d"}.bi-caret-left-square-fill:before{content:"\f22e"}.bi-caret-left-square:before{content:"\f22f"}.bi-caret-left:before{content:"\f230"}.bi-caret-right-fill:before{content:"\f231"}.bi-caret-right-square-fill:before{content:"\f232"}.bi-caret-right-square:before{content:"\f233"}.bi-caret-right:before{content:"\f234"}.bi-caret-up-fill:before{content:"\f235"}.bi-caret-up-square-fill:before{content:"\f236"}.bi-caret-up-square:before{content:"\f237"}.bi-caret-up:before{content:"\f238"}.bi-cart-check-fill:before{content:"\f239"}.bi-cart-check:before{content:"\f23a"}.bi-cart-dash-fill:before{content:"\f23b"}.bi-cart-dash:before{content:"\f23c"}.bi-cart-fill:before{content:"\f23d"}.bi-cart-plus-fill:before{content:"\f23e"}.bi-cart-plus:before{content:"\f23f"}.bi-cart-x-fill:before{content:"\f240"}.bi-cart-x:before{content:"\f241"}.bi-cart:before{content:"\f242"}.bi-cart2:before{content:"\f243"}.bi-cart3:before{content:"\f244"}.bi-cart4:before{content:"\f245"}.bi-cash-stack:before{content:"\f246"}.bi-cash:before{content:"\f247"}.bi-cast:before{content:"\f248"}.bi-chat-dots-fill:before{content:"\f249"}.bi-chat-dots:before{content:"\f24a"}.bi-chat-fill:before{content:"\f24b"}.bi-chat-left-dots-fill:before{content:"\f24c"}.bi-chat-left-dots:before{content:"\f24d"}.bi-chat-left-fill:before{content:"\f24e"}.bi-chat-left-quote-fill:before{content:"\f24f"}.bi-chat-left-quote:before{content:"\f250"}.bi-chat-left-text-fill:before{content:"\f251"}.bi-chat-left-text:before{content:"\f252"}.bi-chat-left:before{content:"\f253"}.bi-chat-quote-fill:before{content:"\f254"}.bi-chat-quote:before{content:"\f255"}.bi-chat-right-dots-fill:before{content:"\f256"}.bi-chat-right-dots:before{content:"\f257"}.bi-chat-right-fill:before{content:"\f258"}.bi-chat-right-quote-fill:before{content:"\f259"}.bi-chat-right-quote:before{content:"\f25a"}.bi-chat-right-text-fill:before{content:"\f25b"}.bi-chat-right-text:before{content:"\f25c"}.bi-chat-right:before{content:"\f25d"}.bi-chat-square-dots-fill:before{content:"\f25e"}.bi-chat-square-dots:before{content:"\f25f"}.bi-chat-square-fill:before{content:"\f260"}.bi-chat-square-quote-fill:before{content:"\f261"}.bi-chat-square-quote:before{content:"\f262"}.bi-chat-square-text-fill:before{content:"\f263"}.bi-chat-square-text:before{content:"\f264"}.bi-chat-square:before{content:"\f265"}.bi-chat-text-fill:before{content:"\f266"}.bi-chat-text:before{content:"\f267"}.bi-chat:before{content:"\f268"}.bi-check-all:before{content:"\f269"}.bi-check-circle-fill:before{content:"\f26a"}.bi-check-circle:before{content:"\f26b"}.bi-check-square-fill:before{content:"\f26c"}.bi-check-square:before{content:"\f26d"}.bi-check:before{content:"\f26e"}.bi-check2-all:before{content:"\f26f"}.bi-check2-circle:before{content:"\f270"}.bi-check2-square:before{content:"\f271"}.bi-check2:before{content:"\f272"}.bi-chevron-bar-contract:before{content:"\f273"}.bi-chevron-bar-down:before{content:"\f274"}.bi-chevron-bar-expand:before{content:"\f275"}.bi-chevron-bar-left:before{content:"\f276"}.bi-chevron-bar-right:before{content:"\f277"}.bi-chevron-bar-up:before{content:"\f278"}.bi-chevron-compact-down:before{content:"\f279"}.bi-chevron-compact-left:before{content:"\f27a"}.bi-chevron-compact-right:before{content:"\f27b"}.bi-chevron-compact-up:before{content:"\f27c"}.bi-chevron-contract:before{content:"\f27d"}.bi-chevron-double-down:before{content:"\f27e"}.bi-chevron-double-left:before{content:"\f27f"}.bi-chevron-double-right:before{content:"\f280"}.bi-chevron-double-up:before{content:"\f281"}.bi-chevron-down:before{content:"\f282"}.bi-chevron-expand:before{content:"\f283"}.bi-chevron-left:before{content:"\f284"}.bi-chevron-right:before{content:"\f285"}.bi-chevron-up:before{content:"\f286"}.bi-circle-fill:before{content:"\f287"}.bi-circle-half:before{content:"\f288"}.bi-circle-square:before{content:"\f289"}.bi-circle:before{content:"\f28a"}.bi-clipboard-check:before{content:"\f28b"}.bi-clipboard-data:before{content:"\f28c"}.bi-clipboard-minus:before{content:"\f28d"}.bi-clipboard-plus:before{content:"\f28e"}.bi-clipboard-x:before{content:"\f28f"}.bi-clipboard:before{content:"\f290"}.bi-clock-fill:before{content:"\f291"}.bi-clock-history:before{content:"\f292"}.bi-clock:before{content:"\f293"}.bi-cloud-arrow-down-fill:before{content:"\f294"}.bi-cloud-arrow-down:before{content:"\f295"}.bi-cloud-arrow-up-fill:before{content:"\f296"}.bi-cloud-arrow-up:before{content:"\f297"}.bi-cloud-check-fill:before{content:"\f298"}.bi-cloud-check:before{content:"\f299"}.bi-cloud-download-fill:before{content:"\f29a"}.bi-cloud-download:before{content:"\f29b"}.bi-cloud-drizzle-fill:before{content:"\f29c"}.bi-cloud-drizzle:before{content:"\f29d"}.bi-cloud-fill:before{content:"\f29e"}.bi-cloud-fog-fill:before{content:"\f29f"}.bi-cloud-fog:before{content:"\f2a0"}.bi-cloud-fog2-fill:before{content:"\f2a1"}.bi-cloud-fog2:before{content:"\f2a2"}.bi-cloud-hail-fill:before{content:"\f2a3"}.bi-cloud-hail:before{content:"\f2a4"}.bi-cloud-haze-fill:before{content:"\f2a6"}.bi-cloud-haze:before{content:"\f2a7"}.bi-cloud-haze2-fill:before{content:"\f2a8"}.bi-cloud-lightning-fill:before{content:"\f2a9"}.bi-cloud-lightning-rain-fill:before{content:"\f2aa"}.bi-cloud-lightning-rain:before{content:"\f2ab"}.bi-cloud-lightning:before{content:"\f2ac"}.bi-cloud-minus-fill:before{content:"\f2ad"}.bi-cloud-minus:before{content:"\f2ae"}.bi-cloud-moon-fill:before{content:"\f2af"}.bi-cloud-moon:before{content:"\f2b0"}.bi-cloud-plus-fill:before{content:"\f2b1"}.bi-cloud-plus:before{content:"\f2b2"}.bi-cloud-rain-fill:before{content:"\f2b3"}.bi-cloud-rain-heavy-fill:before{content:"\f2b4"}.bi-cloud-rain-heavy:before{content:"\f2b5"}.bi-cloud-rain:before{content:"\f2b6"}.bi-cloud-slash-fill:before{content:"\f2b7"}.bi-cloud-slash:before{content:"\f2b8"}.bi-cloud-sleet-fill:before{content:"\f2b9"}.bi-cloud-sleet:before{content:"\f2ba"}.bi-cloud-snow-fill:before{content:"\f2bb"}.bi-cloud-snow:before{content:"\f2bc"}.bi-cloud-sun-fill:before{content:"\f2bd"}.bi-cloud-sun:before{content:"\f2be"}.bi-cloud-upload-fill:before{content:"\f2bf"}.bi-cloud-upload:before{content:"\f2c0"}.bi-cloud:before{content:"\f2c1"}.bi-clouds-fill:before{content:"\f2c2"}.bi-clouds:before{content:"\f2c3"}.bi-cloudy-fill:before{content:"\f2c4"}.bi-cloudy:before{content:"\f2c5"}.bi-code-slash:before{content:"\f2c6"}.bi-code-square:before{content:"\f2c7"}.bi-code:before{content:"\f2c8"}.bi-collection-fill:before{content:"\f2c9"}.bi-collection-play-fill:before{content:"\f2ca"}.bi-collection-play:before{content:"\f2cb"}.bi-collection:before{content:"\f2cc"}.bi-columns-gap:before{content:"\f2cd"}.bi-columns:before{content:"\f2ce"}.bi-command:before{content:"\f2cf"}.bi-compass-fill:before{content:"\f2d0"}.bi-compass:before{content:"\f2d1"}.bi-cone-striped:before{content:"\f2d2"}.bi-cone:before{content:"\f2d3"}.bi-controller:before{content:"\f2d4"}.bi-cpu-fill:before{content:"\f2d5"}.bi-cpu:before{content:"\f2d6"}.bi-credit-card-2-back-fill:before{content:"\f2d7"}.bi-credit-card-2-back:before{content:"\f2d8"}.bi-credit-card-2-front-fill:before{content:"\f2d9"}.bi-credit-card-2-front:before{content:"\f2da"}.bi-credit-card-fill:before{content:"\f2db"}.bi-credit-card:before{content:"\f2dc"}.bi-crop:before{content:"\f2dd"}.bi-cup-fill:before{content:"\f2de"}.bi-cup-straw:before{content:"\f2df"}.bi-cup:before{content:"\f2e0"}.bi-cursor-fill:before{content:"\f2e1"}.bi-cursor-text:before{content:"\f2e2"}.bi-cursor:before{content:"\f2e3"}.bi-dash-circle-dotted:before{content:"\f2e4"}.bi-dash-circle-fill:before{content:"\f2e5"}.bi-dash-circle:before{content:"\f2e6"}.bi-dash-square-dotted:before{content:"\f2e7"}.bi-dash-square-fill:before{content:"\f2e8"}.bi-dash-square:before{content:"\f2e9"}.bi-dash:before{content:"\f2ea"}.bi-diagram-2-fill:before{content:"\f2eb"}.bi-diagram-2:before{content:"\f2ec"}.bi-diagram-3-fill:before{content:"\f2ed"}.bi-diagram-3:before{content:"\f2ee"}.bi-diamond-fill:before{content:"\f2ef"}.bi-diamond-half:before{content:"\f2f0"}.bi-diamond:before{content:"\f2f1"}.bi-dice-1-fill:before{content:"\f2f2"}.bi-dice-1:before{content:"\f2f3"}.bi-dice-2-fill:before{content:"\f2f4"}.bi-dice-2:before{content:"\f2f5"}.bi-dice-3-fill:before{content:"\f2f6"}.bi-dice-3:before{content:"\f2f7"}.bi-dice-4-fill:before{content:"\f2f8"}.bi-dice-4:before{content:"\f2f9"}.bi-dice-5-fill:before{content:"\f2fa"}.bi-dice-5:before{content:"\f2fb"}.bi-dice-6-fill:before{content:"\f2fc"}.bi-dice-6:before{content:"\f2fd"}.bi-disc-fill:before{content:"\f2fe"}.bi-disc:before{content:"\f2ff"}.bi-discord:before{content:"\f300"}.bi-display-fill:before{content:"\f301"}.bi-display:before{content:"\f302"}.bi-distribute-horizontal:before{content:"\f303"}.bi-distribute-vertical:before{content:"\f304"}.bi-door-closed-fill:before{content:"\f305"}.bi-door-closed:before{content:"\f306"}.bi-door-open-fill:before{content:"\f307"}.bi-door-open:before{content:"\f308"}.bi-dot:before{content:"\f309"}.bi-download:before{content:"\f30a"}.bi-droplet-fill:before{content:"\f30b"}.bi-droplet-half:before{content:"\f30c"}.bi-droplet:before{content:"\f30d"}.bi-earbuds:before{content:"\f30e"}.bi-easel-fill:before{content:"\f30f"}.bi-easel:before{content:"\f310"}.bi-egg-fill:before{content:"\f311"}.bi-egg-fried:before{content:"\f312"}.bi-egg:before{content:"\f313"}.bi-eject-fill:before{content:"\f314"}.bi-eject:before{content:"\f315"}.bi-emoji-angry-fill:before{content:"\f316"}.bi-emoji-angry:before{content:"\f317"}.bi-emoji-dizzy-fill:before{content:"\f318"}.bi-emoji-dizzy:before{content:"\f319"}.bi-emoji-expressionless-fill:before{content:"\f31a"}.bi-emoji-expressionless:before{content:"\f31b"}.bi-emoji-frown-fill:before{content:"\f31c"}.bi-emoji-frown:before{content:"\f31d"}.bi-emoji-heart-eyes-fill:before{content:"\f31e"}.bi-emoji-heart-eyes:before{content:"\f31f"}.bi-emoji-laughing-fill:before{content:"\f320"}.bi-emoji-laughing:before{content:"\f321"}.bi-emoji-neutral-fill:before{content:"\f322"}.bi-emoji-neutral:before{content:"\f323"}.bi-emoji-smile-fill:before{content:"\f324"}.bi-emoji-smile-upside-down-fill:before{content:"\f325"}.bi-emoji-smile-upside-down:before{content:"\f326"}.bi-emoji-smile:before{content:"\f327"}.bi-emoji-sunglasses-fill:before{content:"\f328"}.bi-emoji-sunglasses:before{content:"\f329"}.bi-emoji-wink-fill:before{content:"\f32a"}.bi-emoji-wink:before{content:"\f32b"}.bi-envelope-fill:before{content:"\f32c"}.bi-envelope-open-fill:before{content:"\f32d"}.bi-envelope-open:before{content:"\f32e"}.bi-envelope:before{content:"\f32f"}.bi-eraser-fill:before{content:"\f330"}.bi-eraser:before{content:"\f331"}.bi-exclamation-circle-fill:before{content:"\f332"}.bi-exclamation-circle:before{content:"\f333"}.bi-exclamation-diamond-fill:before{content:"\f334"}.bi-exclamation-diamond:before{content:"\f335"}.bi-exclamation-octagon-fill:before{content:"\f336"}.bi-exclamation-octagon:before{content:"\f337"}.bi-exclamation-square-fill:before{content:"\f338"}.bi-exclamation-square:before{content:"\f339"}.bi-exclamation-triangle-fill:before{content:"\f33a"}.bi-exclamation-triangle:before{content:"\f33b"}.bi-exclamation:before{content:"\f33c"}.bi-exclude:before{content:"\f33d"}.bi-eye-fill:before{content:"\f33e"}.bi-eye-slash-fill:before{content:"\f33f"}.bi-eye-slash:before{content:"\f340"}.bi-eye:before{content:"\f341"}.bi-eyedropper:before{content:"\f342"}.bi-eyeglasses:before{content:"\f343"}.bi-facebook:before{content:"\f344"}.bi-file-arrow-down-fill:before{content:"\f345"}.bi-file-arrow-down:before{content:"\f346"}.bi-file-arrow-up-fill:before{content:"\f347"}.bi-file-arrow-up:before{content:"\f348"}.bi-file-bar-graph-fill:before{content:"\f349"}.bi-file-bar-graph:before{content:"\f34a"}.bi-file-binary-fill:before{content:"\f34b"}.bi-file-binary:before{content:"\f34c"}.bi-file-break-fill:before{content:"\f34d"}.bi-file-break:before{content:"\f34e"}.bi-file-check-fill:before{content:"\f34f"}.bi-file-check:before{content:"\f350"}.bi-file-code-fill:before{content:"\f351"}.bi-file-code:before{content:"\f352"}.bi-file-diff-fill:before{content:"\f353"}.bi-file-diff:before{content:"\f354"}.bi-file-earmark-arrow-down-fill:before{content:"\f355"}.bi-file-earmark-arrow-down:before{content:"\f356"}.bi-file-earmark-arrow-up-fill:before{content:"\f357"}.bi-file-earmark-arrow-up:before{content:"\f358"}.bi-file-earmark-bar-graph-fill:before{content:"\f359"}.bi-file-earmark-bar-graph:before{content:"\f35a"}.bi-file-earmark-binary-fill:before{content:"\f35b"}.bi-file-earmark-binary:before{content:"\f35c"}.bi-file-earmark-break-fill:before{content:"\f35d"}.bi-file-earmark-break:before{content:"\f35e"}.bi-file-earmark-check-fill:before{content:"\f35f"}.bi-file-earmark-check:before{content:"\f360"}.bi-file-earmark-code-fill:before{content:"\f361"}.bi-file-earmark-code:before{content:"\f362"}.bi-file-earmark-diff-fill:before{content:"\f363"}.bi-file-earmark-diff:before{content:"\f364"}.bi-file-earmark-easel-fill:before{content:"\f365"}.bi-file-earmark-easel:before{content:"\f366"}.bi-file-earmark-excel-fill:before{content:"\f367"}.bi-file-earmark-excel:before{content:"\f368"}.bi-file-earmark-fill:before{content:"\f369"}.bi-file-earmark-font-fill:before{content:"\f36a"}.bi-file-earmark-font:before{content:"\f36b"}.bi-file-earmark-image-fill:before{content:"\f36c"}.bi-file-earmark-image:before{content:"\f36d"}.bi-file-earmark-lock-fill:before{content:"\f36e"}.bi-file-earmark-lock:before{content:"\f36f"}.bi-file-earmark-lock2-fill:before{content:"\f370"}.bi-file-earmark-lock2:before{content:"\f371"}.bi-file-earmark-medical-fill:before{content:"\f372"}.bi-file-earmark-medical:before{content:"\f373"}.bi-file-earmark-minus-fill:before{content:"\f374"}.bi-file-earmark-minus:before{content:"\f375"}.bi-file-earmark-music-fill:before{content:"\f376"}.bi-file-earmark-music:before{content:"\f377"}.bi-file-earmark-person-fill:before{content:"\f378"}.bi-file-earmark-person:before{content:"\f379"}.bi-file-earmark-play-fill:before{content:"\f37a"}.bi-file-earmark-play:before{content:"\f37b"}.bi-file-earmark-plus-fill:before{content:"\f37c"}.bi-file-earmark-plus:before{content:"\f37d"}.bi-file-earmark-post-fill:before{content:"\f37e"}.bi-file-earmark-post:before{content:"\f37f"}.bi-file-earmark-ppt-fill:before{content:"\f380"}.bi-file-earmark-ppt:before{content:"\f381"}.bi-file-earmark-richtext-fill:before{content:"\f382"}.bi-file-earmark-richtext:before{content:"\f383"}.bi-file-earmark-ruled-fill:before{content:"\f384"}.bi-file-earmark-ruled:before{content:"\f385"}.bi-file-earmark-slides-fill:before{content:"\f386"}.bi-file-earmark-slides:before{content:"\f387"}.bi-file-earmark-spreadsheet-fill:before{content:"\f388"}.bi-file-earmark-spreadsheet:before{content:"\f389"}.bi-file-earmark-text-fill:before{content:"\f38a"}.bi-file-earmark-text:before{content:"\f38b"}.bi-file-earmark-word-fill:before{content:"\f38c"}.bi-file-earmark-word:before{content:"\f38d"}.bi-file-earmark-x-fill:before{content:"\f38e"}.bi-file-earmark-x:before{content:"\f38f"}.bi-file-earmark-zip-fill:before{content:"\f390"}.bi-file-earmark-zip:before{content:"\f391"}.bi-file-earmark:before{content:"\f392"}.bi-file-easel-fill:before{content:"\f393"}.bi-file-easel:before{content:"\f394"}.bi-file-excel-fill:before{content:"\f395"}.bi-file-excel:before{content:"\f396"}.bi-file-fill:before{content:"\f397"}.bi-file-font-fill:before{content:"\f398"}.bi-file-font:before{content:"\f399"}.bi-file-image-fill:before{content:"\f39a"}.bi-file-image:before{content:"\f39b"}.bi-file-lock-fill:before{content:"\f39c"}.bi-file-lock:before{content:"\f39d"}.bi-file-lock2-fill:before{content:"\f39e"}.bi-file-lock2:before{content:"\f39f"}.bi-file-medical-fill:before{content:"\f3a0"}.bi-file-medical:before{content:"\f3a1"}.bi-file-minus-fill:before{content:"\f3a2"}.bi-file-minus:before{content:"\f3a3"}.bi-file-music-fill:before{content:"\f3a4"}.bi-file-music:before{content:"\f3a5"}.bi-file-person-fill:before{content:"\f3a6"}.bi-file-person:before{content:"\f3a7"}.bi-file-play-fill:before{content:"\f3a8"}.bi-file-play:before{content:"\f3a9"}.bi-file-plus-fill:before{content:"\f3aa"}.bi-file-plus:before{content:"\f3ab"}.bi-file-post-fill:before{content:"\f3ac"}.bi-file-post:before{content:"\f3ad"}.bi-file-ppt-fill:before{content:"\f3ae"}.bi-file-ppt:before{content:"\f3af"}.bi-file-richtext-fill:before{content:"\f3b0"}.bi-file-richtext:before{content:"\f3b1"}.bi-file-ruled-fill:before{content:"\f3b2"}.bi-file-ruled:before{content:"\f3b3"}.bi-file-slides-fill:before{content:"\f3b4"}.bi-file-slides:before{content:"\f3b5"}.bi-file-spreadsheet-fill:before{content:"\f3b6"}.bi-file-spreadsheet:before{content:"\f3b7"}.bi-file-text-fill:before{content:"\f3b8"}.bi-file-text:before{content:"\f3b9"}.bi-file-word-fill:before{content:"\f3ba"}.bi-file-word:before{content:"\f3bb"}.bi-file-x-fill:before{content:"\f3bc"}.bi-file-x:before{content:"\f3bd"}.bi-file-zip-fill:before{content:"\f3be"}.bi-file-zip:before{content:"\f3bf"}.bi-file:before{content:"\f3c0"}.bi-files-alt:before{content:"\f3c1"}.bi-files:before{content:"\f3c2"}.bi-film:before{content:"\f3c3"}.bi-filter-circle-fill:before{content:"\f3c4"}.bi-filter-circle:before{content:"\f3c5"}.bi-filter-left:before{content:"\f3c6"}.bi-filter-right:before{content:"\f3c7"}.bi-filter-square-fill:before{content:"\f3c8"}.bi-filter-square:before{content:"\f3c9"}.bi-filter:before{content:"\f3ca"}.bi-flag-fill:before{content:"\f3cb"}.bi-flag:before{content:"\f3cc"}.bi-flower1:before{content:"\f3cd"}.bi-flower2:before{content:"\f3ce"}.bi-flower3:before{content:"\f3cf"}.bi-folder-check:before{content:"\f3d0"}.bi-folder-fill:before{content:"\f3d1"}.bi-folder-minus:before{content:"\f3d2"}.bi-folder-plus:before{content:"\f3d3"}.bi-folder-symlink-fill:before{content:"\f3d4"}.bi-folder-symlink:before{content:"\f3d5"}.bi-folder-x:before{content:"\f3d6"}.bi-folder:before{content:"\f3d7"}.bi-folder2-open:before{content:"\f3d8"}.bi-folder2:before{content:"\f3d9"}.bi-fonts:before{content:"\f3da"}.bi-forward-fill:before{content:"\f3db"}.bi-forward:before{content:"\f3dc"}.bi-front:before{content:"\f3dd"}.bi-fullscreen-exit:before{content:"\f3de"}.bi-fullscreen:before{content:"\f3df"}.bi-funnel-fill:before{content:"\f3e0"}.bi-funnel:before{content:"\f3e1"}.bi-gear-fill:before{content:"\f3e2"}.bi-gear-wide-connected:before{content:"\f3e3"}.bi-gear-wide:before{content:"\f3e4"}.bi-gear:before{content:"\f3e5"}.bi-gem:before{content:"\f3e6"}.bi-geo-alt-fill:before{content:"\f3e7"}.bi-geo-alt:before{content:"\f3e8"}.bi-geo-fill:before{content:"\f3e9"}.bi-geo:before{content:"\f3ea"}.bi-gift-fill:before{content:"\f3eb"}.bi-gift:before{content:"\f3ec"}.bi-github:before{content:"\f3ed"}.bi-globe:before{content:"\f3ee"}.bi-globe2:before{content:"\f3ef"}.bi-google:before{content:"\f3f0"}.bi-graph-down:before{content:"\f3f1"}.bi-graph-up:before{content:"\f3f2"}.bi-grid-1x2-fill:before{content:"\f3f3"}.bi-grid-1x2:before{content:"\f3f4"}.bi-grid-3x2-gap-fill:before{content:"\f3f5"}.bi-grid-3x2-gap:before{content:"\f3f6"}.bi-grid-3x2:before{content:"\f3f7"}.bi-grid-3x3-gap-fill:before{content:"\f3f8"}.bi-grid-3x3-gap:before{content:"\f3f9"}.bi-grid-3x3:before{content:"\f3fa"}.bi-grid-fill:before{content:"\f3fb"}.bi-grid:before{content:"\f3fc"}.bi-grip-horizontal:before{content:"\f3fd"}.bi-grip-vertical:before{content:"\f3fe"}.bi-hammer:before{content:"\f3ff"}.bi-hand-index-fill:before{content:"\f400"}.bi-hand-index-thumb-fill:before{content:"\f401"}.bi-hand-index-thumb:before{content:"\f402"}.bi-hand-index:before{content:"\f403"}.bi-hand-thumbs-down-fill:before{content:"\f404"}.bi-hand-thumbs-down:before{content:"\f405"}.bi-hand-thumbs-up-fill:before{content:"\f406"}.bi-hand-thumbs-up:before{content:"\f407"}.bi-handbag-fill:before{content:"\f408"}.bi-handbag:before{content:"\f409"}.bi-hash:before{content:"\f40a"}.bi-hdd-fill:before{content:"\f40b"}.bi-hdd-network-fill:before{content:"\f40c"}.bi-hdd-network:before{content:"\f40d"}.bi-hdd-rack-fill:before{content:"\f40e"}.bi-hdd-rack:before{content:"\f40f"}.bi-hdd-stack-fill:before{content:"\f410"}.bi-hdd-stack:before{content:"\f411"}.bi-hdd:before{content:"\f412"}.bi-headphones:before{content:"\f413"}.bi-headset:before{content:"\f414"}.bi-heart-fill:before{content:"\f415"}.bi-heart-half:before{content:"\f416"}.bi-heart:before{content:"\f417"}.bi-heptagon-fill:before{content:"\f418"}.bi-heptagon-half:before{content:"\f419"}.bi-heptagon:before{content:"\f41a"}.bi-hexagon-fill:before{content:"\f41b"}.bi-hexagon-half:before{content:"\f41c"}.bi-hexagon:before{content:"\f41d"}.bi-hourglass-bottom:before{content:"\f41e"}.bi-hourglass-split:before{content:"\f41f"}.bi-hourglass-top:before{content:"\f420"}.bi-hourglass:before{content:"\f421"}.bi-house-door-fill:before{content:"\f422"}.bi-house-door:before{content:"\f423"}.bi-house-fill:before{content:"\f424"}.bi-house:before{content:"\f425"}.bi-hr:before{content:"\f426"}.bi-hurricane:before{content:"\f427"}.bi-image-alt:before{content:"\f428"}.bi-image-fill:before{content:"\f429"}.bi-image:before{content:"\f42a"}.bi-images:before{content:"\f42b"}.bi-inbox-fill:before{content:"\f42c"}.bi-inbox:before{content:"\f42d"}.bi-inboxes-fill:before{content:"\f42e"}.bi-inboxes:before{content:"\f42f"}.bi-info-circle-fill:before{content:"\f430"}.bi-info-circle:before{content:"\f431"}.bi-info-square-fill:before{content:"\f432"}.bi-info-square:before{content:"\f433"}.bi-info:before{content:"\f434"}.bi-input-cursor-text:before{content:"\f435"}.bi-input-cursor:before{content:"\f436"}.bi-instagram:before{content:"\f437"}.bi-intersect:before{content:"\f438"}.bi-journal-album:before{content:"\f439"}.bi-journal-arrow-down:before{content:"\f43a"}.bi-journal-arrow-up:before{content:"\f43b"}.bi-journal-bookmark-fill:before{content:"\f43c"}.bi-journal-bookmark:before{content:"\f43d"}.bi-journal-check:before{content:"\f43e"}.bi-journal-code:before{content:"\f43f"}.bi-journal-medical:before{content:"\f440"}.bi-journal-minus:before{content:"\f441"}.bi-journal-plus:before{content:"\f442"}.bi-journal-richtext:before{content:"\f443"}.bi-journal-text:before{content:"\f444"}.bi-journal-x:before{content:"\f445"}.bi-journal:before{content:"\f446"}.bi-journals:before{content:"\f447"}.bi-joystick:before{content:"\f448"}.bi-justify-left:before{content:"\f449"}.bi-justify-right:before{content:"\f44a"}.bi-justify:before{content:"\f44b"}.bi-kanban-fill:before{content:"\f44c"}.bi-kanban:before{content:"\f44d"}.bi-key-fill:before{content:"\f44e"}.bi-key:before{content:"\f44f"}.bi-keyboard-fill:before{content:"\f450"}.bi-keyboard:before{content:"\f451"}.bi-ladder:before{content:"\f452"}.bi-lamp-fill:before{content:"\f453"}.bi-lamp:before{content:"\f454"}.bi-laptop-fill:before{content:"\f455"}.bi-laptop:before{content:"\f456"}.bi-layer-backward:before{content:"\f457"}.bi-layer-forward:before{content:"\f458"}.bi-layers-fill:before{content:"\f459"}.bi-layers-half:before{content:"\f45a"}.bi-layers:before{content:"\f45b"}.bi-layout-sidebar-inset-reverse:before{content:"\f45c"}.bi-layout-sidebar-inset:before{content:"\f45d"}.bi-layout-sidebar-reverse:before{content:"\f45e"}.bi-layout-sidebar:before{content:"\f45f"}.bi-layout-split:before{content:"\f460"}.bi-layout-text-sidebar-reverse:before{content:"\f461"}.bi-layout-text-sidebar:before{content:"\f462"}.bi-layout-text-window-reverse:before{content:"\f463"}.bi-layout-text-window:before{content:"\f464"}.bi-layout-three-columns:before{content:"\f465"}.bi-layout-wtf:before{content:"\f466"}.bi-life-preserver:before{content:"\f467"}.bi-lightbulb-fill:before{content:"\f468"}.bi-lightbulb-off-fill:before{content:"\f469"}.bi-lightbulb-off:before{content:"\f46a"}.bi-lightbulb:before{content:"\f46b"}.bi-lightning-charge-fill:before{content:"\f46c"}.bi-lightning-charge:before{content:"\f46d"}.bi-lightning-fill:before{content:"\f46e"}.bi-lightning:before{content:"\f46f"}.bi-link-45deg:before{content:"\f470"}.bi-link:before{content:"\f471"}.bi-linkedin:before{content:"\f472"}.bi-list-check:before{content:"\f473"}.bi-list-nested:before{content:"\f474"}.bi-list-ol:before{content:"\f475"}.bi-list-stars:before{content:"\f476"}.bi-list-task:before{content:"\f477"}.bi-list-ul:before{content:"\f478"}.bi-list:before{content:"\f479"}.bi-lock-fill:before{content:"\f47a"}.bi-lock:before{content:"\f47b"}.bi-mailbox:before{content:"\f47c"}.bi-mailbox2:before{content:"\f47d"}.bi-map-fill:before{content:"\f47e"}.bi-map:before{content:"\f47f"}.bi-markdown-fill:before{content:"\f480"}.bi-markdown:before{content:"\f481"}.bi-mask:before{content:"\f482"}.bi-megaphone-fill:before{content:"\f483"}.bi-megaphone:before{content:"\f484"}.bi-menu-app-fill:before{content:"\f485"}.bi-menu-app:before{content:"\f486"}.bi-menu-button-fill:before{content:"\f487"}.bi-menu-button-wide-fill:before{content:"\f488"}.bi-menu-button-wide:before{content:"\f489"}.bi-menu-button:before{content:"\f48a"}.bi-menu-down:before{content:"\f48b"}.bi-menu-up:before{content:"\f48c"}.bi-mic-fill:before{content:"\f48d"}.bi-mic-mute-fill:before{content:"\f48e"}.bi-mic-mute:before{content:"\f48f"}.bi-mic:before{content:"\f490"}.bi-minecart-loaded:before{content:"\f491"}.bi-minecart:before{content:"\f492"}.bi-moisture:before{content:"\f493"}.bi-moon-fill:before{content:"\f494"}.bi-moon-stars-fill:before{content:"\f495"}.bi-moon-stars:before{content:"\f496"}.bi-moon:before{content:"\f497"}.bi-mouse-fill:before{content:"\f498"}.bi-mouse:before{content:"\f499"}.bi-mouse2-fill:before{content:"\f49a"}.bi-mouse2:before{content:"\f49b"}.bi-mouse3-fill:before{content:"\f49c"}.bi-mouse3:before{content:"\f49d"}.bi-music-note-beamed:before{content:"\f49e"}.bi-music-note-list:before{content:"\f49f"}.bi-music-note:before{content:"\f4a0"}.bi-music-player-fill:before{content:"\f4a1"}.bi-music-player:before{content:"\f4a2"}.bi-newspaper:before{content:"\f4a3"}.bi-node-minus-fill:before{content:"\f4a4"}.bi-node-minus:before{content:"\f4a5"}.bi-node-plus-fill:before{content:"\f4a6"}.bi-node-plus:before{content:"\f4a7"}.bi-nut-fill:before{content:"\f4a8"}.bi-nut:before{content:"\f4a9"}.bi-octagon-fill:before{content:"\f4aa"}.bi-octagon-half:before{content:"\f4ab"}.bi-octagon:before{content:"\f4ac"}.bi-option:before{content:"\f4ad"}.bi-outlet:before{content:"\f4ae"}.bi-paint-bucket:before{content:"\f4af"}.bi-palette-fill:before{content:"\f4b0"}.bi-palette:before{content:"\f4b1"}.bi-palette2:before{content:"\f4b2"}.bi-paperclip:before{content:"\f4b3"}.bi-paragraph:before{content:"\f4b4"}.bi-patch-check-fill:before{content:"\f4b5"}.bi-patch-check:before{content:"\f4b6"}.bi-patch-exclamation-fill:before{content:"\f4b7"}.bi-patch-exclamation:before{content:"\f4b8"}.bi-patch-minus-fill:before{content:"\f4b9"}.bi-patch-minus:before{content:"\f4ba"}.bi-patch-plus-fill:before{content:"\f4bb"}.bi-patch-plus:before{content:"\f4bc"}.bi-patch-question-fill:before{content:"\f4bd"}.bi-patch-question:before{content:"\f4be"}.bi-pause-btn-fill:before{content:"\f4bf"}.bi-pause-btn:before{content:"\f4c0"}.bi-pause-circle-fill:before{content:"\f4c1"}.bi-pause-circle:before{content:"\f4c2"}.bi-pause-fill:before{content:"\f4c3"}.bi-pause:before{content:"\f4c4"}.bi-peace-fill:before{content:"\f4c5"}.bi-peace:before{content:"\f4c6"}.bi-pen-fill:before{content:"\f4c7"}.bi-pen:before{content:"\f4c8"}.bi-pencil-fill:before{content:"\f4c9"}.bi-pencil-square:before{content:"\f4ca"}.bi-pencil:before{content:"\f4cb"}.bi-pentagon-fill:before{content:"\f4cc"}.bi-pentagon-half:before{content:"\f4cd"}.bi-pentagon:before{content:"\f4ce"}.bi-people-fill:before{content:"\f4cf"}.bi-people:before{content:"\f4d0"}.bi-percent:before{content:"\f4d1"}.bi-person-badge-fill:before{content:"\f4d2"}.bi-person-badge:before{content:"\f4d3"}.bi-person-bounding-box:before{content:"\f4d4"}.bi-person-check-fill:before{content:"\f4d5"}.bi-person-check:before{content:"\f4d6"}.bi-person-circle:before{content:"\f4d7"}.bi-person-dash-fill:before{content:"\f4d8"}.bi-person-dash:before{content:"\f4d9"}.bi-person-fill:before{content:"\f4da"}.bi-person-lines-fill:before{content:"\f4db"}.bi-person-plus-fill:before{content:"\f4dc"}.bi-person-plus:before{content:"\f4dd"}.bi-person-square:before{content:"\f4de"}.bi-person-x-fill:before{content:"\f4df"}.bi-person-x:before{content:"\f4e0"}.bi-person:before{content:"\f4e1"}.bi-phone-fill:before{content:"\f4e2"}.bi-phone-landscape-fill:before{content:"\f4e3"}.bi-phone-landscape:before{content:"\f4e4"}.bi-phone-vibrate-fill:before{content:"\f4e5"}.bi-phone-vibrate:before{content:"\f4e6"}.bi-phone:before{content:"\f4e7"}.bi-pie-chart-fill:before{content:"\f4e8"}.bi-pie-chart:before{content:"\f4e9"}.bi-pin-angle-fill:before{content:"\f4ea"}.bi-pin-angle:before{content:"\f4eb"}.bi-pin-fill:before{content:"\f4ec"}.bi-pin:before{content:"\f4ed"}.bi-pip-fill:before{content:"\f4ee"}.bi-pip:before{content:"\f4ef"}.bi-play-btn-fill:before{content:"\f4f0"}.bi-play-btn:before{content:"\f4f1"}.bi-play-circle-fill:before{content:"\f4f2"}.bi-play-circle:before{content:"\f4f3"}.bi-play-fill:before{content:"\f4f4"}.bi-play:before{content:"\f4f5"}.bi-plug-fill:before{content:"\f4f6"}.bi-plug:before{content:"\f4f7"}.bi-plus-circle-dotted:before{content:"\f4f8"}.bi-plus-circle-fill:before{content:"\f4f9"}.bi-plus-circle:before{content:"\f4fa"}.bi-plus-square-dotted:before{content:"\f4fb"}.bi-plus-square-fill:before{content:"\f4fc"}.bi-plus-square:before{content:"\f4fd"}.bi-plus:before{content:"\f4fe"}.bi-power:before{content:"\f4ff"}.bi-printer-fill:before{content:"\f500"}.bi-printer:before{content:"\f501"}.bi-puzzle-fill:before{content:"\f502"}.bi-puzzle:before{content:"\f503"}.bi-question-circle-fill:before{content:"\f504"}.bi-question-circle:before{content:"\f505"}.bi-question-diamond-fill:before{content:"\f506"}.bi-question-diamond:before{content:"\f507"}.bi-question-octagon-fill:before{content:"\f508"}.bi-question-octagon:before{content:"\f509"}.bi-question-square-fill:before{content:"\f50a"}.bi-question-square:before{content:"\f50b"}.bi-question:before{content:"\f50c"}.bi-rainbow:before{content:"\f50d"}.bi-receipt-cutoff:before{content:"\f50e"}.bi-receipt:before{content:"\f50f"}.bi-reception-0:before{content:"\f510"}.bi-reception-1:before{content:"\f511"}.bi-reception-2:before{content:"\f512"}.bi-reception-3:before{content:"\f513"}.bi-reception-4:before{content:"\f514"}.bi-record-btn-fill:before{content:"\f515"}.bi-record-btn:before{content:"\f516"}.bi-record-circle-fill:before{content:"\f517"}.bi-record-circle:before{content:"\f518"}.bi-record-fill:before{content:"\f519"}.bi-record:before{content:"\f51a"}.bi-record2-fill:before{content:"\f51b"}.bi-record2:before{content:"\f51c"}.bi-reply-all-fill:before{content:"\f51d"}.bi-reply-all:before{content:"\f51e"}.bi-reply-fill:before{content:"\f51f"}.bi-reply:before{content:"\f520"}.bi-rss-fill:before{content:"\f521"}.bi-rss:before{content:"\f522"}.bi-rulers:before{content:"\f523"}.bi-save-fill:before{content:"\f524"}.bi-save:before{content:"\f525"}.bi-save2-fill:before{content:"\f526"}.bi-save2:before{content:"\f527"}.bi-scissors:before{content:"\f528"}.bi-screwdriver:before{content:"\f529"}.bi-search:before{content:"\f52a"}.bi-segmented-nav:before{content:"\f52b"}.bi-server:before{content:"\f52c"}.bi-share-fill:before{content:"\f52d"}.bi-share:before{content:"\f52e"}.bi-shield-check:before{content:"\f52f"}.bi-shield-exclamation:before{content:"\f530"}.bi-shield-fill-check:before{content:"\f531"}.bi-shield-fill-exclamation:before{content:"\f532"}.bi-shield-fill-minus:before{content:"\f533"}.bi-shield-fill-plus:before{content:"\f534"}.bi-shield-fill-x:before{content:"\f535"}.bi-shield-fill:before{content:"\f536"}.bi-shield-lock-fill:before{content:"\f537"}.bi-shield-lock:before{content:"\f538"}.bi-shield-minus:before{content:"\f539"}.bi-shield-plus:before{content:"\f53a"}.bi-shield-shaded:before{content:"\f53b"}.bi-shield-slash-fill:before{content:"\f53c"}.bi-shield-slash:before{content:"\f53d"}.bi-shield-x:before{content:"\f53e"}.bi-shield:before{content:"\f53f"}.bi-shift-fill:before{content:"\f540"}.bi-shift:before{content:"\f541"}.bi-shop-window:before{content:"\f542"}.bi-shop:before{content:"\f543"}.bi-shuffle:before{content:"\f544"}.bi-signpost-2-fill:before{content:"\f545"}.bi-signpost-2:before{content:"\f546"}.bi-signpost-fill:before{content:"\f547"}.bi-signpost-split-fill:before{content:"\f548"}.bi-signpost-split:before{content:"\f549"}.bi-signpost:before{content:"\f54a"}.bi-sim-fill:before{content:"\f54b"}.bi-sim:before{content:"\f54c"}.bi-skip-backward-btn-fill:before{content:"\f54d"}.bi-skip-backward-btn:before{content:"\f54e"}.bi-skip-backward-circle-fill:before{content:"\f54f"}.bi-skip-backward-circle:before{content:"\f550"}.bi-skip-backward-fill:before{content:"\f551"}.bi-skip-backward:before{content:"\f552"}.bi-skip-end-btn-fill:before{content:"\f553"}.bi-skip-end-btn:before{content:"\f554"}.bi-skip-end-circle-fill:before{content:"\f555"}.bi-skip-end-circle:before{content:"\f556"}.bi-skip-end-fill:before{content:"\f557"}.bi-skip-end:before{content:"\f558"}.bi-skip-forward-btn-fill:before{content:"\f559"}.bi-skip-forward-btn:before{content:"\f55a"}.bi-skip-forward-circle-fill:before{content:"\f55b"}.bi-skip-forward-circle:before{content:"\f55c"}.bi-skip-forward-fill:before{content:"\f55d"}.bi-skip-forward:before{content:"\f55e"}.bi-skip-start-btn-fill:before{content:"\f55f"}.bi-skip-start-btn:before{content:"\f560"}.bi-skip-start-circle-fill:before{content:"\f561"}.bi-skip-start-circle:before{content:"\f562"}.bi-skip-start-fill:before{content:"\f563"}.bi-skip-start:before{content:"\f564"}.bi-slack:before{content:"\f565"}.bi-slash-circle-fill:before{content:"\f566"}.bi-slash-circle:before{content:"\f567"}.bi-slash-square-fill:before{content:"\f568"}.bi-slash-square:before{content:"\f569"}.bi-slash:before{content:"\f56a"}.bi-sliders:before{content:"\f56b"}.bi-smartwatch:before{content:"\f56c"}.bi-snow:before{content:"\f56d"}.bi-snow2:before{content:"\f56e"}.bi-snow3:before{content:"\f56f"}.bi-sort-alpha-down-alt:before{content:"\f570"}.bi-sort-alpha-down:before{content:"\f571"}.bi-sort-alpha-up-alt:before{content:"\f572"}.bi-sort-alpha-up:before{content:"\f573"}.bi-sort-down-alt:before{content:"\f574"}.bi-sort-down:before{content:"\f575"}.bi-sort-numeric-down-alt:before{content:"\f576"}.bi-sort-numeric-down:before{content:"\f577"}.bi-sort-numeric-up-alt:before{content:"\f578"}.bi-sort-numeric-up:before{content:"\f579"}.bi-sort-up-alt:before{content:"\f57a"}.bi-sort-up:before{content:"\f57b"}.bi-soundwave:before{content:"\f57c"}.bi-speaker-fill:before{content:"\f57d"}.bi-speaker:before{content:"\f57e"}.bi-speedometer:before{content:"\f57f"}.bi-speedometer2:before{content:"\f580"}.bi-spellcheck:before{content:"\f581"}.bi-square-fill:before{content:"\f582"}.bi-square-half:before{content:"\f583"}.bi-square:before{content:"\f584"}.bi-stack:before{content:"\f585"}.bi-star-fill:before{content:"\f586"}.bi-star-half:before{content:"\f587"}.bi-star:before{content:"\f588"}.bi-stars:before{content:"\f589"}.bi-stickies-fill:before{content:"\f58a"}.bi-stickies:before{content:"\f58b"}.bi-sticky-fill:before{content:"\f58c"}.bi-sticky:before{content:"\f58d"}.bi-stop-btn-fill:before{content:"\f58e"}.bi-stop-btn:before{content:"\f58f"}.bi-stop-circle-fill:before{content:"\f590"}.bi-stop-circle:before{content:"\f591"}.bi-stop-fill:before{content:"\f592"}.bi-stop:before{content:"\f593"}.bi-stoplights-fill:before{content:"\f594"}.bi-stoplights:before{content:"\f595"}.bi-stopwatch-fill:before{content:"\f596"}.bi-stopwatch:before{content:"\f597"}.bi-subtract:before{content:"\f598"}.bi-suit-club-fill:before{content:"\f599"}.bi-suit-club:before{content:"\f59a"}.bi-suit-diamond-fill:before{content:"\f59b"}.bi-suit-diamond:before{content:"\f59c"}.bi-suit-heart-fill:before{content:"\f59d"}.bi-suit-heart:before{content:"\f59e"}.bi-suit-spade-fill:before{content:"\f59f"}.bi-suit-spade:before{content:"\f5a0"}.bi-sun-fill:before{content:"\f5a1"}.bi-sun:before{content:"\f5a2"}.bi-sunglasses:before{content:"\f5a3"}.bi-sunrise-fill:before{content:"\f5a4"}.bi-sunrise:before{content:"\f5a5"}.bi-sunset-fill:before{content:"\f5a6"}.bi-sunset:before{content:"\f5a7"}.bi-symmetry-horizontal:before{content:"\f5a8"}.bi-symmetry-vertical:before{content:"\f5a9"}.bi-table:before{content:"\f5aa"}.bi-tablet-fill:before{content:"\f5ab"}.bi-tablet-landscape-fill:before{content:"\f5ac"}.bi-tablet-landscape:before{content:"\f5ad"}.bi-tablet:before{content:"\f5ae"}.bi-tag-fill:before{content:"\f5af"}.bi-tag:before{content:"\f5b0"}.bi-tags-fill:before{content:"\f5b1"}.bi-tags:before{content:"\f5b2"}.bi-telegram:before{content:"\f5b3"}.bi-telephone-fill:before{content:"\f5b4"}.bi-telephone-forward-fill:before{content:"\f5b5"}.bi-telephone-forward:before{content:"\f5b6"}.bi-telephone-inbound-fill:before{content:"\f5b7"}.bi-telephone-inbound:before{content:"\f5b8"}.bi-telephone-minus-fill:before{content:"\f5b9"}.bi-telephone-minus:before{content:"\f5ba"}.bi-telephone-outbound-fill:before{content:"\f5bb"}.bi-telephone-outbound:before{content:"\f5bc"}.bi-telephone-plus-fill:before{content:"\f5bd"}.bi-telephone-plus:before{content:"\f5be"}.bi-telephone-x-fill:before{content:"\f5bf"}.bi-telephone-x:before{content:"\f5c0"}.bi-telephone:before{content:"\f5c1"}.bi-terminal-fill:before{content:"\f5c2"}.bi-terminal:before{content:"\f5c3"}.bi-text-center:before{content:"\f5c4"}.bi-text-indent-left:before{content:"\f5c5"}.bi-text-indent-right:before{content:"\f5c6"}.bi-text-left:before{content:"\f5c7"}.bi-text-paragraph:before{content:"\f5c8"}.bi-text-right:before{content:"\f5c9"}.bi-textarea-resize:before{content:"\f5ca"}.bi-textarea-t:before{content:"\f5cb"}.bi-textarea:before{content:"\f5cc"}.bi-thermometer-half:before{content:"\f5cd"}.bi-thermometer-high:before{content:"\f5ce"}.bi-thermometer-low:before{content:"\f5cf"}.bi-thermometer-snow:before{content:"\f5d0"}.bi-thermometer-sun:before{content:"\f5d1"}.bi-thermometer:before{content:"\f5d2"}.bi-three-dots-vertical:before{content:"\f5d3"}.bi-three-dots:before{content:"\f5d4"}.bi-toggle-off:before{content:"\f5d5"}.bi-toggle-on:before{content:"\f5d6"}.bi-toggle2-off:before{content:"\f5d7"}.bi-toggle2-on:before{content:"\f5d8"}.bi-toggles:before{content:"\f5d9"}.bi-toggles2:before{content:"\f5da"}.bi-tools:before{content:"\f5db"}.bi-tornado:before{content:"\f5dc"}.bi-trash-fill:before{content:"\f5dd"}.bi-trash:before{content:"\f5de"}.bi-trash2-fill:before{content:"\f5df"}.bi-trash2:before{content:"\f5e0"}.bi-tree-fill:before{content:"\f5e1"}.bi-tree:before{content:"\f5e2"}.bi-triangle-fill:before{content:"\f5e3"}.bi-triangle-half:before{content:"\f5e4"}.bi-triangle:before{content:"\f5e5"}.bi-trophy-fill:before{content:"\f5e6"}.bi-trophy:before{content:"\f5e7"}.bi-tropical-storm:before{content:"\f5e8"}.bi-truck-flatbed:before{content:"\f5e9"}.bi-truck:before{content:"\f5ea"}.bi-tsunami:before{content:"\f5eb"}.bi-tv-fill:before{content:"\f5ec"}.bi-tv:before{content:"\f5ed"}.bi-twitch:before{content:"\f5ee"}.bi-twitter:before{content:"\f5ef"}.bi-type-bold:before{content:"\f5f0"}.bi-type-h1:before{content:"\f5f1"}.bi-type-h2:before{content:"\f5f2"}.bi-type-h3:before{content:"\f5f3"}.bi-type-italic:before{content:"\f5f4"}.bi-type-strikethrough:before{content:"\f5f5"}.bi-type-underline:before{content:"\f5f6"}.bi-type:before{content:"\f5f7"}.bi-ui-checks-grid:before{content:"\f5f8"}.bi-ui-checks:before{content:"\f5f9"}.bi-ui-radios-grid:before{content:"\f5fa"}.bi-ui-radios:before{content:"\f5fb"}.bi-umbrella-fill:before{content:"\f5fc"}.bi-umbrella:before{content:"\f5fd"}.bi-union:before{content:"\f5fe"}.bi-unlock-fill:before{content:"\f5ff"}.bi-unlock:before{content:"\f600"}.bi-upc-scan:before{content:"\f601"}.bi-upc:before{content:"\f602"}.bi-upload:before{content:"\f603"}.bi-vector-pen:before{content:"\f604"}.bi-view-list:before{content:"\f605"}.bi-view-stacked:before{content:"\f606"}.bi-vinyl-fill:before{content:"\f607"}.bi-vinyl:before{content:"\f608"}.bi-voicemail:before{content:"\f609"}.bi-volume-down-fill:before{content:"\f60a"}.bi-volume-down:before{content:"\f60b"}.bi-volume-mute-fill:before{content:"\f60c"}.bi-volume-mute:before{content:"\f60d"}.bi-volume-off-fill:before{content:"\f60e"}.bi-volume-off:before{content:"\f60f"}.bi-volume-up-fill:before{content:"\f610"}.bi-volume-up:before{content:"\f611"}.bi-vr:before{content:"\f612"}.bi-wallet-fill:before{content:"\f613"}.bi-wallet:before{content:"\f614"}.bi-wallet2:before{content:"\f615"}.bi-watch:before{content:"\f616"}.bi-water:before{content:"\f617"}.bi-whatsapp:before{content:"\f618"}.bi-wifi-1:before{content:"\f619"}.bi-wifi-2:before{content:"\f61a"}.bi-wifi-off:before{content:"\f61b"}.bi-wifi:before{content:"\f61c"}.bi-wind:before{content:"\f61d"}.bi-window-dock:before{content:"\f61e"}.bi-window-sidebar:before{content:"\f61f"}.bi-window:before{content:"\f620"}.bi-wrench:before{content:"\f621"}.bi-x-circle-fill:before{content:"\f622"}.bi-x-circle:before{content:"\f623"}.bi-x-diamond-fill:before{content:"\f624"}.bi-x-diamond:before{content:"\f625"}.bi-x-octagon-fill:before{content:"\f626"}.bi-x-octagon:before{content:"\f627"}.bi-x-square-fill:before{content:"\f628"}.bi-x-square:before{content:"\f629"}.bi-x:before{content:"\f62a"}.bi-youtube:before{content:"\f62b"}.bi-zoom-in:before{content:"\f62c"}.bi-zoom-out:before{content:"\f62d"}.bi-bank:before{content:"\f62e"}.bi-bank2:before{content:"\f62f"}.bi-bell-slash-fill:before{content:"\f630"}.bi-bell-slash:before{content:"\f631"}.bi-cash-coin:before{content:"\f632"}.bi-check-lg:before{content:"\f633"}.bi-coin:before{content:"\f634"}.bi-currency-bitcoin:before{content:"\f635"}.bi-currency-dollar:before{content:"\f636"}.bi-currency-euro:before{content:"\f637"}.bi-currency-exchange:before{content:"\f638"}.bi-currency-pound:before{content:"\f639"}.bi-currency-yen:before{content:"\f63a"}.bi-dash-lg:before{content:"\f63b"}.bi-exclamation-lg:before{content:"\f63c"}.bi-file-earmark-pdf-fill:before{content:"\f63d"}.bi-file-earmark-pdf:before{content:"\f63e"}.bi-file-pdf-fill:before{content:"\f63f"}.bi-file-pdf:before{content:"\f640"}.bi-gender-ambiguous:before{content:"\f641"}.bi-gender-female:before{content:"\f642"}.bi-gender-male:before{content:"\f643"}.bi-gender-trans:before{content:"\f644"}.bi-headset-vr:before{content:"\f645"}.bi-info-lg:before{content:"\f646"}.bi-mastodon:before{content:"\f647"}.bi-messenger:before{content:"\f648"}.bi-piggy-bank-fill:before{content:"\f649"}.bi-piggy-bank:before{content:"\f64a"}.bi-pin-map-fill:before{content:"\f64b"}.bi-pin-map:before{content:"\f64c"}.bi-plus-lg:before{content:"\f64d"}.bi-question-lg:before{content:"\f64e"}.bi-recycle:before{content:"\f64f"}.bi-reddit:before{content:"\f650"}.bi-safe-fill:before{content:"\f651"}.bi-safe2-fill:before{content:"\f652"}.bi-safe2:before{content:"\f653"}.bi-sd-card-fill:before{content:"\f654"}.bi-sd-card:before{content:"\f655"}.bi-skype:before{content:"\f656"}.bi-slash-lg:before{content:"\f657"}.bi-translate:before{content:"\f658"}.bi-x-lg:before{content:"\f659"}.bi-safe:before{content:"\f65a"}.bi-apple:before{content:"\f65b"}.bi-microsoft:before{content:"\f65d"}.bi-windows:before{content:"\f65e"}.bi-behance:before{content:"\f65c"}.bi-dribbble:before{content:"\f65f"}.bi-line:before{content:"\f660"}.bi-medium:before{content:"\f661"}.bi-paypal:before{content:"\f662"}.bi-pinterest:before{content:"\f663"}.bi-signal:before{content:"\f664"}.bi-snapchat:before{content:"\f665"}.bi-spotify:before{content:"\f666"}.bi-stack-overflow:before{content:"\f667"}.bi-strava:before{content:"\f668"}.bi-wordpress:before{content:"\f669"}.bi-vimeo:before{content:"\f66a"}.bi-activity:before{content:"\f66b"}.bi-easel2-fill:before{content:"\f66c"}.bi-easel2:before{content:"\f66d"}.bi-easel3-fill:before{content:"\f66e"}.bi-easel3:before{content:"\f66f"}.bi-fan:before{content:"\f670"}.bi-fingerprint:before{content:"\f671"}.bi-graph-down-arrow:before{content:"\f672"}.bi-graph-up-arrow:before{content:"\f673"}.bi-hypnotize:before{content:"\f674"}.bi-magic:before{content:"\f675"}.bi-person-rolodex:before{content:"\f676"}.bi-person-video:before{content:"\f677"}.bi-person-video2:before{content:"\f678"}.bi-person-video3:before{content:"\f679"}.bi-person-workspace:before{content:"\f67a"}.bi-radioactive:before{content:"\f67b"}.bi-webcam-fill:before{content:"\f67c"}.bi-webcam:before{content:"\f67d"}.bi-yin-yang:before{content:"\f67e"}.bi-bandaid-fill:before{content:"\f680"}.bi-bandaid:before{content:"\f681"}.bi-bluetooth:before{content:"\f682"}.bi-body-text:before{content:"\f683"}.bi-boombox:before{content:"\f684"}.bi-boxes:before{content:"\f685"}.bi-dpad-fill:before{content:"\f686"}.bi-dpad:before{content:"\f687"}.bi-ear-fill:before{content:"\f688"}.bi-ear:before{content:"\f689"}.bi-envelope-check-fill:before{content:"\f68b"}.bi-envelope-check:before{content:"\f68c"}.bi-envelope-dash-fill:before{content:"\f68e"}.bi-envelope-dash:before{content:"\f68f"}.bi-envelope-exclamation-fill:before{content:"\f691"}.bi-envelope-exclamation:before{content:"\f692"}.bi-envelope-plus-fill:before{content:"\f693"}.bi-envelope-plus:before{content:"\f694"}.bi-envelope-slash-fill:before{content:"\f696"}.bi-envelope-slash:before{content:"\f697"}.bi-envelope-x-fill:before{content:"\f699"}.bi-envelope-x:before{content:"\f69a"}.bi-explicit-fill:before{content:"\f69b"}.bi-explicit:before{content:"\f69c"}.bi-git:before{content:"\f69d"}.bi-infinity:before{content:"\f69e"}.bi-list-columns-reverse:before{content:"\f69f"}.bi-list-columns:before{content:"\f6a0"}.bi-meta:before{content:"\f6a1"}.bi-nintendo-switch:before{content:"\f6a4"}.bi-pc-display-horizontal:before{content:"\f6a5"}.bi-pc-display:before{content:"\f6a6"}.bi-pc-horizontal:before{content:"\f6a7"}.bi-pc:before{content:"\f6a8"}.bi-playstation:before{content:"\f6a9"}.bi-plus-slash-minus:before{content:"\f6aa"}.bi-projector-fill:before{content:"\f6ab"}.bi-projector:before{content:"\f6ac"}.bi-qr-code-scan:before{content:"\f6ad"}.bi-qr-code:before{content:"\f6ae"}.bi-quora:before{content:"\f6af"}.bi-quote:before{content:"\f6b0"}.bi-robot:before{content:"\f6b1"}.bi-send-check-fill:before{content:"\f6b2"}.bi-send-check:before{content:"\f6b3"}.bi-send-dash-fill:before{content:"\f6b4"}.bi-send-dash:before{content:"\f6b5"}.bi-send-exclamation-fill:before{content:"\f6b7"}.bi-send-exclamation:before{content:"\f6b8"}.bi-send-fill:before{content:"\f6b9"}.bi-send-plus-fill:before{content:"\f6ba"}.bi-send-plus:before{content:"\f6bb"}.bi-send-slash-fill:before{content:"\f6bc"}.bi-send-slash:before{content:"\f6bd"}.bi-send-x-fill:before{content:"\f6be"}.bi-send-x:before{content:"\f6bf"}.bi-send:before{content:"\f6c0"}.bi-steam:before{content:"\f6c1"}.bi-terminal-dash:before{content:"\f6c3"}.bi-terminal-plus:before{content:"\f6c4"}.bi-terminal-split:before{content:"\f6c5"}.bi-ticket-detailed-fill:before{content:"\f6c6"}.bi-ticket-detailed:before{content:"\f6c7"}.bi-ticket-fill:before{content:"\f6c8"}.bi-ticket-perforated-fill:before{content:"\f6c9"}.bi-ticket-perforated:before{content:"\f6ca"}.bi-ticket:before{content:"\f6cb"}.bi-tiktok:before{content:"\f6cc"}.bi-window-dash:before{content:"\f6cd"}.bi-window-desktop:before{content:"\f6ce"}.bi-window-fullscreen:before{content:"\f6cf"}.bi-window-plus:before{content:"\f6d0"}.bi-window-split:before{content:"\f6d1"}.bi-window-stack:before{content:"\f6d2"}.bi-window-x:before{content:"\f6d3"}.bi-xbox:before{content:"\f6d4"}.bi-ethernet:before{content:"\f6d5"}.bi-hdmi-fill:before{content:"\f6d6"}.bi-hdmi:before{content:"\f6d7"}.bi-usb-c-fill:before{content:"\f6d8"}.bi-usb-c:before{content:"\f6d9"}.bi-usb-fill:before{content:"\f6da"}.bi-usb-plug-fill:before{content:"\f6db"}.bi-usb-plug:before{content:"\f6dc"}.bi-usb-symbol:before{content:"\f6dd"}.bi-usb:before{content:"\f6de"}.bi-boombox-fill:before{content:"\f6df"}.bi-displayport:before{content:"\f6e1"}.bi-gpu-card:before{content:"\f6e2"}.bi-memory:before{content:"\f6e3"}.bi-modem-fill:before{content:"\f6e4"}.bi-modem:before{content:"\f6e5"}.bi-motherboard-fill:before{content:"\f6e6"}.bi-motherboard:before{content:"\f6e7"}.bi-optical-audio-fill:before{content:"\f6e8"}.bi-optical-audio:before{content:"\f6e9"}.bi-pci-card:before{content:"\f6ea"}.bi-router-fill:before{content:"\f6eb"}.bi-router:before{content:"\f6ec"}.bi-thunderbolt-fill:before{content:"\f6ef"}.bi-thunderbolt:before{content:"\f6f0"}.bi-usb-drive-fill:before{content:"\f6f1"}.bi-usb-drive:before{content:"\f6f2"}.bi-usb-micro-fill:before{content:"\f6f3"}.bi-usb-micro:before{content:"\f6f4"}.bi-usb-mini-fill:before{content:"\f6f5"}.bi-usb-mini:before{content:"\f6f6"}.bi-cloud-haze2:before{content:"\f6f7"}.bi-device-hdd-fill:before{content:"\f6f8"}.bi-device-hdd:before{content:"\f6f9"}.bi-device-ssd-fill:before{content:"\f6fa"}.bi-device-ssd:before{content:"\f6fb"}.bi-displayport-fill:before{content:"\f6fc"}.bi-mortarboard-fill:before{content:"\f6fd"}.bi-mortarboard:before{content:"\f6fe"}.bi-terminal-x:before{content:"\f6ff"}.bi-arrow-through-heart-fill:before{content:"\f700"}.bi-arrow-through-heart:before{content:"\f701"}.bi-badge-sd-fill:before{content:"\f702"}.bi-badge-sd:before{content:"\f703"}.bi-bag-heart-fill:before{content:"\f704"}.bi-bag-heart:before{content:"\f705"}.bi-balloon-fill:before{content:"\f706"}.bi-balloon-heart-fill:before{content:"\f707"}.bi-balloon-heart:before{content:"\f708"}.bi-balloon:before{content:"\f709"}.bi-box2-fill:before{content:"\f70a"}.bi-box2-heart-fill:before{content:"\f70b"}.bi-box2-heart:before{content:"\f70c"}.bi-box2:before{content:"\f70d"}.bi-braces-asterisk:before{content:"\f70e"}.bi-calendar-heart-fill:before{content:"\f70f"}.bi-calendar-heart:before{content:"\f710"}.bi-calendar2-heart-fill:before{content:"\f711"}.bi-calendar2-heart:before{content:"\f712"}.bi-chat-heart-fill:before{content:"\f713"}.bi-chat-heart:before{content:"\f714"}.bi-chat-left-heart-fill:before{content:"\f715"}.bi-chat-left-heart:before{content:"\f716"}.bi-chat-right-heart-fill:before{content:"\f717"}.bi-chat-right-heart:before{content:"\f718"}.bi-chat-square-heart-fill:before{content:"\f719"}.bi-chat-square-heart:before{content:"\f71a"}.bi-clipboard-check-fill:before{content:"\f71b"}.bi-clipboard-data-fill:before{content:"\f71c"}.bi-clipboard-fill:before{content:"\f71d"}.bi-clipboard-heart-fill:before{content:"\f71e"}.bi-clipboard-heart:before{content:"\f71f"}.bi-clipboard-minus-fill:before{content:"\f720"}.bi-clipboard-plus-fill:before{content:"\f721"}.bi-clipboard-pulse:before{content:"\f722"}.bi-clipboard-x-fill:before{content:"\f723"}.bi-clipboard2-check-fill:before{content:"\f724"}.bi-clipboard2-check:before{content:"\f725"}.bi-clipboard2-data-fill:before{content:"\f726"}.bi-clipboard2-data:before{content:"\f727"}.bi-clipboard2-fill:before{content:"\f728"}.bi-clipboard2-heart-fill:before{content:"\f729"}.bi-clipboard2-heart:before{content:"\f72a"}.bi-clipboard2-minus-fill:before{content:"\f72b"}.bi-clipboard2-minus:before{content:"\f72c"}.bi-clipboard2-plus-fill:before{content:"\f72d"}.bi-clipboard2-plus:before{content:"\f72e"}.bi-clipboard2-pulse-fill:before{content:"\f72f"}.bi-clipboard2-pulse:before{content:"\f730"}.bi-clipboard2-x-fill:before{content:"\f731"}.bi-clipboard2-x:before{content:"\f732"}.bi-clipboard2:before{content:"\f733"}.bi-emoji-kiss-fill:before{content:"\f734"}.bi-emoji-kiss:before{content:"\f735"}.bi-envelope-heart-fill:before{content:"\f736"}.bi-envelope-heart:before{content:"\f737"}.bi-envelope-open-heart-fill:before{content:"\f738"}.bi-envelope-open-heart:before{content:"\f739"}.bi-envelope-paper-fill:before{content:"\f73a"}.bi-envelope-paper-heart-fill:before{content:"\f73b"}.bi-envelope-paper-heart:before{content:"\f73c"}.bi-envelope-paper:before{content:"\f73d"}.bi-filetype-aac:before{content:"\f73e"}.bi-filetype-ai:before{content:"\f73f"}.bi-filetype-bmp:before{content:"\f740"}.bi-filetype-cs:before{content:"\f741"}.bi-filetype-css:before{content:"\f742"}.bi-filetype-csv:before{content:"\f743"}.bi-filetype-doc:before{content:"\f744"}.bi-filetype-docx:before{content:"\f745"}.bi-filetype-exe:before{content:"\f746"}.bi-filetype-gif:before{content:"\f747"}.bi-filetype-heic:before{content:"\f748"}.bi-filetype-html:before{content:"\f749"}.bi-filetype-java:before{content:"\f74a"}.bi-filetype-jpg:before{content:"\f74b"}.bi-filetype-js:before{content:"\f74c"}.bi-filetype-jsx:before{content:"\f74d"}.bi-filetype-key:before{content:"\f74e"}.bi-filetype-m4p:before{content:"\f74f"}.bi-filetype-md:before{content:"\f750"}.bi-filetype-mdx:before{content:"\f751"}.bi-filetype-mov:before{content:"\f752"}.bi-filetype-mp3:before{content:"\f753"}.bi-filetype-mp4:before{content:"\f754"}.bi-filetype-otf:before{content:"\f755"}.bi-filetype-pdf:before{content:"\f756"}.bi-filetype-php:before{content:"\f757"}.bi-filetype-png:before{content:"\f758"}.bi-filetype-ppt:before{content:"\f75a"}.bi-filetype-psd:before{content:"\f75b"}.bi-filetype-py:before{content:"\f75c"}.bi-filetype-raw:before{content:"\f75d"}.bi-filetype-rb:before{content:"\f75e"}.bi-filetype-sass:before{content:"\f75f"}.bi-filetype-scss:before{content:"\f760"}.bi-filetype-sh:before{content:"\f761"}.bi-filetype-svg:before{content:"\f762"}.bi-filetype-tiff:before{content:"\f763"}.bi-filetype-tsx:before{content:"\f764"}.bi-filetype-ttf:before{content:"\f765"}.bi-filetype-txt:before{content:"\f766"}.bi-filetype-wav:before{content:"\f767"}.bi-filetype-woff:before{content:"\f768"}.bi-filetype-xls:before{content:"\f76a"}.bi-filetype-xml:before{content:"\f76b"}.bi-filetype-yml:before{content:"\f76c"}.bi-heart-arrow:before{content:"\f76d"}.bi-heart-pulse-fill:before{content:"\f76e"}.bi-heart-pulse:before{content:"\f76f"}.bi-heartbreak-fill:before{content:"\f770"}.bi-heartbreak:before{content:"\f771"}.bi-hearts:before{content:"\f772"}.bi-hospital-fill:before{content:"\f773"}.bi-hospital:before{content:"\f774"}.bi-house-heart-fill:before{content:"\f775"}.bi-house-heart:before{content:"\f776"}.bi-incognito:before{content:"\f777"}.bi-magnet-fill:before{content:"\f778"}.bi-magnet:before{content:"\f779"}.bi-person-heart:before{content:"\f77a"}.bi-person-hearts:before{content:"\f77b"}.bi-phone-flip:before{content:"\f77c"}.bi-plugin:before{content:"\f77d"}.bi-postage-fill:before{content:"\f77e"}.bi-postage-heart-fill:before{content:"\f77f"}.bi-postage-heart:before{content:"\f780"}.bi-postage:before{content:"\f781"}.bi-postcard-fill:before{content:"\f782"}.bi-postcard-heart-fill:before{content:"\f783"}.bi-postcard-heart:before{content:"\f784"}.bi-postcard:before{content:"\f785"}.bi-search-heart-fill:before{content:"\f786"}.bi-search-heart:before{content:"\f787"}.bi-sliders2-vertical:before{content:"\f788"}.bi-sliders2:before{content:"\f789"}.bi-trash3-fill:before{content:"\f78a"}.bi-trash3:before{content:"\f78b"}.bi-valentine:before{content:"\f78c"}.bi-valentine2:before{content:"\f78d"}.bi-wrench-adjustable-circle-fill:before{content:"\f78e"}.bi-wrench-adjustable-circle:before{content:"\f78f"}.bi-wrench-adjustable:before{content:"\f790"}.bi-filetype-json:before{content:"\f791"}.bi-filetype-pptx:before{content:"\f792"}.bi-filetype-xlsx:before{content:"\f793"}.bi-1-circle-fill:before{content:"\f796"}.bi-1-circle:before{content:"\f797"}.bi-1-square-fill:before{content:"\f798"}.bi-1-square:before{content:"\f799"}.bi-2-circle-fill:before{content:"\f79c"}.bi-2-circle:before{content:"\f79d"}.bi-2-square-fill:before{content:"\f79e"}.bi-2-square:before{content:"\f79f"}.bi-3-circle-fill:before{content:"\f7a2"}.bi-3-circle:before{content:"\f7a3"}.bi-3-square-fill:before{content:"\f7a4"}.bi-3-square:before{content:"\f7a5"}.bi-4-circle-fill:before{content:"\f7a8"}.bi-4-circle:before{content:"\f7a9"}.bi-4-square-fill:before{content:"\f7aa"}.bi-4-square:before{content:"\f7ab"}.bi-5-circle-fill:before{content:"\f7ae"}.bi-5-circle:before{content:"\f7af"}.bi-5-square-fill:before{content:"\f7b0"}.bi-5-square:before{content:"\f7b1"}.bi-6-circle-fill:before{content:"\f7b4"}.bi-6-circle:before{content:"\f7b5"}.bi-6-square-fill:before{content:"\f7b6"}.bi-6-square:before{content:"\f7b7"}.bi-7-circle-fill:before{content:"\f7ba"}.bi-7-circle:before{content:"\f7bb"}.bi-7-square-fill:before{content:"\f7bc"}.bi-7-square:before{content:"\f7bd"}.bi-8-circle-fill:before{content:"\f7c0"}.bi-8-circle:before{content:"\f7c1"}.bi-8-square-fill:before{content:"\f7c2"}.bi-8-square:before{content:"\f7c3"}.bi-9-circle-fill:before{content:"\f7c6"}.bi-9-circle:before{content:"\f7c7"}.bi-9-square-fill:before{content:"\f7c8"}.bi-9-square:before{content:"\f7c9"}.bi-airplane-engines-fill:before{content:"\f7ca"}.bi-airplane-engines:before{content:"\f7cb"}.bi-airplane-fill:before{content:"\f7cc"}.bi-airplane:before{content:"\f7cd"}.bi-alexa:before{content:"\f7ce"}.bi-alipay:before{content:"\f7cf"}.bi-android:before{content:"\f7d0"}.bi-android2:before{content:"\f7d1"}.bi-box-fill:before{content:"\f7d2"}.bi-box-seam-fill:before{content:"\f7d3"}.bi-browser-chrome:before{content:"\f7d4"}.bi-browser-edge:before{content:"\f7d5"}.bi-browser-firefox:before{content:"\f7d6"}.bi-browser-safari:before{content:"\f7d7"}.bi-c-circle-fill:before{content:"\f7da"}.bi-c-circle:before{content:"\f7db"}.bi-c-square-fill:before{content:"\f7dc"}.bi-c-square:before{content:"\f7dd"}.bi-capsule-pill:before{content:"\f7de"}.bi-capsule:before{content:"\f7df"}.bi-car-front-fill:before{content:"\f7e0"}.bi-car-front:before{content:"\f7e1"}.bi-cassette-fill:before{content:"\f7e2"}.bi-cassette:before{content:"\f7e3"}.bi-cc-circle-fill:before{content:"\f7e6"}.bi-cc-circle:before{content:"\f7e7"}.bi-cc-square-fill:before{content:"\f7e8"}.bi-cc-square:before{content:"\f7e9"}.bi-cup-hot-fill:before{content:"\f7ea"}.bi-cup-hot:before{content:"\f7eb"}.bi-currency-rupee:before{content:"\f7ec"}.bi-dropbox:before{content:"\f7ed"}.bi-escape:before{content:"\f7ee"}.bi-fast-forward-btn-fill:before{content:"\f7ef"}.bi-fast-forward-btn:before{content:"\f7f0"}.bi-fast-forward-circle-fill:before{content:"\f7f1"}.bi-fast-forward-circle:before{content:"\f7f2"}.bi-fast-forward-fill:before{content:"\f7f3"}.bi-fast-forward:before{content:"\f7f4"}.bi-filetype-sql:before{content:"\f7f5"}.bi-fire:before{content:"\f7f6"}.bi-google-play:before{content:"\f7f7"}.bi-h-circle-fill:before{content:"\f7fa"}.bi-h-circle:before{content:"\f7fb"}.bi-h-square-fill:before{content:"\f7fc"}.bi-h-square:before{content:"\f7fd"}.bi-indent:before{content:"\f7fe"}.bi-lungs-fill:before{content:"\f7ff"}.bi-lungs:before{content:"\f800"}.bi-microsoft-teams:before{content:"\f801"}.bi-p-circle-fill:before{content:"\f804"}.bi-p-circle:before{content:"\f805"}.bi-p-square-fill:before{content:"\f806"}.bi-p-square:before{content:"\f807"}.bi-pass-fill:before{content:"\f808"}.bi-pass:before{content:"\f809"}.bi-prescription:before{content:"\f80a"}.bi-prescription2:before{content:"\f80b"}.bi-r-circle-fill:before{content:"\f80e"}.bi-r-circle:before{content:"\f80f"}.bi-r-square-fill:before{content:"\f810"}.bi-r-square:before{content:"\f811"}.bi-repeat-1:before{content:"\f812"}.bi-repeat:before{content:"\f813"}.bi-rewind-btn-fill:before{content:"\f814"}.bi-rewind-btn:before{content:"\f815"}.bi-rewind-circle-fill:before{content:"\f816"}.bi-rewind-circle:before{content:"\f817"}.bi-rewind-fill:before{content:"\f818"}.bi-rewind:before{content:"\f819"}.bi-train-freight-front-fill:before{content:"\f81a"}.bi-train-freight-front:before{content:"\f81b"}.bi-train-front-fill:before{content:"\f81c"}.bi-train-front:before{content:"\f81d"}.bi-train-lightrail-front-fill:before{content:"\f81e"}.bi-train-lightrail-front:before{content:"\f81f"}.bi-truck-front-fill:before{content:"\f820"}.bi-truck-front:before{content:"\f821"}.bi-ubuntu:before{content:"\f822"}.bi-unindent:before{content:"\f823"}.bi-unity:before{content:"\f824"}.bi-universal-access-circle:before{content:"\f825"}.bi-universal-access:before{content:"\f826"}.bi-virus:before{content:"\f827"}.bi-virus2:before{content:"\f828"}.bi-wechat:before{content:"\f829"}.bi-yelp:before{content:"\f82a"}.bi-sign-stop-fill:before{content:"\f82b"}.bi-sign-stop-lights-fill:before{content:"\f82c"}.bi-sign-stop-lights:before{content:"\f82d"}.bi-sign-stop:before{content:"\f82e"}.bi-sign-turn-left-fill:before{content:"\f82f"}.bi-sign-turn-left:before{content:"\f830"}.bi-sign-turn-right-fill:before{content:"\f831"}.bi-sign-turn-right:before{content:"\f832"}.bi-sign-turn-slight-left-fill:before{content:"\f833"}.bi-sign-turn-slight-left:before{content:"\f834"}.bi-sign-turn-slight-right-fill:before{content:"\f835"}.bi-sign-turn-slight-right:before{content:"\f836"}.bi-sign-yield-fill:before{content:"\f837"}.bi-sign-yield:before{content:"\f838"}.bi-ev-station-fill:before{content:"\f839"}.bi-ev-station:before{content:"\f83a"}.bi-fuel-pump-diesel-fill:before{content:"\f83b"}.bi-fuel-pump-diesel:before{content:"\f83c"}.bi-fuel-pump-fill:before{content:"\f83d"}.bi-fuel-pump:before{content:"\f83e"}.bi-0-circle-fill:before{content:"\f83f"}.bi-0-circle:before{content:"\f840"}.bi-0-square-fill:before{content:"\f841"}.bi-0-square:before{content:"\f842"}.bi-rocket-fill:before{content:"\f843"}.bi-rocket-takeoff-fill:before{content:"\f844"}.bi-rocket-takeoff:before{content:"\f845"}.bi-rocket:before{content:"\f846"}.bi-stripe:before{content:"\f847"}.bi-subscript:before{content:"\f848"}.bi-superscript:before{content:"\f849"}.bi-trello:before{content:"\f84a"}.bi-envelope-at-fill:before{content:"\f84b"}.bi-envelope-at:before{content:"\f84c"}.bi-regex:before{content:"\f84d"}.bi-text-wrap:before{content:"\f84e"}.bi-sign-dead-end-fill:before{content:"\f84f"}.bi-sign-dead-end:before{content:"\f850"}.bi-sign-do-not-enter-fill:before{content:"\f851"}.bi-sign-do-not-enter:before{content:"\f852"}.bi-sign-intersection-fill:before{content:"\f853"}.bi-sign-intersection-side-fill:before{content:"\f854"}.bi-sign-intersection-side:before{content:"\f855"}.bi-sign-intersection-t-fill:before{content:"\f856"}.bi-sign-intersection-t:before{content:"\f857"}.bi-sign-intersection-y-fill:before{content:"\f858"}.bi-sign-intersection-y:before{content:"\f859"}.bi-sign-intersection:before{content:"\f85a"}.bi-sign-merge-left-fill:before{content:"\f85b"}.bi-sign-merge-left:before{content:"\f85c"}.bi-sign-merge-right-fill:before{content:"\f85d"}.bi-sign-merge-right:before{content:"\f85e"}.bi-sign-no-left-turn-fill:before{content:"\f85f"}.bi-sign-no-left-turn:before{content:"\f860"}.bi-sign-no-parking-fill:before{content:"\f861"}.bi-sign-no-parking:before{content:"\f862"}.bi-sign-no-right-turn-fill:before{content:"\f863"}.bi-sign-no-right-turn:before{content:"\f864"}.bi-sign-railroad-fill:before{content:"\f865"}.bi-sign-railroad:before{content:"\f866"}.bi-building-add:before{content:"\f867"}.bi-building-check:before{content:"\f868"}.bi-building-dash:before{content:"\f869"}.bi-building-down:before{content:"\f86a"}.bi-building-exclamation:before{content:"\f86b"}.bi-building-fill-add:before{content:"\f86c"}.bi-building-fill-check:before{content:"\f86d"}.bi-building-fill-dash:before{content:"\f86e"}.bi-building-fill-down:before{content:"\f86f"}.bi-building-fill-exclamation:before{content:"\f870"}.bi-building-fill-gear:before{content:"\f871"}.bi-building-fill-lock:before{content:"\f872"}.bi-building-fill-slash:before{content:"\f873"}.bi-building-fill-up:before{content:"\f874"}.bi-building-fill-x:before{content:"\f875"}.bi-building-fill:before{content:"\f876"}.bi-building-gear:before{content:"\f877"}.bi-building-lock:before{content:"\f878"}.bi-building-slash:before{content:"\f879"}.bi-building-up:before{content:"\f87a"}.bi-building-x:before{content:"\f87b"}.bi-buildings-fill:before{content:"\f87c"}.bi-buildings:before{content:"\f87d"}.bi-bus-front-fill:before{content:"\f87e"}.bi-bus-front:before{content:"\f87f"}.bi-ev-front-fill:before{content:"\f880"}.bi-ev-front:before{content:"\f881"}.bi-globe-americas:before{content:"\f882"}.bi-globe-asia-australia:before{content:"\f883"}.bi-globe-central-south-asia:before{content:"\f884"}.bi-globe-europe-africa:before{content:"\f885"}.bi-house-add-fill:before{content:"\f886"}.bi-house-add:before{content:"\f887"}.bi-house-check-fill:before{content:"\f888"}.bi-house-check:before{content:"\f889"}.bi-house-dash-fill:before{content:"\f88a"}.bi-house-dash:before{content:"\f88b"}.bi-house-down-fill:before{content:"\f88c"}.bi-house-down:before{content:"\f88d"}.bi-house-exclamation-fill:before{content:"\f88e"}.bi-house-exclamation:before{content:"\f88f"}.bi-house-gear-fill:before{content:"\f890"}.bi-house-gear:before{content:"\f891"}.bi-house-lock-fill:before{content:"\f892"}.bi-house-lock:before{content:"\f893"}.bi-house-slash-fill:before{content:"\f894"}.bi-house-slash:before{content:"\f895"}.bi-house-up-fill:before{content:"\f896"}.bi-house-up:before{content:"\f897"}.bi-house-x-fill:before{content:"\f898"}.bi-house-x:before{content:"\f899"}.bi-person-add:before{content:"\f89a"}.bi-person-down:before{content:"\f89b"}.bi-person-exclamation:before{content:"\f89c"}.bi-person-fill-add:before{content:"\f89d"}.bi-person-fill-check:before{content:"\f89e"}.bi-person-fill-dash:before{content:"\f89f"}.bi-person-fill-down:before{content:"\f8a0"}.bi-person-fill-exclamation:before{content:"\f8a1"}.bi-person-fill-gear:before{content:"\f8a2"}.bi-person-fill-lock:before{content:"\f8a3"}.bi-person-fill-slash:before{content:"\f8a4"}.bi-person-fill-up:before{content:"\f8a5"}.bi-person-fill-x:before{content:"\f8a6"}.bi-person-gear:before{content:"\f8a7"}.bi-person-lock:before{content:"\f8a8"}.bi-person-slash:before{content:"\f8a9"}.bi-person-up:before{content:"\f8aa"}.bi-scooter:before{content:"\f8ab"}.bi-taxi-front-fill:before{content:"\f8ac"}.bi-taxi-front:before{content:"\f8ad"}.bi-amd:before{content:"\f8ae"}.bi-database-add:before{content:"\f8af"}.bi-database-check:before{content:"\f8b0"}.bi-database-dash:before{content:"\f8b1"}.bi-database-down:before{content:"\f8b2"}.bi-database-exclamation:before{content:"\f8b3"}.bi-database-fill-add:before{content:"\f8b4"}.bi-database-fill-check:before{content:"\f8b5"}.bi-database-fill-dash:before{content:"\f8b6"}.bi-database-fill-down:before{content:"\f8b7"}.bi-database-fill-exclamation:before{content:"\f8b8"}.bi-database-fill-gear:before{content:"\f8b9"}.bi-database-fill-lock:before{content:"\f8ba"}.bi-database-fill-slash:before{content:"\f8bb"}.bi-database-fill-up:before{content:"\f8bc"}.bi-database-fill-x:before{content:"\f8bd"}.bi-database-fill:before{content:"\f8be"}.bi-database-gear:before{content:"\f8bf"}.bi-database-lock:before{content:"\f8c0"}.bi-database-slash:before{content:"\f8c1"}.bi-database-up:before{content:"\f8c2"}.bi-database-x:before{content:"\f8c3"}.bi-database:before{content:"\f8c4"}.bi-houses-fill:before{content:"\f8c5"}.bi-houses:before{content:"\f8c6"}.bi-nvidia:before{content:"\f8c7"}.bi-person-vcard-fill:before{content:"\f8c8"}.bi-person-vcard:before{content:"\f8c9"}.bi-sina-weibo:before{content:"\f8ca"}.bi-tencent-qq:before{content:"\f8cb"}.bi-wikipedia:before{content:"\f8cc"}.bi-alphabet-uppercase:before{content:"\f2a5"}.bi-alphabet:before{content:"\f68a"}.bi-amazon:before{content:"\f68d"}.bi-arrows-collapse-vertical:before{content:"\f690"}.bi-arrows-expand-vertical:before{content:"\f695"}.bi-arrows-vertical:before{content:"\f698"}.bi-arrows:before{content:"\f6a2"}.bi-ban-fill:before{content:"\f6a3"}.bi-ban:before{content:"\f6b6"}.bi-bing:before{content:"\f6c2"}.bi-cake:before{content:"\f6e0"}.bi-cake2:before{content:"\f6ed"}.bi-cookie:before{content:"\f6ee"}.bi-copy:before{content:"\f759"}.bi-crosshair:before{content:"\f769"}.bi-crosshair2:before{content:"\f794"}.bi-emoji-astonished-fill:before{content:"\f795"}.bi-emoji-astonished:before{content:"\f79a"}.bi-emoji-grimace-fill:before{content:"\f79b"}.bi-emoji-grimace:before{content:"\f7a0"}.bi-emoji-grin-fill:before{content:"\f7a1"}.bi-emoji-grin:before{content:"\f7a6"}.bi-emoji-surprise-fill:before{content:"\f7a7"}.bi-emoji-surprise:before{content:"\f7ac"}.bi-emoji-tear-fill:before{content:"\f7ad"}.bi-emoji-tear:before{content:"\f7b2"}.bi-envelope-arrow-down-fill:before{content:"\f7b3"}.bi-envelope-arrow-down:before{content:"\f7b8"}.bi-envelope-arrow-up-fill:before{content:"\f7b9"}.bi-envelope-arrow-up:before{content:"\f7be"}.bi-feather:before{content:"\f7bf"}.bi-feather2:before{content:"\f7c4"}.bi-floppy-fill:before{content:"\f7c5"}.bi-floppy:before{content:"\f7d8"}.bi-floppy2-fill:before{content:"\f7d9"}.bi-floppy2:before{content:"\f7e4"}.bi-gitlab:before{content:"\f7e5"}.bi-highlighter:before{content:"\f7f8"}.bi-marker-tip:before{content:"\f802"}.bi-nvme-fill:before{content:"\f803"}.bi-nvme:before{content:"\f80c"}.bi-opencollective:before{content:"\f80d"}.bi-pci-card-network:before{content:"\f8cd"}.bi-pci-card-sound:before{content:"\f8ce"}.bi-radar:before{content:"\f8cf"}.bi-send-arrow-down-fill:before{content:"\f8d0"}.bi-send-arrow-down:before{content:"\f8d1"}.bi-send-arrow-up-fill:before{content:"\f8d2"}.bi-send-arrow-up:before{content:"\f8d3"}.bi-sim-slash-fill:before{content:"\f8d4"}.bi-sim-slash:before{content:"\f8d5"}.bi-sourceforge:before{content:"\f8d6"}.bi-substack:before{content:"\f8d7"}.bi-threads-fill:before{content:"\f8d8"}.bi-threads:before{content:"\f8d9"}.bi-transparency:before{content:"\f8da"}.bi-twitter-x:before{content:"\f8db"}.bi-type-h4:before{content:"\f8dc"}.bi-type-h5:before{content:"\f8dd"}.bi-type-h6:before{content:"\f8de"}.bi-backpack-fill:before{content:"\f8df"}.bi-backpack:before{content:"\f8e0"}.bi-backpack2-fill:before{content:"\f8e1"}.bi-backpack2:before{content:"\f8e2"}.bi-backpack3-fill:before{content:"\f8e3"}.bi-backpack3:before{content:"\f8e4"}.bi-backpack4-fill:before{content:"\f8e5"}.bi-backpack4:before{content:"\f8e6"}.bi-brilliance:before{content:"\f8e7"}.bi-cake-fill:before{content:"\f8e8"}.bi-cake2-fill:before{content:"\f8e9"}.bi-duffle-fill:before{content:"\f8ea"}.bi-duffle:before{content:"\f8eb"}.bi-exposure:before{content:"\f8ec"}.bi-gender-neuter:before{content:"\f8ed"}.bi-highlights:before{content:"\f8ee"}.bi-luggage-fill:before{content:"\f8ef"}.bi-luggage:before{content:"\f8f0"}.bi-mailbox-flag:before{content:"\f8f1"}.bi-mailbox2-flag:before{content:"\f8f2"}.bi-noise-reduction:before{content:"\f8f3"}.bi-passport-fill:before{content:"\f8f4"}.bi-passport:before{content:"\f8f5"}.bi-person-arms-up:before{content:"\f8f6"}.bi-person-raised-hand:before{content:"\f8f7"}.bi-person-standing-dress:before{content:"\f8f8"}.bi-person-standing:before{content:"\f8f9"}.bi-person-walking:before{content:"\f8fa"}.bi-person-wheelchair:before{content:"\f8fb"}.bi-shadows:before{content:"\f8fc"}.bi-suitcase-fill:before{content:"\f8fd"}.bi-suitcase-lg-fill:before{content:"\f8fe"}.bi-suitcase-lg:before{content:"\f8ff"}.bi-suitcase:before{content:"\f900"}.bi-suitcase2-fill:before{content:"\f901"}.bi-suitcase2:before{content:"\f902"}.bi-vignette:before{content:"\f903"}:root,[data-bs-theme=light]{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #004C47;--bs-secondary: #98DAA4;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 0, 76, 71;--bs-secondary-rgb: 152, 218, 164;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text-emphasis: rgb(0, 30.4, 28.4);--bs-secondary-text-emphasis: rgb(60.8, 87.2, 65.6);--bs-success-text-emphasis: rgb(10, 54, 33.6);--bs-info-text-emphasis: rgb(5.2, 80.8, 96);--bs-warning-text-emphasis: rgb(102, 77.2, 2.8);--bs-danger-text-emphasis: rgb(88, 21.2, 27.6);--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: rgb(204, 219.2, 218.2);--bs-secondary-bg-subtle: rgb(234.4, 247.6, 236.8);--bs-success-bg-subtle: rgb(209, 231, 220.8);--bs-info-bg-subtle: rgb(206.6, 244.4, 252);--bs-warning-bg-subtle: rgb(255, 242.6, 205.4);--bs-danger-bg-subtle: rgb(248, 214.6, 217.8);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(153, 183.4, 181.4);--bs-secondary-border-subtle: rgb(213.8, 240.2, 218.6);--bs-success-border-subtle: rgb(163, 207, 186.6);--bs-info-border-subtle: rgb(158.2, 233.8, 249);--bs-warning-border-subtle: rgb(255, 230.2, 155.8);--bs-danger-border-subtle: rgb(241, 174.2, 180.6);--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Albert Sans" sans-serif;--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #1d1d1d;--bs-body-color-rgb: 29, 29, 29;--bs-body-bg: #EFEAE1;--bs-body-bg-rgb: 239, 234, 225;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(29, 29, 29, .75);--bs-secondary-color-rgb: 29, 29, 29;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(29, 29, 29, .5);--bs-tertiary-color-rgb: 29, 29, 29;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #171717;--bs-link-color-rgb: 23, 23, 23;--bs-link-decoration: underline;--bs-link-hover-color: rgb(18.4, 18.4, 18.4);--bs-link-hover-color-rgb: 18, 18, 18;--bs-code-color: #d63384;--bs-highlight-color: #1d1d1d;--bs-highlight-bg: rgb(255, 242.6, 205.4);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(0, 76, 71, .25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);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: 1300px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1424px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1300px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.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.66666667%}.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: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .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.33333333%}.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.66666667%}.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: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .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.33333333%}.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.66666667%}.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: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .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.33333333%}.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.66666667%}.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: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .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.33333333%}.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.66666667%}.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: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .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: 1300px){.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.33333333%}.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.66666667%}.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: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-emphasis-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-emphasis-color);--bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), .05);--bs-table-active-color: var(--bs-emphasis-color);--bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), .1);--bs-table-hover-color: var(--bs-emphasis-color);--bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), .075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: rgb(204, 219.2, 218.2);--bs-table-border-color: rgb(163.2, 175.36, 174.56);--bs-table-striped-bg: rgb(193.8, 208.24, 207.29);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(183.6, 197.28, 196.38);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(188.7, 202.76, 201.835);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: rgb(234.4, 247.6, 236.8);--bs-table-border-color: rgb(187.52, 198.08, 189.44);--bs-table-striped-bg: rgb(222.68, 235.22, 224.96);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(210.96, 222.84, 213.12);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(216.82, 229.03, 219.04);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: rgb(209, 231, 220.8);--bs-table-border-color: rgb(167.2, 184.8, 176.64);--bs-table-striped-bg: rgb(198.55, 219.45, 209.76);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(188.1, 207.9, 198.72);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(193.325, 213.675, 204.24);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: rgb(206.6, 244.4, 252);--bs-table-border-color: rgb(165.28, 195.52, 201.6);--bs-table-striped-bg: rgb(196.27, 232.18, 239.4);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(185.94, 219.96, 226.8);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(191.105, 226.07, 233.1);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: rgb(255, 242.6, 205.4);--bs-table-border-color: rgb(204, 194.08, 164.32);--bs-table-striped-bg: rgb(242.25, 230.47, 195.13);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(229.5, 218.34, 184.86);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(235.875, 224.405, 189.995);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: rgb(248, 214.6, 217.8);--bs-table-border-color: rgb(198.4, 171.68, 174.24);--bs-table-striped-bg: rgb(235.6, 203.87, 206.91);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(223.2, 193.14, 196.02);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(229.4, 198.505, 201.465);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: rgb(198.4, 199.2, 200);--bs-table-striped-bg: rgb(235.6, 236.55, 237.5);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(223.2, 224.1, 225);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(229.4, 230.325, 231.25);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #212529;--bs-table-border-color: rgb(77.4, 80.6, 83.8);--bs-table-striped-bg: rgb(44.1, 47.9, 51.7);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(55.2, 58.8, 62.4);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(49.65, 53.35, 57.05);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1299.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#80a6a3;outline:0;box-shadow:0 0 0 .25rem #004c4740}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#80a6a3;outline:0;box-shadow:0 0 0 .25rem #004c4740}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#80a6a3;outline:0;box-shadow:0 0 0 .25rem #004c4740}.form-check-input:checked{background-color:#004c47;border-color:#004c47}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#004c47;border-color:#004c47;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28127.5, 165.5, 163%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #efeae1,0 0 0 .25rem #004c4740}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #efeae1,0 0 0 .25rem #004c4740}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;appearance:none;background-color:#004c47;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b3c9c8}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:#004c47;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b3c9c8}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-control-plaintext~label:after,.form-floating>.form-select~label:after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label:after,.form-floating>.form-control:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size: 1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: var(--bs-border-radius);--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #004C47;--bs-btn-border-color: #004C47;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(0, 64.6, 60.35);--bs-btn-hover-border-color: rgb(0, 60.8, 56.8);--bs-btn-focus-shadow-rgb: 38, 103, 99;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(0, 60.8, 56.8);--bs-btn-active-border-color: rgb(0, 57, 53.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #004C47;--bs-btn-disabled-border-color: #004C47}.btn-secondary{--bs-btn-color: #000;--bs-btn-bg: #98DAA4;--bs-btn-border-color: #98DAA4;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(167.45, 223.55, 177.65);--bs-btn-hover-border-color: rgb(162.3, 221.7, 173.1);--bs-btn-focus-shadow-rgb: 129, 185, 139;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(172.6, 225.4, 182.2);--bs-btn-active-border-color: rgb(162.3, 221.7, 173.1);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #98DAA4;--bs-btn-disabled-border-color: #98DAA4}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(21.25, 114.75, 71.4);--bs-btn-hover-border-color: rgb(20, 108, 67.2);--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(20, 108, 67.2);--bs-btn-active-border-color: rgb(18.75, 101.25, 63);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(49.3, 209.95, 242.25);--bs-btn-hover-border-color: rgb(37.2, 207.3, 241.5);--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(61.4, 212.6, 243);--bs-btn-active-border-color: rgb(37.2, 207.3, 241.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(255, 202.3, 44.2);--bs-btn-hover-border-color: rgb(255, 199.2, 31.8);--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(255, 205.4, 56.6);--bs-btn-active-border-color: rgb(255, 199.2, 31.8);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(187, 45.05, 58.65);--bs-btn-hover-border-color: rgb(176, 42.4, 55.2);--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(176, 42.4, 55.2);--bs-btn-active-border-color: rgb(165, 39.75, 51.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(210.8, 211.65, 212.5);--bs-btn-hover-border-color: rgb(198.4, 199.2, 200);--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(198.4, 199.2, 200);--bs-btn-active-border-color: rgb(186, 186.75, 187.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(66.3, 69.7, 73.1);--bs-btn-hover-border-color: rgb(55.2, 58.8, 62.4);--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(77.4, 80.6, 83.8);--bs-btn-active-border-color: rgb(55.2, 58.8, 62.4);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-primary{--bs-btn-color: #004C47;--bs-btn-border-color: #004C47;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #004C47;--bs-btn-hover-border-color: #004C47;--bs-btn-focus-shadow-rgb: 0, 76, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #004C47;--bs-btn-active-border-color: #004C47;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #004C47;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #004C47;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #98DAA4;--bs-btn-border-color: #98DAA4;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #98DAA4;--bs-btn-hover-border-color: #98DAA4;--bs-btn-focus-shadow-rgb: 152, 218, 164;--bs-btn-active-color: #000;--bs-btn-active-bg: #98DAA4;--bs-btn-active-border-color: #98DAA4;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #98DAA4;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #98DAA4;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 58, 58, 58;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.25rem;--bs-btn-border-radius: var(--bs-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .875rem;--bs-btn-border-radius: var(--bs-border-radius-sm)}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size: 1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: var(--bs-box-shadow);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #004C47;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1300px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #004C47;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #004c4740}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #004C47}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2829, 29, 29, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1300px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, .55);--bs-navbar-hover-color: rgba(255, 255, 255, .75);--bs-navbar-disabled-color: rgba(255, 255, 255, .25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%231d1d1d' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='rgb%280, 30.4, 28.4%29' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(0, 76, 71, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size: 1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: var(--bs-body-bg);--bs-pagination-border-width: var(--bs-border-width);--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: var(--bs-border-radius);--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: var(--bs-tertiary-bg);--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: var(--bs-secondary-bg);--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(0, 76, 71, .25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #004C47;--bs-pagination-active-border-color: #004C47;--bs-pagination-disabled-color: var(--bs-secondary-color);--bs-pagination-disabled-bg: var(--bs-secondary-bg);--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size: 1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size: .875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size: .75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size: .75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #004C47;--bs-progress-bar-transition: width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #004C47;--bs-list-group-active-border-color: #004C47;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1300px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #1d1d1d;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231d1d1d'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: .5;--bs-btn-close-hover-opacity: .75;--bs-btn-close-focus-shadow: 0 0 0 .25rem rgba(0, 76, 71, .25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: .25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size: .875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: var(--bs-body-bg);--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: var(--bs-border-radius-lg);--bs-modal-box-shadow: var(--bs-box-shadow-sm);--bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: var(--bs-border-width);--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1299.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size: .875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size: .875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: var(--bs-box-shadow);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size: 1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);--bs-offcanvas-transition: transform .3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1299.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1299.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1299.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media (min-width: 1300px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg,#000 55%,#000c,#000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-secondary{color:#000!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity, 1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-primary:hover,.link-primary:focus{color:RGBA(0,61,57,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(0,61,57,var(--bs-link-underline-opacity, 1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-secondary:hover,.link-secondary:focus{color:RGBA(173,225,182,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(173,225,182,var(--bs-link-underline-opacity, 1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity, 1))!important}.link-success:hover,.link-success:focus{color:RGBA(20,108,67,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity, 1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity, 1))!important}.link-info:hover,.link-info:focus{color:RGBA(61,213,243,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity, 1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity, 1))!important}.link-warning:hover,.link-warning:focus{color:RGBA(255,205,57,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity, 1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity, 1))!important}.link-danger:hover,.link-danger:focus{color:RGBA(176,42,55,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity, 1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity, 1))!important}.link-light:hover,.link-light:focus{color:RGBA(249,250,251,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity, 1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity, 1))!important}.link-dark:hover,.link-dark:focus{color:RGBA(26,30,33,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, .75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, .75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, .5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1300px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{object-fit:contain!important}.object-fit-cover{object-fit:cover!important}.object-fit-fill{object-fit:fill!important}.object-fit-scale{object-fit:scale-down!important}.object-fit-none{object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{column-gap:0!important}.column-gap-1{column-gap:.25rem!important}.column-gap-2{column-gap:.5rem!important}.column-gap-3{column-gap:1rem!important}.column-gap-4{column-gap:1.5rem!important}.column-gap-5{column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity: 1;color:#00000080!important}.text-white-50{--bs-text-opacity: 1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity: 1;color:inherit!important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity: .1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity: .25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity: .5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity: .75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: .1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: .25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: .5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: .75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{object-fit:contain!important}.object-fit-sm-cover{object-fit:cover!important}.object-fit-sm-fill{object-fit:fill!important}.object-fit-sm-scale{object-fit:scale-down!important}.object-fit-sm-none{object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-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:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{column-gap:0!important}.column-gap-sm-1{column-gap:.25rem!important}.column-gap-sm-2{column-gap:.5rem!important}.column-gap-sm-3{column-gap:1rem!important}.column-gap-sm-4{column-gap:1.5rem!important}.column-gap-sm-5{column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{object-fit:contain!important}.object-fit-md-cover{object-fit:cover!important}.object-fit-md-fill{object-fit:fill!important}.object-fit-md-scale{object-fit:scale-down!important}.object-fit-md-none{object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-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:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{column-gap:0!important}.column-gap-md-1{column-gap:.25rem!important}.column-gap-md-2{column-gap:.5rem!important}.column-gap-md-3{column-gap:1rem!important}.column-gap-md-4{column-gap:1.5rem!important}.column-gap-md-5{column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{object-fit:contain!important}.object-fit-lg-cover{object-fit:cover!important}.object-fit-lg-fill{object-fit:fill!important}.object-fit-lg-scale{object-fit:scale-down!important}.object-fit-lg-none{object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-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:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{column-gap:0!important}.column-gap-lg-1{column-gap:.25rem!important}.column-gap-lg-2{column-gap:.5rem!important}.column-gap-lg-3{column-gap:1rem!important}.column-gap-lg-4{column-gap:1.5rem!important}.column-gap-lg-5{column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{object-fit:contain!important}.object-fit-xl-cover{object-fit:cover!important}.object-fit-xl-fill{object-fit:fill!important}.object-fit-xl-scale{object-fit:scale-down!important}.object-fit-xl-none{object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-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:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{column-gap:0!important}.column-gap-xl-1{column-gap:.25rem!important}.column-gap-xl-2{column-gap:.5rem!important}.column-gap-xl-3{column-gap:1rem!important}.column-gap-xl-4{column-gap:1.5rem!important}.column-gap-xl-5{column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1300px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{object-fit:contain!important}.object-fit-xxl-cover{object-fit:cover!important}.object-fit-xxl-fill{object-fit:fill!important}.object-fit-xxl-scale{object-fit:scale-down!important}.object-fit-xxl-none{object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-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:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{column-gap:0!important}.column-gap-xxl-1{column-gap:.25rem!important}.column-gap-xxl-2{column-gap:.5rem!important}.column-gap-xxl-3{column-gap:1rem!important}.column-gap-xxl-4{column-gap:1.5rem!important}.column-gap-xxl-5{column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-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}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.hljs{background-color:#f5f5f5}@media print{.hljs{overflow-x:hidden;text-wrap:pretty}}pre>code .line-highlight{background-color:#ff0}.code-header{box-sizing:content-box;background-color:#f2f2f2;color:#1d1d1d;display:flex;flex-direction:row;border:1px solid #e3e3e3;min-height:30px}.code-header>.language{padding:7px 10px;flex-grow:1;text-transform:uppercase;line-height:normal;vertical-align:middle}.code-header>.action{position:relative;padding:2px 10px;background-color:transparent!important;border:0 solid #e3e3e3;border-left-width:1px;color:#171717;cursor:pointer;display:flex;align-items:center;line-height:normal}.code-header>.action .successful-copy-alert.is-transparent{opacity:0;transition:.5s opacity ease-in-out}.code-header>.action .successful-copy-alert{justify-content:center;align-items:center;inset:0;position:absolute;display:flex;background-color:#98daa4;outline-color:#000;color:#000}.hljs-keyword{color:#569cd6}.hljs-string{color:#d69d85}.lang-dax.hljs.language-dax pre{background-color:#f7f7f7;color:#333;overflow-x:auto}.lang-dax.hljs.language-dax .hljs-keyword{color:#00f}.lang-dax.hljs.language-dax .hljs-string{color:red}.lang-dax.hljs.language-dax .hljs-variable{color:#000}.lang-dax.hljs.language-dax .hljs-comment{color:green}.lang-dax.hljs.language-dax .hljs-built_in{color:purple}.lang-dax.hljs.language-dax .hljs-literal{color:#000}html{width:calc(100vw - var(--scrollbar-width));min-height:100vh;overflow-x:hidden}body,body[data-layout=landing]{width:calc(100vw - var(--scrollbar-width));min-height:100vh;display:flex;flex-direction:column}body>main,body[data-layout=landing]>main{display:flex;flex:1;padding-top:0;padding-bottom:2rem}body>main>.content,body[data-layout=landing]>main>.content{display:flex;flex-direction:column;width:100%}body>main>.content>:not(article,.docnav),body[data-layout=landing]>main>.content>:not(article,.docnav){display:none}body>main>.content>article,body[data-layout=landing]>main>.content>article{flex:1}@media (min-width: 768px){body>main>.content>article [id],body[data-layout=landing]>main>.content>article [id]{scroll-margin-top:130px}}body>main>:not(.content),body[data-layout=landing]>main>:not(.content){display:none}@media print{body>main,body[data-layout=landing]>main{padding:0!important}body>header,body>footer,body[data-layout=landing]>header,body[data-layout=landing]>footer{display:none}}@media not print{body[data-search]>main{display:none}body[data-search]>.search-results{display:block;flex:1;padding-top:0;padding-bottom:2rem}body:not([data-search])>.search-results{display:none}body:not([data-search])[data-layout=""]>main,body:not([data-search])[data-layout=conceptual]>main{padding-bottom:0}body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{flex:.35;display:block;overflow:hidden;max-width:360px;max-height:calc(100vh - 130px)}@media (min-width: 768px){body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{position:sticky;top:130px}}@media (max-width: 767.98px){body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{flex:0}}body:not([data-search])[data-layout=""]>main>.toc-offcanvas .offcanvas-start,body:not([data-search])[data-layout=""]>main>.toc-offcanvas .offcanvas-body,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas .offcanvas-start,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas .offcanvas-body{height:100%}body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{display:flex;flex-direction:column;flex:1;min-width:0;margin:0 3rem;padding-bottom:2rem}body:not([data-search])[data-layout=""]>main>.content>.actionbar,body:not([data-search])[data-layout=conceptual]>main>.content>.actionbar{display:flex;align-items:flex-start;margin-top:.5rem}body:not([data-search])[data-layout=""]>main>.content>.actionbar>button,body:not([data-search])[data-layout=conceptual]>main>.content>.actionbar>button{margin-top:-.65em;margin-left:-.8em}body:not([data-search])[data-layout=""]>main>.content article,body:not([data-search])[data-layout=conceptual]>main>.content article{flex:1}body:not([data-search])[data-layout=""]>main>.content>.contribution,body:not([data-search])[data-layout=""]>main>.content>.next-article,body:not([data-search])[data-layout=conceptual]>main>.content>.contribution,body:not([data-search])[data-layout=conceptual]>main>.content>.next-article{display:flex}@media (max-width: 991.98px){body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{margin:0 1rem}}@media (max-width: 767.98px){body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{margin:0}}body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{display:block;width:230px;max-height:calc(100vh - 130px);overflow-x:hidden;overflow-y:auto}@media (min-width: 768px){body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{position:sticky;top:130px}}}@media only screen and (max-width: 1140px){body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{display:none}}@media not print{body:not([data-search])[data-layout=chromeless]>header,body:not([data-search])[data-layout=chromeless]>footer{display:none}}.breadcrumb{font-size:14px}.breadcrumb a{text-decoration:none}.breadcrumb a:hover,.breadcrumb a:focus{text-decoration:underline}.next-article{display:flex}.next-article:not(:has(div)){border-top-width:0}.next-article:has(div){margin-top:3rem;padding-top:1rem}.next-article>div{flex:1}.next-article>div.next{text-align:right}.next-article>div>span{opacity:.66;font-size:14px}.next-article>div>a{display:block}.navbar{padding:0}.navbar .navbar-brand{display:flex;align-items:center}.navbar .navbar-nav{display:flex;flex-wrap:nowrap}.navbar #navbar{display:flex;flex:1;justify-content:flex-start}.navbar #navbar li{margin-left:24px}.navbar #navbar li:first-child{margin-left:0}.navbar #navbar form{display:flex;position:relative;align-items:center}.navbar #navbar form>i.bi{position:absolute;left:.8rem;opacity:.5}.navbar #navbar form>input{padding-left:2.5rem}.navbar #navbar form.search{order:50}.navbar #navbar form.icons{margin-left:auto}@media (max-width: 767.98px){.navbar #navbar{align-items:flex-start}.navbar #navbar form{margin:1rem 0 0}.navbar #navbar form.search{align-self:stretch;order:30}.navbar #navbar form.icons{align-self:center;order:40;margin:1rem 0}}.affix{font-size:14px}.affix h5{display:inline-block;font-weight:300;text-transform:uppercase;padding:1em 0 .5em;font-size:14px;letter-spacing:2px}.affix h6{font-size:14px}.affix ul{flex-direction:column;list-style-type:none;padding-left:0;margin-left:0}.affix ul h6{margin-top:1rem}.affix ul li{margin:.4rem 0}.affix ul li a{text-decoration:none}.affix ul li a:hover,.affix ul li a:focus{text-decoration:underline}.contribution{margin-top:2rem}.contribution a.edit-link{text-decoration:none}.contribution a.edit-link:hover,.contribution a.edit-link:focus{text-decoration:underline}.contribution a.edit-link:before{content:"\f4ca";display:inline-block;font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}.toc{min-width:0;width:100%;height:100%;display:flex;flex-direction:column}.toc ul{font-size:14px;flex-direction:column;list-style-type:none;padding-left:0;overflow-wrap:break-word}.toc li{font-weight:400;margin:.6em 0;padding-left:.85rem;position:relative}.toc li>a{display:inline;text-decoration:none}.toc li>a:hover,.toc li>a:focus{text-decoration:underline}.toc li>ul{display:none}.toc li.expanded>ul{display:block}.toc .expand-stub:before{display:inline-block;width:.85rem;cursor:pointer;font-family:bootstrap-icons;font-size:.8em;content:"\f285";position:absolute;margin-top:.2em;margin-left:-.85rem;transition:transform .35s ease;transform-origin:.5em 50%}@media (prefers-reduced-motion){.toc .expand-stub:before{transition:none}}.toc li.expanded>.expand-stub:before{transform:rotate(90deg)}.toc span.name-only{font-weight:600;display:inline-block;margin:.4rem 0}.toc form.filter{display:flex;position:relative;align-items:center;margin-bottom:.5rem}.toc form.filter>i.bi{position:absolute;left:.6rem;opacity:.5}.toc form.filter>input{padding-left:2rem}.toc>.no-result{font-size:.9em;color:#98daa4}.toc a.pdf-link{text-decoration:none}.toc a.pdf-link:hover,.toc a.pdf-link:focus{text-decoration:underline}.toc a.pdf-link:before{content:"\f756";display:inline-block;font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}a.external[href]:after{font-family:bootstrap-icons;content:"\f1c5";font-size:.6rem;margin:0 .2em;display:inline-block}blockquote{border-style:solid;border-width:0 0 0 3px;border-color:#d6f0db;margin:1.2em 0 2em;padding:0 .8em;display:block}[data-bs-theme=dark] blockquote{border-color:#5b8362}.alert{break-inside:avoid}.alert h5{text-transform:uppercase;font-weight:700;font-size:1rem}.alert h5:before{font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}.alert:not(:has(h5))>p:last-child{margin-block-end:0}.alert-info h5:before{content:"\f431"}.alert-warning h5:before{content:"\f333"}.alert-danger h5:before{content:"\f623"}div.embeddedvideo{padding-top:56.25%;position:relative;width:100%;margin-bottom:1em}div.embeddedvideo iframe{position:absolute;inset:0;width:100%;height:100%}pre{position:relative}pre>.code-action{display:none;position:absolute;top:.25rem;right:.2rem}pre>.code-action .bi-check-lg{font-size:1.2rem}pre:hover>.code-action{display:block}.tabGroup{margin-bottom:1rem}.tabGroup>section{margin:0;padding:1rem;border-top:0;border-top-left-radius:0;border-top-right-radius:0}#search-results{line-height:1.8}#search-results>.search-list{font-size:.9em;color:#98daa4}#search-results>.sr-items{flex:1}#search-results>.sr-items .sr-item{margin-bottom:1.5em}#search-results>.sr-items .sr-item>.item-title{font-size:x-large}#search-results>.sr-items .sr-item>.item-href{color:#093;font-size:small}#search-results>.sr-items .sr-item>.item-brief{font-size:small}body[data-yaml-mime=ManagedReference] article h1[data-uid],body[data-yaml-mime=ApiPage] article h1[data-uid]{position:relative;padding-right:1.6rem}body[data-yaml-mime=ManagedReference] article h3[data-uid],body[data-yaml-mime=ApiPage] article h3[data-uid]{position:relative;font-weight:400;margin-top:3rem;padding-bottom:5px;padding-right:1.6rem}body[data-yaml-mime=ManagedReference] article h2.section,body[data-yaml-mime=ApiPage] article h2.section{margin-top:3rem}body[data-yaml-mime=ManagedReference] article h2.section+h3[data-uid],body[data-yaml-mime=ManagedReference] article h2.section+a+h3[data-uid],body[data-yaml-mime=ApiPage] article h2.section+h3[data-uid],body[data-yaml-mime=ApiPage] article h2.section+a+h3[data-uid]{margin-top:1rem}body[data-yaml-mime=ManagedReference] article h4.section,body[data-yaml-mime=ApiPage] article h4.section{font-weight:300;margin-top:1.6rem}body[data-yaml-mime=ManagedReference] article dl>dt,body[data-yaml-mime=ApiPage] article dl>dt{font-weight:400}body[data-yaml-mime=ManagedReference] article dl>dd,body[data-yaml-mime=ApiPage] article dl>dd{margin-left:1rem}body[data-yaml-mime=ManagedReference] article dl.typelist>dt,body[data-yaml-mime=ApiPage] article dl.typelist>dt{font-weight:600}body[data-yaml-mime=ManagedReference] article dl.typelist>dd,body[data-yaml-mime=ApiPage] article dl.typelist>dd{margin-left:0}body[data-yaml-mime=ManagedReference] article dl.typelist>dd>div,body[data-yaml-mime=ApiPage] article dl.typelist>dd>div{display:inline-block}body[data-yaml-mime=ManagedReference] article dl.typelist>dd>div:not(:last-child):after,body[data-yaml-mime=ApiPage] article dl.typelist>dd>div:not(:last-child):after{content:", "}body[data-yaml-mime=ManagedReference] article dl.typelist.inheritance>dd>div:not(:last-child):after,body[data-yaml-mime=ApiPage] article dl.typelist.inheritance>dd>div:not(:last-child):after{font-family:bootstrap-icons;content:"\f12c";position:relative;top:.2em;opacity:.8}body[data-yaml-mime=ManagedReference] article dl.parameters>dt,body[data-yaml-mime=ApiPage] article dl.parameters>dt{margin:1em 0}body[data-yaml-mime=ManagedReference] article dl.parameters>dt>code,body[data-yaml-mime=ApiPage] article dl.parameters>dt>code{margin-right:.2em;font-size:1em}body[data-yaml-mime=ManagedReference] article div.facts,body[data-yaml-mime=ApiPage] article div.facts{font-size:14px;margin:2rem 0 1rem}body[data-yaml-mime=ManagedReference] article div.facts>dl,body[data-yaml-mime=ApiPage] article div.facts>dl{margin:0}body[data-yaml-mime=ManagedReference] article div.facts>dl>dd,body[data-yaml-mime=ApiPage] article div.facts>dl>dd{margin-left:.25rem;display:inline-block}body[data-yaml-mime=ManagedReference] article div.facts>dl>dt,body[data-yaml-mime=ApiPage] article div.facts>dl>dt{display:inline-block}body[data-yaml-mime=ManagedReference] article div.facts>dl>dt:after,body[data-yaml-mime=ApiPage] article div.facts>dl>dt:after{content:":"}body[data-yaml-mime=ManagedReference] article .header-action,body[data-yaml-mime=ApiPage] article .header-action{position:absolute;right:0;bottom:.2rem;font-size:1.2rem}@media print{body[data-yaml-mime=ManagedReference] article .header-action,body[data-yaml-mime=ApiPage] article .header-action{display:none}}body[data-yaml-mime=ManagedReference] article td.term,body[data-yaml-mime=ApiPage] article td.term{font-weight:600}body[data-yaml-mime=ManagedReference] article summary,body[data-yaml-mime=ApiPage] article summary{display:block;cursor:inherit}body[data-yaml-mime=ManagedReference] article li>span.term,body[data-yaml-mime=ApiPage] article li>span.term{font-weight:600}body[data-yaml-mime=ManagedReference] article li>span.term:after,body[data-yaml-mime=ApiPage] article li>span.term:after{content:"-";margin:0 .5em}*,*:before,*:after{box-sizing:border-box}body{margin:0;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}p{margin-top:0;margin-bottom:1rem}hr{color:inherit;margin:0;border:0;border-top:1px solid;width:100%}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}b,strong{font-weight:700}small{font-size:.875em}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}input,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}select{text-transform:none}[role=button]{cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{padding:0;margin:0;border:0}figure{margin:0}legend{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}iframe{border:0}[hidden]{display:none!important}.icon{display:inline-flex}.icon svg{height:1em;width:1em;fill:currentcolor}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6,.fluid-font-size{--hub-fluid-font-size: calc( ((20 + ((var(--font-size) - 20) / 10)) / 16 * 1rem) + (((var(--font-size) - (20 + ((var(--font-size) - 20) / 10)) ) * 100 / 1200) * 1vw) );--hub-font-size-to-rem: calc(var(--font-size) / 16 * 1rem);font-size:var(--hub-fluid-font-size)}h6,.h6{font-size:var(--hub-font-size-to-rem)}@media (min-width: 1200px){h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6,.fluid-font-size{font-size:var(--hub-font-size-to-rem)}}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6{line-height:1.2;margin-top:.5rem;margin-bottom:1rem;font-weight:500;font-style:initial}.heading-link,.heading-link:hover{font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit}.margin-collapse :where(h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6){margin-top:0}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]),:where(input[type=file])::file-selector-button{--_border-radius: var(--border-radius, none);--_bg: var(--bg, #fff);--_color: var(--color, #333);font:inherit;letter-spacing:inherit;line-height:1.5;border-radius:var(--_border-radius)!important;cursor:pointer;font-size:1rem;font-weight:700;font-style:initial;background:var(--_bg)!important;color:var(--_color)!important;border:1px solid #c8c8c8;display:inline-flex;justify-content:center;align-items:center;text-align:center;gap:.5ch;padding:8px 20px;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-width:100px;text-decoration:none!important;vertical-align:middle}@media (prefers-reduced-motion: no-preference){:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]){transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]):where(:not(:active):hover){background:var(--hover-bg, var(--_bg));color:var(--hover-color, var(--_color));border-color:var(--hover-border, #999)!important}:where(.btn-link,button,input):where(:not(:active)):focus-visible{outline-offset:5px}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset])[disabled]{background:none;cursor:not-allowed;--color: hsl(210deg 7% 40%)}:where(input[type=file]){font:inherit;inline-size:100%;max-inline-size:max-content}:where(input[type=button]),:where(input[type=file])::file-selector-button{appearance:none}:where(input[type=file])::file-selector-button{margin-inline-end:1.5ch}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]) :where(.icon){display:inline-flex;justify-content:center;align-items:center}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]) :where(svg,.icon>svg){height:1.8ch;width:1.8ch;flex-shrink:0;fill:currentcolor}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]):where(.btn-w100){width:100%}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]):where(.btn-w100+.btn-w100){margin-top:.5rem}.form-default .hs-form fieldset{margin:initial;padding:initial;border:initial;max-width:initial}.form-default :is(fieldset.form-columns-2,fieldset.form-columns-3)>div.hs-form-field{float:none;width:initial}.form-default .hs-form-field .hs-field-desc{width:100%}.form-default div.hs-form-field div.input{margin-right:0}.form-default fieldset.form-columns-1 .input .hs-input,.form-default form fieldset.form-columns-2 .hs-form-field .input .hs-input{width:100%}.form-default fieldset.form-columns-1 .input input[type=radio],.form-default fieldset.form-columns-1 .input input[type=checkbox]{width:1.2em;float:none}.form-default .inputs-list :is(.hs-form-checkbox-display,.hs-form-booleancheckbox-display,.hs-form-radio-display)>span{margin:0}.form-default{--_form-label-color: var(--form-label-color, inherit);--_form-help-text-color: var(--form-help-text-color, #394047);--_form-placeholder-color: var(--form-placeholder-color, rgb(57 64 71 / 70%));--_form-error-color: var(--form-error-color, #f2545b)}.form-default .hs-form-field{margin-bottom:1rem}.form-default :where(.form-columns-2,.form-columns-3){display:flex;gap:10px;justify-content:center;align-items:flex-end;flex-wrap:wrap}.form-default :where(.form-columns-2,.form-columns-3)>.hs-form-field{flex-grow:1;flex-basis:0}@media (max-width: 991.98px){.form-default :is(fieldset.form-columns-2,fieldset.form-columns-3)>div.hs-form-field{flex-basis:auto}}.form-default label,.form-default .fakelabel{color:var(--_form-label-color);margin-bottom:.4rem;display:flex}.form-default .hs-field-desc{margin-top:.25rem;margin-bottom:.25rem;font-size:.875em;color:var(--_form-help-text-color)}.form-default .hs-form-required{color:var(--_form-error-color);margin-left:2px}.form-default input:not([type=checkbox],[type=radio],[type=file],[type=button],[type=reset],[type=submit]),.form-default textarea,.form-default select{display:block;width:100%;padding:.375rem .5rem;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-default input[type=file]{overflow:hidden;padding:0}.form-default select{padding:.5rem}@media (prefers-reduced-motion: reduce){.form-default input:not([type=checkbox],[type=radio],[type=file],[type=button],[type=reset],[type=submit]),.form-default textarea,.form-default select{transition:none}}.form-default input.error:not([type=checkbox],[type=radio],[type=file],[type=button],[type=reset],[type=submit]),.form-default textarea.error,.form-default select.error{border-color:var(--_form-error-color)!important}.form-default .inputs-list{list-style:none;margin:0;padding:0}.form-default .hs-error-msg,.form-default .hs-error-msgs .hs-main-font-element{margin-top:.25rem;font-size:.875em;color:var(--_form-error-color)}.form-default input::placeholder,.form-default textarea::placeholder{color:var(--_form-placeholder-color)}.form-default :where(.hs-form-checkbox-display,.hs-form-booleancheckbox-display,.hs-form-radio-display,.fakelabel){display:flex;gap:.4rem;margin-bottom:.8rem;align-content:center;align-items:center;justify-content:flex-start}.form-default input[type=radio],.form-default input[type=checkbox]{width:1.2em;height:1.2em}.form-default input[type=file]:not(:disabled){cursor:pointer}:where(a:not(.btn-link)){--_color: var(--color, blue);display:inline-flex;justify-content:center;align-items:center;gap:.5ch;color:var(--_color)}:where(a:not(.btn-link):hover){color:var(--hover-color, var(--_color))}:where(a:not(.btn-link)) :where(.icon){display:inline-flex;justify-content:center;align-items:center}:where(a:not(.btn-link)) :where(svg,.icon>svg){height:1.5ch;width:1.5ch;flex-shrink:0;fill:currentcolor}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}:root{--system-fonts: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--primary-color: #004C47;--secondary1-color: #98DAA4;--secondary2-color: #7FD3CE;--secondary3-color: #ECB171;--focus-color: ;--accent-color: initial;accent-color:var(--accent-color)}:focus-visible{outline-color:var(--focus-color);outline-style:solid;outline-width:3px}::marker{color:var(--accent-color)}hr{border-top-color:var(--primary-color)}body{overflow-wrap:break-word;color:#1d1d1d;background-color:#efeae1;line-height:1.5;font-size:14px;font-family:Albert Sans,sans-serif}body else{font-family:Albert Sans}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6{color:#171717;font-family:Albert Sans,sans-serif;font-weight:500}h1 else,h2 else,h3 else,h4 else,h5 else,h6 else,.h1 else,.h2 else,.h3 else,.h4 else,.h5 else,.h6 else,.display-1 else,.display-2 else,.display-3 else,.display-4 else,.display-5 else,.display-6 else{font-family:var(--system-fonts)}h1,.h1{--font-size: 30}h2,.h2{--font-size: 28}h3,.h3{--font-size: 26}h4,.h4{--font-size: 24}h5,.h5{--font-size: 22}h6,.h6{--font-size: 20}.display-1{--font-size: 78}.display-2{--font-size: 72}.display-3{--font-size: 68}.display-4{--font-size: 62}.display-5{--font-size: 58}.display-6{--font-size: 52}:where(a:not(.btn-link)){font-size:"22px";--color: #171717}blockquote,.blockquote{border-left:6px solid #ccc;padding-left:.8rem;margin-left:3rem;font-size:"18px"}.btn-small,.form--btn-small input[type=submit],.form--btn-small input[type=file]::file-selector-button{font-size:"16px";padding:12px 22px}.btn-regular,.form--btn-regular input[type=submit],.form--btn-regular input[type=file]::file-selector-button{font-size:18px;padding:18px 23px}.btn-large,.form--btn-large input[type=submit],.form--btn-large input[type=file]::file-selector-button{font-size:22px;padding:38px 40px}.btn-primary,.form--btn-primary input[type=submit],.form--btn-primary input[type=file]::file-selector-button{--border-radius: ($theme.$theme-buttons-primary-border-border_radius + "px");--color: #FFFFFF;--bg: #004c47;font-family:Albert Sans,sans-serif;font-weight:500;border-top:2px solid #004C47;border-bottom:2px solid #004C47;border-left:2px solid #004C47;border-right:2px solid #004C47}.btn-primary else,.form--btn-primary input[type=submit] else,.form--btn-primary input[type=file]::file-selector-button else{font-family:var(--system-fonts)}.btn-primary:hover,.form--btn-primary input[type=submit]:hover{--hover-color: #fff;--hover-bg: #004c47;--hover-border: #004c47}.btn-secondary1,.form--btn-secondary1 input[type=submit],.form--btn-secondary1 input[type=file]::file-selector-button{--border-radius: undefinedpx;--color: #000000;--bg: rgba(152, 218, 164, 0);font-family:Albert Sans,sans-serif;font-weight:500;border-top:2px solid #004C47;border-bottom:2px solid #004C47;border-left:2px solid #004C47;border-right:2px solid #004C47}.btn-secondary1 else,.form--btn-secondary1 input[type=submit] else,.form--btn-secondary1 input[type=file]::file-selector-button else{font-family:var(--system-fonts)}.btn-secondary1:hover,.form--btn-secondary1 input[type=submit]:hover{--hover-color: #171717;--hover-bg: rgba(0, 76, 71, 0);--hover-border: #004c47}.btn-secondary2,.form--btn-secondary2 input[type=submit],.form--btn-secondary2 input[type=file]::file-selector-button{--border-radius: 0px;--color: #000000;--bg: #7fd3ce;font-family:Albert Sans,sans-serif;font-weight:500;border-top:2px solid #7FD3CE;border-bottom:2px solid #7FD3CE;border-left:2px solid #7FD3CE;border-right:2px solid #7FD3CE}.btn-secondary2 else,.form--btn-secondary2 input[type=submit] else,.form--btn-secondary2 input[type=file]::file-selector-button else{font-family:var(--system-fonts)}.btn-secondary2:hover,.form--btn-secondary2 input[type=submit]:hover{--hover-color: #000000;--hover-bg: #7fd3ce;--hover-border: #7fd3ce}.btn-secondary3,.form--btn-secondary3 input[type=submit],.form--btn-secondary3 input[type=file]::file-selector-button{--border-radius: 0px;--color: #FFFFFF;--bg: rgba(255, 255, 255, 0);font-family:Albert Sans,sans-serif;font-weight:500;border-top:2px solid #7FD3CE;border-bottom:2px solid #7FD3CE;border-left:2px solid #7FD3CE;border-right:2px solid #7FD3CE}.btn-secondary3 else,.form--btn-secondary3 input[type=submit] else,.form--btn-secondary3 input[type=file]::file-selector-button else{font-family:var(--system-fonts)}.btn-secondary3:hover,.form--btn-secondary3 input[type=submit]:hover{--hover-color: #ffffff;--hover-bg: rgba(127, 211, 206, 0);--hover-border: #7fd3ce}.icon--small svg{height:25px;width:25px}.icon--small{padding:15px}.icon--regular svg{height:35px;width:35px}.icon--regular{padding:20px}.icon--large svg{height:55px;width:55px}.icon--large{padding:25px}.icon--circle{border-radius:50%}.widget-type-simple_menu ul[role=menu]{list-style:none;margin:0;padding:0}.widget-type-simple_menu a[role=menuitem]{text-decoration:none;color:#fff}.widget-type-simple_menu .hs-menu-flow-vertical a[role=menuitem]{padding:6px 0}.widget-type-simple_menu .hs-menu-flow-horizontal ul[role=menu]{display:flex;justify-content:flex-end;gap:16px}@media (max-width: 991.98px){.widget-type-simple_menu .hs-menu-flow-horizontal ul[role=menu]{justify-content:flex-start}}.siteheader-module{display:flex;flex-wrap:wrap;align-items:center}.siteheader-module__logo{flex-grow:1}.siteheader-module__mobile-toggler{margin:.2rem;font-size:1.25rem;line-height:1;transition:box-shadow .15s ease-in-out;background:transparent;border:none;min-width:auto}@media (prefers-reduced-motion: reduce){.siteheader-module__mobile-toggler{transition:none}}.siteheader-module__mobile-toggler:hover{text-decoration:none}.siteheader-module__navbar{flex-basis:100%;flex-grow:1;align-items:stretch;display:flex;flex-direction:column}.siteheader-module__main-nav{padding-top:10px;padding-bottom:4px}.main-nav__list{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;align-items:stretch}.main-nav__list--dropdown{position:static;z-index:1000;display:none;text-align:left;list-style:none;background-clip:padding-box}.main-nav__list--dropdown[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.main-nav__list--dropdown.show,.main-nav__list--dropdown.show .main-nav__list--sublevel{display:block}.main-nav__list-item{display:flex;flex-direction:column}.main-nav__list-item:last-child .main-nav__list--dropdown[data-bs-popper]{right:0;left:auto}.main-nav__list-item--dropdown{position:relative}.main-nav__list-item-link{text-decoration:none;transition:color .1s ease,background-color .1s ease}.main-nav__list-item-link:hover{text-decoration:none}@media (prefers-reduced-motion: reduce){.main-nav__list-item-link{transition:none}}.main-nav__list-item--lvl3{flex-grow:1;padding-left:10px}.main-nav__list-item-link--dropdown-toggle{white-space:nowrap}.main-nav__list-item-link--dropdown-toggle:after{display:inline-block;vertical-align:.2em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.header-language{position:relative}.header-language-btn{display:flex;flex-direction:row;align-items:center;font-weight:400;line-height:1;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:none;transition:color .15s ease-in-out,background-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.header-language-btn{transition:none}}.header-language-btn-text{padding-left:6px}.header-language-btn .g-module-macros-icon_wrp{display:flex}.header-language-btn .g-module-macros-icon svg{vertical-align:-.125em}.header-language__list{position:static;min-width:190px;z-index:1000;display:none;text-align:left;list-style:none;background-clip:padding-box;margin:0;padding:0}.header-language__list[data-bs-popper]{top:100%;right:0;margin-top:.125rem}.header-language__list.show{display:block}.header-language__list-item-link{display:flex;flex-direction:row;text-decoration:none;transition:color .1s ease,background-color .1s ease}@media (prefers-reduced-motion: reduce){.header-language__list-item-link{transition:none}}.header-language__list-item-link:hover{text-decoration:none}.header-search_wrp{margin-top:20px;padding:0 14px}.header-search__form{display:flex;margin:0}.header-search__form_internal-wrp{flex-grow:1}.header-search__form-input{height:100%;width:100%;padding:4px 14px;margin:0;border:1px solid #999;background:#fff;border-radius:0}.header-search__form-input:focus-visible{outline-width:1px;outline-offset:0}.header-search__form-btn{width:60px;height:50px;color:#555;background-color:transparent;border:1px solid transparent;border:1px solid #999;margin-left:-1px;min-width:auto}.header-search__form-btn-icon{fill:none}.header-search__suggestions{background:#fff;margin:0;padding:0;list-style:none}.header-search--open .header-search__suggestions{border:none;padding:5px 0}.header-search__suggestions li{display:block;margin:0;padding:0}.header-search__suggestions a,.header-search__suggestions #results-for{display:block;padding:5px 10px}.siteheader-module__link,.siteheader-module__button,.siteheader-module__secondary-button,.siteheader-module__cta{margin:.5rem 0}.siteheader-module__button .g-module-macros-btn,.siteheader-module__secondary-button .g-module-macros-btn,.siteheader-module__cta a{display:block;width:100%}.header-search__suggestions a:hover{background-color:#0000001a}.social-links-module{display:flex}.social-links-module .icon{padding:0}.social-links-module a{text-decoration:none}.btn-large{line-height:1.1875}.btn-link{clip-path:polygon(0 0,100% 0,100% 0px,100% 100%,0px 100%,0 calc(100% + -0px))!important;transition:all .2s linear}.btn-secondary1,.btn-secondary3{position:relative}.btn-secondary1:before,.btn-secondary1:after,.btn-secondary3:before,.btn-secondary3:after{content:"";position:absolute;border-style:solid;border-width:0;transition:border-width .2s linear}.btn-secondary1:before{bottom:0;left:0;border-color:transparent transparent var(--primary-color) var(--primary-color)}.btn-secondary1:after{top:0;right:0;border-color:var(--primary-color) var(--primary-color) transparent transparent}.btn-secondary3:before{bottom:0;left:0;border-color:transparent transparent var(--secondary2-color) var(--secondary2-color)}.btn-secondary3:after{top:0;right:0;border-color:var(--secondary2-color) var(--secondary2-color) transparent transparent}.btn-secondary1:hover,.btn-secondary3:hover{-webkit-clip-path:polygon(0 0,calc(100% - 19px) 0,100% 19px,100% 100%,19px 100%,0 calc(100% - 19px))!important;clip-path:polygon(0 0,calc(100% - 19px) 0,100% 19px,100% 100%,19px 100%,0 calc(100% - 19px))!important}.btn-primary:hover,.btn-secondary2:hover{-webkit-clip-path:polygon(0 0,calc(100% - 20px) 0,100% 20px,100% 100%,20px 100%,0 calc(100% - 20px))!important;clip-path:polygon(0 0,calc(100% - 20px) 0,100% 20px,100% 100%,20px 100%,0 calc(100% - 20px))!important}.btn-secondary1:hover:before,.btn-secondary3:hover:before,.btn-secondary1:hover:after,.btn-secondary3:hover:after{border-width:9px}.btn-primary svg,.btn-secondary3 svg{stroke:#fff}.btn-secondary1 svg,.btn-secondary2 svg{stroke:#171717}.listitem{align-items:baseline!important}.blog-recent-module__article-tags a,.blog-listing-module__article-tags a,.blog-related-module__article-tags a,.blog-recent-by-tag-module__article-tags a,.blog-post__tag-link{font-size:14px!important;font-weight:500;line-height:normal;background:var(--secondary2-color);padding:3px 5px}.blog-recent-by-tag-module__article-heading h3{margin-bottom:5px}.form-default .hs-form-field{align-self:flex-start}.form-default input,.form-default textarea,.form-default select{font-size:"20px"}.form-default .hs-error-msg,.form-default .hs-error-msgs .hs-main-font-element{font-size:"16px"!important}.form-default input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=button]):not([type=reset]):not([type=submit]),.form-default textarea,.form-default select{border-radius:0;border-top:0px none;border-right:0px none;border-bottom:1px solid #000;border-left:0px none}.form-default .hs_submit{text-align:left!important}.form-default :where(.form-columns-2,.form-columns-3){gap:normal 22px}:root{--shadow-color: rgb(154 161 177 / 30%);--shadow-sm: 0 1px 2px 0 var(--shadow-color);--shadow-md: 0 1px 3px 0 var(--shadow-color), 0 1px 2px -1px var(--shadow-color);--shadow-lg: 0 4px 6px -1px var(--shadow-color), 0 2px 4px -2px var(--shadow-color);--shadow-xl: 0 10px 15px -3px var(--shadow-color), 0 4px 6px -4px var(--shadow-color);--shadow-2xl: 0 20px 25px -5px var(--shadow-color), 0 8px 10px -6px var(--shadow-color);--ani-scale1x: scale(1.01);--ani-scale2x: scale(1.03);--ani-scale3x: scale(1.05);--ani-scale4x: scale(1.08);--ani-slideup1x: translateY(-4px);--ani-slideup2x: translateY(-8px);--ani-slideup3x: translateY(-12px)}@media (prefers-reduced-motion: no-preference){:root{--root-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--root-transition-duration: .15s}}.siteheader-module__button .g-module-macros-btn,.siteheader-module__secondary-button .g-module-macros-btn,.siteheader-module__cta a{display:inline-flex!important;gap:var(--root-button-icon-gap, .9ch)!important}.siteheader-module__main-nav .main-nav__list-item .main-nav__list--dropdown[data-bs-popper],.siteheader-module__main-nav .main-nav__list-item:last-child .main-nav__list--dropdown[data-bs-popper]{left:-5px;right:unset}.siteheader-module .header-search__form-btn{color:inherit}.siteheader-module .header-search__form-btn-icon{font-size:1.25rem}@media (min-width: 1200px){.siteheader-module__main-nav .main-nav__list-item .main-nav__list--dropdown[data-bs-popper],.siteheader-module__main-nav .main-nav__list-item:last-child .main-nav__list--dropdown[data-bs-popper]{left:8px}}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module{background-color:#efeae1;padding:30px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-logo{padding:6px 14px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__mobile-toggler{color:#666!important;order:2;padding:8px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__mobile-toggler-img{width:32px;height:32px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__button,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__secondary-button{padding-right:12px;padding-left:12px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list--dropdown{background-color:#fff;min-width:215px;border:1px none #CCCCCC;padding:10px;margin-top:20px;margin-bottom:20px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link{justify-content:flex-start;font-family:Albert Sans;font-style:normal;font-weight:500;text-decoration:none;color:#1d1d1d;font-size:20px;padding:12px 14px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list--sublevel .main-nav__list-item-link{font-size:18px;padding:7px 15px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl1:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl1.show,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl1.active,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl1.active-parent,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl2:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl2.active,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl3:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl3.active{color:#3b3b3bcc}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list{background-color:#fff;min-width:190px;border:1px solid #CCCCCC}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn{color:#1d1d1d;padding:16px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn.show,#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn.active,#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn.active-parent{color:#3b3b3bcc}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list-item-link{color:#1d1d1d;font-size:14px;padding:10px 14px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list-item-link:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list-item-link.active{color:#3b3b3bcc}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn{background-color:#efeae1!important}@media (max-width: 1199.98px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-logo{text-align:LEFT}#hs_cos_wrapper_global-header-dndarea-module-2 .header-logo__image{width:200px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__main-nav,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__language,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__links,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__buttons,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__ctas{order:2}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__search{order:0}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__navbar{order:3}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module{flex-wrap:nowrap}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__navbar{display:flex!important;flex-direction:row;flex-wrap:wrap;align-content:center;justify-content:center;align-items:center}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__mobile-toggler{display:none}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__main-nav{flex-grow:1;display:flex;flex-direction:column;justify-content:center}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__links,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__buttons,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__ctas{display:flex;flex-direction:row;align-items:center}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__main-nav{margin:0;padding:0;padding:px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__link{margin:0;padding:0}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__button{margin:0;padding:0 12px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__cta{margin:0;padding:0}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__secondary-button{margin:0;padding:0 12px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list{flex-direction:row;align-items:center}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list--dropdown{position:absolute}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list--toplevel{justify-content:flex-end}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list{position:absolute}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search_wrp{margin:0;padding:0}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search{position:relative;width:130px;height:44px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search.header-search--wide{width:124px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search.header-search--narrow{width:44px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form_wrp{position:absolute;top:0;right:0;width:100%;height:100%;z-index:1100;transition:width .3s ease-out;background:#fff;border:0px solid #EFEAE1}}@media (min-width: 1200px) and (prefers-reduced-motion: reduce){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form_wrp{transition:none}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--show .header-search__form_wrp{width:400px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form{height:100%;transition:box-shadow .15s ease-in-out}}@media (min-width: 1200px) and (prefers-reduced-motion: reduce){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form{transition:none}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-input{transition:box-shadow .15s ease-in-out;background:transparent;border:none;padding:4px 14px}}@media (min-width: 1200px) and (prefers-reduced-motion: reduce){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-input{transition:none}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--wide .header-search__form-input{padding-right:44px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn{position:absolute;right:0;transition:box-shadow .15s ease-in-out,background-color .15s ease-in-out;height:100%;display:flex;align-items:center;user-select:none;border:1px solid transparent;margin:0;padding:0}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn:not(.active):hover{border-color:transparent!important}}@media (min-width: 1200px) and (prefers-reduced-motion: reduce){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn{transition:none}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--wide .header-search__form-btn,#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--narrow .header-search__form-btn{width:44px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn-icon{flex-grow:1}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__suggestions{margin-left:22px;z-index:1110;width:80%}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--open .header-search__suggestions{border-top:0px solid #EFEAE1;padding-bottom:5px}#hs_cos_wrapper_global-header-dndarea-module-2 .open-search_wrp{overflow:hidden}}.button-group,.btn-block{justify-content:var(--scope-alignment)}.button-group{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;width:100%;gap:var(--custom-button-group-gap, var(--scope-content-gap))}.btn-block{flex-basis:100%;display:flex;flex-wrap:wrap}:where(.button-group .btn-full-width){width:100%}:where(.button-group .btn-link){gap:var(--root-button-icon-gap, .9ch)}:where(.button-group) :where(.btn-linkonly,.btn-customlink){--_macro-color: var(--scope-hover-color, var(--custom-color, var(--scope-color)));--_macro-hover-color: var(--scope-hover-color, var(--custom-hover-color, var(--scope-color)));color:var(--_macro-color, var(--color));transition-property:color;transition-duration:var(--root-transition-duration);transition-timing-function:var(--root-transition-timing-function)}:where(.button-group) :where(.btn-linkonly:hover,.btn-customlink:hover){color:var(--_macro-hover-color, var(--hover-color))}:where(.button-group a)>:where(svg,.btn-image){width:auto;height:var(--root-buttonlink-icon-size, 1.2em);fill:currentcolor}:where(.button-group .btn-link)>:where(svg,.btn-image){height:var(--root-button-icon-size, 1.4em)}:where(.button-group .btn-link.visually-hidden-text-wrp)>:where(svg,.btn-image){height:var(--root-button-onlyicon-size, 1em)}body.hidden-scroll{overflow:hidden}.sl-overlay{position:fixed;inset:0;background:#efeae1;display:none;z-index:1035}.sl-wrapper{z-index:1040;width:100%;height:100%;left:0;top:0;position:fixed}.sl-wrapper *{box-sizing:border-box}.sl-wrapper button{border:0 none;background:transparent;font-size:28px;padding:0;cursor:pointer}.sl-wrapper button:hover{opacity:.7}.sl-wrapper .sl-close{display:none;position:fixed;right:30px;top:30px;z-index:10060;margin-top:-14px;margin-right:-14px;height:44px;width:44px;line-height:44px;font-family:"Albert Sans" sans-serif;color:#000;font-size:3rem}.sl-wrapper .sl-counter{display:none;position:fixed;top:30px;left:30px;z-index:10060;color:#000;font-size:1rem}.sl-wrapper .sl-download{display:none;position:fixed;bottom:5px;width:100%;text-align:center;z-index:10060;color:#1d1d1d;font-size:1rem}.sl-wrapper .sl-download a{color:#1d1d1d}.sl-wrapper .sl-navigation{width:100%;display:none}.sl-wrapper .sl-navigation button{position:fixed;top:50%;margin-top:-22px;height:44px;width:22px;line-height:44px;text-align:center;display:block;z-index:10060;font-family:"Albert Sans" sans-serif;color:#000}.sl-wrapper .sl-navigation button.sl-next{right:5px;font-size:2rem}.sl-wrapper .sl-navigation button.sl-prev{left:5px;font-size:2rem}@media (min-width: 35.5em){.sl-wrapper .sl-navigation button{width:44px}.sl-wrapper .sl-navigation button.sl-next{right:10px;font-size:3rem}.sl-wrapper .sl-navigation button.sl-prev{left:10px;font-size:3rem}}@media (min-width: 50em){.sl-wrapper .sl-navigation button{width:44px}.sl-wrapper .sl-navigation button.sl-next{right:20px;font-size:3rem}.sl-wrapper .sl-navigation button.sl-prev{left:20px;font-size:3rem}}.sl-wrapper.sl-dir-rtl .sl-navigation{direction:ltr}.sl-wrapper .sl-image{position:fixed;-ms-touch-action:none;touch-action:none;z-index:10000}.sl-wrapper .sl-image img{margin:0;padding:0;display:block;border:0 none;width:100%;height:auto}@media (min-width: 35.5em){.sl-wrapper .sl-image img{border:0 none}}@media (min-width: 50em){.sl-wrapper .sl-image img{border:0 none}}.sl-wrapper .sl-image iframe{background:#000;border:0 none}@media (min-width: 35.5em){.sl-wrapper .sl-image iframe{border:0 none}}@media (min-width: 50em){.sl-wrapper .sl-image iframe{border:0 none}}.sl-wrapper .sl-image .sl-caption{display:none;padding:10px;color:#1d1d1d;background:#efeae1;font-size:1rem;position:absolute;bottom:0;left:0;right:0}.sl-wrapper .sl-image .sl-caption.pos-top{bottom:auto;top:0}.sl-wrapper .sl-image .sl-caption.pos-outside{bottom:auto}.sl-spinner{display:none;border:5px solid #333;border-radius:40px;height:40px;left:50%;margin:-20px 0 0 -20px;opacity:0;position:fixed;top:50%;width:40px;z-index:1007;-webkit-animation:pulsate 1s ease-out infinite;-moz-animation:pulsate 1s ease-out infinite;-ms-animation:pulsate 1s ease-out infinite;-o-animation:pulsate 1s ease-out infinite;animation:pulsate 1s ease-out infinite}.sl-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.sl-transition{transition:-moz-transform ease .2s;transition:-ms-transform ease .2s;transition:-o-transform ease .2s;transition:-webkit-transform ease .2s;transition:transform ease .2s}@-webkit-keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}@keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}@-moz-keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}@-o-keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}@-ms-keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}h1,h2,h3,h4,h5,h6,.xref,.text-break{word-wrap:break-word;word-break:break-word}.divider{margin:0 5px;color:#ccc}article span.small.pull-right{float:right}article img{max-width:100%;height:auto}.codewrapper{position:relative}.sample-response .response-content{max-height:200px}@media (width <= 768px){#mobile-indicator{display:block}.mobile-hide{display:none}h1:before,h2:before,h3:before,h4:before{content:"";display:none}}@media print{@page{margin:.4in}}.pdftoc ul{list-style:none}.pdftoc a{display:flex;text-decoration:none;color:var(--bs-body-color)}.pdftoc a .spacer{flex:1;border-bottom:1px dashed var(--bs-body-color);margin:.4em}@view-transition{navigation: auto;}@media (prefers-reduced-motion){@view-transition{navigation: none;}}html{overflow-y:scroll!important}:root{--bs-border-color: rgba(0, 0, 0, .7)}article table p{margin-bottom:0}.card{border:var(--bs-card-border-width) solid var(--bs-border-color)}.nav-tabs .nav-link{border:var(--bs-nav-tabs-border-width) solid var(--bs-border-color-translucent)}footer{background-color:#004c47;color:#fff;padding-top:110px;padding-bottom:55px}footer .heading{color:#fff}footer hr.divider-module__line{border-top-color:var(--secondary2-color)}footer .divider-module_wrp{padding-top:40px;padding-bottom:35px;height:0}footer .button-group{--scope-alignment: start;--scope-border-radius: 0;--scope-content-gap: 45px;--scope-border: none;--scope-border-width: 0px;--scope-shadow: var(--shadow-);--scope-padding-top: 0;--scope-padding-bottom: 15px}footer .row-number-1{padding-bottom:125px!important}footer .row-number-1 div:first-of-type{padding-bottom:7px}footer .row-number-1 div:nth-child(2){height:82px}footer .row-number-1 h2{margin:0}@media (max-width: 767px){footer{padding-top:60px!important}footer .divider-module_wrp{padding-top:20px!important;padding-bottom:20px!important}footer .row-number-1{gap:24px}footer .row-number-1 div:first-of-type{padding-bottom:10px}footer .row-number-1 div:nth-child(2){height:initial}.global-footer_wrp .row-number-3 .hs-menu-flow-horizontal ul[role=menu]{padding-bottom:40px!important}}footer .row-number-2{row-gap:24px}.global-footer_wrp ul[role=menu]{list-style:none;margin:0;padding:0}.global-footer_wrp a[role=menuitem]{text-decoration:none;font-size:28px;color:#fff}.global-footer_wrp a[role=menuitem]:hover,.global-footer_wrp a[role=menuitem]:focus{text-decoration:underline}.global-footer_wrp .row-number-2 a[role=menuitem],.global-footer_wrp .row-number-3 a[role=menuitem]{font-size:18px}.global-footer_wrp .hs-menu-flow-vertical a[role=menuitem]{padding:6px 0}.global-footer_wrp .hs-menu-flow-horizontal ul[role=menu]{display:flex;justify-content:flex-start;gap:30px}.global-footer_wrp .button-group svg{height:auto;width:auto}body>main,body[data-layout=landing]>main{padding-top:0}.siteheader-module_wrp{max-width:2240px!important;margin-left:auto!important;margin-right:auto!important}.siteheader-module__logo{height:70px}.siteheader-module__buttons a{font-size:18px}.siteheader-module__buttons svg{height:auto;width:auto}.siteheader-module__mobile-toggler{background-color:#efeae1!important}.actionbar{margin-top:0!important}.actionbar .btn{background-color:#efeae1!important}.btn-close{color:var(--bs-btn-close-color)!important;background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat!important}article{position:relative}article a{color:#337ab7;cursor:pointer;text-decoration:none}article div:has(iframe){margin-bottom:2rem}article h2,article h3,article h4,article h5,article h6{margin-top:2rem!important;margin-bottom:1rem!important}article .alert>h5{margin-top:0}article .alert>p,article .alert>ul{margin-bottom:0}article h1:first-of-type{margin-top:0;margin-bottom:1rem}article .conceptual-content h1:first-child,article .conceptual-content h2:first-child,article .conceptual-content h3:first-child,article .conceptual-content h4:first-child,article .conceptual-content h5:first-child,article .conceptual-content h6:first-child{margin-top:0!important}article code{background-color:#f1f2f3;color:#747474;white-space:pre-wrap}article .docnav{min-height:38px;margin-bottom:2rem}article #breadcrumb{min-height:21px;margin-bottom:2rem}.toc li.active>a{color:#337ab7}.toc form.filter>input{font-size:var(--hub-font-size-to-rem)}.affix h5{font-size:var(--hub-font-size-to-rem);padding-top:0}.affix nav .active{color:#337ab7}.affix nav ul ul{padding-left:1rem}#navbar{display:flex;flex-flow:row wrap;align-items:center;width:100%;gap:15px}#navbar a{background:var(--secondary2-color);border:1px solid var(--secondary2-color);font-size:18px!important;font-weight:500;line-height:normal;padding:7px 10px;color:#1d1d1d}#navbar a:not(.active){background:transparent}.typelist dt{border-bottom:solid 1px;font-weight:inherit!important;padding-bottom:.3rem}.typelist dd{margin-top:.3rem}.facts.text-secondary{color:inherit!important}.facts.text-secondary dt{font-weight:700}body[data-yaml-mime=ManagedReference] article h3[data-uid],body[data-yaml-mime=ApiPage] article h3[data-uid]{font-size:1.4rem}body[data-yaml-mime=ManagedReference] article h4.section,body[data-yaml-mime=ApiPage] article h4.section{font-size:1.2rem}span.parametername,span.paramref,span.typeparamref{font-style:italic}.document-metadata{margin-bottom:1rem}.emoji{font-weight:400;font-family:"apple color emoji","segoe ui emoji","noto color emoji","android emoji",emojisymbols,emojione mozilla,twemoji mozilla,segoe ui symbol,sans-serif}.metadata{display:flex;flex-wrap:wrap;list-style:none;margin:0!important;padding:.125rem 0 0!important;font-size:10px}.metadata>li:not(:last-of-type,:only-of-type):after{padding-left:5px;padding-right:5px;content:"\2022"}.applies-to{display:inline-flex;flex-wrap:wrap;list-style:none;margin:0!important;padding:.5rem 0 0!important}.applies-to>li:not(:last-of-type,:only-of-type):after{padding-left:5px;padding-right:5px;content:"\2022"}.global-footer_wrp .social-links-module{justify-content:right}@media (min-width: 992px){.global-footer_wrp .row .col-12:first-child .hs-menu-flow-horizontal ul[role=menu]{justify-content:flex-start}.global-footer_wrp .social-links-module{justify-content:right}}@media (max-width: 991.98px){.global-footer_wrp .hs-menu-flow-horizontal ul[role=menu]{justify-content:flex-start;flex-direction:column}}@media (max-width: 540px){footer .container{padding-left:20px!important;padding-right:20px!important}} +@charset "UTF-8";@font-face{font-display:block;font-family:bootstrap-icons;src:url("./bootstrap-icons-X6UQXWUS.woff2?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff2"),url("./bootstrap-icons-OCU552PF.woff?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff")}.bi:before,[class^=bi-]:before,[class*=" bi-"]:before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123:before{content:"\f67f"}.bi-alarm-fill:before{content:"\f101"}.bi-alarm:before{content:"\f102"}.bi-align-bottom:before{content:"\f103"}.bi-align-center:before{content:"\f104"}.bi-align-end:before{content:"\f105"}.bi-align-middle:before{content:"\f106"}.bi-align-start:before{content:"\f107"}.bi-align-top:before{content:"\f108"}.bi-alt:before{content:"\f109"}.bi-app-indicator:before{content:"\f10a"}.bi-app:before{content:"\f10b"}.bi-archive-fill:before{content:"\f10c"}.bi-archive:before{content:"\f10d"}.bi-arrow-90deg-down:before{content:"\f10e"}.bi-arrow-90deg-left:before{content:"\f10f"}.bi-arrow-90deg-right:before{content:"\f110"}.bi-arrow-90deg-up:before{content:"\f111"}.bi-arrow-bar-down:before{content:"\f112"}.bi-arrow-bar-left:before{content:"\f113"}.bi-arrow-bar-right:before{content:"\f114"}.bi-arrow-bar-up:before{content:"\f115"}.bi-arrow-clockwise:before{content:"\f116"}.bi-arrow-counterclockwise:before{content:"\f117"}.bi-arrow-down-circle-fill:before{content:"\f118"}.bi-arrow-down-circle:before{content:"\f119"}.bi-arrow-down-left-circle-fill:before{content:"\f11a"}.bi-arrow-down-left-circle:before{content:"\f11b"}.bi-arrow-down-left-square-fill:before{content:"\f11c"}.bi-arrow-down-left-square:before{content:"\f11d"}.bi-arrow-down-left:before{content:"\f11e"}.bi-arrow-down-right-circle-fill:before{content:"\f11f"}.bi-arrow-down-right-circle:before{content:"\f120"}.bi-arrow-down-right-square-fill:before{content:"\f121"}.bi-arrow-down-right-square:before{content:"\f122"}.bi-arrow-down-right:before{content:"\f123"}.bi-arrow-down-short:before{content:"\f124"}.bi-arrow-down-square-fill:before{content:"\f125"}.bi-arrow-down-square:before{content:"\f126"}.bi-arrow-down-up:before{content:"\f127"}.bi-arrow-down:before{content:"\f128"}.bi-arrow-left-circle-fill:before{content:"\f129"}.bi-arrow-left-circle:before{content:"\f12a"}.bi-arrow-left-right:before{content:"\f12b"}.bi-arrow-left-short:before{content:"\f12c"}.bi-arrow-left-square-fill:before{content:"\f12d"}.bi-arrow-left-square:before{content:"\f12e"}.bi-arrow-left:before{content:"\f12f"}.bi-arrow-repeat:before{content:"\f130"}.bi-arrow-return-left:before{content:"\f131"}.bi-arrow-return-right:before{content:"\f132"}.bi-arrow-right-circle-fill:before{content:"\f133"}.bi-arrow-right-circle:before{content:"\f134"}.bi-arrow-right-short:before{content:"\f135"}.bi-arrow-right-square-fill:before{content:"\f136"}.bi-arrow-right-square:before{content:"\f137"}.bi-arrow-right:before{content:"\f138"}.bi-arrow-up-circle-fill:before{content:"\f139"}.bi-arrow-up-circle:before{content:"\f13a"}.bi-arrow-up-left-circle-fill:before{content:"\f13b"}.bi-arrow-up-left-circle:before{content:"\f13c"}.bi-arrow-up-left-square-fill:before{content:"\f13d"}.bi-arrow-up-left-square:before{content:"\f13e"}.bi-arrow-up-left:before{content:"\f13f"}.bi-arrow-up-right-circle-fill:before{content:"\f140"}.bi-arrow-up-right-circle:before{content:"\f141"}.bi-arrow-up-right-square-fill:before{content:"\f142"}.bi-arrow-up-right-square:before{content:"\f143"}.bi-arrow-up-right:before{content:"\f144"}.bi-arrow-up-short:before{content:"\f145"}.bi-arrow-up-square-fill:before{content:"\f146"}.bi-arrow-up-square:before{content:"\f147"}.bi-arrow-up:before{content:"\f148"}.bi-arrows-angle-contract:before{content:"\f149"}.bi-arrows-angle-expand:before{content:"\f14a"}.bi-arrows-collapse:before{content:"\f14b"}.bi-arrows-expand:before{content:"\f14c"}.bi-arrows-fullscreen:before{content:"\f14d"}.bi-arrows-move:before{content:"\f14e"}.bi-aspect-ratio-fill:before{content:"\f14f"}.bi-aspect-ratio:before{content:"\f150"}.bi-asterisk:before{content:"\f151"}.bi-at:before{content:"\f152"}.bi-award-fill:before{content:"\f153"}.bi-award:before{content:"\f154"}.bi-back:before{content:"\f155"}.bi-backspace-fill:before{content:"\f156"}.bi-backspace-reverse-fill:before{content:"\f157"}.bi-backspace-reverse:before{content:"\f158"}.bi-backspace:before{content:"\f159"}.bi-badge-3d-fill:before{content:"\f15a"}.bi-badge-3d:before{content:"\f15b"}.bi-badge-4k-fill:before{content:"\f15c"}.bi-badge-4k:before{content:"\f15d"}.bi-badge-8k-fill:before{content:"\f15e"}.bi-badge-8k:before{content:"\f15f"}.bi-badge-ad-fill:before{content:"\f160"}.bi-badge-ad:before{content:"\f161"}.bi-badge-ar-fill:before{content:"\f162"}.bi-badge-ar:before{content:"\f163"}.bi-badge-cc-fill:before{content:"\f164"}.bi-badge-cc:before{content:"\f165"}.bi-badge-hd-fill:before{content:"\f166"}.bi-badge-hd:before{content:"\f167"}.bi-badge-tm-fill:before{content:"\f168"}.bi-badge-tm:before{content:"\f169"}.bi-badge-vo-fill:before{content:"\f16a"}.bi-badge-vo:before{content:"\f16b"}.bi-badge-vr-fill:before{content:"\f16c"}.bi-badge-vr:before{content:"\f16d"}.bi-badge-wc-fill:before{content:"\f16e"}.bi-badge-wc:before{content:"\f16f"}.bi-bag-check-fill:before{content:"\f170"}.bi-bag-check:before{content:"\f171"}.bi-bag-dash-fill:before{content:"\f172"}.bi-bag-dash:before{content:"\f173"}.bi-bag-fill:before{content:"\f174"}.bi-bag-plus-fill:before{content:"\f175"}.bi-bag-plus:before{content:"\f176"}.bi-bag-x-fill:before{content:"\f177"}.bi-bag-x:before{content:"\f178"}.bi-bag:before{content:"\f179"}.bi-bar-chart-fill:before{content:"\f17a"}.bi-bar-chart-line-fill:before{content:"\f17b"}.bi-bar-chart-line:before{content:"\f17c"}.bi-bar-chart-steps:before{content:"\f17d"}.bi-bar-chart:before{content:"\f17e"}.bi-basket-fill:before{content:"\f17f"}.bi-basket:before{content:"\f180"}.bi-basket2-fill:before{content:"\f181"}.bi-basket2:before{content:"\f182"}.bi-basket3-fill:before{content:"\f183"}.bi-basket3:before{content:"\f184"}.bi-battery-charging:before{content:"\f185"}.bi-battery-full:before{content:"\f186"}.bi-battery-half:before{content:"\f187"}.bi-battery:before{content:"\f188"}.bi-bell-fill:before{content:"\f189"}.bi-bell:before{content:"\f18a"}.bi-bezier:before{content:"\f18b"}.bi-bezier2:before{content:"\f18c"}.bi-bicycle:before{content:"\f18d"}.bi-binoculars-fill:before{content:"\f18e"}.bi-binoculars:before{content:"\f18f"}.bi-blockquote-left:before{content:"\f190"}.bi-blockquote-right:before{content:"\f191"}.bi-book-fill:before{content:"\f192"}.bi-book-half:before{content:"\f193"}.bi-book:before{content:"\f194"}.bi-bookmark-check-fill:before{content:"\f195"}.bi-bookmark-check:before{content:"\f196"}.bi-bookmark-dash-fill:before{content:"\f197"}.bi-bookmark-dash:before{content:"\f198"}.bi-bookmark-fill:before{content:"\f199"}.bi-bookmark-heart-fill:before{content:"\f19a"}.bi-bookmark-heart:before{content:"\f19b"}.bi-bookmark-plus-fill:before{content:"\f19c"}.bi-bookmark-plus:before{content:"\f19d"}.bi-bookmark-star-fill:before{content:"\f19e"}.bi-bookmark-star:before{content:"\f19f"}.bi-bookmark-x-fill:before{content:"\f1a0"}.bi-bookmark-x:before{content:"\f1a1"}.bi-bookmark:before{content:"\f1a2"}.bi-bookmarks-fill:before{content:"\f1a3"}.bi-bookmarks:before{content:"\f1a4"}.bi-bookshelf:before{content:"\f1a5"}.bi-bootstrap-fill:before{content:"\f1a6"}.bi-bootstrap-reboot:before{content:"\f1a7"}.bi-bootstrap:before{content:"\f1a8"}.bi-border-all:before{content:"\f1a9"}.bi-border-bottom:before{content:"\f1aa"}.bi-border-center:before{content:"\f1ab"}.bi-border-inner:before{content:"\f1ac"}.bi-border-left:before{content:"\f1ad"}.bi-border-middle:before{content:"\f1ae"}.bi-border-outer:before{content:"\f1af"}.bi-border-right:before{content:"\f1b0"}.bi-border-style:before{content:"\f1b1"}.bi-border-top:before{content:"\f1b2"}.bi-border-width:before{content:"\f1b3"}.bi-border:before{content:"\f1b4"}.bi-bounding-box-circles:before{content:"\f1b5"}.bi-bounding-box:before{content:"\f1b6"}.bi-box-arrow-down-left:before{content:"\f1b7"}.bi-box-arrow-down-right:before{content:"\f1b8"}.bi-box-arrow-down:before{content:"\f1b9"}.bi-box-arrow-in-down-left:before{content:"\f1ba"}.bi-box-arrow-in-down-right:before{content:"\f1bb"}.bi-box-arrow-in-down:before{content:"\f1bc"}.bi-box-arrow-in-left:before{content:"\f1bd"}.bi-box-arrow-in-right:before{content:"\f1be"}.bi-box-arrow-in-up-left:before{content:"\f1bf"}.bi-box-arrow-in-up-right:before{content:"\f1c0"}.bi-box-arrow-in-up:before{content:"\f1c1"}.bi-box-arrow-left:before{content:"\f1c2"}.bi-box-arrow-right:before{content:"\f1c3"}.bi-box-arrow-up-left:before{content:"\f1c4"}.bi-box-arrow-up-right:before{content:"\f1c5"}.bi-box-arrow-up:before{content:"\f1c6"}.bi-box-seam:before{content:"\f1c7"}.bi-box:before{content:"\f1c8"}.bi-braces:before{content:"\f1c9"}.bi-bricks:before{content:"\f1ca"}.bi-briefcase-fill:before{content:"\f1cb"}.bi-briefcase:before{content:"\f1cc"}.bi-brightness-alt-high-fill:before{content:"\f1cd"}.bi-brightness-alt-high:before{content:"\f1ce"}.bi-brightness-alt-low-fill:before{content:"\f1cf"}.bi-brightness-alt-low:before{content:"\f1d0"}.bi-brightness-high-fill:before{content:"\f1d1"}.bi-brightness-high:before{content:"\f1d2"}.bi-brightness-low-fill:before{content:"\f1d3"}.bi-brightness-low:before{content:"\f1d4"}.bi-broadcast-pin:before{content:"\f1d5"}.bi-broadcast:before{content:"\f1d6"}.bi-brush-fill:before{content:"\f1d7"}.bi-brush:before{content:"\f1d8"}.bi-bucket-fill:before{content:"\f1d9"}.bi-bucket:before{content:"\f1da"}.bi-bug-fill:before{content:"\f1db"}.bi-bug:before{content:"\f1dc"}.bi-building:before{content:"\f1dd"}.bi-bullseye:before{content:"\f1de"}.bi-calculator-fill:before{content:"\f1df"}.bi-calculator:before{content:"\f1e0"}.bi-calendar-check-fill:before{content:"\f1e1"}.bi-calendar-check:before{content:"\f1e2"}.bi-calendar-date-fill:before{content:"\f1e3"}.bi-calendar-date:before{content:"\f1e4"}.bi-calendar-day-fill:before{content:"\f1e5"}.bi-calendar-day:before{content:"\f1e6"}.bi-calendar-event-fill:before{content:"\f1e7"}.bi-calendar-event:before{content:"\f1e8"}.bi-calendar-fill:before{content:"\f1e9"}.bi-calendar-minus-fill:before{content:"\f1ea"}.bi-calendar-minus:before{content:"\f1eb"}.bi-calendar-month-fill:before{content:"\f1ec"}.bi-calendar-month:before{content:"\f1ed"}.bi-calendar-plus-fill:before{content:"\f1ee"}.bi-calendar-plus:before{content:"\f1ef"}.bi-calendar-range-fill:before{content:"\f1f0"}.bi-calendar-range:before{content:"\f1f1"}.bi-calendar-week-fill:before{content:"\f1f2"}.bi-calendar-week:before{content:"\f1f3"}.bi-calendar-x-fill:before{content:"\f1f4"}.bi-calendar-x:before{content:"\f1f5"}.bi-calendar:before{content:"\f1f6"}.bi-calendar2-check-fill:before{content:"\f1f7"}.bi-calendar2-check:before{content:"\f1f8"}.bi-calendar2-date-fill:before{content:"\f1f9"}.bi-calendar2-date:before{content:"\f1fa"}.bi-calendar2-day-fill:before{content:"\f1fb"}.bi-calendar2-day:before{content:"\f1fc"}.bi-calendar2-event-fill:before{content:"\f1fd"}.bi-calendar2-event:before{content:"\f1fe"}.bi-calendar2-fill:before{content:"\f1ff"}.bi-calendar2-minus-fill:before{content:"\f200"}.bi-calendar2-minus:before{content:"\f201"}.bi-calendar2-month-fill:before{content:"\f202"}.bi-calendar2-month:before{content:"\f203"}.bi-calendar2-plus-fill:before{content:"\f204"}.bi-calendar2-plus:before{content:"\f205"}.bi-calendar2-range-fill:before{content:"\f206"}.bi-calendar2-range:before{content:"\f207"}.bi-calendar2-week-fill:before{content:"\f208"}.bi-calendar2-week:before{content:"\f209"}.bi-calendar2-x-fill:before{content:"\f20a"}.bi-calendar2-x:before{content:"\f20b"}.bi-calendar2:before{content:"\f20c"}.bi-calendar3-event-fill:before{content:"\f20d"}.bi-calendar3-event:before{content:"\f20e"}.bi-calendar3-fill:before{content:"\f20f"}.bi-calendar3-range-fill:before{content:"\f210"}.bi-calendar3-range:before{content:"\f211"}.bi-calendar3-week-fill:before{content:"\f212"}.bi-calendar3-week:before{content:"\f213"}.bi-calendar3:before{content:"\f214"}.bi-calendar4-event:before{content:"\f215"}.bi-calendar4-range:before{content:"\f216"}.bi-calendar4-week:before{content:"\f217"}.bi-calendar4:before{content:"\f218"}.bi-camera-fill:before{content:"\f219"}.bi-camera-reels-fill:before{content:"\f21a"}.bi-camera-reels:before{content:"\f21b"}.bi-camera-video-fill:before{content:"\f21c"}.bi-camera-video-off-fill:before{content:"\f21d"}.bi-camera-video-off:before{content:"\f21e"}.bi-camera-video:before{content:"\f21f"}.bi-camera:before{content:"\f220"}.bi-camera2:before{content:"\f221"}.bi-capslock-fill:before{content:"\f222"}.bi-capslock:before{content:"\f223"}.bi-card-checklist:before{content:"\f224"}.bi-card-heading:before{content:"\f225"}.bi-card-image:before{content:"\f226"}.bi-card-list:before{content:"\f227"}.bi-card-text:before{content:"\f228"}.bi-caret-down-fill:before{content:"\f229"}.bi-caret-down-square-fill:before{content:"\f22a"}.bi-caret-down-square:before{content:"\f22b"}.bi-caret-down:before{content:"\f22c"}.bi-caret-left-fill:before{content:"\f22d"}.bi-caret-left-square-fill:before{content:"\f22e"}.bi-caret-left-square:before{content:"\f22f"}.bi-caret-left:before{content:"\f230"}.bi-caret-right-fill:before{content:"\f231"}.bi-caret-right-square-fill:before{content:"\f232"}.bi-caret-right-square:before{content:"\f233"}.bi-caret-right:before{content:"\f234"}.bi-caret-up-fill:before{content:"\f235"}.bi-caret-up-square-fill:before{content:"\f236"}.bi-caret-up-square:before{content:"\f237"}.bi-caret-up:before{content:"\f238"}.bi-cart-check-fill:before{content:"\f239"}.bi-cart-check:before{content:"\f23a"}.bi-cart-dash-fill:before{content:"\f23b"}.bi-cart-dash:before{content:"\f23c"}.bi-cart-fill:before{content:"\f23d"}.bi-cart-plus-fill:before{content:"\f23e"}.bi-cart-plus:before{content:"\f23f"}.bi-cart-x-fill:before{content:"\f240"}.bi-cart-x:before{content:"\f241"}.bi-cart:before{content:"\f242"}.bi-cart2:before{content:"\f243"}.bi-cart3:before{content:"\f244"}.bi-cart4:before{content:"\f245"}.bi-cash-stack:before{content:"\f246"}.bi-cash:before{content:"\f247"}.bi-cast:before{content:"\f248"}.bi-chat-dots-fill:before{content:"\f249"}.bi-chat-dots:before{content:"\f24a"}.bi-chat-fill:before{content:"\f24b"}.bi-chat-left-dots-fill:before{content:"\f24c"}.bi-chat-left-dots:before{content:"\f24d"}.bi-chat-left-fill:before{content:"\f24e"}.bi-chat-left-quote-fill:before{content:"\f24f"}.bi-chat-left-quote:before{content:"\f250"}.bi-chat-left-text-fill:before{content:"\f251"}.bi-chat-left-text:before{content:"\f252"}.bi-chat-left:before{content:"\f253"}.bi-chat-quote-fill:before{content:"\f254"}.bi-chat-quote:before{content:"\f255"}.bi-chat-right-dots-fill:before{content:"\f256"}.bi-chat-right-dots:before{content:"\f257"}.bi-chat-right-fill:before{content:"\f258"}.bi-chat-right-quote-fill:before{content:"\f259"}.bi-chat-right-quote:before{content:"\f25a"}.bi-chat-right-text-fill:before{content:"\f25b"}.bi-chat-right-text:before{content:"\f25c"}.bi-chat-right:before{content:"\f25d"}.bi-chat-square-dots-fill:before{content:"\f25e"}.bi-chat-square-dots:before{content:"\f25f"}.bi-chat-square-fill:before{content:"\f260"}.bi-chat-square-quote-fill:before{content:"\f261"}.bi-chat-square-quote:before{content:"\f262"}.bi-chat-square-text-fill:before{content:"\f263"}.bi-chat-square-text:before{content:"\f264"}.bi-chat-square:before{content:"\f265"}.bi-chat-text-fill:before{content:"\f266"}.bi-chat-text:before{content:"\f267"}.bi-chat:before{content:"\f268"}.bi-check-all:before{content:"\f269"}.bi-check-circle-fill:before{content:"\f26a"}.bi-check-circle:before{content:"\f26b"}.bi-check-square-fill:before{content:"\f26c"}.bi-check-square:before{content:"\f26d"}.bi-check:before{content:"\f26e"}.bi-check2-all:before{content:"\f26f"}.bi-check2-circle:before{content:"\f270"}.bi-check2-square:before{content:"\f271"}.bi-check2:before{content:"\f272"}.bi-chevron-bar-contract:before{content:"\f273"}.bi-chevron-bar-down:before{content:"\f274"}.bi-chevron-bar-expand:before{content:"\f275"}.bi-chevron-bar-left:before{content:"\f276"}.bi-chevron-bar-right:before{content:"\f277"}.bi-chevron-bar-up:before{content:"\f278"}.bi-chevron-compact-down:before{content:"\f279"}.bi-chevron-compact-left:before{content:"\f27a"}.bi-chevron-compact-right:before{content:"\f27b"}.bi-chevron-compact-up:before{content:"\f27c"}.bi-chevron-contract:before{content:"\f27d"}.bi-chevron-double-down:before{content:"\f27e"}.bi-chevron-double-left:before{content:"\f27f"}.bi-chevron-double-right:before{content:"\f280"}.bi-chevron-double-up:before{content:"\f281"}.bi-chevron-down:before{content:"\f282"}.bi-chevron-expand:before{content:"\f283"}.bi-chevron-left:before{content:"\f284"}.bi-chevron-right:before{content:"\f285"}.bi-chevron-up:before{content:"\f286"}.bi-circle-fill:before{content:"\f287"}.bi-circle-half:before{content:"\f288"}.bi-circle-square:before{content:"\f289"}.bi-circle:before{content:"\f28a"}.bi-clipboard-check:before{content:"\f28b"}.bi-clipboard-data:before{content:"\f28c"}.bi-clipboard-minus:before{content:"\f28d"}.bi-clipboard-plus:before{content:"\f28e"}.bi-clipboard-x:before{content:"\f28f"}.bi-clipboard:before{content:"\f290"}.bi-clock-fill:before{content:"\f291"}.bi-clock-history:before{content:"\f292"}.bi-clock:before{content:"\f293"}.bi-cloud-arrow-down-fill:before{content:"\f294"}.bi-cloud-arrow-down:before{content:"\f295"}.bi-cloud-arrow-up-fill:before{content:"\f296"}.bi-cloud-arrow-up:before{content:"\f297"}.bi-cloud-check-fill:before{content:"\f298"}.bi-cloud-check:before{content:"\f299"}.bi-cloud-download-fill:before{content:"\f29a"}.bi-cloud-download:before{content:"\f29b"}.bi-cloud-drizzle-fill:before{content:"\f29c"}.bi-cloud-drizzle:before{content:"\f29d"}.bi-cloud-fill:before{content:"\f29e"}.bi-cloud-fog-fill:before{content:"\f29f"}.bi-cloud-fog:before{content:"\f2a0"}.bi-cloud-fog2-fill:before{content:"\f2a1"}.bi-cloud-fog2:before{content:"\f2a2"}.bi-cloud-hail-fill:before{content:"\f2a3"}.bi-cloud-hail:before{content:"\f2a4"}.bi-cloud-haze-fill:before{content:"\f2a6"}.bi-cloud-haze:before{content:"\f2a7"}.bi-cloud-haze2-fill:before{content:"\f2a8"}.bi-cloud-lightning-fill:before{content:"\f2a9"}.bi-cloud-lightning-rain-fill:before{content:"\f2aa"}.bi-cloud-lightning-rain:before{content:"\f2ab"}.bi-cloud-lightning:before{content:"\f2ac"}.bi-cloud-minus-fill:before{content:"\f2ad"}.bi-cloud-minus:before{content:"\f2ae"}.bi-cloud-moon-fill:before{content:"\f2af"}.bi-cloud-moon:before{content:"\f2b0"}.bi-cloud-plus-fill:before{content:"\f2b1"}.bi-cloud-plus:before{content:"\f2b2"}.bi-cloud-rain-fill:before{content:"\f2b3"}.bi-cloud-rain-heavy-fill:before{content:"\f2b4"}.bi-cloud-rain-heavy:before{content:"\f2b5"}.bi-cloud-rain:before{content:"\f2b6"}.bi-cloud-slash-fill:before{content:"\f2b7"}.bi-cloud-slash:before{content:"\f2b8"}.bi-cloud-sleet-fill:before{content:"\f2b9"}.bi-cloud-sleet:before{content:"\f2ba"}.bi-cloud-snow-fill:before{content:"\f2bb"}.bi-cloud-snow:before{content:"\f2bc"}.bi-cloud-sun-fill:before{content:"\f2bd"}.bi-cloud-sun:before{content:"\f2be"}.bi-cloud-upload-fill:before{content:"\f2bf"}.bi-cloud-upload:before{content:"\f2c0"}.bi-cloud:before{content:"\f2c1"}.bi-clouds-fill:before{content:"\f2c2"}.bi-clouds:before{content:"\f2c3"}.bi-cloudy-fill:before{content:"\f2c4"}.bi-cloudy:before{content:"\f2c5"}.bi-code-slash:before{content:"\f2c6"}.bi-code-square:before{content:"\f2c7"}.bi-code:before{content:"\f2c8"}.bi-collection-fill:before{content:"\f2c9"}.bi-collection-play-fill:before{content:"\f2ca"}.bi-collection-play:before{content:"\f2cb"}.bi-collection:before{content:"\f2cc"}.bi-columns-gap:before{content:"\f2cd"}.bi-columns:before{content:"\f2ce"}.bi-command:before{content:"\f2cf"}.bi-compass-fill:before{content:"\f2d0"}.bi-compass:before{content:"\f2d1"}.bi-cone-striped:before{content:"\f2d2"}.bi-cone:before{content:"\f2d3"}.bi-controller:before{content:"\f2d4"}.bi-cpu-fill:before{content:"\f2d5"}.bi-cpu:before{content:"\f2d6"}.bi-credit-card-2-back-fill:before{content:"\f2d7"}.bi-credit-card-2-back:before{content:"\f2d8"}.bi-credit-card-2-front-fill:before{content:"\f2d9"}.bi-credit-card-2-front:before{content:"\f2da"}.bi-credit-card-fill:before{content:"\f2db"}.bi-credit-card:before{content:"\f2dc"}.bi-crop:before{content:"\f2dd"}.bi-cup-fill:before{content:"\f2de"}.bi-cup-straw:before{content:"\f2df"}.bi-cup:before{content:"\f2e0"}.bi-cursor-fill:before{content:"\f2e1"}.bi-cursor-text:before{content:"\f2e2"}.bi-cursor:before{content:"\f2e3"}.bi-dash-circle-dotted:before{content:"\f2e4"}.bi-dash-circle-fill:before{content:"\f2e5"}.bi-dash-circle:before{content:"\f2e6"}.bi-dash-square-dotted:before{content:"\f2e7"}.bi-dash-square-fill:before{content:"\f2e8"}.bi-dash-square:before{content:"\f2e9"}.bi-dash:before{content:"\f2ea"}.bi-diagram-2-fill:before{content:"\f2eb"}.bi-diagram-2:before{content:"\f2ec"}.bi-diagram-3-fill:before{content:"\f2ed"}.bi-diagram-3:before{content:"\f2ee"}.bi-diamond-fill:before{content:"\f2ef"}.bi-diamond-half:before{content:"\f2f0"}.bi-diamond:before{content:"\f2f1"}.bi-dice-1-fill:before{content:"\f2f2"}.bi-dice-1:before{content:"\f2f3"}.bi-dice-2-fill:before{content:"\f2f4"}.bi-dice-2:before{content:"\f2f5"}.bi-dice-3-fill:before{content:"\f2f6"}.bi-dice-3:before{content:"\f2f7"}.bi-dice-4-fill:before{content:"\f2f8"}.bi-dice-4:before{content:"\f2f9"}.bi-dice-5-fill:before{content:"\f2fa"}.bi-dice-5:before{content:"\f2fb"}.bi-dice-6-fill:before{content:"\f2fc"}.bi-dice-6:before{content:"\f2fd"}.bi-disc-fill:before{content:"\f2fe"}.bi-disc:before{content:"\f2ff"}.bi-discord:before{content:"\f300"}.bi-display-fill:before{content:"\f301"}.bi-display:before{content:"\f302"}.bi-distribute-horizontal:before{content:"\f303"}.bi-distribute-vertical:before{content:"\f304"}.bi-door-closed-fill:before{content:"\f305"}.bi-door-closed:before{content:"\f306"}.bi-door-open-fill:before{content:"\f307"}.bi-door-open:before{content:"\f308"}.bi-dot:before{content:"\f309"}.bi-download:before{content:"\f30a"}.bi-droplet-fill:before{content:"\f30b"}.bi-droplet-half:before{content:"\f30c"}.bi-droplet:before{content:"\f30d"}.bi-earbuds:before{content:"\f30e"}.bi-easel-fill:before{content:"\f30f"}.bi-easel:before{content:"\f310"}.bi-egg-fill:before{content:"\f311"}.bi-egg-fried:before{content:"\f312"}.bi-egg:before{content:"\f313"}.bi-eject-fill:before{content:"\f314"}.bi-eject:before{content:"\f315"}.bi-emoji-angry-fill:before{content:"\f316"}.bi-emoji-angry:before{content:"\f317"}.bi-emoji-dizzy-fill:before{content:"\f318"}.bi-emoji-dizzy:before{content:"\f319"}.bi-emoji-expressionless-fill:before{content:"\f31a"}.bi-emoji-expressionless:before{content:"\f31b"}.bi-emoji-frown-fill:before{content:"\f31c"}.bi-emoji-frown:before{content:"\f31d"}.bi-emoji-heart-eyes-fill:before{content:"\f31e"}.bi-emoji-heart-eyes:before{content:"\f31f"}.bi-emoji-laughing-fill:before{content:"\f320"}.bi-emoji-laughing:before{content:"\f321"}.bi-emoji-neutral-fill:before{content:"\f322"}.bi-emoji-neutral:before{content:"\f323"}.bi-emoji-smile-fill:before{content:"\f324"}.bi-emoji-smile-upside-down-fill:before{content:"\f325"}.bi-emoji-smile-upside-down:before{content:"\f326"}.bi-emoji-smile:before{content:"\f327"}.bi-emoji-sunglasses-fill:before{content:"\f328"}.bi-emoji-sunglasses:before{content:"\f329"}.bi-emoji-wink-fill:before{content:"\f32a"}.bi-emoji-wink:before{content:"\f32b"}.bi-envelope-fill:before{content:"\f32c"}.bi-envelope-open-fill:before{content:"\f32d"}.bi-envelope-open:before{content:"\f32e"}.bi-envelope:before{content:"\f32f"}.bi-eraser-fill:before{content:"\f330"}.bi-eraser:before{content:"\f331"}.bi-exclamation-circle-fill:before{content:"\f332"}.bi-exclamation-circle:before{content:"\f333"}.bi-exclamation-diamond-fill:before{content:"\f334"}.bi-exclamation-diamond:before{content:"\f335"}.bi-exclamation-octagon-fill:before{content:"\f336"}.bi-exclamation-octagon:before{content:"\f337"}.bi-exclamation-square-fill:before{content:"\f338"}.bi-exclamation-square:before{content:"\f339"}.bi-exclamation-triangle-fill:before{content:"\f33a"}.bi-exclamation-triangle:before{content:"\f33b"}.bi-exclamation:before{content:"\f33c"}.bi-exclude:before{content:"\f33d"}.bi-eye-fill:before{content:"\f33e"}.bi-eye-slash-fill:before{content:"\f33f"}.bi-eye-slash:before{content:"\f340"}.bi-eye:before{content:"\f341"}.bi-eyedropper:before{content:"\f342"}.bi-eyeglasses:before{content:"\f343"}.bi-facebook:before{content:"\f344"}.bi-file-arrow-down-fill:before{content:"\f345"}.bi-file-arrow-down:before{content:"\f346"}.bi-file-arrow-up-fill:before{content:"\f347"}.bi-file-arrow-up:before{content:"\f348"}.bi-file-bar-graph-fill:before{content:"\f349"}.bi-file-bar-graph:before{content:"\f34a"}.bi-file-binary-fill:before{content:"\f34b"}.bi-file-binary:before{content:"\f34c"}.bi-file-break-fill:before{content:"\f34d"}.bi-file-break:before{content:"\f34e"}.bi-file-check-fill:before{content:"\f34f"}.bi-file-check:before{content:"\f350"}.bi-file-code-fill:before{content:"\f351"}.bi-file-code:before{content:"\f352"}.bi-file-diff-fill:before{content:"\f353"}.bi-file-diff:before{content:"\f354"}.bi-file-earmark-arrow-down-fill:before{content:"\f355"}.bi-file-earmark-arrow-down:before{content:"\f356"}.bi-file-earmark-arrow-up-fill:before{content:"\f357"}.bi-file-earmark-arrow-up:before{content:"\f358"}.bi-file-earmark-bar-graph-fill:before{content:"\f359"}.bi-file-earmark-bar-graph:before{content:"\f35a"}.bi-file-earmark-binary-fill:before{content:"\f35b"}.bi-file-earmark-binary:before{content:"\f35c"}.bi-file-earmark-break-fill:before{content:"\f35d"}.bi-file-earmark-break:before{content:"\f35e"}.bi-file-earmark-check-fill:before{content:"\f35f"}.bi-file-earmark-check:before{content:"\f360"}.bi-file-earmark-code-fill:before{content:"\f361"}.bi-file-earmark-code:before{content:"\f362"}.bi-file-earmark-diff-fill:before{content:"\f363"}.bi-file-earmark-diff:before{content:"\f364"}.bi-file-earmark-easel-fill:before{content:"\f365"}.bi-file-earmark-easel:before{content:"\f366"}.bi-file-earmark-excel-fill:before{content:"\f367"}.bi-file-earmark-excel:before{content:"\f368"}.bi-file-earmark-fill:before{content:"\f369"}.bi-file-earmark-font-fill:before{content:"\f36a"}.bi-file-earmark-font:before{content:"\f36b"}.bi-file-earmark-image-fill:before{content:"\f36c"}.bi-file-earmark-image:before{content:"\f36d"}.bi-file-earmark-lock-fill:before{content:"\f36e"}.bi-file-earmark-lock:before{content:"\f36f"}.bi-file-earmark-lock2-fill:before{content:"\f370"}.bi-file-earmark-lock2:before{content:"\f371"}.bi-file-earmark-medical-fill:before{content:"\f372"}.bi-file-earmark-medical:before{content:"\f373"}.bi-file-earmark-minus-fill:before{content:"\f374"}.bi-file-earmark-minus:before{content:"\f375"}.bi-file-earmark-music-fill:before{content:"\f376"}.bi-file-earmark-music:before{content:"\f377"}.bi-file-earmark-person-fill:before{content:"\f378"}.bi-file-earmark-person:before{content:"\f379"}.bi-file-earmark-play-fill:before{content:"\f37a"}.bi-file-earmark-play:before{content:"\f37b"}.bi-file-earmark-plus-fill:before{content:"\f37c"}.bi-file-earmark-plus:before{content:"\f37d"}.bi-file-earmark-post-fill:before{content:"\f37e"}.bi-file-earmark-post:before{content:"\f37f"}.bi-file-earmark-ppt-fill:before{content:"\f380"}.bi-file-earmark-ppt:before{content:"\f381"}.bi-file-earmark-richtext-fill:before{content:"\f382"}.bi-file-earmark-richtext:before{content:"\f383"}.bi-file-earmark-ruled-fill:before{content:"\f384"}.bi-file-earmark-ruled:before{content:"\f385"}.bi-file-earmark-slides-fill:before{content:"\f386"}.bi-file-earmark-slides:before{content:"\f387"}.bi-file-earmark-spreadsheet-fill:before{content:"\f388"}.bi-file-earmark-spreadsheet:before{content:"\f389"}.bi-file-earmark-text-fill:before{content:"\f38a"}.bi-file-earmark-text:before{content:"\f38b"}.bi-file-earmark-word-fill:before{content:"\f38c"}.bi-file-earmark-word:before{content:"\f38d"}.bi-file-earmark-x-fill:before{content:"\f38e"}.bi-file-earmark-x:before{content:"\f38f"}.bi-file-earmark-zip-fill:before{content:"\f390"}.bi-file-earmark-zip:before{content:"\f391"}.bi-file-earmark:before{content:"\f392"}.bi-file-easel-fill:before{content:"\f393"}.bi-file-easel:before{content:"\f394"}.bi-file-excel-fill:before{content:"\f395"}.bi-file-excel:before{content:"\f396"}.bi-file-fill:before{content:"\f397"}.bi-file-font-fill:before{content:"\f398"}.bi-file-font:before{content:"\f399"}.bi-file-image-fill:before{content:"\f39a"}.bi-file-image:before{content:"\f39b"}.bi-file-lock-fill:before{content:"\f39c"}.bi-file-lock:before{content:"\f39d"}.bi-file-lock2-fill:before{content:"\f39e"}.bi-file-lock2:before{content:"\f39f"}.bi-file-medical-fill:before{content:"\f3a0"}.bi-file-medical:before{content:"\f3a1"}.bi-file-minus-fill:before{content:"\f3a2"}.bi-file-minus:before{content:"\f3a3"}.bi-file-music-fill:before{content:"\f3a4"}.bi-file-music:before{content:"\f3a5"}.bi-file-person-fill:before{content:"\f3a6"}.bi-file-person:before{content:"\f3a7"}.bi-file-play-fill:before{content:"\f3a8"}.bi-file-play:before{content:"\f3a9"}.bi-file-plus-fill:before{content:"\f3aa"}.bi-file-plus:before{content:"\f3ab"}.bi-file-post-fill:before{content:"\f3ac"}.bi-file-post:before{content:"\f3ad"}.bi-file-ppt-fill:before{content:"\f3ae"}.bi-file-ppt:before{content:"\f3af"}.bi-file-richtext-fill:before{content:"\f3b0"}.bi-file-richtext:before{content:"\f3b1"}.bi-file-ruled-fill:before{content:"\f3b2"}.bi-file-ruled:before{content:"\f3b3"}.bi-file-slides-fill:before{content:"\f3b4"}.bi-file-slides:before{content:"\f3b5"}.bi-file-spreadsheet-fill:before{content:"\f3b6"}.bi-file-spreadsheet:before{content:"\f3b7"}.bi-file-text-fill:before{content:"\f3b8"}.bi-file-text:before{content:"\f3b9"}.bi-file-word-fill:before{content:"\f3ba"}.bi-file-word:before{content:"\f3bb"}.bi-file-x-fill:before{content:"\f3bc"}.bi-file-x:before{content:"\f3bd"}.bi-file-zip-fill:before{content:"\f3be"}.bi-file-zip:before{content:"\f3bf"}.bi-file:before{content:"\f3c0"}.bi-files-alt:before{content:"\f3c1"}.bi-files:before{content:"\f3c2"}.bi-film:before{content:"\f3c3"}.bi-filter-circle-fill:before{content:"\f3c4"}.bi-filter-circle:before{content:"\f3c5"}.bi-filter-left:before{content:"\f3c6"}.bi-filter-right:before{content:"\f3c7"}.bi-filter-square-fill:before{content:"\f3c8"}.bi-filter-square:before{content:"\f3c9"}.bi-filter:before{content:"\f3ca"}.bi-flag-fill:before{content:"\f3cb"}.bi-flag:before{content:"\f3cc"}.bi-flower1:before{content:"\f3cd"}.bi-flower2:before{content:"\f3ce"}.bi-flower3:before{content:"\f3cf"}.bi-folder-check:before{content:"\f3d0"}.bi-folder-fill:before{content:"\f3d1"}.bi-folder-minus:before{content:"\f3d2"}.bi-folder-plus:before{content:"\f3d3"}.bi-folder-symlink-fill:before{content:"\f3d4"}.bi-folder-symlink:before{content:"\f3d5"}.bi-folder-x:before{content:"\f3d6"}.bi-folder:before{content:"\f3d7"}.bi-folder2-open:before{content:"\f3d8"}.bi-folder2:before{content:"\f3d9"}.bi-fonts:before{content:"\f3da"}.bi-forward-fill:before{content:"\f3db"}.bi-forward:before{content:"\f3dc"}.bi-front:before{content:"\f3dd"}.bi-fullscreen-exit:before{content:"\f3de"}.bi-fullscreen:before{content:"\f3df"}.bi-funnel-fill:before{content:"\f3e0"}.bi-funnel:before{content:"\f3e1"}.bi-gear-fill:before{content:"\f3e2"}.bi-gear-wide-connected:before{content:"\f3e3"}.bi-gear-wide:before{content:"\f3e4"}.bi-gear:before{content:"\f3e5"}.bi-gem:before{content:"\f3e6"}.bi-geo-alt-fill:before{content:"\f3e7"}.bi-geo-alt:before{content:"\f3e8"}.bi-geo-fill:before{content:"\f3e9"}.bi-geo:before{content:"\f3ea"}.bi-gift-fill:before{content:"\f3eb"}.bi-gift:before{content:"\f3ec"}.bi-github:before{content:"\f3ed"}.bi-globe:before{content:"\f3ee"}.bi-globe2:before{content:"\f3ef"}.bi-google:before{content:"\f3f0"}.bi-graph-down:before{content:"\f3f1"}.bi-graph-up:before{content:"\f3f2"}.bi-grid-1x2-fill:before{content:"\f3f3"}.bi-grid-1x2:before{content:"\f3f4"}.bi-grid-3x2-gap-fill:before{content:"\f3f5"}.bi-grid-3x2-gap:before{content:"\f3f6"}.bi-grid-3x2:before{content:"\f3f7"}.bi-grid-3x3-gap-fill:before{content:"\f3f8"}.bi-grid-3x3-gap:before{content:"\f3f9"}.bi-grid-3x3:before{content:"\f3fa"}.bi-grid-fill:before{content:"\f3fb"}.bi-grid:before{content:"\f3fc"}.bi-grip-horizontal:before{content:"\f3fd"}.bi-grip-vertical:before{content:"\f3fe"}.bi-hammer:before{content:"\f3ff"}.bi-hand-index-fill:before{content:"\f400"}.bi-hand-index-thumb-fill:before{content:"\f401"}.bi-hand-index-thumb:before{content:"\f402"}.bi-hand-index:before{content:"\f403"}.bi-hand-thumbs-down-fill:before{content:"\f404"}.bi-hand-thumbs-down:before{content:"\f405"}.bi-hand-thumbs-up-fill:before{content:"\f406"}.bi-hand-thumbs-up:before{content:"\f407"}.bi-handbag-fill:before{content:"\f408"}.bi-handbag:before{content:"\f409"}.bi-hash:before{content:"\f40a"}.bi-hdd-fill:before{content:"\f40b"}.bi-hdd-network-fill:before{content:"\f40c"}.bi-hdd-network:before{content:"\f40d"}.bi-hdd-rack-fill:before{content:"\f40e"}.bi-hdd-rack:before{content:"\f40f"}.bi-hdd-stack-fill:before{content:"\f410"}.bi-hdd-stack:before{content:"\f411"}.bi-hdd:before{content:"\f412"}.bi-headphones:before{content:"\f413"}.bi-headset:before{content:"\f414"}.bi-heart-fill:before{content:"\f415"}.bi-heart-half:before{content:"\f416"}.bi-heart:before{content:"\f417"}.bi-heptagon-fill:before{content:"\f418"}.bi-heptagon-half:before{content:"\f419"}.bi-heptagon:before{content:"\f41a"}.bi-hexagon-fill:before{content:"\f41b"}.bi-hexagon-half:before{content:"\f41c"}.bi-hexagon:before{content:"\f41d"}.bi-hourglass-bottom:before{content:"\f41e"}.bi-hourglass-split:before{content:"\f41f"}.bi-hourglass-top:before{content:"\f420"}.bi-hourglass:before{content:"\f421"}.bi-house-door-fill:before{content:"\f422"}.bi-house-door:before{content:"\f423"}.bi-house-fill:before{content:"\f424"}.bi-house:before{content:"\f425"}.bi-hr:before{content:"\f426"}.bi-hurricane:before{content:"\f427"}.bi-image-alt:before{content:"\f428"}.bi-image-fill:before{content:"\f429"}.bi-image:before{content:"\f42a"}.bi-images:before{content:"\f42b"}.bi-inbox-fill:before{content:"\f42c"}.bi-inbox:before{content:"\f42d"}.bi-inboxes-fill:before{content:"\f42e"}.bi-inboxes:before{content:"\f42f"}.bi-info-circle-fill:before{content:"\f430"}.bi-info-circle:before{content:"\f431"}.bi-info-square-fill:before{content:"\f432"}.bi-info-square:before{content:"\f433"}.bi-info:before{content:"\f434"}.bi-input-cursor-text:before{content:"\f435"}.bi-input-cursor:before{content:"\f436"}.bi-instagram:before{content:"\f437"}.bi-intersect:before{content:"\f438"}.bi-journal-album:before{content:"\f439"}.bi-journal-arrow-down:before{content:"\f43a"}.bi-journal-arrow-up:before{content:"\f43b"}.bi-journal-bookmark-fill:before{content:"\f43c"}.bi-journal-bookmark:before{content:"\f43d"}.bi-journal-check:before{content:"\f43e"}.bi-journal-code:before{content:"\f43f"}.bi-journal-medical:before{content:"\f440"}.bi-journal-minus:before{content:"\f441"}.bi-journal-plus:before{content:"\f442"}.bi-journal-richtext:before{content:"\f443"}.bi-journal-text:before{content:"\f444"}.bi-journal-x:before{content:"\f445"}.bi-journal:before{content:"\f446"}.bi-journals:before{content:"\f447"}.bi-joystick:before{content:"\f448"}.bi-justify-left:before{content:"\f449"}.bi-justify-right:before{content:"\f44a"}.bi-justify:before{content:"\f44b"}.bi-kanban-fill:before{content:"\f44c"}.bi-kanban:before{content:"\f44d"}.bi-key-fill:before{content:"\f44e"}.bi-key:before{content:"\f44f"}.bi-keyboard-fill:before{content:"\f450"}.bi-keyboard:before{content:"\f451"}.bi-ladder:before{content:"\f452"}.bi-lamp-fill:before{content:"\f453"}.bi-lamp:before{content:"\f454"}.bi-laptop-fill:before{content:"\f455"}.bi-laptop:before{content:"\f456"}.bi-layer-backward:before{content:"\f457"}.bi-layer-forward:before{content:"\f458"}.bi-layers-fill:before{content:"\f459"}.bi-layers-half:before{content:"\f45a"}.bi-layers:before{content:"\f45b"}.bi-layout-sidebar-inset-reverse:before{content:"\f45c"}.bi-layout-sidebar-inset:before{content:"\f45d"}.bi-layout-sidebar-reverse:before{content:"\f45e"}.bi-layout-sidebar:before{content:"\f45f"}.bi-layout-split:before{content:"\f460"}.bi-layout-text-sidebar-reverse:before{content:"\f461"}.bi-layout-text-sidebar:before{content:"\f462"}.bi-layout-text-window-reverse:before{content:"\f463"}.bi-layout-text-window:before{content:"\f464"}.bi-layout-three-columns:before{content:"\f465"}.bi-layout-wtf:before{content:"\f466"}.bi-life-preserver:before{content:"\f467"}.bi-lightbulb-fill:before{content:"\f468"}.bi-lightbulb-off-fill:before{content:"\f469"}.bi-lightbulb-off:before{content:"\f46a"}.bi-lightbulb:before{content:"\f46b"}.bi-lightning-charge-fill:before{content:"\f46c"}.bi-lightning-charge:before{content:"\f46d"}.bi-lightning-fill:before{content:"\f46e"}.bi-lightning:before{content:"\f46f"}.bi-link-45deg:before{content:"\f470"}.bi-link:before{content:"\f471"}.bi-linkedin:before{content:"\f472"}.bi-list-check:before{content:"\f473"}.bi-list-nested:before{content:"\f474"}.bi-list-ol:before{content:"\f475"}.bi-list-stars:before{content:"\f476"}.bi-list-task:before{content:"\f477"}.bi-list-ul:before{content:"\f478"}.bi-list:before{content:"\f479"}.bi-lock-fill:before{content:"\f47a"}.bi-lock:before{content:"\f47b"}.bi-mailbox:before{content:"\f47c"}.bi-mailbox2:before{content:"\f47d"}.bi-map-fill:before{content:"\f47e"}.bi-map:before{content:"\f47f"}.bi-markdown-fill:before{content:"\f480"}.bi-markdown:before{content:"\f481"}.bi-mask:before{content:"\f482"}.bi-megaphone-fill:before{content:"\f483"}.bi-megaphone:before{content:"\f484"}.bi-menu-app-fill:before{content:"\f485"}.bi-menu-app:before{content:"\f486"}.bi-menu-button-fill:before{content:"\f487"}.bi-menu-button-wide-fill:before{content:"\f488"}.bi-menu-button-wide:before{content:"\f489"}.bi-menu-button:before{content:"\f48a"}.bi-menu-down:before{content:"\f48b"}.bi-menu-up:before{content:"\f48c"}.bi-mic-fill:before{content:"\f48d"}.bi-mic-mute-fill:before{content:"\f48e"}.bi-mic-mute:before{content:"\f48f"}.bi-mic:before{content:"\f490"}.bi-minecart-loaded:before{content:"\f491"}.bi-minecart:before{content:"\f492"}.bi-moisture:before{content:"\f493"}.bi-moon-fill:before{content:"\f494"}.bi-moon-stars-fill:before{content:"\f495"}.bi-moon-stars:before{content:"\f496"}.bi-moon:before{content:"\f497"}.bi-mouse-fill:before{content:"\f498"}.bi-mouse:before{content:"\f499"}.bi-mouse2-fill:before{content:"\f49a"}.bi-mouse2:before{content:"\f49b"}.bi-mouse3-fill:before{content:"\f49c"}.bi-mouse3:before{content:"\f49d"}.bi-music-note-beamed:before{content:"\f49e"}.bi-music-note-list:before{content:"\f49f"}.bi-music-note:before{content:"\f4a0"}.bi-music-player-fill:before{content:"\f4a1"}.bi-music-player:before{content:"\f4a2"}.bi-newspaper:before{content:"\f4a3"}.bi-node-minus-fill:before{content:"\f4a4"}.bi-node-minus:before{content:"\f4a5"}.bi-node-plus-fill:before{content:"\f4a6"}.bi-node-plus:before{content:"\f4a7"}.bi-nut-fill:before{content:"\f4a8"}.bi-nut:before{content:"\f4a9"}.bi-octagon-fill:before{content:"\f4aa"}.bi-octagon-half:before{content:"\f4ab"}.bi-octagon:before{content:"\f4ac"}.bi-option:before{content:"\f4ad"}.bi-outlet:before{content:"\f4ae"}.bi-paint-bucket:before{content:"\f4af"}.bi-palette-fill:before{content:"\f4b0"}.bi-palette:before{content:"\f4b1"}.bi-palette2:before{content:"\f4b2"}.bi-paperclip:before{content:"\f4b3"}.bi-paragraph:before{content:"\f4b4"}.bi-patch-check-fill:before{content:"\f4b5"}.bi-patch-check:before{content:"\f4b6"}.bi-patch-exclamation-fill:before{content:"\f4b7"}.bi-patch-exclamation:before{content:"\f4b8"}.bi-patch-minus-fill:before{content:"\f4b9"}.bi-patch-minus:before{content:"\f4ba"}.bi-patch-plus-fill:before{content:"\f4bb"}.bi-patch-plus:before{content:"\f4bc"}.bi-patch-question-fill:before{content:"\f4bd"}.bi-patch-question:before{content:"\f4be"}.bi-pause-btn-fill:before{content:"\f4bf"}.bi-pause-btn:before{content:"\f4c0"}.bi-pause-circle-fill:before{content:"\f4c1"}.bi-pause-circle:before{content:"\f4c2"}.bi-pause-fill:before{content:"\f4c3"}.bi-pause:before{content:"\f4c4"}.bi-peace-fill:before{content:"\f4c5"}.bi-peace:before{content:"\f4c6"}.bi-pen-fill:before{content:"\f4c7"}.bi-pen:before{content:"\f4c8"}.bi-pencil-fill:before{content:"\f4c9"}.bi-pencil-square:before{content:"\f4ca"}.bi-pencil:before{content:"\f4cb"}.bi-pentagon-fill:before{content:"\f4cc"}.bi-pentagon-half:before{content:"\f4cd"}.bi-pentagon:before{content:"\f4ce"}.bi-people-fill:before{content:"\f4cf"}.bi-people:before{content:"\f4d0"}.bi-percent:before{content:"\f4d1"}.bi-person-badge-fill:before{content:"\f4d2"}.bi-person-badge:before{content:"\f4d3"}.bi-person-bounding-box:before{content:"\f4d4"}.bi-person-check-fill:before{content:"\f4d5"}.bi-person-check:before{content:"\f4d6"}.bi-person-circle:before{content:"\f4d7"}.bi-person-dash-fill:before{content:"\f4d8"}.bi-person-dash:before{content:"\f4d9"}.bi-person-fill:before{content:"\f4da"}.bi-person-lines-fill:before{content:"\f4db"}.bi-person-plus-fill:before{content:"\f4dc"}.bi-person-plus:before{content:"\f4dd"}.bi-person-square:before{content:"\f4de"}.bi-person-x-fill:before{content:"\f4df"}.bi-person-x:before{content:"\f4e0"}.bi-person:before{content:"\f4e1"}.bi-phone-fill:before{content:"\f4e2"}.bi-phone-landscape-fill:before{content:"\f4e3"}.bi-phone-landscape:before{content:"\f4e4"}.bi-phone-vibrate-fill:before{content:"\f4e5"}.bi-phone-vibrate:before{content:"\f4e6"}.bi-phone:before{content:"\f4e7"}.bi-pie-chart-fill:before{content:"\f4e8"}.bi-pie-chart:before{content:"\f4e9"}.bi-pin-angle-fill:before{content:"\f4ea"}.bi-pin-angle:before{content:"\f4eb"}.bi-pin-fill:before{content:"\f4ec"}.bi-pin:before{content:"\f4ed"}.bi-pip-fill:before{content:"\f4ee"}.bi-pip:before{content:"\f4ef"}.bi-play-btn-fill:before{content:"\f4f0"}.bi-play-btn:before{content:"\f4f1"}.bi-play-circle-fill:before{content:"\f4f2"}.bi-play-circle:before{content:"\f4f3"}.bi-play-fill:before{content:"\f4f4"}.bi-play:before{content:"\f4f5"}.bi-plug-fill:before{content:"\f4f6"}.bi-plug:before{content:"\f4f7"}.bi-plus-circle-dotted:before{content:"\f4f8"}.bi-plus-circle-fill:before{content:"\f4f9"}.bi-plus-circle:before{content:"\f4fa"}.bi-plus-square-dotted:before{content:"\f4fb"}.bi-plus-square-fill:before{content:"\f4fc"}.bi-plus-square:before{content:"\f4fd"}.bi-plus:before{content:"\f4fe"}.bi-power:before{content:"\f4ff"}.bi-printer-fill:before{content:"\f500"}.bi-printer:before{content:"\f501"}.bi-puzzle-fill:before{content:"\f502"}.bi-puzzle:before{content:"\f503"}.bi-question-circle-fill:before{content:"\f504"}.bi-question-circle:before{content:"\f505"}.bi-question-diamond-fill:before{content:"\f506"}.bi-question-diamond:before{content:"\f507"}.bi-question-octagon-fill:before{content:"\f508"}.bi-question-octagon:before{content:"\f509"}.bi-question-square-fill:before{content:"\f50a"}.bi-question-square:before{content:"\f50b"}.bi-question:before{content:"\f50c"}.bi-rainbow:before{content:"\f50d"}.bi-receipt-cutoff:before{content:"\f50e"}.bi-receipt:before{content:"\f50f"}.bi-reception-0:before{content:"\f510"}.bi-reception-1:before{content:"\f511"}.bi-reception-2:before{content:"\f512"}.bi-reception-3:before{content:"\f513"}.bi-reception-4:before{content:"\f514"}.bi-record-btn-fill:before{content:"\f515"}.bi-record-btn:before{content:"\f516"}.bi-record-circle-fill:before{content:"\f517"}.bi-record-circle:before{content:"\f518"}.bi-record-fill:before{content:"\f519"}.bi-record:before{content:"\f51a"}.bi-record2-fill:before{content:"\f51b"}.bi-record2:before{content:"\f51c"}.bi-reply-all-fill:before{content:"\f51d"}.bi-reply-all:before{content:"\f51e"}.bi-reply-fill:before{content:"\f51f"}.bi-reply:before{content:"\f520"}.bi-rss-fill:before{content:"\f521"}.bi-rss:before{content:"\f522"}.bi-rulers:before{content:"\f523"}.bi-save-fill:before{content:"\f524"}.bi-save:before{content:"\f525"}.bi-save2-fill:before{content:"\f526"}.bi-save2:before{content:"\f527"}.bi-scissors:before{content:"\f528"}.bi-screwdriver:before{content:"\f529"}.bi-search:before{content:"\f52a"}.bi-segmented-nav:before{content:"\f52b"}.bi-server:before{content:"\f52c"}.bi-share-fill:before{content:"\f52d"}.bi-share:before{content:"\f52e"}.bi-shield-check:before{content:"\f52f"}.bi-shield-exclamation:before{content:"\f530"}.bi-shield-fill-check:before{content:"\f531"}.bi-shield-fill-exclamation:before{content:"\f532"}.bi-shield-fill-minus:before{content:"\f533"}.bi-shield-fill-plus:before{content:"\f534"}.bi-shield-fill-x:before{content:"\f535"}.bi-shield-fill:before{content:"\f536"}.bi-shield-lock-fill:before{content:"\f537"}.bi-shield-lock:before{content:"\f538"}.bi-shield-minus:before{content:"\f539"}.bi-shield-plus:before{content:"\f53a"}.bi-shield-shaded:before{content:"\f53b"}.bi-shield-slash-fill:before{content:"\f53c"}.bi-shield-slash:before{content:"\f53d"}.bi-shield-x:before{content:"\f53e"}.bi-shield:before{content:"\f53f"}.bi-shift-fill:before{content:"\f540"}.bi-shift:before{content:"\f541"}.bi-shop-window:before{content:"\f542"}.bi-shop:before{content:"\f543"}.bi-shuffle:before{content:"\f544"}.bi-signpost-2-fill:before{content:"\f545"}.bi-signpost-2:before{content:"\f546"}.bi-signpost-fill:before{content:"\f547"}.bi-signpost-split-fill:before{content:"\f548"}.bi-signpost-split:before{content:"\f549"}.bi-signpost:before{content:"\f54a"}.bi-sim-fill:before{content:"\f54b"}.bi-sim:before{content:"\f54c"}.bi-skip-backward-btn-fill:before{content:"\f54d"}.bi-skip-backward-btn:before{content:"\f54e"}.bi-skip-backward-circle-fill:before{content:"\f54f"}.bi-skip-backward-circle:before{content:"\f550"}.bi-skip-backward-fill:before{content:"\f551"}.bi-skip-backward:before{content:"\f552"}.bi-skip-end-btn-fill:before{content:"\f553"}.bi-skip-end-btn:before{content:"\f554"}.bi-skip-end-circle-fill:before{content:"\f555"}.bi-skip-end-circle:before{content:"\f556"}.bi-skip-end-fill:before{content:"\f557"}.bi-skip-end:before{content:"\f558"}.bi-skip-forward-btn-fill:before{content:"\f559"}.bi-skip-forward-btn:before{content:"\f55a"}.bi-skip-forward-circle-fill:before{content:"\f55b"}.bi-skip-forward-circle:before{content:"\f55c"}.bi-skip-forward-fill:before{content:"\f55d"}.bi-skip-forward:before{content:"\f55e"}.bi-skip-start-btn-fill:before{content:"\f55f"}.bi-skip-start-btn:before{content:"\f560"}.bi-skip-start-circle-fill:before{content:"\f561"}.bi-skip-start-circle:before{content:"\f562"}.bi-skip-start-fill:before{content:"\f563"}.bi-skip-start:before{content:"\f564"}.bi-slack:before{content:"\f565"}.bi-slash-circle-fill:before{content:"\f566"}.bi-slash-circle:before{content:"\f567"}.bi-slash-square-fill:before{content:"\f568"}.bi-slash-square:before{content:"\f569"}.bi-slash:before{content:"\f56a"}.bi-sliders:before{content:"\f56b"}.bi-smartwatch:before{content:"\f56c"}.bi-snow:before{content:"\f56d"}.bi-snow2:before{content:"\f56e"}.bi-snow3:before{content:"\f56f"}.bi-sort-alpha-down-alt:before{content:"\f570"}.bi-sort-alpha-down:before{content:"\f571"}.bi-sort-alpha-up-alt:before{content:"\f572"}.bi-sort-alpha-up:before{content:"\f573"}.bi-sort-down-alt:before{content:"\f574"}.bi-sort-down:before{content:"\f575"}.bi-sort-numeric-down-alt:before{content:"\f576"}.bi-sort-numeric-down:before{content:"\f577"}.bi-sort-numeric-up-alt:before{content:"\f578"}.bi-sort-numeric-up:before{content:"\f579"}.bi-sort-up-alt:before{content:"\f57a"}.bi-sort-up:before{content:"\f57b"}.bi-soundwave:before{content:"\f57c"}.bi-speaker-fill:before{content:"\f57d"}.bi-speaker:before{content:"\f57e"}.bi-speedometer:before{content:"\f57f"}.bi-speedometer2:before{content:"\f580"}.bi-spellcheck:before{content:"\f581"}.bi-square-fill:before{content:"\f582"}.bi-square-half:before{content:"\f583"}.bi-square:before{content:"\f584"}.bi-stack:before{content:"\f585"}.bi-star-fill:before{content:"\f586"}.bi-star-half:before{content:"\f587"}.bi-star:before{content:"\f588"}.bi-stars:before{content:"\f589"}.bi-stickies-fill:before{content:"\f58a"}.bi-stickies:before{content:"\f58b"}.bi-sticky-fill:before{content:"\f58c"}.bi-sticky:before{content:"\f58d"}.bi-stop-btn-fill:before{content:"\f58e"}.bi-stop-btn:before{content:"\f58f"}.bi-stop-circle-fill:before{content:"\f590"}.bi-stop-circle:before{content:"\f591"}.bi-stop-fill:before{content:"\f592"}.bi-stop:before{content:"\f593"}.bi-stoplights-fill:before{content:"\f594"}.bi-stoplights:before{content:"\f595"}.bi-stopwatch-fill:before{content:"\f596"}.bi-stopwatch:before{content:"\f597"}.bi-subtract:before{content:"\f598"}.bi-suit-club-fill:before{content:"\f599"}.bi-suit-club:before{content:"\f59a"}.bi-suit-diamond-fill:before{content:"\f59b"}.bi-suit-diamond:before{content:"\f59c"}.bi-suit-heart-fill:before{content:"\f59d"}.bi-suit-heart:before{content:"\f59e"}.bi-suit-spade-fill:before{content:"\f59f"}.bi-suit-spade:before{content:"\f5a0"}.bi-sun-fill:before{content:"\f5a1"}.bi-sun:before{content:"\f5a2"}.bi-sunglasses:before{content:"\f5a3"}.bi-sunrise-fill:before{content:"\f5a4"}.bi-sunrise:before{content:"\f5a5"}.bi-sunset-fill:before{content:"\f5a6"}.bi-sunset:before{content:"\f5a7"}.bi-symmetry-horizontal:before{content:"\f5a8"}.bi-symmetry-vertical:before{content:"\f5a9"}.bi-table:before{content:"\f5aa"}.bi-tablet-fill:before{content:"\f5ab"}.bi-tablet-landscape-fill:before{content:"\f5ac"}.bi-tablet-landscape:before{content:"\f5ad"}.bi-tablet:before{content:"\f5ae"}.bi-tag-fill:before{content:"\f5af"}.bi-tag:before{content:"\f5b0"}.bi-tags-fill:before{content:"\f5b1"}.bi-tags:before{content:"\f5b2"}.bi-telegram:before{content:"\f5b3"}.bi-telephone-fill:before{content:"\f5b4"}.bi-telephone-forward-fill:before{content:"\f5b5"}.bi-telephone-forward:before{content:"\f5b6"}.bi-telephone-inbound-fill:before{content:"\f5b7"}.bi-telephone-inbound:before{content:"\f5b8"}.bi-telephone-minus-fill:before{content:"\f5b9"}.bi-telephone-minus:before{content:"\f5ba"}.bi-telephone-outbound-fill:before{content:"\f5bb"}.bi-telephone-outbound:before{content:"\f5bc"}.bi-telephone-plus-fill:before{content:"\f5bd"}.bi-telephone-plus:before{content:"\f5be"}.bi-telephone-x-fill:before{content:"\f5bf"}.bi-telephone-x:before{content:"\f5c0"}.bi-telephone:before{content:"\f5c1"}.bi-terminal-fill:before{content:"\f5c2"}.bi-terminal:before{content:"\f5c3"}.bi-text-center:before{content:"\f5c4"}.bi-text-indent-left:before{content:"\f5c5"}.bi-text-indent-right:before{content:"\f5c6"}.bi-text-left:before{content:"\f5c7"}.bi-text-paragraph:before{content:"\f5c8"}.bi-text-right:before{content:"\f5c9"}.bi-textarea-resize:before{content:"\f5ca"}.bi-textarea-t:before{content:"\f5cb"}.bi-textarea:before{content:"\f5cc"}.bi-thermometer-half:before{content:"\f5cd"}.bi-thermometer-high:before{content:"\f5ce"}.bi-thermometer-low:before{content:"\f5cf"}.bi-thermometer-snow:before{content:"\f5d0"}.bi-thermometer-sun:before{content:"\f5d1"}.bi-thermometer:before{content:"\f5d2"}.bi-three-dots-vertical:before{content:"\f5d3"}.bi-three-dots:before{content:"\f5d4"}.bi-toggle-off:before{content:"\f5d5"}.bi-toggle-on:before{content:"\f5d6"}.bi-toggle2-off:before{content:"\f5d7"}.bi-toggle2-on:before{content:"\f5d8"}.bi-toggles:before{content:"\f5d9"}.bi-toggles2:before{content:"\f5da"}.bi-tools:before{content:"\f5db"}.bi-tornado:before{content:"\f5dc"}.bi-trash-fill:before{content:"\f5dd"}.bi-trash:before{content:"\f5de"}.bi-trash2-fill:before{content:"\f5df"}.bi-trash2:before{content:"\f5e0"}.bi-tree-fill:before{content:"\f5e1"}.bi-tree:before{content:"\f5e2"}.bi-triangle-fill:before{content:"\f5e3"}.bi-triangle-half:before{content:"\f5e4"}.bi-triangle:before{content:"\f5e5"}.bi-trophy-fill:before{content:"\f5e6"}.bi-trophy:before{content:"\f5e7"}.bi-tropical-storm:before{content:"\f5e8"}.bi-truck-flatbed:before{content:"\f5e9"}.bi-truck:before{content:"\f5ea"}.bi-tsunami:before{content:"\f5eb"}.bi-tv-fill:before{content:"\f5ec"}.bi-tv:before{content:"\f5ed"}.bi-twitch:before{content:"\f5ee"}.bi-twitter:before{content:"\f5ef"}.bi-type-bold:before{content:"\f5f0"}.bi-type-h1:before{content:"\f5f1"}.bi-type-h2:before{content:"\f5f2"}.bi-type-h3:before{content:"\f5f3"}.bi-type-italic:before{content:"\f5f4"}.bi-type-strikethrough:before{content:"\f5f5"}.bi-type-underline:before{content:"\f5f6"}.bi-type:before{content:"\f5f7"}.bi-ui-checks-grid:before{content:"\f5f8"}.bi-ui-checks:before{content:"\f5f9"}.bi-ui-radios-grid:before{content:"\f5fa"}.bi-ui-radios:before{content:"\f5fb"}.bi-umbrella-fill:before{content:"\f5fc"}.bi-umbrella:before{content:"\f5fd"}.bi-union:before{content:"\f5fe"}.bi-unlock-fill:before{content:"\f5ff"}.bi-unlock:before{content:"\f600"}.bi-upc-scan:before{content:"\f601"}.bi-upc:before{content:"\f602"}.bi-upload:before{content:"\f603"}.bi-vector-pen:before{content:"\f604"}.bi-view-list:before{content:"\f605"}.bi-view-stacked:before{content:"\f606"}.bi-vinyl-fill:before{content:"\f607"}.bi-vinyl:before{content:"\f608"}.bi-voicemail:before{content:"\f609"}.bi-volume-down-fill:before{content:"\f60a"}.bi-volume-down:before{content:"\f60b"}.bi-volume-mute-fill:before{content:"\f60c"}.bi-volume-mute:before{content:"\f60d"}.bi-volume-off-fill:before{content:"\f60e"}.bi-volume-off:before{content:"\f60f"}.bi-volume-up-fill:before{content:"\f610"}.bi-volume-up:before{content:"\f611"}.bi-vr:before{content:"\f612"}.bi-wallet-fill:before{content:"\f613"}.bi-wallet:before{content:"\f614"}.bi-wallet2:before{content:"\f615"}.bi-watch:before{content:"\f616"}.bi-water:before{content:"\f617"}.bi-whatsapp:before{content:"\f618"}.bi-wifi-1:before{content:"\f619"}.bi-wifi-2:before{content:"\f61a"}.bi-wifi-off:before{content:"\f61b"}.bi-wifi:before{content:"\f61c"}.bi-wind:before{content:"\f61d"}.bi-window-dock:before{content:"\f61e"}.bi-window-sidebar:before{content:"\f61f"}.bi-window:before{content:"\f620"}.bi-wrench:before{content:"\f621"}.bi-x-circle-fill:before{content:"\f622"}.bi-x-circle:before{content:"\f623"}.bi-x-diamond-fill:before{content:"\f624"}.bi-x-diamond:before{content:"\f625"}.bi-x-octagon-fill:before{content:"\f626"}.bi-x-octagon:before{content:"\f627"}.bi-x-square-fill:before{content:"\f628"}.bi-x-square:before{content:"\f629"}.bi-x:before{content:"\f62a"}.bi-youtube:before{content:"\f62b"}.bi-zoom-in:before{content:"\f62c"}.bi-zoom-out:before{content:"\f62d"}.bi-bank:before{content:"\f62e"}.bi-bank2:before{content:"\f62f"}.bi-bell-slash-fill:before{content:"\f630"}.bi-bell-slash:before{content:"\f631"}.bi-cash-coin:before{content:"\f632"}.bi-check-lg:before{content:"\f633"}.bi-coin:before{content:"\f634"}.bi-currency-bitcoin:before{content:"\f635"}.bi-currency-dollar:before{content:"\f636"}.bi-currency-euro:before{content:"\f637"}.bi-currency-exchange:before{content:"\f638"}.bi-currency-pound:before{content:"\f639"}.bi-currency-yen:before{content:"\f63a"}.bi-dash-lg:before{content:"\f63b"}.bi-exclamation-lg:before{content:"\f63c"}.bi-file-earmark-pdf-fill:before{content:"\f63d"}.bi-file-earmark-pdf:before{content:"\f63e"}.bi-file-pdf-fill:before{content:"\f63f"}.bi-file-pdf:before{content:"\f640"}.bi-gender-ambiguous:before{content:"\f641"}.bi-gender-female:before{content:"\f642"}.bi-gender-male:before{content:"\f643"}.bi-gender-trans:before{content:"\f644"}.bi-headset-vr:before{content:"\f645"}.bi-info-lg:before{content:"\f646"}.bi-mastodon:before{content:"\f647"}.bi-messenger:before{content:"\f648"}.bi-piggy-bank-fill:before{content:"\f649"}.bi-piggy-bank:before{content:"\f64a"}.bi-pin-map-fill:before{content:"\f64b"}.bi-pin-map:before{content:"\f64c"}.bi-plus-lg:before{content:"\f64d"}.bi-question-lg:before{content:"\f64e"}.bi-recycle:before{content:"\f64f"}.bi-reddit:before{content:"\f650"}.bi-safe-fill:before{content:"\f651"}.bi-safe2-fill:before{content:"\f652"}.bi-safe2:before{content:"\f653"}.bi-sd-card-fill:before{content:"\f654"}.bi-sd-card:before{content:"\f655"}.bi-skype:before{content:"\f656"}.bi-slash-lg:before{content:"\f657"}.bi-translate:before{content:"\f658"}.bi-x-lg:before{content:"\f659"}.bi-safe:before{content:"\f65a"}.bi-apple:before{content:"\f65b"}.bi-microsoft:before{content:"\f65d"}.bi-windows:before{content:"\f65e"}.bi-behance:before{content:"\f65c"}.bi-dribbble:before{content:"\f65f"}.bi-line:before{content:"\f660"}.bi-medium:before{content:"\f661"}.bi-paypal:before{content:"\f662"}.bi-pinterest:before{content:"\f663"}.bi-signal:before{content:"\f664"}.bi-snapchat:before{content:"\f665"}.bi-spotify:before{content:"\f666"}.bi-stack-overflow:before{content:"\f667"}.bi-strava:before{content:"\f668"}.bi-wordpress:before{content:"\f669"}.bi-vimeo:before{content:"\f66a"}.bi-activity:before{content:"\f66b"}.bi-easel2-fill:before{content:"\f66c"}.bi-easel2:before{content:"\f66d"}.bi-easel3-fill:before{content:"\f66e"}.bi-easel3:before{content:"\f66f"}.bi-fan:before{content:"\f670"}.bi-fingerprint:before{content:"\f671"}.bi-graph-down-arrow:before{content:"\f672"}.bi-graph-up-arrow:before{content:"\f673"}.bi-hypnotize:before{content:"\f674"}.bi-magic:before{content:"\f675"}.bi-person-rolodex:before{content:"\f676"}.bi-person-video:before{content:"\f677"}.bi-person-video2:before{content:"\f678"}.bi-person-video3:before{content:"\f679"}.bi-person-workspace:before{content:"\f67a"}.bi-radioactive:before{content:"\f67b"}.bi-webcam-fill:before{content:"\f67c"}.bi-webcam:before{content:"\f67d"}.bi-yin-yang:before{content:"\f67e"}.bi-bandaid-fill:before{content:"\f680"}.bi-bandaid:before{content:"\f681"}.bi-bluetooth:before{content:"\f682"}.bi-body-text:before{content:"\f683"}.bi-boombox:before{content:"\f684"}.bi-boxes:before{content:"\f685"}.bi-dpad-fill:before{content:"\f686"}.bi-dpad:before{content:"\f687"}.bi-ear-fill:before{content:"\f688"}.bi-ear:before{content:"\f689"}.bi-envelope-check-fill:before{content:"\f68b"}.bi-envelope-check:before{content:"\f68c"}.bi-envelope-dash-fill:before{content:"\f68e"}.bi-envelope-dash:before{content:"\f68f"}.bi-envelope-exclamation-fill:before{content:"\f691"}.bi-envelope-exclamation:before{content:"\f692"}.bi-envelope-plus-fill:before{content:"\f693"}.bi-envelope-plus:before{content:"\f694"}.bi-envelope-slash-fill:before{content:"\f696"}.bi-envelope-slash:before{content:"\f697"}.bi-envelope-x-fill:before{content:"\f699"}.bi-envelope-x:before{content:"\f69a"}.bi-explicit-fill:before{content:"\f69b"}.bi-explicit:before{content:"\f69c"}.bi-git:before{content:"\f69d"}.bi-infinity:before{content:"\f69e"}.bi-list-columns-reverse:before{content:"\f69f"}.bi-list-columns:before{content:"\f6a0"}.bi-meta:before{content:"\f6a1"}.bi-nintendo-switch:before{content:"\f6a4"}.bi-pc-display-horizontal:before{content:"\f6a5"}.bi-pc-display:before{content:"\f6a6"}.bi-pc-horizontal:before{content:"\f6a7"}.bi-pc:before{content:"\f6a8"}.bi-playstation:before{content:"\f6a9"}.bi-plus-slash-minus:before{content:"\f6aa"}.bi-projector-fill:before{content:"\f6ab"}.bi-projector:before{content:"\f6ac"}.bi-qr-code-scan:before{content:"\f6ad"}.bi-qr-code:before{content:"\f6ae"}.bi-quora:before{content:"\f6af"}.bi-quote:before{content:"\f6b0"}.bi-robot:before{content:"\f6b1"}.bi-send-check-fill:before{content:"\f6b2"}.bi-send-check:before{content:"\f6b3"}.bi-send-dash-fill:before{content:"\f6b4"}.bi-send-dash:before{content:"\f6b5"}.bi-send-exclamation-fill:before{content:"\f6b7"}.bi-send-exclamation:before{content:"\f6b8"}.bi-send-fill:before{content:"\f6b9"}.bi-send-plus-fill:before{content:"\f6ba"}.bi-send-plus:before{content:"\f6bb"}.bi-send-slash-fill:before{content:"\f6bc"}.bi-send-slash:before{content:"\f6bd"}.bi-send-x-fill:before{content:"\f6be"}.bi-send-x:before{content:"\f6bf"}.bi-send:before{content:"\f6c0"}.bi-steam:before{content:"\f6c1"}.bi-terminal-dash:before{content:"\f6c3"}.bi-terminal-plus:before{content:"\f6c4"}.bi-terminal-split:before{content:"\f6c5"}.bi-ticket-detailed-fill:before{content:"\f6c6"}.bi-ticket-detailed:before{content:"\f6c7"}.bi-ticket-fill:before{content:"\f6c8"}.bi-ticket-perforated-fill:before{content:"\f6c9"}.bi-ticket-perforated:before{content:"\f6ca"}.bi-ticket:before{content:"\f6cb"}.bi-tiktok:before{content:"\f6cc"}.bi-window-dash:before{content:"\f6cd"}.bi-window-desktop:before{content:"\f6ce"}.bi-window-fullscreen:before{content:"\f6cf"}.bi-window-plus:before{content:"\f6d0"}.bi-window-split:before{content:"\f6d1"}.bi-window-stack:before{content:"\f6d2"}.bi-window-x:before{content:"\f6d3"}.bi-xbox:before{content:"\f6d4"}.bi-ethernet:before{content:"\f6d5"}.bi-hdmi-fill:before{content:"\f6d6"}.bi-hdmi:before{content:"\f6d7"}.bi-usb-c-fill:before{content:"\f6d8"}.bi-usb-c:before{content:"\f6d9"}.bi-usb-fill:before{content:"\f6da"}.bi-usb-plug-fill:before{content:"\f6db"}.bi-usb-plug:before{content:"\f6dc"}.bi-usb-symbol:before{content:"\f6dd"}.bi-usb:before{content:"\f6de"}.bi-boombox-fill:before{content:"\f6df"}.bi-displayport:before{content:"\f6e1"}.bi-gpu-card:before{content:"\f6e2"}.bi-memory:before{content:"\f6e3"}.bi-modem-fill:before{content:"\f6e4"}.bi-modem:before{content:"\f6e5"}.bi-motherboard-fill:before{content:"\f6e6"}.bi-motherboard:before{content:"\f6e7"}.bi-optical-audio-fill:before{content:"\f6e8"}.bi-optical-audio:before{content:"\f6e9"}.bi-pci-card:before{content:"\f6ea"}.bi-router-fill:before{content:"\f6eb"}.bi-router:before{content:"\f6ec"}.bi-thunderbolt-fill:before{content:"\f6ef"}.bi-thunderbolt:before{content:"\f6f0"}.bi-usb-drive-fill:before{content:"\f6f1"}.bi-usb-drive:before{content:"\f6f2"}.bi-usb-micro-fill:before{content:"\f6f3"}.bi-usb-micro:before{content:"\f6f4"}.bi-usb-mini-fill:before{content:"\f6f5"}.bi-usb-mini:before{content:"\f6f6"}.bi-cloud-haze2:before{content:"\f6f7"}.bi-device-hdd-fill:before{content:"\f6f8"}.bi-device-hdd:before{content:"\f6f9"}.bi-device-ssd-fill:before{content:"\f6fa"}.bi-device-ssd:before{content:"\f6fb"}.bi-displayport-fill:before{content:"\f6fc"}.bi-mortarboard-fill:before{content:"\f6fd"}.bi-mortarboard:before{content:"\f6fe"}.bi-terminal-x:before{content:"\f6ff"}.bi-arrow-through-heart-fill:before{content:"\f700"}.bi-arrow-through-heart:before{content:"\f701"}.bi-badge-sd-fill:before{content:"\f702"}.bi-badge-sd:before{content:"\f703"}.bi-bag-heart-fill:before{content:"\f704"}.bi-bag-heart:before{content:"\f705"}.bi-balloon-fill:before{content:"\f706"}.bi-balloon-heart-fill:before{content:"\f707"}.bi-balloon-heart:before{content:"\f708"}.bi-balloon:before{content:"\f709"}.bi-box2-fill:before{content:"\f70a"}.bi-box2-heart-fill:before{content:"\f70b"}.bi-box2-heart:before{content:"\f70c"}.bi-box2:before{content:"\f70d"}.bi-braces-asterisk:before{content:"\f70e"}.bi-calendar-heart-fill:before{content:"\f70f"}.bi-calendar-heart:before{content:"\f710"}.bi-calendar2-heart-fill:before{content:"\f711"}.bi-calendar2-heart:before{content:"\f712"}.bi-chat-heart-fill:before{content:"\f713"}.bi-chat-heart:before{content:"\f714"}.bi-chat-left-heart-fill:before{content:"\f715"}.bi-chat-left-heart:before{content:"\f716"}.bi-chat-right-heart-fill:before{content:"\f717"}.bi-chat-right-heart:before{content:"\f718"}.bi-chat-square-heart-fill:before{content:"\f719"}.bi-chat-square-heart:before{content:"\f71a"}.bi-clipboard-check-fill:before{content:"\f71b"}.bi-clipboard-data-fill:before{content:"\f71c"}.bi-clipboard-fill:before{content:"\f71d"}.bi-clipboard-heart-fill:before{content:"\f71e"}.bi-clipboard-heart:before{content:"\f71f"}.bi-clipboard-minus-fill:before{content:"\f720"}.bi-clipboard-plus-fill:before{content:"\f721"}.bi-clipboard-pulse:before{content:"\f722"}.bi-clipboard-x-fill:before{content:"\f723"}.bi-clipboard2-check-fill:before{content:"\f724"}.bi-clipboard2-check:before{content:"\f725"}.bi-clipboard2-data-fill:before{content:"\f726"}.bi-clipboard2-data:before{content:"\f727"}.bi-clipboard2-fill:before{content:"\f728"}.bi-clipboard2-heart-fill:before{content:"\f729"}.bi-clipboard2-heart:before{content:"\f72a"}.bi-clipboard2-minus-fill:before{content:"\f72b"}.bi-clipboard2-minus:before{content:"\f72c"}.bi-clipboard2-plus-fill:before{content:"\f72d"}.bi-clipboard2-plus:before{content:"\f72e"}.bi-clipboard2-pulse-fill:before{content:"\f72f"}.bi-clipboard2-pulse:before{content:"\f730"}.bi-clipboard2-x-fill:before{content:"\f731"}.bi-clipboard2-x:before{content:"\f732"}.bi-clipboard2:before{content:"\f733"}.bi-emoji-kiss-fill:before{content:"\f734"}.bi-emoji-kiss:before{content:"\f735"}.bi-envelope-heart-fill:before{content:"\f736"}.bi-envelope-heart:before{content:"\f737"}.bi-envelope-open-heart-fill:before{content:"\f738"}.bi-envelope-open-heart:before{content:"\f739"}.bi-envelope-paper-fill:before{content:"\f73a"}.bi-envelope-paper-heart-fill:before{content:"\f73b"}.bi-envelope-paper-heart:before{content:"\f73c"}.bi-envelope-paper:before{content:"\f73d"}.bi-filetype-aac:before{content:"\f73e"}.bi-filetype-ai:before{content:"\f73f"}.bi-filetype-bmp:before{content:"\f740"}.bi-filetype-cs:before{content:"\f741"}.bi-filetype-css:before{content:"\f742"}.bi-filetype-csv:before{content:"\f743"}.bi-filetype-doc:before{content:"\f744"}.bi-filetype-docx:before{content:"\f745"}.bi-filetype-exe:before{content:"\f746"}.bi-filetype-gif:before{content:"\f747"}.bi-filetype-heic:before{content:"\f748"}.bi-filetype-html:before{content:"\f749"}.bi-filetype-java:before{content:"\f74a"}.bi-filetype-jpg:before{content:"\f74b"}.bi-filetype-js:before{content:"\f74c"}.bi-filetype-jsx:before{content:"\f74d"}.bi-filetype-key:before{content:"\f74e"}.bi-filetype-m4p:before{content:"\f74f"}.bi-filetype-md:before{content:"\f750"}.bi-filetype-mdx:before{content:"\f751"}.bi-filetype-mov:before{content:"\f752"}.bi-filetype-mp3:before{content:"\f753"}.bi-filetype-mp4:before{content:"\f754"}.bi-filetype-otf:before{content:"\f755"}.bi-filetype-pdf:before{content:"\f756"}.bi-filetype-php:before{content:"\f757"}.bi-filetype-png:before{content:"\f758"}.bi-filetype-ppt:before{content:"\f75a"}.bi-filetype-psd:before{content:"\f75b"}.bi-filetype-py:before{content:"\f75c"}.bi-filetype-raw:before{content:"\f75d"}.bi-filetype-rb:before{content:"\f75e"}.bi-filetype-sass:before{content:"\f75f"}.bi-filetype-scss:before{content:"\f760"}.bi-filetype-sh:before{content:"\f761"}.bi-filetype-svg:before{content:"\f762"}.bi-filetype-tiff:before{content:"\f763"}.bi-filetype-tsx:before{content:"\f764"}.bi-filetype-ttf:before{content:"\f765"}.bi-filetype-txt:before{content:"\f766"}.bi-filetype-wav:before{content:"\f767"}.bi-filetype-woff:before{content:"\f768"}.bi-filetype-xls:before{content:"\f76a"}.bi-filetype-xml:before{content:"\f76b"}.bi-filetype-yml:before{content:"\f76c"}.bi-heart-arrow:before{content:"\f76d"}.bi-heart-pulse-fill:before{content:"\f76e"}.bi-heart-pulse:before{content:"\f76f"}.bi-heartbreak-fill:before{content:"\f770"}.bi-heartbreak:before{content:"\f771"}.bi-hearts:before{content:"\f772"}.bi-hospital-fill:before{content:"\f773"}.bi-hospital:before{content:"\f774"}.bi-house-heart-fill:before{content:"\f775"}.bi-house-heart:before{content:"\f776"}.bi-incognito:before{content:"\f777"}.bi-magnet-fill:before{content:"\f778"}.bi-magnet:before{content:"\f779"}.bi-person-heart:before{content:"\f77a"}.bi-person-hearts:before{content:"\f77b"}.bi-phone-flip:before{content:"\f77c"}.bi-plugin:before{content:"\f77d"}.bi-postage-fill:before{content:"\f77e"}.bi-postage-heart-fill:before{content:"\f77f"}.bi-postage-heart:before{content:"\f780"}.bi-postage:before{content:"\f781"}.bi-postcard-fill:before{content:"\f782"}.bi-postcard-heart-fill:before{content:"\f783"}.bi-postcard-heart:before{content:"\f784"}.bi-postcard:before{content:"\f785"}.bi-search-heart-fill:before{content:"\f786"}.bi-search-heart:before{content:"\f787"}.bi-sliders2-vertical:before{content:"\f788"}.bi-sliders2:before{content:"\f789"}.bi-trash3-fill:before{content:"\f78a"}.bi-trash3:before{content:"\f78b"}.bi-valentine:before{content:"\f78c"}.bi-valentine2:before{content:"\f78d"}.bi-wrench-adjustable-circle-fill:before{content:"\f78e"}.bi-wrench-adjustable-circle:before{content:"\f78f"}.bi-wrench-adjustable:before{content:"\f790"}.bi-filetype-json:before{content:"\f791"}.bi-filetype-pptx:before{content:"\f792"}.bi-filetype-xlsx:before{content:"\f793"}.bi-1-circle-fill:before{content:"\f796"}.bi-1-circle:before{content:"\f797"}.bi-1-square-fill:before{content:"\f798"}.bi-1-square:before{content:"\f799"}.bi-2-circle-fill:before{content:"\f79c"}.bi-2-circle:before{content:"\f79d"}.bi-2-square-fill:before{content:"\f79e"}.bi-2-square:before{content:"\f79f"}.bi-3-circle-fill:before{content:"\f7a2"}.bi-3-circle:before{content:"\f7a3"}.bi-3-square-fill:before{content:"\f7a4"}.bi-3-square:before{content:"\f7a5"}.bi-4-circle-fill:before{content:"\f7a8"}.bi-4-circle:before{content:"\f7a9"}.bi-4-square-fill:before{content:"\f7aa"}.bi-4-square:before{content:"\f7ab"}.bi-5-circle-fill:before{content:"\f7ae"}.bi-5-circle:before{content:"\f7af"}.bi-5-square-fill:before{content:"\f7b0"}.bi-5-square:before{content:"\f7b1"}.bi-6-circle-fill:before{content:"\f7b4"}.bi-6-circle:before{content:"\f7b5"}.bi-6-square-fill:before{content:"\f7b6"}.bi-6-square:before{content:"\f7b7"}.bi-7-circle-fill:before{content:"\f7ba"}.bi-7-circle:before{content:"\f7bb"}.bi-7-square-fill:before{content:"\f7bc"}.bi-7-square:before{content:"\f7bd"}.bi-8-circle-fill:before{content:"\f7c0"}.bi-8-circle:before{content:"\f7c1"}.bi-8-square-fill:before{content:"\f7c2"}.bi-8-square:before{content:"\f7c3"}.bi-9-circle-fill:before{content:"\f7c6"}.bi-9-circle:before{content:"\f7c7"}.bi-9-square-fill:before{content:"\f7c8"}.bi-9-square:before{content:"\f7c9"}.bi-airplane-engines-fill:before{content:"\f7ca"}.bi-airplane-engines:before{content:"\f7cb"}.bi-airplane-fill:before{content:"\f7cc"}.bi-airplane:before{content:"\f7cd"}.bi-alexa:before{content:"\f7ce"}.bi-alipay:before{content:"\f7cf"}.bi-android:before{content:"\f7d0"}.bi-android2:before{content:"\f7d1"}.bi-box-fill:before{content:"\f7d2"}.bi-box-seam-fill:before{content:"\f7d3"}.bi-browser-chrome:before{content:"\f7d4"}.bi-browser-edge:before{content:"\f7d5"}.bi-browser-firefox:before{content:"\f7d6"}.bi-browser-safari:before{content:"\f7d7"}.bi-c-circle-fill:before{content:"\f7da"}.bi-c-circle:before{content:"\f7db"}.bi-c-square-fill:before{content:"\f7dc"}.bi-c-square:before{content:"\f7dd"}.bi-capsule-pill:before{content:"\f7de"}.bi-capsule:before{content:"\f7df"}.bi-car-front-fill:before{content:"\f7e0"}.bi-car-front:before{content:"\f7e1"}.bi-cassette-fill:before{content:"\f7e2"}.bi-cassette:before{content:"\f7e3"}.bi-cc-circle-fill:before{content:"\f7e6"}.bi-cc-circle:before{content:"\f7e7"}.bi-cc-square-fill:before{content:"\f7e8"}.bi-cc-square:before{content:"\f7e9"}.bi-cup-hot-fill:before{content:"\f7ea"}.bi-cup-hot:before{content:"\f7eb"}.bi-currency-rupee:before{content:"\f7ec"}.bi-dropbox:before{content:"\f7ed"}.bi-escape:before{content:"\f7ee"}.bi-fast-forward-btn-fill:before{content:"\f7ef"}.bi-fast-forward-btn:before{content:"\f7f0"}.bi-fast-forward-circle-fill:before{content:"\f7f1"}.bi-fast-forward-circle:before{content:"\f7f2"}.bi-fast-forward-fill:before{content:"\f7f3"}.bi-fast-forward:before{content:"\f7f4"}.bi-filetype-sql:before{content:"\f7f5"}.bi-fire:before{content:"\f7f6"}.bi-google-play:before{content:"\f7f7"}.bi-h-circle-fill:before{content:"\f7fa"}.bi-h-circle:before{content:"\f7fb"}.bi-h-square-fill:before{content:"\f7fc"}.bi-h-square:before{content:"\f7fd"}.bi-indent:before{content:"\f7fe"}.bi-lungs-fill:before{content:"\f7ff"}.bi-lungs:before{content:"\f800"}.bi-microsoft-teams:before{content:"\f801"}.bi-p-circle-fill:before{content:"\f804"}.bi-p-circle:before{content:"\f805"}.bi-p-square-fill:before{content:"\f806"}.bi-p-square:before{content:"\f807"}.bi-pass-fill:before{content:"\f808"}.bi-pass:before{content:"\f809"}.bi-prescription:before{content:"\f80a"}.bi-prescription2:before{content:"\f80b"}.bi-r-circle-fill:before{content:"\f80e"}.bi-r-circle:before{content:"\f80f"}.bi-r-square-fill:before{content:"\f810"}.bi-r-square:before{content:"\f811"}.bi-repeat-1:before{content:"\f812"}.bi-repeat:before{content:"\f813"}.bi-rewind-btn-fill:before{content:"\f814"}.bi-rewind-btn:before{content:"\f815"}.bi-rewind-circle-fill:before{content:"\f816"}.bi-rewind-circle:before{content:"\f817"}.bi-rewind-fill:before{content:"\f818"}.bi-rewind:before{content:"\f819"}.bi-train-freight-front-fill:before{content:"\f81a"}.bi-train-freight-front:before{content:"\f81b"}.bi-train-front-fill:before{content:"\f81c"}.bi-train-front:before{content:"\f81d"}.bi-train-lightrail-front-fill:before{content:"\f81e"}.bi-train-lightrail-front:before{content:"\f81f"}.bi-truck-front-fill:before{content:"\f820"}.bi-truck-front:before{content:"\f821"}.bi-ubuntu:before{content:"\f822"}.bi-unindent:before{content:"\f823"}.bi-unity:before{content:"\f824"}.bi-universal-access-circle:before{content:"\f825"}.bi-universal-access:before{content:"\f826"}.bi-virus:before{content:"\f827"}.bi-virus2:before{content:"\f828"}.bi-wechat:before{content:"\f829"}.bi-yelp:before{content:"\f82a"}.bi-sign-stop-fill:before{content:"\f82b"}.bi-sign-stop-lights-fill:before{content:"\f82c"}.bi-sign-stop-lights:before{content:"\f82d"}.bi-sign-stop:before{content:"\f82e"}.bi-sign-turn-left-fill:before{content:"\f82f"}.bi-sign-turn-left:before{content:"\f830"}.bi-sign-turn-right-fill:before{content:"\f831"}.bi-sign-turn-right:before{content:"\f832"}.bi-sign-turn-slight-left-fill:before{content:"\f833"}.bi-sign-turn-slight-left:before{content:"\f834"}.bi-sign-turn-slight-right-fill:before{content:"\f835"}.bi-sign-turn-slight-right:before{content:"\f836"}.bi-sign-yield-fill:before{content:"\f837"}.bi-sign-yield:before{content:"\f838"}.bi-ev-station-fill:before{content:"\f839"}.bi-ev-station:before{content:"\f83a"}.bi-fuel-pump-diesel-fill:before{content:"\f83b"}.bi-fuel-pump-diesel:before{content:"\f83c"}.bi-fuel-pump-fill:before{content:"\f83d"}.bi-fuel-pump:before{content:"\f83e"}.bi-0-circle-fill:before{content:"\f83f"}.bi-0-circle:before{content:"\f840"}.bi-0-square-fill:before{content:"\f841"}.bi-0-square:before{content:"\f842"}.bi-rocket-fill:before{content:"\f843"}.bi-rocket-takeoff-fill:before{content:"\f844"}.bi-rocket-takeoff:before{content:"\f845"}.bi-rocket:before{content:"\f846"}.bi-stripe:before{content:"\f847"}.bi-subscript:before{content:"\f848"}.bi-superscript:before{content:"\f849"}.bi-trello:before{content:"\f84a"}.bi-envelope-at-fill:before{content:"\f84b"}.bi-envelope-at:before{content:"\f84c"}.bi-regex:before{content:"\f84d"}.bi-text-wrap:before{content:"\f84e"}.bi-sign-dead-end-fill:before{content:"\f84f"}.bi-sign-dead-end:before{content:"\f850"}.bi-sign-do-not-enter-fill:before{content:"\f851"}.bi-sign-do-not-enter:before{content:"\f852"}.bi-sign-intersection-fill:before{content:"\f853"}.bi-sign-intersection-side-fill:before{content:"\f854"}.bi-sign-intersection-side:before{content:"\f855"}.bi-sign-intersection-t-fill:before{content:"\f856"}.bi-sign-intersection-t:before{content:"\f857"}.bi-sign-intersection-y-fill:before{content:"\f858"}.bi-sign-intersection-y:before{content:"\f859"}.bi-sign-intersection:before{content:"\f85a"}.bi-sign-merge-left-fill:before{content:"\f85b"}.bi-sign-merge-left:before{content:"\f85c"}.bi-sign-merge-right-fill:before{content:"\f85d"}.bi-sign-merge-right:before{content:"\f85e"}.bi-sign-no-left-turn-fill:before{content:"\f85f"}.bi-sign-no-left-turn:before{content:"\f860"}.bi-sign-no-parking-fill:before{content:"\f861"}.bi-sign-no-parking:before{content:"\f862"}.bi-sign-no-right-turn-fill:before{content:"\f863"}.bi-sign-no-right-turn:before{content:"\f864"}.bi-sign-railroad-fill:before{content:"\f865"}.bi-sign-railroad:before{content:"\f866"}.bi-building-add:before{content:"\f867"}.bi-building-check:before{content:"\f868"}.bi-building-dash:before{content:"\f869"}.bi-building-down:before{content:"\f86a"}.bi-building-exclamation:before{content:"\f86b"}.bi-building-fill-add:before{content:"\f86c"}.bi-building-fill-check:before{content:"\f86d"}.bi-building-fill-dash:before{content:"\f86e"}.bi-building-fill-down:before{content:"\f86f"}.bi-building-fill-exclamation:before{content:"\f870"}.bi-building-fill-gear:before{content:"\f871"}.bi-building-fill-lock:before{content:"\f872"}.bi-building-fill-slash:before{content:"\f873"}.bi-building-fill-up:before{content:"\f874"}.bi-building-fill-x:before{content:"\f875"}.bi-building-fill:before{content:"\f876"}.bi-building-gear:before{content:"\f877"}.bi-building-lock:before{content:"\f878"}.bi-building-slash:before{content:"\f879"}.bi-building-up:before{content:"\f87a"}.bi-building-x:before{content:"\f87b"}.bi-buildings-fill:before{content:"\f87c"}.bi-buildings:before{content:"\f87d"}.bi-bus-front-fill:before{content:"\f87e"}.bi-bus-front:before{content:"\f87f"}.bi-ev-front-fill:before{content:"\f880"}.bi-ev-front:before{content:"\f881"}.bi-globe-americas:before{content:"\f882"}.bi-globe-asia-australia:before{content:"\f883"}.bi-globe-central-south-asia:before{content:"\f884"}.bi-globe-europe-africa:before{content:"\f885"}.bi-house-add-fill:before{content:"\f886"}.bi-house-add:before{content:"\f887"}.bi-house-check-fill:before{content:"\f888"}.bi-house-check:before{content:"\f889"}.bi-house-dash-fill:before{content:"\f88a"}.bi-house-dash:before{content:"\f88b"}.bi-house-down-fill:before{content:"\f88c"}.bi-house-down:before{content:"\f88d"}.bi-house-exclamation-fill:before{content:"\f88e"}.bi-house-exclamation:before{content:"\f88f"}.bi-house-gear-fill:before{content:"\f890"}.bi-house-gear:before{content:"\f891"}.bi-house-lock-fill:before{content:"\f892"}.bi-house-lock:before{content:"\f893"}.bi-house-slash-fill:before{content:"\f894"}.bi-house-slash:before{content:"\f895"}.bi-house-up-fill:before{content:"\f896"}.bi-house-up:before{content:"\f897"}.bi-house-x-fill:before{content:"\f898"}.bi-house-x:before{content:"\f899"}.bi-person-add:before{content:"\f89a"}.bi-person-down:before{content:"\f89b"}.bi-person-exclamation:before{content:"\f89c"}.bi-person-fill-add:before{content:"\f89d"}.bi-person-fill-check:before{content:"\f89e"}.bi-person-fill-dash:before{content:"\f89f"}.bi-person-fill-down:before{content:"\f8a0"}.bi-person-fill-exclamation:before{content:"\f8a1"}.bi-person-fill-gear:before{content:"\f8a2"}.bi-person-fill-lock:before{content:"\f8a3"}.bi-person-fill-slash:before{content:"\f8a4"}.bi-person-fill-up:before{content:"\f8a5"}.bi-person-fill-x:before{content:"\f8a6"}.bi-person-gear:before{content:"\f8a7"}.bi-person-lock:before{content:"\f8a8"}.bi-person-slash:before{content:"\f8a9"}.bi-person-up:before{content:"\f8aa"}.bi-scooter:before{content:"\f8ab"}.bi-taxi-front-fill:before{content:"\f8ac"}.bi-taxi-front:before{content:"\f8ad"}.bi-amd:before{content:"\f8ae"}.bi-database-add:before{content:"\f8af"}.bi-database-check:before{content:"\f8b0"}.bi-database-dash:before{content:"\f8b1"}.bi-database-down:before{content:"\f8b2"}.bi-database-exclamation:before{content:"\f8b3"}.bi-database-fill-add:before{content:"\f8b4"}.bi-database-fill-check:before{content:"\f8b5"}.bi-database-fill-dash:before{content:"\f8b6"}.bi-database-fill-down:before{content:"\f8b7"}.bi-database-fill-exclamation:before{content:"\f8b8"}.bi-database-fill-gear:before{content:"\f8b9"}.bi-database-fill-lock:before{content:"\f8ba"}.bi-database-fill-slash:before{content:"\f8bb"}.bi-database-fill-up:before{content:"\f8bc"}.bi-database-fill-x:before{content:"\f8bd"}.bi-database-fill:before{content:"\f8be"}.bi-database-gear:before{content:"\f8bf"}.bi-database-lock:before{content:"\f8c0"}.bi-database-slash:before{content:"\f8c1"}.bi-database-up:before{content:"\f8c2"}.bi-database-x:before{content:"\f8c3"}.bi-database:before{content:"\f8c4"}.bi-houses-fill:before{content:"\f8c5"}.bi-houses:before{content:"\f8c6"}.bi-nvidia:before{content:"\f8c7"}.bi-person-vcard-fill:before{content:"\f8c8"}.bi-person-vcard:before{content:"\f8c9"}.bi-sina-weibo:before{content:"\f8ca"}.bi-tencent-qq:before{content:"\f8cb"}.bi-wikipedia:before{content:"\f8cc"}.bi-alphabet-uppercase:before{content:"\f2a5"}.bi-alphabet:before{content:"\f68a"}.bi-amazon:before{content:"\f68d"}.bi-arrows-collapse-vertical:before{content:"\f690"}.bi-arrows-expand-vertical:before{content:"\f695"}.bi-arrows-vertical:before{content:"\f698"}.bi-arrows:before{content:"\f6a2"}.bi-ban-fill:before{content:"\f6a3"}.bi-ban:before{content:"\f6b6"}.bi-bing:before{content:"\f6c2"}.bi-cake:before{content:"\f6e0"}.bi-cake2:before{content:"\f6ed"}.bi-cookie:before{content:"\f6ee"}.bi-copy:before{content:"\f759"}.bi-crosshair:before{content:"\f769"}.bi-crosshair2:before{content:"\f794"}.bi-emoji-astonished-fill:before{content:"\f795"}.bi-emoji-astonished:before{content:"\f79a"}.bi-emoji-grimace-fill:before{content:"\f79b"}.bi-emoji-grimace:before{content:"\f7a0"}.bi-emoji-grin-fill:before{content:"\f7a1"}.bi-emoji-grin:before{content:"\f7a6"}.bi-emoji-surprise-fill:before{content:"\f7a7"}.bi-emoji-surprise:before{content:"\f7ac"}.bi-emoji-tear-fill:before{content:"\f7ad"}.bi-emoji-tear:before{content:"\f7b2"}.bi-envelope-arrow-down-fill:before{content:"\f7b3"}.bi-envelope-arrow-down:before{content:"\f7b8"}.bi-envelope-arrow-up-fill:before{content:"\f7b9"}.bi-envelope-arrow-up:before{content:"\f7be"}.bi-feather:before{content:"\f7bf"}.bi-feather2:before{content:"\f7c4"}.bi-floppy-fill:before{content:"\f7c5"}.bi-floppy:before{content:"\f7d8"}.bi-floppy2-fill:before{content:"\f7d9"}.bi-floppy2:before{content:"\f7e4"}.bi-gitlab:before{content:"\f7e5"}.bi-highlighter:before{content:"\f7f8"}.bi-marker-tip:before{content:"\f802"}.bi-nvme-fill:before{content:"\f803"}.bi-nvme:before{content:"\f80c"}.bi-opencollective:before{content:"\f80d"}.bi-pci-card-network:before{content:"\f8cd"}.bi-pci-card-sound:before{content:"\f8ce"}.bi-radar:before{content:"\f8cf"}.bi-send-arrow-down-fill:before{content:"\f8d0"}.bi-send-arrow-down:before{content:"\f8d1"}.bi-send-arrow-up-fill:before{content:"\f8d2"}.bi-send-arrow-up:before{content:"\f8d3"}.bi-sim-slash-fill:before{content:"\f8d4"}.bi-sim-slash:before{content:"\f8d5"}.bi-sourceforge:before{content:"\f8d6"}.bi-substack:before{content:"\f8d7"}.bi-threads-fill:before{content:"\f8d8"}.bi-threads:before{content:"\f8d9"}.bi-transparency:before{content:"\f8da"}.bi-twitter-x:before{content:"\f8db"}.bi-type-h4:before{content:"\f8dc"}.bi-type-h5:before{content:"\f8dd"}.bi-type-h6:before{content:"\f8de"}.bi-backpack-fill:before{content:"\f8df"}.bi-backpack:before{content:"\f8e0"}.bi-backpack2-fill:before{content:"\f8e1"}.bi-backpack2:before{content:"\f8e2"}.bi-backpack3-fill:before{content:"\f8e3"}.bi-backpack3:before{content:"\f8e4"}.bi-backpack4-fill:before{content:"\f8e5"}.bi-backpack4:before{content:"\f8e6"}.bi-brilliance:before{content:"\f8e7"}.bi-cake-fill:before{content:"\f8e8"}.bi-cake2-fill:before{content:"\f8e9"}.bi-duffle-fill:before{content:"\f8ea"}.bi-duffle:before{content:"\f8eb"}.bi-exposure:before{content:"\f8ec"}.bi-gender-neuter:before{content:"\f8ed"}.bi-highlights:before{content:"\f8ee"}.bi-luggage-fill:before{content:"\f8ef"}.bi-luggage:before{content:"\f8f0"}.bi-mailbox-flag:before{content:"\f8f1"}.bi-mailbox2-flag:before{content:"\f8f2"}.bi-noise-reduction:before{content:"\f8f3"}.bi-passport-fill:before{content:"\f8f4"}.bi-passport:before{content:"\f8f5"}.bi-person-arms-up:before{content:"\f8f6"}.bi-person-raised-hand:before{content:"\f8f7"}.bi-person-standing-dress:before{content:"\f8f8"}.bi-person-standing:before{content:"\f8f9"}.bi-person-walking:before{content:"\f8fa"}.bi-person-wheelchair:before{content:"\f8fb"}.bi-shadows:before{content:"\f8fc"}.bi-suitcase-fill:before{content:"\f8fd"}.bi-suitcase-lg-fill:before{content:"\f8fe"}.bi-suitcase-lg:before{content:"\f8ff"}.bi-suitcase:before{content:"\f900"}.bi-suitcase2-fill:before{content:"\f901"}.bi-suitcase2:before{content:"\f902"}.bi-vignette:before{content:"\f903"}:root,[data-bs-theme=light]{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #004C47;--bs-secondary: #98DAA4;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 0, 76, 71;--bs-secondary-rgb: 152, 218, 164;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text-emphasis: rgb(0, 30.4, 28.4);--bs-secondary-text-emphasis: rgb(60.8, 87.2, 65.6);--bs-success-text-emphasis: rgb(10, 54, 33.6);--bs-info-text-emphasis: rgb(5.2, 80.8, 96);--bs-warning-text-emphasis: rgb(102, 77.2, 2.8);--bs-danger-text-emphasis: rgb(88, 21.2, 27.6);--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: rgb(204, 219.2, 218.2);--bs-secondary-bg-subtle: rgb(234.4, 247.6, 236.8);--bs-success-bg-subtle: rgb(209, 231, 220.8);--bs-info-bg-subtle: rgb(206.6, 244.4, 252);--bs-warning-bg-subtle: rgb(255, 242.6, 205.4);--bs-danger-bg-subtle: rgb(248, 214.6, 217.8);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(153, 183.4, 181.4);--bs-secondary-border-subtle: rgb(213.8, 240.2, 218.6);--bs-success-border-subtle: rgb(163, 207, 186.6);--bs-info-border-subtle: rgb(158.2, 233.8, 249);--bs-warning-border-subtle: rgb(255, 230.2, 155.8);--bs-danger-border-subtle: rgb(241, 174.2, 180.6);--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Albert Sans" sans-serif;--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #1d1d1d;--bs-body-color-rgb: 29, 29, 29;--bs-body-bg: #EFEAE1;--bs-body-bg-rgb: 239, 234, 225;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(29, 29, 29, .75);--bs-secondary-color-rgb: 29, 29, 29;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(29, 29, 29, .5);--bs-tertiary-color-rgb: 29, 29, 29;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #171717;--bs-link-color-rgb: 23, 23, 23;--bs-link-decoration: underline;--bs-link-hover-color: rgb(18.4, 18.4, 18.4);--bs-link-hover-color-rgb: 18, 18, 18;--bs-code-color: #d63384;--bs-highlight-color: #1d1d1d;--bs-highlight-bg: rgb(255, 242.6, 205.4);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(0, 76, 71, .25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);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: 1300px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1424px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1300px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.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.66666667%}.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: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .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.33333333%}.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.66666667%}.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: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .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.33333333%}.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.66666667%}.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: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .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.33333333%}.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.66666667%}.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: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .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.33333333%}.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.66666667%}.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: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .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: 1300px){.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.33333333%}.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.66666667%}.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: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-emphasis-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-emphasis-color);--bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), .05);--bs-table-active-color: var(--bs-emphasis-color);--bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), .1);--bs-table-hover-color: var(--bs-emphasis-color);--bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), .075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: rgb(204, 219.2, 218.2);--bs-table-border-color: rgb(163.2, 175.36, 174.56);--bs-table-striped-bg: rgb(193.8, 208.24, 207.29);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(183.6, 197.28, 196.38);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(188.7, 202.76, 201.835);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: rgb(234.4, 247.6, 236.8);--bs-table-border-color: rgb(187.52, 198.08, 189.44);--bs-table-striped-bg: rgb(222.68, 235.22, 224.96);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(210.96, 222.84, 213.12);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(216.82, 229.03, 219.04);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: rgb(209, 231, 220.8);--bs-table-border-color: rgb(167.2, 184.8, 176.64);--bs-table-striped-bg: rgb(198.55, 219.45, 209.76);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(188.1, 207.9, 198.72);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(193.325, 213.675, 204.24);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: rgb(206.6, 244.4, 252);--bs-table-border-color: rgb(165.28, 195.52, 201.6);--bs-table-striped-bg: rgb(196.27, 232.18, 239.4);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(185.94, 219.96, 226.8);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(191.105, 226.07, 233.1);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: rgb(255, 242.6, 205.4);--bs-table-border-color: rgb(204, 194.08, 164.32);--bs-table-striped-bg: rgb(242.25, 230.47, 195.13);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(229.5, 218.34, 184.86);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(235.875, 224.405, 189.995);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: rgb(248, 214.6, 217.8);--bs-table-border-color: rgb(198.4, 171.68, 174.24);--bs-table-striped-bg: rgb(235.6, 203.87, 206.91);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(223.2, 193.14, 196.02);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(229.4, 198.505, 201.465);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: rgb(198.4, 199.2, 200);--bs-table-striped-bg: rgb(235.6, 236.55, 237.5);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(223.2, 224.1, 225);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(229.4, 230.325, 231.25);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #212529;--bs-table-border-color: rgb(77.4, 80.6, 83.8);--bs-table-striped-bg: rgb(44.1, 47.9, 51.7);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(55.2, 58.8, 62.4);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(49.65, 53.35, 57.05);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1299.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#80a6a3;outline:0;box-shadow:0 0 0 .25rem #004c4740}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#80a6a3;outline:0;box-shadow:0 0 0 .25rem #004c4740}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#80a6a3;outline:0;box-shadow:0 0 0 .25rem #004c4740}.form-check-input:checked{background-color:#004c47;border-color:#004c47}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#004c47;border-color:#004c47;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28127.5, 165.5, 163%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #efeae1,0 0 0 .25rem #004c4740}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #efeae1,0 0 0 .25rem #004c4740}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;appearance:none;background-color:#004c47;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b3c9c8}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:#004c47;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b3c9c8}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-control-plaintext~label:after,.form-floating>.form-select~label:after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label:after,.form-floating>.form-control:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size: 1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: var(--bs-border-radius);--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #004C47;--bs-btn-border-color: #004C47;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(0, 64.6, 60.35);--bs-btn-hover-border-color: rgb(0, 60.8, 56.8);--bs-btn-focus-shadow-rgb: 38, 103, 99;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(0, 60.8, 56.8);--bs-btn-active-border-color: rgb(0, 57, 53.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #004C47;--bs-btn-disabled-border-color: #004C47}.btn-secondary{--bs-btn-color: #000;--bs-btn-bg: #98DAA4;--bs-btn-border-color: #98DAA4;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(167.45, 223.55, 177.65);--bs-btn-hover-border-color: rgb(162.3, 221.7, 173.1);--bs-btn-focus-shadow-rgb: 129, 185, 139;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(172.6, 225.4, 182.2);--bs-btn-active-border-color: rgb(162.3, 221.7, 173.1);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #98DAA4;--bs-btn-disabled-border-color: #98DAA4}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(21.25, 114.75, 71.4);--bs-btn-hover-border-color: rgb(20, 108, 67.2);--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(20, 108, 67.2);--bs-btn-active-border-color: rgb(18.75, 101.25, 63);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(49.3, 209.95, 242.25);--bs-btn-hover-border-color: rgb(37.2, 207.3, 241.5);--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(61.4, 212.6, 243);--bs-btn-active-border-color: rgb(37.2, 207.3, 241.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(255, 202.3, 44.2);--bs-btn-hover-border-color: rgb(255, 199.2, 31.8);--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(255, 205.4, 56.6);--bs-btn-active-border-color: rgb(255, 199.2, 31.8);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(187, 45.05, 58.65);--bs-btn-hover-border-color: rgb(176, 42.4, 55.2);--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(176, 42.4, 55.2);--bs-btn-active-border-color: rgb(165, 39.75, 51.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(210.8, 211.65, 212.5);--bs-btn-hover-border-color: rgb(198.4, 199.2, 200);--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(198.4, 199.2, 200);--bs-btn-active-border-color: rgb(186, 186.75, 187.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(66.3, 69.7, 73.1);--bs-btn-hover-border-color: rgb(55.2, 58.8, 62.4);--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(77.4, 80.6, 83.8);--bs-btn-active-border-color: rgb(55.2, 58.8, 62.4);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-primary{--bs-btn-color: #004C47;--bs-btn-border-color: #004C47;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #004C47;--bs-btn-hover-border-color: #004C47;--bs-btn-focus-shadow-rgb: 0, 76, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #004C47;--bs-btn-active-border-color: #004C47;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #004C47;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #004C47;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #98DAA4;--bs-btn-border-color: #98DAA4;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #98DAA4;--bs-btn-hover-border-color: #98DAA4;--bs-btn-focus-shadow-rgb: 152, 218, 164;--bs-btn-active-color: #000;--bs-btn-active-bg: #98DAA4;--bs-btn-active-border-color: #98DAA4;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #98DAA4;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #98DAA4;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 58, 58, 58;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.25rem;--bs-btn-border-radius: var(--bs-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .875rem;--bs-btn-border-radius: var(--bs-border-radius-sm)}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size: 1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: var(--bs-box-shadow);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #004C47;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1300px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #004C47;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #004c4740}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #004C47}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2829, 29, 29, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1300px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, .55);--bs-navbar-hover-color: rgba(255, 255, 255, .75);--bs-navbar-disabled-color: rgba(255, 255, 255, .25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%231d1d1d' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='rgb%280, 30.4, 28.4%29' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(0, 76, 71, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size: 1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: var(--bs-body-bg);--bs-pagination-border-width: var(--bs-border-width);--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: var(--bs-border-radius);--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: var(--bs-tertiary-bg);--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: var(--bs-secondary-bg);--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(0, 76, 71, .25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #004C47;--bs-pagination-active-border-color: #004C47;--bs-pagination-disabled-color: var(--bs-secondary-color);--bs-pagination-disabled-bg: var(--bs-secondary-bg);--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size: 1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size: .875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size: .75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size: .75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #004C47;--bs-progress-bar-transition: width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #004C47;--bs-list-group-active-border-color: #004C47;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1300px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #1d1d1d;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231d1d1d'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: .5;--bs-btn-close-hover-opacity: .75;--bs-btn-close-focus-shadow: 0 0 0 .25rem rgba(0, 76, 71, .25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: .25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size: .875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: var(--bs-body-bg);--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: var(--bs-border-radius-lg);--bs-modal-box-shadow: var(--bs-box-shadow-sm);--bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: var(--bs-border-width);--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1299.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size: .875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size: .875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: var(--bs-box-shadow);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size: 1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);--bs-offcanvas-transition: transform .3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1299.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1299.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1299.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media (min-width: 1300px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg,#000 55%,#000c,#000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-secondary{color:#000!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity, 1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-primary:hover,.link-primary:focus{color:RGBA(0,61,57,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(0,61,57,var(--bs-link-underline-opacity, 1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-secondary:hover,.link-secondary:focus{color:RGBA(173,225,182,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(173,225,182,var(--bs-link-underline-opacity, 1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity, 1))!important}.link-success:hover,.link-success:focus{color:RGBA(20,108,67,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity, 1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity, 1))!important}.link-info:hover,.link-info:focus{color:RGBA(61,213,243,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity, 1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity, 1))!important}.link-warning:hover,.link-warning:focus{color:RGBA(255,205,57,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity, 1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity, 1))!important}.link-danger:hover,.link-danger:focus{color:RGBA(176,42,55,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity, 1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity, 1))!important}.link-light:hover,.link-light:focus{color:RGBA(249,250,251,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity, 1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity, 1))!important}.link-dark:hover,.link-dark:focus{color:RGBA(26,30,33,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, .75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, .75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, .5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1300px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{object-fit:contain!important}.object-fit-cover{object-fit:cover!important}.object-fit-fill{object-fit:fill!important}.object-fit-scale{object-fit:scale-down!important}.object-fit-none{object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{column-gap:0!important}.column-gap-1{column-gap:.25rem!important}.column-gap-2{column-gap:.5rem!important}.column-gap-3{column-gap:1rem!important}.column-gap-4{column-gap:1.5rem!important}.column-gap-5{column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity: 1;color:#00000080!important}.text-white-50{--bs-text-opacity: 1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity: 1;color:inherit!important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity: .1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity: .25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity: .5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity: .75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: .1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: .25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: .5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: .75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{object-fit:contain!important}.object-fit-sm-cover{object-fit:cover!important}.object-fit-sm-fill{object-fit:fill!important}.object-fit-sm-scale{object-fit:scale-down!important}.object-fit-sm-none{object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-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:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{column-gap:0!important}.column-gap-sm-1{column-gap:.25rem!important}.column-gap-sm-2{column-gap:.5rem!important}.column-gap-sm-3{column-gap:1rem!important}.column-gap-sm-4{column-gap:1.5rem!important}.column-gap-sm-5{column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{object-fit:contain!important}.object-fit-md-cover{object-fit:cover!important}.object-fit-md-fill{object-fit:fill!important}.object-fit-md-scale{object-fit:scale-down!important}.object-fit-md-none{object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-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:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{column-gap:0!important}.column-gap-md-1{column-gap:.25rem!important}.column-gap-md-2{column-gap:.5rem!important}.column-gap-md-3{column-gap:1rem!important}.column-gap-md-4{column-gap:1.5rem!important}.column-gap-md-5{column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{object-fit:contain!important}.object-fit-lg-cover{object-fit:cover!important}.object-fit-lg-fill{object-fit:fill!important}.object-fit-lg-scale{object-fit:scale-down!important}.object-fit-lg-none{object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-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:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{column-gap:0!important}.column-gap-lg-1{column-gap:.25rem!important}.column-gap-lg-2{column-gap:.5rem!important}.column-gap-lg-3{column-gap:1rem!important}.column-gap-lg-4{column-gap:1.5rem!important}.column-gap-lg-5{column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{object-fit:contain!important}.object-fit-xl-cover{object-fit:cover!important}.object-fit-xl-fill{object-fit:fill!important}.object-fit-xl-scale{object-fit:scale-down!important}.object-fit-xl-none{object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-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:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{column-gap:0!important}.column-gap-xl-1{column-gap:.25rem!important}.column-gap-xl-2{column-gap:.5rem!important}.column-gap-xl-3{column-gap:1rem!important}.column-gap-xl-4{column-gap:1.5rem!important}.column-gap-xl-5{column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1300px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{object-fit:contain!important}.object-fit-xxl-cover{object-fit:cover!important}.object-fit-xxl-fill{object-fit:fill!important}.object-fit-xxl-scale{object-fit:scale-down!important}.object-fit-xxl-none{object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-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:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{column-gap:0!important}.column-gap-xxl-1{column-gap:.25rem!important}.column-gap-xxl-2{column-gap:.5rem!important}.column-gap-xxl-3{column-gap:1rem!important}.column-gap-xxl-4{column-gap:1.5rem!important}.column-gap-xxl-5{column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-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}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.hljs{background-color:#f5f5f5}@media print{.hljs{overflow-x:hidden;text-wrap:pretty}}pre>code .line-highlight{background-color:#ff0}.code-header{box-sizing:content-box;background-color:#f2f2f2;color:#1d1d1d;display:flex;flex-direction:row;border:1px solid #e3e3e3;min-height:30px}.code-header>.language{padding:7px 10px;flex-grow:1;text-transform:uppercase;line-height:normal;vertical-align:middle}.code-header>.action{position:relative;padding:2px 10px;background-color:transparent!important;border:0 solid #e3e3e3;border-left-width:1px;color:#171717;cursor:pointer;display:flex;align-items:center;line-height:normal}.code-header>.action .successful-copy-alert.is-transparent{opacity:0;transition:.5s opacity ease-in-out}.code-header>.action .successful-copy-alert{justify-content:center;align-items:center;inset:0;position:absolute;display:flex;background-color:#98daa4;outline-color:#000;color:#000}.hljs-keyword{color:#569cd6}.hljs-string{color:#d69d85}.lang-dax.hljs.language-dax pre{background-color:#f7f7f7;color:#333;overflow-x:auto}.lang-dax.hljs.language-dax .hljs-keyword{color:#00f}.lang-dax.hljs.language-dax .hljs-string{color:red}.lang-dax.hljs.language-dax .hljs-variable{color:#000}.lang-dax.hljs.language-dax .hljs-comment{color:green}.lang-dax.hljs.language-dax .hljs-built_in{color:purple}.lang-dax.hljs.language-dax .hljs-literal{color:#000}html{width:calc(100vw - var(--scrollbar-width));min-height:100vh;overflow-x:hidden}body,body[data-layout=landing]{width:calc(100vw - var(--scrollbar-width));min-height:100vh;display:flex;flex-direction:column}body>main,body[data-layout=landing]>main{display:flex;flex:1;padding-top:0;padding-bottom:2rem}body>main>.content,body[data-layout=landing]>main>.content{display:flex;flex-direction:column;width:100%}body>main>.content>:not(article,.docnav),body[data-layout=landing]>main>.content>:not(article,.docnav){display:none}body>main>.content>article,body[data-layout=landing]>main>.content>article{flex:1}@media (min-width: 768px){body>main>.content>article [id],body[data-layout=landing]>main>.content>article [id]{scroll-margin-top:130px}}body>main>:not(.content),body[data-layout=landing]>main>:not(.content){display:none}@media print{body>main,body[data-layout=landing]>main{padding:0!important}body>header,body>footer,body[data-layout=landing]>header,body[data-layout=landing]>footer{display:none}}@media not print{body[data-search]>main{display:none}body[data-search]>.search-results{display:block;flex:1;padding-top:0;padding-bottom:2rem}body:not([data-search])>.search-results{display:none}body:not([data-search])[data-layout=""]>main,body:not([data-search])[data-layout=conceptual]>main{padding-bottom:0}body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{flex:.35;display:block;overflow:hidden;max-width:360px;max-height:calc(100vh - 130px)}@media (min-width: 768px){body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{position:sticky;top:130px}}@media (max-width: 767.98px){body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{flex:0}}body:not([data-search])[data-layout=""]>main>.toc-offcanvas .offcanvas-start,body:not([data-search])[data-layout=""]>main>.toc-offcanvas .offcanvas-body,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas .offcanvas-start,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas .offcanvas-body{height:100%}body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{display:flex;flex-direction:column;flex:1;min-width:0;margin:0 3rem;padding-bottom:2rem}body:not([data-search])[data-layout=""]>main>.content>.actionbar,body:not([data-search])[data-layout=conceptual]>main>.content>.actionbar{display:flex;align-items:flex-start;margin-top:.5rem}body:not([data-search])[data-layout=""]>main>.content>.actionbar>button,body:not([data-search])[data-layout=conceptual]>main>.content>.actionbar>button{margin-top:-.65em;margin-left:-.8em}body:not([data-search])[data-layout=""]>main>.content article,body:not([data-search])[data-layout=conceptual]>main>.content article{flex:1}body:not([data-search])[data-layout=""]>main>.content>.contribution,body:not([data-search])[data-layout=""]>main>.content>.next-article,body:not([data-search])[data-layout=conceptual]>main>.content>.contribution,body:not([data-search])[data-layout=conceptual]>main>.content>.next-article{display:flex}@media (max-width: 991.98px){body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{margin:0 1rem}}@media (max-width: 767.98px){body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{margin:0}}body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{display:block;width:230px;max-height:calc(100vh - 130px);overflow-x:hidden;overflow-y:auto}@media (min-width: 768px){body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{position:sticky;top:130px}}}@media only screen and (max-width: 1140px){body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{display:none}}@media not print{body:not([data-search])[data-layout=chromeless]>header,body:not([data-search])[data-layout=chromeless]>footer{display:none}}.breadcrumb{font-size:14px}.breadcrumb a{text-decoration:none}.breadcrumb a:hover,.breadcrumb a:focus{text-decoration:underline}.next-article{display:flex}.next-article:not(:has(div)){border-top-width:0}.next-article:has(div){margin-top:3rem;padding-top:1rem}.next-article>div{flex:1}.next-article>div.next{text-align:right}.next-article>div>span{opacity:.66;font-size:14px}.next-article>div>a{display:block}.navbar{padding:0}.navbar .navbar-brand{display:flex;align-items:center}.navbar .navbar-nav{display:flex;flex-wrap:nowrap}.navbar #navbar{display:flex;flex:1;justify-content:flex-start}.navbar #navbar li{margin-left:24px}.navbar #navbar li:first-child{margin-left:0}.navbar #navbar form{display:flex;position:relative;align-items:center}.navbar #navbar form>i.bi{position:absolute;left:.8rem;opacity:.5}.navbar #navbar form>input{padding-left:2.5rem}.navbar #navbar form.search{order:50}.navbar #navbar form.icons{margin-left:auto}@media (max-width: 767.98px){.navbar #navbar{align-items:flex-start}.navbar #navbar form{margin:1rem 0 0}.navbar #navbar form.search{align-self:stretch;order:30}.navbar #navbar form.icons{align-self:center;order:40;margin:1rem 0}}.affix{font-size:14px}.affix h5{display:inline-block;font-weight:300;text-transform:uppercase;padding:1em 0 .5em;font-size:14px;letter-spacing:2px}.affix h6{font-size:14px}.affix ul{flex-direction:column;list-style-type:none;padding-left:0;margin-left:0}.affix ul h6{margin-top:1rem}.affix ul li{margin:.4rem 0}.affix ul li a{text-decoration:none}.affix ul li a:hover,.affix ul li a:focus{text-decoration:underline}.contribution{margin-top:2rem}.contribution a.edit-link{text-decoration:none}.contribution a.edit-link:hover,.contribution a.edit-link:focus{text-decoration:underline}.contribution a.edit-link:before{content:"\f4ca";display:inline-block;font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}.toc{min-width:0;width:100%;height:100%;display:flex;flex-direction:column}.toc ul{font-size:14px;flex-direction:column;list-style-type:none;padding-left:0;overflow-wrap:break-word}.toc li{font-weight:400;margin:.6em 0;padding-left:.85rem;position:relative}.toc li>a{display:inline;text-decoration:none}.toc li>a:hover,.toc li>a:focus{text-decoration:underline}.toc li>ul{display:none}.toc li.expanded>ul{display:block}.toc .expand-stub:before{display:inline-block;width:.85rem;cursor:pointer;font-family:bootstrap-icons;font-size:.8em;content:"\f285";position:absolute;margin-top:.2em;margin-left:-.85rem;transition:transform .35s ease;transform-origin:.5em 50%}@media (prefers-reduced-motion){.toc .expand-stub:before{transition:none}}.toc li.expanded>.expand-stub:before{transform:rotate(90deg)}.toc span.name-only{font-weight:600;display:inline-block;margin:.4rem 0}.toc form.filter{display:flex;position:relative;align-items:center;margin-bottom:.5rem}.toc form.filter>i.bi{position:absolute;left:.6rem;opacity:.5}.toc form.filter>input{padding-left:2rem}.toc>.no-result{font-size:.9em;color:#98daa4}.toc a.pdf-link{text-decoration:none}.toc a.pdf-link:hover,.toc a.pdf-link:focus{text-decoration:underline}.toc a.pdf-link:before{content:"\f756";display:inline-block;font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}a.external[href]:after{font-family:bootstrap-icons;content:"\f1c5";font-size:.6rem;margin:0 .2em;display:inline-block}blockquote{border-style:solid;border-width:0 0 0 3px;border-color:#d6f0db;margin:1.2em 0 2em;padding:0 .8em;display:block}[data-bs-theme=dark] blockquote{border-color:#5b8362}.alert{break-inside:avoid}.alert h5{text-transform:uppercase;font-weight:700;font-size:1rem}.alert h5:before{font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}.alert:not(:has(h5))>p:last-child{margin-block-end:0}.alert-info h5:before{content:"\f431"}.alert-warning h5:before{content:"\f333"}.alert-danger h5:before{content:"\f623"}div.embeddedvideo{padding-top:56.25%;position:relative;width:100%;margin-bottom:1em}div.embeddedvideo iframe{position:absolute;inset:0;width:100%;height:100%}pre{position:relative}pre>.code-action{display:none;position:absolute;top:.25rem;right:.2rem}pre>.code-action .bi-check-lg{font-size:1.2rem}pre:hover>.code-action{display:block}.tabGroup{margin-bottom:1rem}.tabGroup>section{margin:0;padding:1rem;border-top:0;border-top-left-radius:0;border-top-right-radius:0}#search-results{line-height:1.8}#search-results>.search-list{font-size:.9em;color:#98daa4}#search-results>.sr-items{flex:1}#search-results>.sr-items .sr-item{margin-bottom:1.5em}#search-results>.sr-items .sr-item>.item-title{font-size:x-large}#search-results>.sr-items .sr-item>.item-href{color:#093;font-size:small}#search-results>.sr-items .sr-item>.item-brief{font-size:small}body[data-yaml-mime=ManagedReference] article h1[data-uid],body[data-yaml-mime=ApiPage] article h1[data-uid]{position:relative;padding-right:1.6rem}body[data-yaml-mime=ManagedReference] article h3[data-uid],body[data-yaml-mime=ApiPage] article h3[data-uid]{position:relative;font-weight:400;margin-top:3rem;padding-bottom:5px;padding-right:1.6rem}body[data-yaml-mime=ManagedReference] article h2.section,body[data-yaml-mime=ApiPage] article h2.section{margin-top:3rem}body[data-yaml-mime=ManagedReference] article h2.section+h3[data-uid],body[data-yaml-mime=ManagedReference] article h2.section+a+h3[data-uid],body[data-yaml-mime=ApiPage] article h2.section+h3[data-uid],body[data-yaml-mime=ApiPage] article h2.section+a+h3[data-uid]{margin-top:1rem}body[data-yaml-mime=ManagedReference] article h4.section,body[data-yaml-mime=ApiPage] article h4.section{font-weight:300;margin-top:1.6rem}body[data-yaml-mime=ManagedReference] article dl>dt,body[data-yaml-mime=ApiPage] article dl>dt{font-weight:400}body[data-yaml-mime=ManagedReference] article dl>dd,body[data-yaml-mime=ApiPage] article dl>dd{margin-left:1rem}body[data-yaml-mime=ManagedReference] article dl.typelist>dt,body[data-yaml-mime=ApiPage] article dl.typelist>dt{font-weight:600}body[data-yaml-mime=ManagedReference] article dl.typelist>dd,body[data-yaml-mime=ApiPage] article dl.typelist>dd{margin-left:0}body[data-yaml-mime=ManagedReference] article dl.typelist>dd>div,body[data-yaml-mime=ApiPage] article dl.typelist>dd>div{display:inline-block}body[data-yaml-mime=ManagedReference] article dl.typelist>dd>div:not(:last-child):after,body[data-yaml-mime=ApiPage] article dl.typelist>dd>div:not(:last-child):after{content:", "}body[data-yaml-mime=ManagedReference] article dl.typelist.inheritance>dd>div:not(:last-child):after,body[data-yaml-mime=ApiPage] article dl.typelist.inheritance>dd>div:not(:last-child):after{font-family:bootstrap-icons;content:"\f12c";position:relative;top:.2em;opacity:.8}body[data-yaml-mime=ManagedReference] article dl.parameters>dt,body[data-yaml-mime=ApiPage] article dl.parameters>dt{margin:1em 0}body[data-yaml-mime=ManagedReference] article dl.parameters>dt>code,body[data-yaml-mime=ApiPage] article dl.parameters>dt>code{margin-right:.2em;font-size:1em}body[data-yaml-mime=ManagedReference] article div.facts,body[data-yaml-mime=ApiPage] article div.facts{font-size:14px;margin:2rem 0 1rem}body[data-yaml-mime=ManagedReference] article div.facts>dl,body[data-yaml-mime=ApiPage] article div.facts>dl{margin:0}body[data-yaml-mime=ManagedReference] article div.facts>dl>dd,body[data-yaml-mime=ApiPage] article div.facts>dl>dd{margin-left:.25rem;display:inline-block}body[data-yaml-mime=ManagedReference] article div.facts>dl>dt,body[data-yaml-mime=ApiPage] article div.facts>dl>dt{display:inline-block}body[data-yaml-mime=ManagedReference] article div.facts>dl>dt:after,body[data-yaml-mime=ApiPage] article div.facts>dl>dt:after{content:":"}body[data-yaml-mime=ManagedReference] article .header-action,body[data-yaml-mime=ApiPage] article .header-action{position:absolute;right:0;bottom:.2rem;font-size:1.2rem}@media print{body[data-yaml-mime=ManagedReference] article .header-action,body[data-yaml-mime=ApiPage] article .header-action{display:none}}body[data-yaml-mime=ManagedReference] article td.term,body[data-yaml-mime=ApiPage] article td.term{font-weight:600}body[data-yaml-mime=ManagedReference] article summary,body[data-yaml-mime=ApiPage] article summary{display:block;cursor:inherit}body[data-yaml-mime=ManagedReference] article li>span.term,body[data-yaml-mime=ApiPage] article li>span.term{font-weight:600}body[data-yaml-mime=ManagedReference] article li>span.term:after,body[data-yaml-mime=ApiPage] article li>span.term:after{content:"-";margin:0 .5em}*,*:before,*:after{box-sizing:border-box}body{margin:0;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}p{margin-top:0;margin-bottom:1rem}hr{color:inherit;margin:0;border:0;border-top:1px solid;width:100%}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}b,strong{font-weight:700}small{font-size:.875em}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}input,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}select{text-transform:none}[role=button]{cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{padding:0;margin:0;border:0}figure{margin:0}legend{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}iframe{border:0}[hidden]{display:none!important}.icon{display:inline-flex}.icon svg{height:1em;width:1em;fill:currentcolor}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6,.fluid-font-size{--hub-fluid-font-size: calc( ((20 + ((var(--font-size) - 20) / 10)) / 16 * 1rem) + (((var(--font-size) - (20 + ((var(--font-size) - 20) / 10)) ) * 100 / 1200) * 1vw) );--hub-font-size-to-rem: calc(var(--font-size) / 16 * 1rem);font-size:var(--hub-fluid-font-size)}h6,.h6{font-size:var(--hub-font-size-to-rem)}@media (min-width: 1200px){h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6,.fluid-font-size{font-size:var(--hub-font-size-to-rem)}}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6{line-height:1.2;margin-top:.5rem;margin-bottom:1rem;font-weight:500;font-style:initial}.heading-link,.heading-link:hover{font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit}.margin-collapse :where(h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6){margin-top:0}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]),:where(input[type=file])::file-selector-button{--_border-radius: var(--border-radius, none);--_bg: var(--bg, #fff);--_color: var(--color, #333);font:inherit;letter-spacing:inherit;line-height:1.5;border-radius:var(--_border-radius)!important;cursor:pointer;font-size:1rem;font-weight:700;font-style:initial;background:var(--_bg)!important;color:var(--_color)!important;border:1px solid #c8c8c8;display:inline-flex;justify-content:center;align-items:center;text-align:center;gap:.5ch;padding:8px 20px;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-width:100px;text-decoration:none!important;vertical-align:middle}@media (prefers-reduced-motion: no-preference){:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]){transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]):where(:not(:active):hover){background:var(--hover-bg, var(--_bg));color:var(--hover-color, var(--_color));border-color:var(--hover-border, #999)!important}:where(.btn-link,button,input):where(:not(:active)):focus-visible{outline-offset:5px}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset])[disabled]{background:none;cursor:not-allowed;--color: hsl(210deg 7% 40%)}:where(input[type=file]){font:inherit;inline-size:100%;max-inline-size:max-content}:where(input[type=button]),:where(input[type=file])::file-selector-button{appearance:none}:where(input[type=file])::file-selector-button{margin-inline-end:1.5ch}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]) :where(.icon){display:inline-flex;justify-content:center;align-items:center}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]) :where(svg,.icon>svg){height:1.8ch;width:1.8ch;flex-shrink:0;fill:currentcolor}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]):where(.btn-w100){width:100%}:where(.btn-link,button,input[type=button],input[type=submit],input[type=reset]):where(.btn-w100+.btn-w100){margin-top:.5rem}.form-default .hs-form fieldset{margin:initial;padding:initial;border:initial;max-width:initial}.form-default :is(fieldset.form-columns-2,fieldset.form-columns-3)>div.hs-form-field{float:none;width:initial}.form-default .hs-form-field .hs-field-desc{width:100%}.form-default div.hs-form-field div.input{margin-right:0}.form-default fieldset.form-columns-1 .input .hs-input,.form-default form fieldset.form-columns-2 .hs-form-field .input .hs-input{width:100%}.form-default fieldset.form-columns-1 .input input[type=radio],.form-default fieldset.form-columns-1 .input input[type=checkbox]{width:1.2em;float:none}.form-default .inputs-list :is(.hs-form-checkbox-display,.hs-form-booleancheckbox-display,.hs-form-radio-display)>span{margin:0}.form-default{--_form-label-color: var(--form-label-color, inherit);--_form-help-text-color: var(--form-help-text-color, #394047);--_form-placeholder-color: var(--form-placeholder-color, rgb(57 64 71 / 70%));--_form-error-color: var(--form-error-color, #f2545b)}.form-default .hs-form-field{margin-bottom:1rem}.form-default :where(.form-columns-2,.form-columns-3){display:flex;gap:10px;justify-content:center;align-items:flex-end;flex-wrap:wrap}.form-default :where(.form-columns-2,.form-columns-3)>.hs-form-field{flex-grow:1;flex-basis:0}@media (max-width: 991.98px){.form-default :is(fieldset.form-columns-2,fieldset.form-columns-3)>div.hs-form-field{flex-basis:auto}}.form-default label,.form-default .fakelabel{color:var(--_form-label-color);margin-bottom:.4rem;display:flex}.form-default .hs-field-desc{margin-top:.25rem;margin-bottom:.25rem;font-size:.875em;color:var(--_form-help-text-color)}.form-default .hs-form-required{color:var(--_form-error-color);margin-left:2px}.form-default input:not([type=checkbox],[type=radio],[type=file],[type=button],[type=reset],[type=submit]),.form-default textarea,.form-default select{display:block;width:100%;padding:.375rem .5rem;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-default input[type=file]{overflow:hidden;padding:0}.form-default select{padding:.5rem}@media (prefers-reduced-motion: reduce){.form-default input:not([type=checkbox],[type=radio],[type=file],[type=button],[type=reset],[type=submit]),.form-default textarea,.form-default select{transition:none}}.form-default input.error:not([type=checkbox],[type=radio],[type=file],[type=button],[type=reset],[type=submit]),.form-default textarea.error,.form-default select.error{border-color:var(--_form-error-color)!important}.form-default .inputs-list{list-style:none;margin:0;padding:0}.form-default .hs-error-msg,.form-default .hs-error-msgs .hs-main-font-element{margin-top:.25rem;font-size:.875em;color:var(--_form-error-color)}.form-default input::placeholder,.form-default textarea::placeholder{color:var(--_form-placeholder-color)}.form-default :where(.hs-form-checkbox-display,.hs-form-booleancheckbox-display,.hs-form-radio-display,.fakelabel){display:flex;gap:.4rem;margin-bottom:.8rem;align-content:center;align-items:center;justify-content:flex-start}.form-default input[type=radio],.form-default input[type=checkbox]{width:1.2em;height:1.2em}.form-default input[type=file]:not(:disabled){cursor:pointer}:where(a:not(.btn-link)){--_color: var(--color, blue);display:inline-flex;justify-content:center;align-items:center;gap:.5ch;color:var(--_color)}:where(a:not(.btn-link):hover){color:var(--hover-color, var(--_color))}:where(a:not(.btn-link)) :where(.icon){display:inline-flex;justify-content:center;align-items:center}:where(a:not(.btn-link)) :where(svg,.icon>svg){height:1.5ch;width:1.5ch;flex-shrink:0;fill:currentcolor}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}:root{--system-fonts: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--primary-color: #004C47;--secondary1-color: #98DAA4;--secondary2-color: #7FD3CE;--secondary3-color: #ECB171;--focus-color: ;--accent-color: initial;accent-color:var(--accent-color)}:focus-visible{outline-color:var(--focus-color);outline-style:solid;outline-width:3px}::marker{color:var(--accent-color)}hr{border-top-color:var(--primary-color)}body{overflow-wrap:break-word;color:#1d1d1d;background-color:#efeae1;line-height:1.5;font-size:14px;font-family:Albert Sans,sans-serif}body else{font-family:Albert Sans}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-1,.display-2,.display-3,.display-4,.display-5,.display-6{color:#171717;font-family:Albert Sans,sans-serif;font-weight:500}h1 else,h2 else,h3 else,h4 else,h5 else,h6 else,.h1 else,.h2 else,.h3 else,.h4 else,.h5 else,.h6 else,.display-1 else,.display-2 else,.display-3 else,.display-4 else,.display-5 else,.display-6 else{font-family:var(--system-fonts)}h1,.h1{--font-size: 30}h2,.h2{--font-size: 28}h3,.h3{--font-size: 26}h4,.h4{--font-size: 24}h5,.h5{--font-size: 22}h6,.h6{--font-size: 20}.display-1{--font-size: 78}.display-2{--font-size: 72}.display-3{--font-size: 68}.display-4{--font-size: 62}.display-5{--font-size: 58}.display-6{--font-size: 52}:where(a:not(.btn-link)){font-size:"22px";--color: #171717}blockquote,.blockquote{border-left:6px solid #ccc;padding-left:.8rem;margin-left:3rem;font-size:"18px"}.btn-small,.form--btn-small input[type=submit],.form--btn-small input[type=file]::file-selector-button{font-size:"16px";padding:12px 22px}.btn-regular,.form--btn-regular input[type=submit],.form--btn-regular input[type=file]::file-selector-button{font-size:18px;padding:18px 23px}.btn-large,.form--btn-large input[type=submit],.form--btn-large input[type=file]::file-selector-button{font-size:22px;padding:38px 40px}.btn-primary,.form--btn-primary input[type=submit],.form--btn-primary input[type=file]::file-selector-button{--border-radius: ($theme.$theme-buttons-primary-border-border_radius + "px");--color: #FFFFFF;--bg: #004c47;font-family:Albert Sans,sans-serif;font-weight:500;border-top:2px solid #004C47;border-bottom:2px solid #004C47;border-left:2px solid #004C47;border-right:2px solid #004C47}.btn-primary else,.form--btn-primary input[type=submit] else,.form--btn-primary input[type=file]::file-selector-button else{font-family:var(--system-fonts)}.btn-primary:hover,.form--btn-primary input[type=submit]:hover{--hover-color: #fff;--hover-bg: #004c47;--hover-border: #004c47}.btn-secondary1,.form--btn-secondary1 input[type=submit],.form--btn-secondary1 input[type=file]::file-selector-button{--border-radius: undefinedpx;--color: #000000;--bg: rgba(152, 218, 164, 0);font-family:Albert Sans,sans-serif;font-weight:500;border-top:2px solid #004C47;border-bottom:2px solid #004C47;border-left:2px solid #004C47;border-right:2px solid #004C47}.btn-secondary1 else,.form--btn-secondary1 input[type=submit] else,.form--btn-secondary1 input[type=file]::file-selector-button else{font-family:var(--system-fonts)}.btn-secondary1:hover,.form--btn-secondary1 input[type=submit]:hover{--hover-color: #171717;--hover-bg: rgba(0, 76, 71, 0);--hover-border: #004c47}.btn-secondary2,.form--btn-secondary2 input[type=submit],.form--btn-secondary2 input[type=file]::file-selector-button{--border-radius: 0px;--color: #000000;--bg: #7fd3ce;font-family:Albert Sans,sans-serif;font-weight:500;border-top:2px solid #7FD3CE;border-bottom:2px solid #7FD3CE;border-left:2px solid #7FD3CE;border-right:2px solid #7FD3CE}.btn-secondary2 else,.form--btn-secondary2 input[type=submit] else,.form--btn-secondary2 input[type=file]::file-selector-button else{font-family:var(--system-fonts)}.btn-secondary2:hover,.form--btn-secondary2 input[type=submit]:hover{--hover-color: #000000;--hover-bg: #7fd3ce;--hover-border: #7fd3ce}.btn-secondary3,.form--btn-secondary3 input[type=submit],.form--btn-secondary3 input[type=file]::file-selector-button{--border-radius: 0px;--color: #FFFFFF;--bg: rgba(255, 255, 255, 0);font-family:Albert Sans,sans-serif;font-weight:500;border-top:2px solid #7FD3CE;border-bottom:2px solid #7FD3CE;border-left:2px solid #7FD3CE;border-right:2px solid #7FD3CE}.btn-secondary3 else,.form--btn-secondary3 input[type=submit] else,.form--btn-secondary3 input[type=file]::file-selector-button else{font-family:var(--system-fonts)}.btn-secondary3:hover,.form--btn-secondary3 input[type=submit]:hover{--hover-color: #ffffff;--hover-bg: rgba(127, 211, 206, 0);--hover-border: #7fd3ce}.icon--small svg{height:25px;width:25px}.icon--small{padding:15px}.icon--regular svg{height:35px;width:35px}.icon--regular{padding:20px}.icon--large svg{height:55px;width:55px}.icon--large{padding:25px}.icon--circle{border-radius:50%}.widget-type-simple_menu ul[role=menu]{list-style:none;margin:0;padding:0}.widget-type-simple_menu a[role=menuitem]{text-decoration:none;color:#fff}.widget-type-simple_menu .hs-menu-flow-vertical a[role=menuitem]{padding:6px 0}.widget-type-simple_menu .hs-menu-flow-horizontal ul[role=menu]{display:flex;justify-content:flex-end;gap:16px}@media (max-width: 991.98px){.widget-type-simple_menu .hs-menu-flow-horizontal ul[role=menu]{justify-content:flex-start}}.siteheader-module{display:flex;flex-wrap:wrap;align-items:center}.siteheader-module__logo{flex-grow:1}.siteheader-module__mobile-toggler{margin:.2rem;font-size:1.25rem;line-height:1;transition:box-shadow .15s ease-in-out;background:transparent;border:none;min-width:auto}@media (prefers-reduced-motion: reduce){.siteheader-module__mobile-toggler{transition:none}}.siteheader-module__mobile-toggler:hover{text-decoration:none}.siteheader-module__navbar{flex-basis:100%;flex-grow:1;align-items:stretch;display:flex;flex-direction:column}.siteheader-module__main-nav{padding-top:10px;padding-bottom:4px}.main-nav__list{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;align-items:stretch}.main-nav__list--dropdown{position:static;z-index:1000;display:none;text-align:left;list-style:none;background-clip:padding-box}.main-nav__list--dropdown[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.main-nav__list--dropdown.show,.main-nav__list--dropdown.show .main-nav__list--sublevel{display:block}.main-nav__list-item{display:flex;flex-direction:column}.main-nav__list-item:last-child .main-nav__list--dropdown[data-bs-popper]{right:0;left:auto}.main-nav__list-item--dropdown{position:relative}.main-nav__list-item-link{text-decoration:none;transition:color .1s ease,background-color .1s ease}.main-nav__list-item-link:hover{text-decoration:none}@media (prefers-reduced-motion: reduce){.main-nav__list-item-link{transition:none}}.main-nav__list-item--lvl3{flex-grow:1;padding-left:10px}.main-nav__list-item-link--dropdown-toggle{white-space:nowrap}.main-nav__list-item-link--dropdown-toggle:after{display:inline-block;vertical-align:.2em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.header-language{position:relative}.header-language-btn{display:flex;flex-direction:row;align-items:center;font-weight:400;line-height:1;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:none;transition:color .15s ease-in-out,background-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.header-language-btn{transition:none}}.header-language-btn-text{padding-left:6px}.header-language-btn .g-module-macros-icon_wrp{display:flex}.header-language-btn .g-module-macros-icon svg{vertical-align:-.125em}.header-language__list{position:static;min-width:190px;z-index:1000;display:none;text-align:left;list-style:none;background-clip:padding-box;margin:0;padding:0}.header-language__list[data-bs-popper]{top:100%;right:0;margin-top:.125rem}.header-language__list.show{display:block}.header-language__list-item-link{display:flex;flex-direction:row;text-decoration:none;transition:color .1s ease,background-color .1s ease}@media (prefers-reduced-motion: reduce){.header-language__list-item-link{transition:none}}.header-language__list-item-link:hover{text-decoration:none}.header-search_wrp{margin-top:20px;padding:0 14px}.header-search__form{display:flex;margin:0}.header-search__form_internal-wrp{flex-grow:1}.header-search__form-input{height:100%;width:100%;padding:4px 14px;margin:0;border:1px solid #999;background:#fff;border-radius:0}.header-search__form-input:focus-visible{outline-width:1px;outline-offset:0}.header-search__form-btn{width:60px;height:50px;color:#555;background-color:transparent;border:1px solid transparent;border:1px solid #999;margin-left:-1px;min-width:auto}.header-search__form-btn-icon{fill:none}.header-search__suggestions{background:#fff;margin:0;padding:0;list-style:none}.header-search--open .header-search__suggestions{border:none;padding:5px 0}.header-search__suggestions li{display:block;margin:0;padding:0}.header-search__suggestions a,.header-search__suggestions #results-for{display:block;padding:5px 10px}.siteheader-module__link,.siteheader-module__button,.siteheader-module__secondary-button,.siteheader-module__cta{margin:.5rem 0}.siteheader-module__button .g-module-macros-btn,.siteheader-module__secondary-button .g-module-macros-btn,.siteheader-module__cta a{display:block;width:100%}.header-search__suggestions a:hover{background-color:#0000001a}.social-links-module{display:flex}.social-links-module .icon{padding:0}.social-links-module a{text-decoration:none}.btn-large{line-height:1.1875}.btn-link{clip-path:polygon(0 0,100% 0,100% 0px,100% 100%,0px 100%,0 calc(100% + -0px))!important;transition:all .2s linear}.btn-secondary1,.btn-secondary3{position:relative}.btn-secondary1:before,.btn-secondary1:after,.btn-secondary3:before,.btn-secondary3:after{content:"";position:absolute;border-style:solid;border-width:0;transition:border-width .2s linear}.btn-secondary1:before{bottom:0;left:0;border-color:transparent transparent var(--primary-color) var(--primary-color)}.btn-secondary1:after{top:0;right:0;border-color:var(--primary-color) var(--primary-color) transparent transparent}.btn-secondary3:before{bottom:0;left:0;border-color:transparent transparent var(--secondary2-color) var(--secondary2-color)}.btn-secondary3:after{top:0;right:0;border-color:var(--secondary2-color) var(--secondary2-color) transparent transparent}.btn-secondary1:hover,.btn-secondary3:hover{-webkit-clip-path:polygon(0 0,calc(100% - 19px) 0,100% 19px,100% 100%,19px 100%,0 calc(100% - 19px))!important;clip-path:polygon(0 0,calc(100% - 19px) 0,100% 19px,100% 100%,19px 100%,0 calc(100% - 19px))!important}.btn-primary:hover,.btn-secondary2:hover{-webkit-clip-path:polygon(0 0,calc(100% - 20px) 0,100% 20px,100% 100%,20px 100%,0 calc(100% - 20px))!important;clip-path:polygon(0 0,calc(100% - 20px) 0,100% 20px,100% 100%,20px 100%,0 calc(100% - 20px))!important}.btn-secondary1:hover:before,.btn-secondary3:hover:before,.btn-secondary1:hover:after,.btn-secondary3:hover:after{border-width:9px}.btn-primary svg,.btn-secondary3 svg{stroke:#fff}.btn-secondary1 svg,.btn-secondary2 svg{stroke:#171717}.listitem{align-items:baseline!important}.blog-recent-module__article-tags a,.blog-listing-module__article-tags a,.blog-related-module__article-tags a,.blog-recent-by-tag-module__article-tags a,.blog-post__tag-link{font-size:14px!important;font-weight:500;line-height:normal;background:var(--secondary2-color);padding:3px 5px}.blog-recent-by-tag-module__article-heading h3{margin-bottom:5px}.form-default .hs-form-field{align-self:flex-start}.form-default input,.form-default textarea,.form-default select{font-size:"20px"}.form-default .hs-error-msg,.form-default .hs-error-msgs .hs-main-font-element{font-size:"16px"!important}.form-default input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=button]):not([type=reset]):not([type=submit]),.form-default textarea,.form-default select{border-radius:0;border-top:0px none;border-right:0px none;border-bottom:1px solid #000;border-left:0px none}.form-default .hs_submit{text-align:left!important}.form-default :where(.form-columns-2,.form-columns-3){gap:normal 22px}:root{--shadow-color: rgb(154 161 177 / 30%);--shadow-sm: 0 1px 2px 0 var(--shadow-color);--shadow-md: 0 1px 3px 0 var(--shadow-color), 0 1px 2px -1px var(--shadow-color);--shadow-lg: 0 4px 6px -1px var(--shadow-color), 0 2px 4px -2px var(--shadow-color);--shadow-xl: 0 10px 15px -3px var(--shadow-color), 0 4px 6px -4px var(--shadow-color);--shadow-2xl: 0 20px 25px -5px var(--shadow-color), 0 8px 10px -6px var(--shadow-color);--ani-scale1x: scale(1.01);--ani-scale2x: scale(1.03);--ani-scale3x: scale(1.05);--ani-scale4x: scale(1.08);--ani-slideup1x: translateY(-4px);--ani-slideup2x: translateY(-8px);--ani-slideup3x: translateY(-12px)}@media (prefers-reduced-motion: no-preference){:root{--root-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--root-transition-duration: .15s}}.siteheader-module__button .g-module-macros-btn,.siteheader-module__secondary-button .g-module-macros-btn,.siteheader-module__cta a{display:inline-flex!important;gap:var(--root-button-icon-gap, .9ch)!important}.siteheader-module__main-nav .main-nav__list-item .main-nav__list--dropdown[data-bs-popper],.siteheader-module__main-nav .main-nav__list-item:last-child .main-nav__list--dropdown[data-bs-popper]{left:-5px;right:unset}.siteheader-module .header-search__form-btn{color:inherit}.siteheader-module .header-search__form-btn-icon{font-size:1.25rem}@media (min-width: 1200px){.siteheader-module__main-nav .main-nav__list-item .main-nav__list--dropdown[data-bs-popper],.siteheader-module__main-nav .main-nav__list-item:last-child .main-nav__list--dropdown[data-bs-popper]{left:8px}}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module{background-color:#efeae1;padding:30px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-logo{padding:6px 14px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__mobile-toggler{color:#666!important;order:2;padding:8px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__mobile-toggler-img{width:32px;height:32px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__button,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__secondary-button{padding-right:12px;padding-left:12px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list--dropdown{background-color:#fff;min-width:215px;border:1px none #CCCCCC;padding:10px;margin-top:20px;margin-bottom:20px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link{justify-content:flex-start;font-family:Albert Sans;font-style:normal;font-weight:500;text-decoration:none;color:#1d1d1d;font-size:20px;padding:12px 14px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list--sublevel .main-nav__list-item-link{font-size:18px;padding:7px 15px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl1:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl1.show,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl1.active,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl1.active-parent,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl2:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl2.active,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl3:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list-item-link--lvl3.active{color:#3b3b3bcc}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list{background-color:#fff;min-width:190px;border:1px solid #CCCCCC}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn{color:#1d1d1d;padding:16px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn.show,#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn.active,#hs_cos_wrapper_global-header-dndarea-module-2 .header-language-btn.active-parent{color:#3b3b3bcc}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list-item-link{color:#1d1d1d;font-size:14px;padding:10px 14px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list-item-link:hover,#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list-item-link.active{color:#3b3b3bcc}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn{background-color:#efeae1!important}@media (max-width: 1199.98px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-logo{text-align:LEFT}#hs_cos_wrapper_global-header-dndarea-module-2 .header-logo__image{width:200px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__main-nav,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__language,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__links,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__buttons,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__ctas{order:2}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__search{order:0}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__navbar{order:3}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module{flex-wrap:nowrap}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__navbar{display:flex!important;flex-direction:row;flex-wrap:wrap;align-content:center;justify-content:center;align-items:center}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__mobile-toggler{display:none}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__main-nav{flex-grow:1;display:flex;flex-direction:column;justify-content:center}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__links,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__buttons,#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__ctas{display:flex;flex-direction:row;align-items:center}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__main-nav{margin:0;padding:0;padding:px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__link{margin:0;padding:0}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__button{margin:0;padding:0 12px}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__cta{margin:0;padding:0}#hs_cos_wrapper_global-header-dndarea-module-2 .siteheader-module__secondary-button{margin:0;padding:0 12px}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list{flex-direction:row;align-items:center}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list--dropdown{position:absolute}#hs_cos_wrapper_global-header-dndarea-module-2 .main-nav__list--toplevel{justify-content:flex-end}#hs_cos_wrapper_global-header-dndarea-module-2 .header-language__list{position:absolute}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search_wrp{margin:0;padding:0}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search{position:relative;width:130px;height:44px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search.header-search--wide{width:124px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search.header-search--narrow{width:44px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form_wrp{position:absolute;top:0;right:0;width:100%;height:100%;z-index:1100;transition:width .3s ease-out;background:#fff;border:0px solid #EFEAE1}}@media (min-width: 1200px) and (prefers-reduced-motion: reduce){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form_wrp{transition:none}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--show .header-search__form_wrp{width:400px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form{height:100%;transition:box-shadow .15s ease-in-out}}@media (min-width: 1200px) and (prefers-reduced-motion: reduce){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form{transition:none}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-input{transition:box-shadow .15s ease-in-out;background:transparent;border:none;padding:4px 14px}}@media (min-width: 1200px) and (prefers-reduced-motion: reduce){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-input{transition:none}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--wide .header-search__form-input{padding-right:44px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn{position:absolute;right:0;transition:box-shadow .15s ease-in-out,background-color .15s ease-in-out;height:100%;display:flex;align-items:center;user-select:none;border:1px solid transparent;margin:0;padding:0}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn:not(.active):hover{border-color:transparent!important}}@media (min-width: 1200px) and (prefers-reduced-motion: reduce){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn{transition:none}}@media (min-width: 1200px){#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--wide .header-search__form-btn,#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--narrow .header-search__form-btn{width:44px}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__form-btn-icon{flex-grow:1}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search__suggestions{margin-left:22px;z-index:1110;width:80%}#hs_cos_wrapper_global-header-dndarea-module-2 .header-search--open .header-search__suggestions{border-top:0px solid #EFEAE1;padding-bottom:5px}#hs_cos_wrapper_global-header-dndarea-module-2 .open-search_wrp{overflow:hidden}}.button-group,.btn-block{justify-content:var(--scope-alignment)}.button-group{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;width:100%;gap:var(--custom-button-group-gap, var(--scope-content-gap))}.btn-block{flex-basis:100%;display:flex;flex-wrap:wrap}:where(.button-group .btn-full-width){width:100%}:where(.button-group .btn-link){gap:var(--root-button-icon-gap, .9ch)}:where(.button-group) :where(.btn-linkonly,.btn-customlink){--_macro-color: var(--scope-hover-color, var(--custom-color, var(--scope-color)));--_macro-hover-color: var(--scope-hover-color, var(--custom-hover-color, var(--scope-color)));color:var(--_macro-color, var(--color));transition-property:color;transition-duration:var(--root-transition-duration);transition-timing-function:var(--root-transition-timing-function)}:where(.button-group) :where(.btn-linkonly:hover,.btn-customlink:hover){color:var(--_macro-hover-color, var(--hover-color))}:where(.button-group a)>:where(svg,.btn-image){width:auto;height:var(--root-buttonlink-icon-size, 1.2em);fill:currentcolor}:where(.button-group .btn-link)>:where(svg,.btn-image){height:var(--root-button-icon-size, 1.4em)}:where(.button-group .btn-link.visually-hidden-text-wrp)>:where(svg,.btn-image){height:var(--root-button-onlyicon-size, 1em)}body.hidden-scroll{overflow:hidden}.sl-overlay{position:fixed;inset:0;background:#efeae1;display:none;z-index:1035}.sl-wrapper{z-index:1040;width:100%;height:100%;left:0;top:0;position:fixed}.sl-wrapper *{box-sizing:border-box}.sl-wrapper button{border:0 none;background:transparent;font-size:28px;padding:0;cursor:pointer}.sl-wrapper button:hover{opacity:.7}.sl-wrapper .sl-close{display:none;position:fixed;right:30px;top:30px;z-index:10060;margin-top:-14px;margin-right:-14px;height:44px;width:44px;line-height:44px;font-family:"Albert Sans" sans-serif;color:#000;font-size:3rem}.sl-wrapper .sl-counter{display:none;position:fixed;top:30px;left:30px;z-index:10060;color:#000;font-size:1rem}.sl-wrapper .sl-download{display:none;position:fixed;bottom:5px;width:100%;text-align:center;z-index:10060;color:#1d1d1d;font-size:1rem}.sl-wrapper .sl-download a{color:#1d1d1d}.sl-wrapper .sl-navigation{width:100%;display:none}.sl-wrapper .sl-navigation button{position:fixed;top:50%;margin-top:-22px;height:44px;width:22px;line-height:44px;text-align:center;display:block;z-index:10060;font-family:"Albert Sans" sans-serif;color:#000}.sl-wrapper .sl-navigation button.sl-next{right:5px;font-size:2rem}.sl-wrapper .sl-navigation button.sl-prev{left:5px;font-size:2rem}@media (min-width: 35.5em){.sl-wrapper .sl-navigation button{width:44px}.sl-wrapper .sl-navigation button.sl-next{right:10px;font-size:3rem}.sl-wrapper .sl-navigation button.sl-prev{left:10px;font-size:3rem}}@media (min-width: 50em){.sl-wrapper .sl-navigation button{width:44px}.sl-wrapper .sl-navigation button.sl-next{right:20px;font-size:3rem}.sl-wrapper .sl-navigation button.sl-prev{left:20px;font-size:3rem}}.sl-wrapper.sl-dir-rtl .sl-navigation{direction:ltr}.sl-wrapper .sl-image{position:fixed;-ms-touch-action:none;touch-action:none;z-index:10000}.sl-wrapper .sl-image img{margin:0;padding:0;display:block;border:0 none;width:100%;height:auto}@media (min-width: 35.5em){.sl-wrapper .sl-image img{border:0 none}}@media (min-width: 50em){.sl-wrapper .sl-image img{border:0 none}}.sl-wrapper .sl-image iframe{background:#000;border:0 none}@media (min-width: 35.5em){.sl-wrapper .sl-image iframe{border:0 none}}@media (min-width: 50em){.sl-wrapper .sl-image iframe{border:0 none}}.sl-wrapper .sl-image .sl-caption{display:none;padding:10px;color:#1d1d1d;background:#efeae1;font-size:1rem;position:absolute;bottom:0;left:0;right:0}.sl-wrapper .sl-image .sl-caption.pos-top{bottom:auto;top:0}.sl-wrapper .sl-image .sl-caption.pos-outside{bottom:auto}.sl-spinner{display:none;border:5px solid #333;border-radius:40px;height:40px;left:50%;margin:-20px 0 0 -20px;opacity:0;position:fixed;top:50%;width:40px;z-index:1007;-webkit-animation:pulsate 1s ease-out infinite;-moz-animation:pulsate 1s ease-out infinite;-ms-animation:pulsate 1s ease-out infinite;-o-animation:pulsate 1s ease-out infinite;animation:pulsate 1s ease-out infinite}.sl-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.sl-transition{transition:-moz-transform ease .2s;transition:-ms-transform ease .2s;transition:-o-transform ease .2s;transition:-webkit-transform ease .2s;transition:transform ease .2s}@-webkit-keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}@keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}@-moz-keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}@-o-keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}@-ms-keyframes pulsate{0%{transform:scale(.1);opacity:0}50%{opacity:1}to{transform:scale(1.2);opacity:0}}h1,h2,h3,h4,h5,h6,.xref,.text-break{word-wrap:break-word;word-break:break-word}.divider{margin:0 5px;color:#ccc}article span.small.pull-right{float:right}article img{max-width:100%;height:auto}.codewrapper{position:relative}.sample-response .response-content{max-height:200px}@media (width <= 768px){#mobile-indicator{display:block}.mobile-hide{display:none}h1:before,h2:before,h3:before,h4:before{content:"";display:none}}@media print{@page{margin:.4in}}.pdftoc ul{list-style:none}.pdftoc a{display:flex;text-decoration:none;color:var(--bs-body-color)}.pdftoc a .spacer{flex:1;border-bottom:1px dashed var(--bs-body-color);margin:.4em}@view-transition{navigation: auto;}@media (prefers-reduced-motion){@view-transition{navigation: none;}}html{overflow-y:scroll!important}:root{--bs-border-color: rgba(0, 0, 0, .7)}article table p{margin-bottom:0}.card{border:var(--bs-card-border-width) solid var(--bs-border-color)}.nav-tabs .nav-link{border:var(--bs-nav-tabs-border-width) solid var(--bs-border-color-translucent)}footer{background-color:#004c47;color:#fff;padding-top:110px;padding-bottom:55px}footer .heading{color:#fff}footer hr.divider-module__line{border-top-color:var(--secondary2-color)}footer .divider-module_wrp{padding-top:40px;padding-bottom:35px;height:0}footer .button-group{--scope-alignment: start;--scope-border-radius: 0;--scope-content-gap: 45px;--scope-border: none;--scope-border-width: 0px;--scope-shadow: var(--shadow-);--scope-padding-top: 0;--scope-padding-bottom: 15px}footer .row-number-1{padding-bottom:125px!important}footer .row-number-1 div:first-of-type{padding-bottom:7px}footer .row-number-1 div:nth-child(2){height:82px}footer .row-number-1 h2{margin:0}@media (max-width: 767px){footer{padding-top:60px!important}footer .divider-module_wrp{padding-top:20px!important;padding-bottom:20px!important}footer .row-number-1{gap:24px}footer .row-number-1 div:first-of-type{padding-bottom:10px}footer .row-number-1 div:nth-child(2){height:initial}.global-footer_wrp .row-number-3 .hs-menu-flow-horizontal ul[role=menu]{padding-bottom:40px!important}}footer .row-number-2{row-gap:24px}.global-footer_wrp ul[role=menu]{list-style:none;margin:0;padding:0}.global-footer_wrp a[role=menuitem]{text-decoration:none;font-size:28px;color:#fff}.global-footer_wrp a[role=menuitem]:hover,.global-footer_wrp a[role=menuitem]:focus{text-decoration:underline}.global-footer_wrp .row-number-2 a[role=menuitem],.global-footer_wrp .row-number-3 a[role=menuitem]{font-size:18px}.global-footer_wrp .hs-menu-flow-vertical a[role=menuitem]{padding:6px 0}.global-footer_wrp .hs-menu-flow-horizontal ul[role=menu]{display:flex;justify-content:flex-start;gap:30px}.global-footer_wrp .button-group svg{height:auto;width:auto}body>main,body[data-layout=landing]>main{padding-top:0}.siteheader-module_wrp{max-width:2240px!important;margin-left:auto!important;margin-right:auto!important}.siteheader-module__logo{height:70px}.siteheader-module__buttons a{font-size:18px}.siteheader-module__buttons svg{height:auto;width:auto}.siteheader-module__mobile-toggler{background-color:#efeae1!important}.actionbar{margin-top:0!important}.actionbar .btn{background-color:#efeae1!important}.btn-close{color:var(--bs-btn-close-color)!important;background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat!important}article{position:relative}article a{color:#337ab7;cursor:pointer;text-decoration:none}article div:has(iframe){margin-bottom:2rem}article h2,article h3,article h4,article h5,article h6{margin-top:2rem!important;margin-bottom:1rem!important}article .alert>h5{margin-top:0}article .alert>p,article .alert>ul{margin-bottom:0}article h1:first-of-type{margin-top:0;margin-bottom:1rem}article .conceptual-content h1:first-child,article .conceptual-content h2:first-child,article .conceptual-content h3:first-child,article .conceptual-content h4:first-child,article .conceptual-content h5:first-child,article .conceptual-content h6:first-child{margin-top:0!important}article code{background-color:#f1f2f3;color:#747474;white-space:pre-wrap}article .docnav{min-height:38px;margin-bottom:2rem}article #breadcrumb{min-height:21px;margin-bottom:2rem}.toc li.active>a{color:#337ab7}.toc form.filter>input{font-size:var(--hub-font-size-to-rem)}.affix h5{font-size:var(--hub-font-size-to-rem);padding-top:0}.affix nav .active{color:#337ab7}.affix nav ul ul{padding-left:1rem}#navbar{display:flex;flex-flow:row wrap;align-items:center;width:100%;gap:15px}#navbar a{background:var(--secondary2-color);border:1px solid var(--secondary2-color);font-size:18px!important;font-weight:500;line-height:normal;padding:7px 10px;color:#1d1d1d}#navbar a:not(.active){background:transparent}.typelist dt{border-bottom:solid 1px;font-weight:inherit!important;padding-bottom:.3rem}.typelist dd{margin-top:.3rem}.facts.text-secondary{color:inherit!important}.facts.text-secondary dt{font-weight:700}body[data-yaml-mime=ManagedReference] article h3[data-uid],body[data-yaml-mime=ApiPage] article h3[data-uid]{font-size:1.4rem}body[data-yaml-mime=ManagedReference] article h4.section,body[data-yaml-mime=ApiPage] article h4.section{font-size:1.2rem}span.parametername,span.paramref,span.typeparamref{font-style:italic}.document-metadata{margin-bottom:1rem}.emoji{font-weight:400;font-family:"apple color emoji","segoe ui emoji","noto color emoji","android emoji",emojisymbols,emojione mozilla,twemoji mozilla,segoe ui symbol,sans-serif}.metadata{display:flex;flex-wrap:wrap;list-style:none;margin:0!important;padding:.125rem 0 0!important;font-size:10px}.metadata>li:not(:last-of-type,:only-of-type):after{padding-left:5px;padding-right:5px;content:"\2022"}.global-footer_wrp .social-links-module{justify-content:right}@media (min-width: 992px){.global-footer_wrp .row .col-12:first-child .hs-menu-flow-horizontal ul[role=menu]{justify-content:flex-start}.global-footer_wrp .social-links-module{justify-content:right}}@media (max-width: 991.98px){.global-footer_wrp .hs-menu-flow-horizontal ul[role=menu]{justify-content:flex-start;flex-direction:column}}@media (max-width: 540px){footer .container{padding-left:20px!important;padding-right:20px!important}} /*! * Bootstrap v5.3.3 (https://getbootstrap.com/) * Copyright 2011-2024 The Bootstrap Authors diff --git a/templates/tabulareditor/public/main.css b/templates/tabulareditor/public/main.css index e69de29..606cfea 100644 --- a/templates/tabulareditor/public/main.css +++ b/templates/tabulareditor/public/main.css @@ -0,0 +1,57 @@ +.applies-to-edition { + display: inline-block; + position: relative; +} + +.applies-to-product { + display: inline-block; + position: relative; +} + +.applies-to-tooltip { + cursor: pointer; +} + +.applies-to { + display: inline-flex; + flex-wrap: wrap; + list-style: none; + margin: 0 !important; + padding: .5rem 0 0 !important +} + +.applies-to>li:not(:last-of-type, :only-of-type):after { + padding-left: 5px; + padding-right: 5px; + content: "\2022" +} + +.applies-to-tooltiptext { + visibility: hidden; + width: 240px; + background-color: #004c47; + color: #fff; + text-align: center; + border-radius: 6px; + padding: 5px 5px; + position: absolute; + z-index: 1; + top: 150%; + left: 50%; + margin-left: -120px; +} + +.applies-to-tooltiptext::after { + content: ""; + position: absolute; + bottom: 100%; + left: 50%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent transparent #004c47 transparent; +} + +.applies-to-tooltip:hover .applies-to-tooltiptext { + visibility: visible; +} \ No newline at end of file