From b16a56eda24ff6ac8e84d033662ddb4b989298a3 Mon Sep 17 00:00:00 2001 From: leandrom-humanforce Date: Thu, 13 Jul 2023 09:49:56 +1000 Subject: [PATCH] Attempt to replace MkDocs with Obsidian HTML Export --- Obsidian/Ways of Working.md | 58 - docs/1on1s.html | 76 + docs/ai.html | 51 + docs/angular-cli.html | 59 + docs/angular.html | 69 + docs/architecture.html | 55 + docs/asp.net.html | 52 + docs/aws.html | 214 + docs/azure.html | 50 + docs/batch-file.html | 75 + docs/bookmarks.html | 122 + docs/books.html | 65 + docs/career.html | 52 + docs/cli.html | 66 + docs/coaching.html | 49 + docs/coding-exercise.html | 105 + docs/community-of-practice.html | 97 + docs/conferences.html | 48 + docs/configuration.html | 136 + docs/contents.html | 48 + docs/continous-learning.html | 177 + docs/continuous-improvement.html | 130 + docs/css.html | 46 + docs/cve.html | 49 + docs/devcontainers.html | 83 + docs/development-environment-setup.html | 116 + docs/diagramsascode.html | 46 + docs/docker-desktop.html | 107 + docs/docker.html | 103 + docs/documentation.html | 56 + docs/dotnet-list-package.html | 57 + docs/effective-meetings.html | 48 + docs/email-templates.html | 171 + docs/entityframework.html | 75 + docs/featureflags.html | 83 + docs/frontend.html | 52 + docs/git.html | 97 + docs/goals.html | 62 + docs/google-calendar-api.html | 58 + docs/hackerone.html | 52 + docs/health-monitor.html | 126 + docs/high-performing-teams.html | 48 + docs/hiring.html | 50 + docs/host-file.html | 83 + docs/identityserver.html | 54 + docs/iis.html | 52 + docs/index.html | 51 + docs/infer%23.html | 57 + docs/interview.html | 86 + docs/jwt.html | 87 + docs/knowledge-sharing.html | 157 + docs/leadership.html | 48 + docs/lib/scripts/graph-render-worker.js | 356 + docs/lib/scripts/graph_view.js | 913 ++ docs/lib/scripts/graph_wasm.js | 3 + docs/lib/scripts/graph_wasm.wasm | Bin 0 -> 23377 bytes docs/lib/scripts/tinycolor.js | 1863 +++ docs/lib/scripts/webpage.js | 936 ++ docs/lib/styles/obsidian-styles.css | 2753 ++++ docs/lib/styles/plugin-styles.css | 733 + docs/lib/styles/snippets.css | 1 + docs/lib/styles/theme.css | 1 + docs/management.html | 65 + docs/metrics.html | 59 + docs/microsoft-application-inspector.html | 54 + docs/minimalapi.html | 49 + docs/nodejs.html | 55 + docs/nukebuild.html | 72 + docs/observability.html | 49 + docs/onboarding.html | 61 + docs/owasp-top-10.html | 49 + docs/playwright.html | 55 + docs/powershell.html | 53 + docs/psychological-safety.html | 46 + docs/quality.html | 108 + docs/redis.html | 57 + docs/reports.html | 81 + docs/secure-code-warriors.html | 49 + docs/security.html | 51 + docs/shareknowledgecampaign.html | 69 + docs/software-development-strategy.html | 244 + docs/sql-server.html | 234 + docs/ssl-certificate.html | 134 + docs/support.html | 61 + docs/team-building.html | 55 + docs/training.html | 65 + docs/troubleshooting.html | 88 + docs/tye.html | 214 + docs/visual-studio.html | 127 + docs/vscode.html | 86 + docs/ways-of-working.html | 67 + docs/wellbeing.html | 75 + docs/windows-terminal.html | 68 + docs/windows.html | 98 + docs/winget.html | 57 + docs/wiremocknet.html | 53 + .../assets/javascripts/bundle.39654835.min.js | 18 - .../javascripts/bundle.39654835.min.js.map | 8 - .../assets/javascripts/iconsearch_index.json | 1 - .../assets/stylesheets/main.82a244a8.min.css | 1 - .../stylesheets/main.82a244a8.min.css.map | 1 - mkdocs-overrides/blog.html | 7 - mkdocs-overrides/home.html | 26 - mkdocs-overrides/main.html | 19 - mkdocs-overrides/partials/content.html | 23 - mkdocs.yml | 147 - {Obsidian => src}/.NET Logging.md | 0 {Obsidian => src}/.NET Upgrade.md | 0 {Obsidian => src}/.NET.md | 0 {Obsidian => src}/.obsidian/app.json | 0 {Obsidian => src}/.obsidian/appearance.json | 0 src/.obsidian/community-plugins.json | 3 + .../.obsidian/core-plugins-migration.json | 0 {Obsidian => src}/.obsidian/core-plugins.json | 0 {Obsidian => src}/.obsidian/graph.json | 0 {Obsidian => src}/.obsidian/hotkeys.json | 0 .../plugins/webpage-html-export/data.json | 31 + .../plugins/webpage-html-export/main.js | 11899 ++++++++++++++++ .../plugins/webpage-html-export/manifest.json | 12 + .../plugins/webpage-html-export/styles.css | 45 + {Obsidian => src}/.obsidian/workspace.json | 68 +- {Obsidian => src}/1on1s.md | 0 {Obsidian => src}/AI.md | 0 {Obsidian => src}/ASP.NET.md | 0 {Obsidian => src}/AWS KMS.org | 0 {Obsidian => src}/AWS.md | 0 {Obsidian => src}/Angular CLI.md | 0 {Obsidian => src}/Angular.md | 0 {Obsidian => src}/Architecture.md | 0 {Obsidian => src}/Azure.md | 0 {Obsidian => src}/Batch File.md | 0 {Obsidian => src}/Books.md | 0 {Obsidian => src}/CLI.md | 0 {Obsidian => src}/CSS.md | 0 {Obsidian => src}/CVE.md | 0 {Obsidian => src}/Career.md | 0 {Obsidian => src}/Coaching.md | 0 {Obsidian => src}/Community Of Practice.md | 0 {Obsidian => src}/Conferences.md | 0 {Obsidian => src}/Configuration.md | 0 {Obsidian => src}/Continous Learning.md | 0 {Obsidian => src}/Continuous Improvement.md | 0 {Obsidian => src}/DevContainers.md | 0 .../Development Environment Setup.md | 0 {Obsidian => src}/DiagramsAsCode.md | 0 {Obsidian => src}/Docker Desktop.md | 0 {Obsidian => src}/Docker.md | 0 {Obsidian => src}/Documentation.md | 0 {Obsidian => src}/Effective Meetings.md | 0 {Obsidian => src}/Email Templates.md | 0 {Obsidian => src}/EntityFramework.md | 0 {Obsidian => src}/FeatureFlags.md | 0 {Obsidian => src}/Frontend.md | 0 {Obsidian => src}/Git.md | 0 {Obsidian => src}/Goals.md | 0 src/Google Calendar API.md | 19 + {Obsidian => src}/HTTP Client.org | 0 {Obsidian => src}/HackerOne.md | 0 {Obsidian => src}/Health Monitor.md | 0 {Obsidian => src}/High Performing Teams.md | 0 {Obsidian => src}/Hiring.md | 0 {Obsidian => src}/Host File.md | 0 {Obsidian => src}/IIS.md | 0 {Obsidian => src}/IdentityServer.md | 0 {Obsidian => src}/Incident Management.org | 0 {Obsidian => src}/Index.md | 0 {Obsidian => src}/Infer%23.md | 0 {Obsidian => src}/Interview.md | 0 {Obsidian => src}/JWT.md | 0 {Obsidian => src}/Knowledge Sharing.md | 0 {Obsidian => src}/Leadership.md | 0 {Obsidian => src}/Management.md | 0 {Obsidian => src}/Metrics.md | 0 .../Microsoft Application Inspector.md | 0 {Obsidian => src}/MinimalAPI.md | 0 {Obsidian => src}/Modernization.org | 0 {Obsidian => src}/NodeJS.md | 0 {Obsidian => src}/NuGet.org | 0 {Obsidian => src}/NukeBuild.md | 0 {Obsidian => src}/OWASP TOP 10.md | 0 {Obsidian => src}/Observability.md | 0 {Obsidian => src}/Onboarding.md | 0 {Obsidian => src}/Playwright.md | 0 {Obsidian => src}/Powershell.md | 0 {Obsidian => src}/Psychological Safety.md | 0 {Obsidian => src}/Quality.md | 0 .../RU102N Redis for .NET Developers.org | 0 {Obsidian => src}/Redis.md | 0 {Obsidian => src}/SSL Certificate.md | 0 {Obsidian => src}/Secure Code Warriors.md | 0 {Obsidian => src}/Security.md | 0 {Obsidian => src}/ShareKnowledgeCampaign.md | 0 .../Software Development Strategy.md | 0 {Obsidian => src}/Sql Server.md | 0 {Obsidian => src}/Team Building.md | 0 {Obsidian => src}/Training.md | 0 {Obsidian => src}/Troubleshooting.md | 0 {Obsidian => src}/Tye.md | 0 {Obsidian => src}/VSCode.md | 0 {Obsidian => src}/Visual Studio.md | 0 src/Ways of Working.md | 38 + {Obsidian => src}/Wellbeing.md | 0 {Obsidian => src}/WinGet.md | 0 {Obsidian => src}/Windows Terminal.md | 0 {Obsidian => src}/Windows.md | 0 {Obsidian => src}/WireMockNet.md | 0 {Obsidian => src}/bookmarks.md | 0 {Obsidian => src}/coding-exercise.md | 0 {Obsidian => src}/contents.md | 0 {Obsidian => src}/dotnet list package.md | 0 {Obsidian => src}/reports.md | 0 {Obsidian => src}/support.md | 0 212 files changed, 26504 insertions(+), 343 deletions(-) delete mode 100644 Obsidian/Ways of Working.md create mode 100644 docs/1on1s.html create mode 100644 docs/ai.html create mode 100644 docs/angular-cli.html create mode 100644 docs/angular.html create mode 100644 docs/architecture.html create mode 100644 docs/asp.net.html create mode 100644 docs/aws.html create mode 100644 docs/azure.html create mode 100644 docs/batch-file.html create mode 100644 docs/bookmarks.html create mode 100644 docs/books.html create mode 100644 docs/career.html create mode 100644 docs/cli.html create mode 100644 docs/coaching.html create mode 100644 docs/coding-exercise.html create mode 100644 docs/community-of-practice.html create mode 100644 docs/conferences.html create mode 100644 docs/configuration.html create mode 100644 docs/contents.html create mode 100644 docs/continous-learning.html create mode 100644 docs/continuous-improvement.html create mode 100644 docs/css.html create mode 100644 docs/cve.html create mode 100644 docs/devcontainers.html create mode 100644 docs/development-environment-setup.html create mode 100644 docs/diagramsascode.html create mode 100644 docs/docker-desktop.html create mode 100644 docs/docker.html create mode 100644 docs/documentation.html create mode 100644 docs/dotnet-list-package.html create mode 100644 docs/effective-meetings.html create mode 100644 docs/email-templates.html create mode 100644 docs/entityframework.html create mode 100644 docs/featureflags.html create mode 100644 docs/frontend.html create mode 100644 docs/git.html create mode 100644 docs/goals.html create mode 100644 docs/google-calendar-api.html create mode 100644 docs/hackerone.html create mode 100644 docs/health-monitor.html create mode 100644 docs/high-performing-teams.html create mode 100644 docs/hiring.html create mode 100644 docs/host-file.html create mode 100644 docs/identityserver.html create mode 100644 docs/iis.html create mode 100644 docs/index.html create mode 100644 docs/infer%23.html create mode 100644 docs/interview.html create mode 100644 docs/jwt.html create mode 100644 docs/knowledge-sharing.html create mode 100644 docs/leadership.html create mode 100644 docs/lib/scripts/graph-render-worker.js create mode 100644 docs/lib/scripts/graph_view.js create mode 100644 docs/lib/scripts/graph_wasm.js create mode 100644 docs/lib/scripts/graph_wasm.wasm create mode 100644 docs/lib/scripts/tinycolor.js create mode 100644 docs/lib/scripts/webpage.js create mode 100644 docs/lib/styles/obsidian-styles.css create mode 100644 docs/lib/styles/plugin-styles.css create mode 100644 docs/lib/styles/snippets.css create mode 100644 docs/lib/styles/theme.css create mode 100644 docs/management.html create mode 100644 docs/metrics.html create mode 100644 docs/microsoft-application-inspector.html create mode 100644 docs/minimalapi.html create mode 100644 docs/nodejs.html create mode 100644 docs/nukebuild.html create mode 100644 docs/observability.html create mode 100644 docs/onboarding.html create mode 100644 docs/owasp-top-10.html create mode 100644 docs/playwright.html create mode 100644 docs/powershell.html create mode 100644 docs/psychological-safety.html create mode 100644 docs/quality.html create mode 100644 docs/redis.html create mode 100644 docs/reports.html create mode 100644 docs/secure-code-warriors.html create mode 100644 docs/security.html create mode 100644 docs/shareknowledgecampaign.html create mode 100644 docs/software-development-strategy.html create mode 100644 docs/sql-server.html create mode 100644 docs/ssl-certificate.html create mode 100644 docs/support.html create mode 100644 docs/team-building.html create mode 100644 docs/training.html create mode 100644 docs/troubleshooting.html create mode 100644 docs/tye.html create mode 100644 docs/visual-studio.html create mode 100644 docs/vscode.html create mode 100644 docs/ways-of-working.html create mode 100644 docs/wellbeing.html create mode 100644 docs/windows-terminal.html create mode 100644 docs/windows.html create mode 100644 docs/winget.html create mode 100644 docs/wiremocknet.html delete mode 100644 mkdocs-overrides/assets/javascripts/bundle.39654835.min.js delete mode 100644 mkdocs-overrides/assets/javascripts/bundle.39654835.min.js.map delete mode 100644 mkdocs-overrides/assets/javascripts/iconsearch_index.json delete mode 100644 mkdocs-overrides/assets/stylesheets/main.82a244a8.min.css delete mode 100644 mkdocs-overrides/assets/stylesheets/main.82a244a8.min.css.map delete mode 100644 mkdocs-overrides/blog.html delete mode 100644 mkdocs-overrides/home.html delete mode 100644 mkdocs-overrides/main.html delete mode 100644 mkdocs-overrides/partials/content.html delete mode 100644 mkdocs.yml rename {Obsidian => src}/.NET Logging.md (100%) rename {Obsidian => src}/.NET Upgrade.md (100%) rename {Obsidian => src}/.NET.md (100%) rename {Obsidian => src}/.obsidian/app.json (100%) rename {Obsidian => src}/.obsidian/appearance.json (100%) create mode 100644 src/.obsidian/community-plugins.json rename {Obsidian => src}/.obsidian/core-plugins-migration.json (100%) rename {Obsidian => src}/.obsidian/core-plugins.json (100%) rename {Obsidian => src}/.obsidian/graph.json (100%) rename {Obsidian => src}/.obsidian/hotkeys.json (100%) create mode 100644 src/.obsidian/plugins/webpage-html-export/data.json create mode 100644 src/.obsidian/plugins/webpage-html-export/main.js create mode 100644 src/.obsidian/plugins/webpage-html-export/manifest.json create mode 100644 src/.obsidian/plugins/webpage-html-export/styles.css rename {Obsidian => src}/.obsidian/workspace.json (79%) rename {Obsidian => src}/1on1s.md (100%) rename {Obsidian => src}/AI.md (100%) rename {Obsidian => src}/ASP.NET.md (100%) rename {Obsidian => src}/AWS KMS.org (100%) rename {Obsidian => src}/AWS.md (100%) rename {Obsidian => src}/Angular CLI.md (100%) rename {Obsidian => src}/Angular.md (100%) rename {Obsidian => src}/Architecture.md (100%) rename {Obsidian => src}/Azure.md (100%) rename {Obsidian => src}/Batch File.md (100%) rename {Obsidian => src}/Books.md (100%) rename {Obsidian => src}/CLI.md (100%) rename {Obsidian => src}/CSS.md (100%) rename {Obsidian => src}/CVE.md (100%) rename {Obsidian => src}/Career.md (100%) rename {Obsidian => src}/Coaching.md (100%) rename {Obsidian => src}/Community Of Practice.md (100%) rename {Obsidian => src}/Conferences.md (100%) rename {Obsidian => src}/Configuration.md (100%) rename {Obsidian => src}/Continous Learning.md (100%) rename {Obsidian => src}/Continuous Improvement.md (100%) rename {Obsidian => src}/DevContainers.md (100%) rename {Obsidian => src}/Development Environment Setup.md (100%) rename {Obsidian => src}/DiagramsAsCode.md (100%) rename {Obsidian => src}/Docker Desktop.md (100%) rename {Obsidian => src}/Docker.md (100%) rename {Obsidian => src}/Documentation.md (100%) rename {Obsidian => src}/Effective Meetings.md (100%) rename {Obsidian => src}/Email Templates.md (100%) rename {Obsidian => src}/EntityFramework.md (100%) rename {Obsidian => src}/FeatureFlags.md (100%) rename {Obsidian => src}/Frontend.md (100%) rename {Obsidian => src}/Git.md (100%) rename {Obsidian => src}/Goals.md (100%) create mode 100644 src/Google Calendar API.md rename {Obsidian => src}/HTTP Client.org (100%) rename {Obsidian => src}/HackerOne.md (100%) rename {Obsidian => src}/Health Monitor.md (100%) rename {Obsidian => src}/High Performing Teams.md (100%) rename {Obsidian => src}/Hiring.md (100%) rename {Obsidian => src}/Host File.md (100%) rename {Obsidian => src}/IIS.md (100%) rename {Obsidian => src}/IdentityServer.md (100%) rename {Obsidian => src}/Incident Management.org (100%) rename {Obsidian => src}/Index.md (100%) rename {Obsidian => src}/Infer%23.md (100%) rename {Obsidian => src}/Interview.md (100%) rename {Obsidian => src}/JWT.md (100%) rename {Obsidian => src}/Knowledge Sharing.md (100%) rename {Obsidian => src}/Leadership.md (100%) rename {Obsidian => src}/Management.md (100%) rename {Obsidian => src}/Metrics.md (100%) rename {Obsidian => src}/Microsoft Application Inspector.md (100%) rename {Obsidian => src}/MinimalAPI.md (100%) rename {Obsidian => src}/Modernization.org (100%) rename {Obsidian => src}/NodeJS.md (100%) rename {Obsidian => src}/NuGet.org (100%) rename {Obsidian => src}/NukeBuild.md (100%) rename {Obsidian => src}/OWASP TOP 10.md (100%) rename {Obsidian => src}/Observability.md (100%) rename {Obsidian => src}/Onboarding.md (100%) rename {Obsidian => src}/Playwright.md (100%) rename {Obsidian => src}/Powershell.md (100%) rename {Obsidian => src}/Psychological Safety.md (100%) rename {Obsidian => src}/Quality.md (100%) rename {Obsidian => src}/RU102N Redis for .NET Developers.org (100%) rename {Obsidian => src}/Redis.md (100%) rename {Obsidian => src}/SSL Certificate.md (100%) rename {Obsidian => src}/Secure Code Warriors.md (100%) rename {Obsidian => src}/Security.md (100%) rename {Obsidian => src}/ShareKnowledgeCampaign.md (100%) rename {Obsidian => src}/Software Development Strategy.md (100%) rename {Obsidian => src}/Sql Server.md (100%) rename {Obsidian => src}/Team Building.md (100%) rename {Obsidian => src}/Training.md (100%) rename {Obsidian => src}/Troubleshooting.md (100%) rename {Obsidian => src}/Tye.md (100%) rename {Obsidian => src}/VSCode.md (100%) rename {Obsidian => src}/Visual Studio.md (100%) create mode 100644 src/Ways of Working.md rename {Obsidian => src}/Wellbeing.md (100%) rename {Obsidian => src}/WinGet.md (100%) rename {Obsidian => src}/Windows Terminal.md (100%) rename {Obsidian => src}/Windows.md (100%) rename {Obsidian => src}/WireMockNet.md (100%) rename {Obsidian => src}/bookmarks.md (100%) rename {Obsidian => src}/coding-exercise.md (100%) rename {Obsidian => src}/contents.md (100%) rename {Obsidian => src}/dotnet list package.md (100%) rename {Obsidian => src}/reports.md (100%) rename {Obsidian => src}/support.md (100%) diff --git a/Obsidian/Ways of Working.md b/Obsidian/Ways of Working.md deleted file mode 100644 index 9f637127b..000000000 --- a/Obsidian/Ways of Working.md +++ /dev/null @@ -1,58 +0,0 @@ -[Ways of Working ideas](https://www.atlassian.com/practices) - -# Project Planning - -* [Scrum Framework](https://www.youtube.com/watch?v=zVNnEIf_PLY) -* [Atlassian's Agile Coach](https://www.atlassian.com/agile) - -# Capacity Planning - -Read: https://stackoverflow.com/questions/30833844/get-holidays-list-of-a-country-from-google-calendar-api - -## API Key - -1. Open [Google Cloud Console](https://console.cloud.google.com/apis/dashboard?project=publicholidays-361300&organizationId=0&show=all) -2. Create Project -3. Click on ```Credentials``` -4. Click on ```Create Credentials``` -> ```API key``` - -Public Holidays - -- https://www.googleapis.com/calendar/v3/calendars/en.australian%23holiday%40group.v.calendar.google.com/events?key=[KEY] -- https://www.googleapis.com/calendar/v3/calendars/en.pk%23holiday%40group.v.calendar.google.com/events?key=[KEY] -- https://www.googleapis.com/calendar/v3/calendars/en.russian%23holiday%40group.v.calendar.google.com/events?key=[KEY] -- https://www.googleapis.com/calendar/v3/calendars/en.philippines%23holiday%40group.v.calendar.google.com/events?key=[KEY] - -Time Off - -- https://www.googleapis.com/calendar/v3/calendars/sag7h8fj2dckgplug57ttqug10@group.calendar.google.com/events?key=[KEY] - - - -# Definition of Ready (DOR) - -* Independent (of all others). -* Negotiable (not a specific contract for features). -* Valuable (or vertical). -* Estimable (to a good approximation). -* Small (so as to fit within an iteration). -* Testable (in principle, even if there isn’t a test for it yet). - -# Definition of Done (DOD) - -The Definition of Done creates transparency by providing everyone a shared understanding of what work was completed. - -* Unit tests are passing. -* Automation tests are passing. -* Documentation is updated. -* The change is code reviewed via a pull request. -* Code is merged into the main branch. -* Testing is done by Testers. - -# Managing Risks, Assumptions, Impediments, and Dependencies - -https://www.techagilist.com/agile/scrum/raid/ - -# Strategy -* [Objectives](https://github.com/leandromonaco/Documentation/blob/main/software-development-objectives.md) -* [Development Strategy](https://github.com/leandromonaco/Documentation/blob/main/software-development-strategy.md) diff --git a/docs/1on1s.html b/docs/1on1s.html new file mode 100644 index 000000000..70e32c0e6 --- /dev/null +++ b/docs/1on1s.html @@ -0,0 +1,76 @@ + + + + 1on1s + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1on1s

Performance

    +
  1. What was your biggest highlight or proudest achievement in the past 6 months?
  2. +
  3. What were the main objectives that you wanted to accomplish?
  4. +
  5. Do you feel recognised for your good work?
  6. +
  7. Do you feel like you are using your strengths to their best abilities in your role?
  8. +
  9. Is there anything you’ve worked on that you don’t like doing?
  10. +
  11. How do you feel about communication within the team? Are there any areas or processes you think can be improved on?
  12. +

Roadblocks and challenges

    +
  1. What was your greatest challenge or concern in the past 6 months?
  2. +
  3. Do you think it was resolved to your satisfaction, or can more be done?
  4. +
  5. What did you learn from overcoming the challenge(s)?
  6. +
  7. Do you feel like you have enough resources to support you in your role?
  8. +
  9. Do you anticipate any upcoming challenges in the next 6 months?
  10. +

Happiness

    +
  1. What is your current Happiness Score between 0-10, and why?
  2. +
  3. Is there anything that is making you feel frustrated or upset in your role?
  4. +
  5. How has your work/life balance been, and are you seeking any additional support in this area?
  6. +

Learning and development

    +
  1. Is there anything you’d like to work on that you’re not currently doing?
  2. +
  3. What’s one new skill you’d like to improve on over the next 6 months?
  4. +
  5. Are you satisfied with the current upskill opportunities provided, or do you have a specific course in mind that’s not currently available to you?
  6. +

Management

    +
  1. What can I do as your manager to support you in achieving your goals?
  2. +
  3. Do you think I’ve been responsive and helpful enough to your questions and requests?
  4. +
  5. Do you like my management style? If not, what management style do you think you would best respond to?
  6. +

Moving forward

    +
  1. What are your goals for the rest of the year?
  2. +
  3. How can we measure the success of those goals?
  4. +
  5. Let’s plan out three key action steps we can focus on for the rest of the year.
  6. +
  7. Is there anything else that you’d like to discuss
  8. +
\ No newline at end of file diff --git a/docs/ai.html b/docs/ai.html new file mode 100644 index 000000000..03b2863a4 --- /dev/null +++ b/docs/ai.html @@ -0,0 +1,51 @@ + + + + AI + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/angular-cli.html b/docs/angular-cli.html new file mode 100644 index 000000000..6684abcb9 --- /dev/null +++ b/docs/angular-cli.html @@ -0,0 +1,59 @@ + + + + Angular CLI + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Angular CLI
    +
  • +
    +

    Warning
    +The latest NodeJS version is recommended

    +
    +
  • +
  • +
      +
    1. Run npm install -g @angular/cli@13.3.10 or npm install -g @angular/cli@latest
    2. +
    3. Run ng --version
    4. +
    +
  • +
\ No newline at end of file diff --git a/docs/angular.html b/docs/angular.html new file mode 100644 index 000000000..70045df5e --- /dev/null +++ b/docs/angular.html @@ -0,0 +1,69 @@ + + + + Angular + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Training

Introduction to Angular: Codelab | Video

Tools

    +
  1. Angular CLI
  2. +
  3. Install Angular Language Service for VS Code code --install-extension angular.ng-template
  4. +

Create a new Angular App

    +
  1. Run ng new NewApp.UI --strict false
  2. +
  3. Would you like to add Angular routing? Yes
  4. +
  5. Which stylesheet format would you like to use? CSS
  6. +
  7. Navigate to the NewApp.UI folder
  8. +
  9. Run ng serve (Angular Development Server)
  10. +

Build.bat File Example

cd C:\Dev\AngularApp1
+call npm ci
+call ng build
+
+cd C:\Dev\AngularApp2
+call npm ci
+call ng build
+

Running locally

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module.

Build

Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the -prod flag for a production build.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor.

Install Dependencies

Run npm install

By default, it will install all modules listed as dependencies in the package.json file.

Generate Library

    +
  1. ng new my-workspace --no-create-application
  2. +
  3. cd my-workspace
  4. +
  5. ng generate library my-lib
  6. +

Generate Component

ng generate component user-card

WindowsTerminal_Rd9hoeuAXP

Documentation

\ No newline at end of file diff --git a/docs/architecture.html b/docs/architecture.html new file mode 100644 index 000000000..7f5daf3dd --- /dev/null +++ b/docs/architecture.html @@ -0,0 +1,55 @@ + + + + Architecture + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/asp.net.html b/docs/asp.net.html new file mode 100644 index 000000000..b5363d441 --- /dev/null +++ b/docs/asp.net.html @@ -0,0 +1,52 @@ + + + + ASP.NET + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/aws.html b/docs/aws.html new file mode 100644 index 000000000..831bb163b --- /dev/null +++ b/docs/aws.html @@ -0,0 +1,214 @@ + + + + AWS + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AWS

Tools

Upgrade

    +
  • winget upgrade -e --id Amazon.SAM-CLI
  • +
  • sam --version
  • +
  • winget upgrade -e --id Amazon.AWSCLI
  • +
  • aws --version
  • +
  • npm upgrade -g aws-cdk
  • +
  • cdk --version
  • +
  • dotnet tool update -g Amazon.Lambda.Tools
  • +

Credentials

    +
  1. Run aws configure
  2. +
  3. AWS Access Key ID: test
  4. +
  5. AWS Secret Access Key: test
  6. +
  7. Default region name: ap-southeast-2
  8. +
  9. Default output format: json
  10. +
  11. Run aws configure list to verify the newly configured credentials (stored in C:\Users\{USER}\.aws\credentials)
  12. +

AWS CDK

Commands

    +
  • mkdir CDK
  • +
  • CD CDK
  • +
  • cdk init app --language csharp
  • +
  • dotnet build src compile this app
  • +
  • cdk deploy deploy this stack to your default AWS account/region
  • +
  • cdk diff compare deployed stack with current state
  • +
  • cdk synth emits the synthesized CloudFormation template
  • +

The cdk.json file tells the CDK Toolkit how to execute your app.


Documentation

SAM CLI

Commands

    +
  • sam init image
  • +

Documentation

AWS CLI

Commands

    +
  • aws --endpoint-url=http://localhost:4566 dynamodb create-table --table-name ServiceName_Setting --attribute-definitions AttributeName=TenantId,AttributeType=S --key-schema AttributeName=TenantId,KeyType=HASH --billing-mode PAY_PER_REQUEST
  • +
  • aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name sample-queue2
  • +
  • aws --endpoint-url=http://localhost:4566 kms --region ap-southeast-2 create-key --tags TagKey=Purpose,TagValue=Test --description "Development test key"
  • +
  • aws --endpoint-url=http://localhost:4566 kms encrypt --region ap-southeast-2 --key-id 1cc95196-acb1-4279-9063-a3daa3d9a20d --plaintext fileb://C:\TEMP\connectionstring.txt
  • +

Documentation

Moto

Documentation

LocalStack

Installation

    +
  1. Run winget install -e --id Python.Python.3
  2. +
  3. Install pip py -m ensurepip --upgrade
  4. +
  5. Install Docker winget install -e --id Docker.DockerDesktop
  6. +
  7. Go to -> "start" and type "Manage App Execution Aliases". Go to it and turn off "Python"
  8. +
  9. Install LocalStack Cockpit
  10. +
  11. Install localstack-cli pip install localstack and check version `localstack --version``
  12. +
  13. Browse http://localhost:4566/ and http://localhost:4566/health to test the setup
  14. +

Usage: aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name myQueue

Documentation

Environment Variables

AWS_DEFAULT_REGION=ap-southeast-2
+SERVICES=s3,sns,kms,sqs,lambda,dynamodb,iam,serverless,ecr,sts,ssm,logs
+DYNAMODB_SHARE_DB=1
+PERSIST_ALL=1
+USE_SINGLE_REGION=true
+LAMBDA_EXECUTOR=docker
+LAMBDA_REMOTE_DOCKER=true
+LAMBDA_REMOVE_CONTAINERS=true
+DEBUG=1
+DATA_DIR=/tmp/localstack/data
+LOCALSTACK_HOSTNAME=localhost
+LOCALSTACK_API_KEY=[Insert PRO Version Key]
+

DynamoDB

Commands

    +
  • aws --endpoint-url=http://localhost:4566 dynamodb list-tables
  • +
  • aws --endpoint-url=http://localhost:4566 dynamodb create-table --table-name DEV_Settings_TEMP22 --attribute-definitions AttributeName=InstanceId,AttributeType=S AttributeName=SettingA,AttributeType=N --key-schema AttributeName=InstanceId,KeyType=HASH AttributeName=SettingA,KeyType=RANGE --billing-mode PAY_PER_REQUEST
  • +

NoSQL Workbench

    +
  1. Open NoSQL Workbench
  2. +
  3. Add Connection
  4. +
  5. Click "DynamoDB Local"
  6. +
  7. Hostname: localhost | Port: 8000
  8. +

Documentation

Lambda

    +
  • dotnet new lambda.EmptyFunction --help
  • +

Create Lambda Function

    +
  • Install DotNet Lambda templates dotnet new -i Amazon.Lambda.Templates
  • +
  • Install dotnet tool install -g Amazon.Lambda.Tools
  • +
  • List templates dotnet new --list
  • +
  • Run dotnet new serverless.AspNetCoreMinimalAPI --name MinimalApi
  • +
  • dotnet build
  • +
  • dotnet publish -c Release -o publish p:PublishReadyToRun=false
  • +
  • zip content of the .\publish\ folder (function.zip)
  • +

Create Deployment Package

    +
  1. Create Cdk folder and run cdk init app --language=csharp
  2. +
  3. configure deployment settings (CdkStack.cs)
  4. +
// The code that defines your stack goes here
+var lambda = new Function(this, "MinimalApiNet6", new FunctionProps
+{
+  Runtime = Runtime.DOTNET_6,
+  Code = Code.FromAsset("../MinimalApi/bin/Debug/net6.0"),
+  Handler = "MinimalApi",
+  FunctionName = "minimalApiNet6"
+});
+
+var api = new LambdaRestApi(this, "APIGatewayNet6", new LambdaRestApiProps
+{
+  RestApiName = "APIGatewayNet6",
+  Description = "A simple Minimal API with .NET 6",
+  Handler = lambda
+}); 
+
    +
  1. Emit the synthesized CloudFormation template cdk synth
  2. +

Test with LocalStack

    +
  1. Add Environment Variable EDGE_PORT=52005 (custom LocalStack port number)
  2. +
  3. cdklocal init app --language=csharp
  4. +
  5. Change Stack.cs file
  6. +
  7. cdklocal synth -v (this must be run where the cdk.json file is located. It creates the cdk.out folder)
  8. +
  9. cdklocal bootstrap --profile default (if you get "Unable to resolve AWS account to use." make sure the localstack service is running http://localhost:4566/health)
  10. +
  11. cdklocal deploy -v
  12. +
  13. Test endpoint using Postmanimage
  14. +

Documentation

Cognito

Commands

    +
  • aws --endpoint-url=http://localhost:9229 cognito-idp create-user-pool-client --user-pool-id "user-pool-test" --client-name "client-test2222" --generate-secret --allowed-o-auth-flows client_credentials --explicit-auth-flows "ALLOW_USER_PASSWORD_AUTH" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"
  • +
  • aws --endpoint-url=http://localhost:9229 cognito-idp list-user-pool-clients --user-pool-id "user-pool-test"
  • +
  • aws --endpoint-url=http://localhost:9229 cognito-idp admin-create-user --user-pool-id "user-pool-test" --username "testuser" --temporary-password "testpassword" --user-attributes Name=email,Value=testuser@humanforce.com Name=phone_number,Value="+61455587898"
  • +
  • aws --endpoint-url=http://localhost:9229 cognito-idp admin-set-user-password --user-pool-id "user-pool-test" --username testuser --password "testpassword"--permanent
  • +
  • aws --endpoint-url=http://localhost:9229 cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=testuser,PASSWORD=testpassword --client-id 2xtkp25fbng4z7hquw2p44mzx
  • +

Documentation

Cloud Formation

Commands

    +
  • awslocal lambda list-functions
  • +
  • awslocal lambda invoke --function-name helloLambda --cli-binary-format raw-in-base64-out response.json --log-type Tail
  • +
  • awslocal lambda delete-function --function-name helloLambda
  • +
  • awslocal apigatewayv2 get-apis
  • +

.NET Lambda Tools

Commands
+dotnet-lambda --help

Documentation

Reference Material

\ No newline at end of file diff --git a/docs/azure.html b/docs/azure.html new file mode 100644 index 000000000..e80fbab1d --- /dev/null +++ b/docs/azure.html @@ -0,0 +1,50 @@ + + + + Azure + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Azure
    +
  • +

    Tools

    +
  • +

winget install -e --id Microsoft.AzureCLI

\ No newline at end of file diff --git a/docs/batch-file.html b/docs/batch-file.html new file mode 100644 index 000000000..69ac8d4da --- /dev/null +++ b/docs/batch-file.html @@ -0,0 +1,75 @@ + + + + Batch File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Batch File

Example with Angular CLI

    +
  • +
  • AngularParallelBuild.bat
  • +
  • +
    start AngularBuild.bat C:\Dev\App1
    +start AngularBuild.bat C:\Dev\App2
    +start AngularBuild.bat C:\Dev\App3
    +start AngularBuild.bat C:\Dev\App3
    +
    +
  • +
  • +
  • AngularBuild.bat
  • +
  • +
    cd %1  
    +ECHO Removing node_modules folder  
    +RMDIR /s /q node_modules  
    +ECHO Building Angular App  
    +call npm cache clean -f  
    +call npm install  
    +call npm ci  
    +call ng build  
    +ECHO Build Finished  
    +
    +
  • +
\ No newline at end of file diff --git a/docs/bookmarks.html b/docs/bookmarks.html new file mode 100644 index 000000000..5df56c948 --- /dev/null +++ b/docs/bookmarks.html @@ -0,0 +1,122 @@ + + + + bookmarks + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bookmarks

News

2021

Learning

Agile

Monorepo

Performance

Project Management

Security

Developer Productivity

Certifications

Code Reviews

Code Quality

Deployment

Documentation and Knowledge Sharing

Architecture

Management

Feedback

Incident Management

People Management

Time Management

Turnover

\ No newline at end of file diff --git a/docs/books.html b/docs/books.html new file mode 100644 index 000000000..0f4ef84b8 --- /dev/null +++ b/docs/books.html @@ -0,0 +1,65 @@ + + + + Books + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/career.html b/docs/career.html new file mode 100644 index 000000000..c142a3239 --- /dev/null +++ b/docs/career.html @@ -0,0 +1,52 @@ + + + + Career + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/cli.html b/docs/cli.html new file mode 100644 index 000000000..7edce75be --- /dev/null +++ b/docs/cli.html @@ -0,0 +1,66 @@ + + + + CLI + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Documentation

Package

Code Example

var userIdArgument = new Option<Guid>(name: "--userId", description: "User ID", getDefaultValue: () => Guid.Empty);
+var passwordArgument = new Option<string>("--password", "New Password");
+
+var rootCommand = new RootCommand();
+rootCommand.Add(userIdArgument);
+rootCommand.Add(passwordArgument);
+
+Action<Guid, string> ConsoleAppRunner = (userIdValue, passwordValue) =>
+{
+    ConsoleAppHelper.ResetPassword(userIdValue, passwordValue);
+    Console.ReadLine();
+};
+
+rootCommand.SetHandler(ConsoleAppRunner, userIdArgument, passwordArgument);
+
+await rootCommand.InvokeAsync(args);
+

Publish CLI Tool

TBA

\ No newline at end of file diff --git a/docs/coaching.html b/docs/coaching.html new file mode 100644 index 000000000..294c4450e --- /dev/null +++ b/docs/coaching.html @@ -0,0 +1,49 @@ + + + + Coaching + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/coding-exercise.html b/docs/coding-exercise.html new file mode 100644 index 000000000..7d31438e2 --- /dev/null +++ b/docs/coding-exercise.html @@ -0,0 +1,105 @@ + + + + coding-exercise + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Objective

Assess your natural approach to coding and engineering best practices.

Pre-Requisites

    +
  1. Test the API Authentication.
  2. +
  3. Run the Code with your favorite IDE.
  4. +

Process

    +
  1. Refactor the code following SOLID principles.
  2. +
  3. Test the code.
  4. +
  5. Make the code production-ready.
  6. +

Code

public class Program
+{
+    static void Main(string[] args)
+    {
+        Task.Run(async () =>
+        {
+            //Get Repositories
+            await GetDetails("https://dev.azure.com/AcmeInc/ff86f2fb-5c3a-49e2-a677-c9b95d6baaef/_apis/tfvc/branches?includeParent=1&includeChildren=1&includeDeleted=1&includeLinks=1&api-version=6.0");
+            //Get Commits
+            await GetDetails("https://dev.azure.com/AcmeInc/ff86f2fb-5c3a-49e2-a677-c9b95d6baaef/_apis/git/repositories/4563efa9-da5d-4f54-b609-18db14479f48/commits?api-version=6.0");
+            //Get Pull Requests
+            await GetDetails("https://dev.azure.com/AcmeInc/ff86f2fb-5c3a-49e2-a677-c9b95d6baaef/_apis/git/repositories/4563efa9-da5d-4f54-b609-18db14479f48/pullrequests?searchCriteria.status=completed||searchCriteria.status=open?api-version=5.1");
+        }).Wait();
+    }
+
+
+    public static async Task GetDetails(string url)
+    {
+        try
+        {
+            var personalaccesstoken = "bGVtb25hY29AYWxsaWFuei1hc3Npc3RhbmNlLmNvbS5hdTpuZXczZ3ludmRpdWJpdno0djNoc2E1enpqMmF3ZGtvbzQ3ZnZxMzZ4aWJxb2x5Y203NnNx";
+
+            using (HttpClient client = new HttpClient())
+            {
+                client.DefaultRequestHeaders.Accept.Add(
+                    new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
+
+                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", personalaccesstoken);
+
+                using (HttpResponseMessage response = await client.GetAsync(url))
+                {
+                    response.EnsureSuccessStatusCode();
+
+                    var resultJson = await response.Content.ReadAsStringAsync();
+                    Console.WriteLine(resultJson);
+                }
+            }
+        }
+        catch (Exception ex)
+        {
+            Console.WriteLine(ex.ToString());
+        }
+    }
+}
+

API Authentication

Documentation

\ No newline at end of file diff --git a/docs/community-of-practice.html b/docs/community-of-practice.html new file mode 100644 index 000000000..89c2f30a1 --- /dev/null +++ b/docs/community-of-practice.html @@ -0,0 +1,97 @@ + + + + Community Of Practice + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Community Of Practice

Communities of practice are groups of people who share a concern or a
+passion for something they do and learn how to do it better as they
+interact regularly.

Three characteristics are crucial:

    +
  • Domain
  • +
  • Community
  • +
  • Practice
  • +

The domain. A community of practice is not
+merely a club of friends or a network of connections between people. It
+has an identity defined by a shared domain of interest. Membership
+therefore implies a commitment to the domain, and therefore a shared
+competence that distinguishes members from other people. (You could
+belong to the same network as someone and never know it.) The domain is
+not necessarily something recognized as “expertise” outside the
+community. A youth gang may have developed all sorts of ways of dealing
+with their domain: surviving on the street and maintaining some kind of
+identity they can live with. They value their collective competence and
+learn from each other, even though few people outside the group may
+value or even recognize their expertise.

The community. In pursuing their interest in
+their domain, members engage in joint activities and discussions, help
+each other, and share information. They build relationships that enable
+them to learn from each other; they care about their standing with each
+other. A website in itself is not a community of practice. Having the
+same job or the same title does not make for a community of practice
+unless members interact and learn together. The claims processors in a
+large insurance company or students in American high schools may have
+much in common, yet unless they interact and learn together, they do not
+form a community of practice. But members of a community of practice do
+not necessarily work together on a daily basis. The Impressionists, for
+instance, used to meet in cafes and studios to discuss the style of
+painting they were inventing together. These interactions were essential
+to making them a community of practice even though they often painted
+alone.

The practice. A community of practice is not
+merely a community of interest–people who like certain kinds of movies,
+for instance. Members of a community of practice are practitioners. They
+develop a shared repertoire of resources: experiences, stories, tools,
+ways of addressing recurring problems—in short a shared practice. This
+takes time and sustained interaction. A good conversation with a
+stranger on an airplane may give you all sorts of interesting insights,
+but it does not in itself make for a community of practice. The
+development of a shared practice may be more or less self-conscious. The
+“windshield wipers” engineers at an auto manufacturer make a concerted
+effort to collect and document the tricks and lessons they have learned
+into a knowledge base. By contrast, nurses who meet regularly for lunch
+in a hospital cafeteria may not realize that their lunch discussions are
+one of their main sources of knowledge about how to care for patients.
+Still, in the course of all these conversations, they have developed a
+set of stories and cases that have become a shared repertoire for their
+practice.

It is the combination of these three elements that constitutes
+a community of practice. And it is by developing these three elements
+in parallel that one cultivates such a community.

"../../assets/image_1672704213276_0.png" is not created yet. Click to create.

Sources

\ No newline at end of file diff --git a/docs/conferences.html b/docs/conferences.html new file mode 100644 index 000000000..ceda666a1 --- /dev/null +++ b/docs/conferences.html @@ -0,0 +1,48 @@ + + + + Conferences + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Conferences
\ No newline at end of file diff --git a/docs/configuration.html b/docs/configuration.html new file mode 100644 index 000000000..22be25209 --- /dev/null +++ b/docs/configuration.html @@ -0,0 +1,136 @@ + + + + Configuration + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Configuration

Packages

Implementation

Singleton

using Microsoft.Extensions.Configuration;
+
+public static class ConfigurationManager
+{
+    private static IConfigurationRoot _configuration;
+    public static IConfigurationRoot Configuration
+    {
+        get
+        {
+            if (_configuration == null)
+            {
+                _configuration = new ConfigurationBuilder()
+                                        .SetBasePath(AppContext.BaseDirectory)
+                                        .AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true)
+                                        .AddEnvironmentVariables("AppId:")
+                                        .AddUserSecrets("3490e6ac-9364-432d-9bfb-7c37692752cb")
+                                        .Build();
+            }
+            return _configuration;
+        }
+    }
+}
+

Usage

ConfigurationManager.Configuration["SomeConfig"]

Code Sample

.NET Console App

 var configuration = new ConfigurationBuilder()
+                                        .SetBasePath(AppContext.BaseDirectory)
+                                        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
+                                        .Build();
+

ASP.NET

private static ConfigurationManager GetConfiguration(ConfigurationManager configurationManager)
+{
+    configurationManager
+                 .SetBasePath(AppContext.BaseDirectory)
+                 .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
+                 .AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true)
+                 .AddEnvironmentVariables("AppPrefix:")
+                 .Build();
+
+    return configurationManager;
+}
+

Add Configuration File to csproj

<ItemGroup>
+    <None Update="appsettings.json">
+        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+</ItemGroup>
+

Cross-Platform Support

The : separator doesn't work with environment variable hierarchical keys on all platforms. __, the double underscore, is supported by all platforms.

+ + + + + + + + + + +
:warning: WARNING
AppPrefix:ModuleConfiguration:Infrastructure:Redis:Port would need to be translated to AppPrefix__ModuleConfiguration__Infrastructure__Redis__Port

Set Environment Variable

+ + + + + + + + + + +
:warning: WARNING
When creating/removing Environment Variables, Visual Studio MUST be restarted to pick up the changes.
    +
  • setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ValidIssuer "SOME VALUE" /M
  • +
  • setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ClientId "SOME VALUE" /M
  • +
  • setx ASPNETCORE_ENVIRONMENT "Development" /M or setx ASPNETCORE_ENVIRONMENT "Staging" /M or setx ASPNETCORE_ENVIRONMENT "Production" /M
  • +

Safe storage of app secrets in development

    +
  1. Add a reference to the Microsoft.Extensions.Configuration.UserSecrets package
  2. +
  3. Navigate to your .NET project folder
  4. +
  5. Run dotnet user-secrets init (one-off per project)
  6. +
  7. Run dotnet user-secrets set "Segment:WriteKey" "some-write-key"
  8. +
  9. Read the value in your application
  10. +
var configuration = new ConfigurationBuilder().AddUserSecrets("[ID obtained from step 3]").Build();
+var value = configuration["Segment:SomeConfig"];
+

Values are stored on C:\Users\<username>\AppData\Roaming\Microsoft\UserSecrets

Documentation

Troubleshooting

    +
  • Issue: ASP.NET Core: AddEnvironmentVariables doesn't load variables
  • +
  • Cause: You probably just declared your Environment Variables hence Visual Studio does not see them.
  • +
  • Resolution: Restart your Visual Studio.
  • +
\ No newline at end of file diff --git a/docs/contents.html b/docs/contents.html new file mode 100644 index 000000000..4bd3ece16 --- /dev/null +++ b/docs/contents.html @@ -0,0 +1,48 @@ + + + + contents + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
contents
    +
  • +
\ No newline at end of file diff --git a/docs/continous-learning.html b/docs/continous-learning.html new file mode 100644 index 000000000..a95f2a170 --- /dev/null +++ b/docs/continous-learning.html @@ -0,0 +1,177 @@ + + + + Continous Learning + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Continous Learning

This a list of ideas to make learning a part the routine.
+

"../../assets/image_1672704712173_0.png" is not created yet. Click to create.

Career Roadmap

Training

Blog Posts

Videos

TBA

Training

General

Cloud

Backend

Frontend

\ No newline at end of file diff --git a/docs/continuous-improvement.html b/docs/continuous-improvement.html new file mode 100644 index 000000000..32c4c168a --- /dev/null +++ b/docs/continuous-improvement.html @@ -0,0 +1,130 @@ + + + + Continuous Improvement + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/css.html b/docs/css.html new file mode 100644 index 000000000..8046f2e35 --- /dev/null +++ b/docs/css.html @@ -0,0 +1,46 @@ + + + + CSS + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/cve.html b/docs/cve.html new file mode 100644 index 000000000..00f561576 --- /dev/null +++ b/docs/cve.html @@ -0,0 +1,49 @@ + + + + CVE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/devcontainers.html b/docs/devcontainers.html new file mode 100644 index 000000000..54cd8f7b1 --- /dev/null +++ b/docs/devcontainers.html @@ -0,0 +1,83 @@ + + + + DevContainers + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
  • +
      +
    1. Check if Docker is installed by running docker version
    2. +
    +
  • +
  • +
      +
    1. Install VSCode and its extensions
    2. +
    +
  • +
  • +
    winget install -e --id Microsoft.VisualStudioCode  
    +code --install-extension ms-vscode-remote.remote-containers  
    +code --install-extension ms-python.python
    +
    +
  • +
  • +
      +
    1. Click
      "../assets/image_1667341230993_0.png" is not created yet. Click to create.
      located at the bottom left of the screen
    2. +
    3. Search for "Add Dev Container Configuration Files" and follow the steps
    4. +
    5. Once the setup is finished, the following 2 files will appear
    6. +
    +
  • +
  • +
  • +
      +
    1. Click
      "../assets/image_1667341230993_0.png" is not created yet. Click to create.
      and write "Reopen in container"
    2. +
    3. VSCode will restart and you will see this
      "../assets/image_1667430653209_0.png" is not created yet. Click to create.
    4. +
    +
  • +

Training

\ No newline at end of file diff --git a/docs/development-environment-setup.html b/docs/development-environment-setup.html new file mode 100644 index 000000000..24ca60233 --- /dev/null +++ b/docs/development-environment-setup.html @@ -0,0 +1,116 @@ + + + + Development Environment Setup + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Development Environment Setup

Essentials

| :memo: | TODO: Migrate this to Winget Configuration |

Tools

Browsers

winget install -e --id Microsoft.Edge.Dev
+winget install -e --id BraveSoftware.BraveBrowser
+winget install -e --id Microsoft.Edge
+winget install -e --id Google.Chrome.Dev
+winget install -e --id Mozilla.Firefox.DeveloperEdition
+winget install -e --id Opera.Opera
+

Dev Tools

https://learn.microsoft.com/en-nz/azure/developer/dev-tunnels/
+winget install -e --id Microsoft.NuGet
+winget install -e --id Postman.Postman
+winget install -e --id Docker.DockerDesktop
+winget install -e --id Datalust.Seq
+winget install -e --id Microsoft.DeploymentToolkit
+winget install -e --id Microsoft.webpicmd
+winget install --name RedisInsight
+winget install -e --id Microsoft.PowerAutomateDesktop
+winget install -e --id Gauge.Gauge
+

Development Utilities

dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
+winget install -e --id Dapr.CLI --silent
+winget install -e --id Microsoft.RemoteDesktopClient
+winget install -e --id ScooterSoftware.BeyondCompare4
+winget install -e --id LINQPad.LINQPad.7
+winget install -e --id Microsoft.XMLNotepad
+winget install -e --id Notepad++.Notepad++
+winget install -e --id WinMerge.WinMerge
+winget install -e --name Sysinternals
+winget install -e --id Microsoft.WindowsTerminal
+winget install -e --id Telerik.Fiddler.Everywhere
+winget install -e --id WiresharkFoundation.Wireshark
+winget install -e --id=Amazon.NoSQLWorkbench 
+winget install DevToys
+

Misc

winget install "Files App"
+winget install -e --id 7zip.7zip
+winget install -e --id Microsoft.PowerToys
+winget install -e --id VideoLAN.VLC
+winget install -e --id ShareX.ShareX
+winget install -e --id Grammarly.ForOffice
+winget install -e --id Grammarly.ForWindows
+winget install -e --id OBSProject.OBSStudio
+winget install -e --id JGraph.Draw
+winget install -e --id GIMP.GIMP
+winget install -e --id JAMSoftware.TreeSize.Free
+winget install -e --id Logseq.Logseq
+winget install -e --id Twilio.Authy
+
\ No newline at end of file diff --git a/docs/diagramsascode.html b/docs/diagramsascode.html new file mode 100644 index 000000000..21cad9083 --- /dev/null +++ b/docs/diagramsascode.html @@ -0,0 +1,46 @@ + + + + DiagramsAsCode + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Sequence Diagram

ClassAClassBMethod1()response1Method2()response2ClassAClassB
\ No newline at end of file diff --git a/docs/docker-desktop.html b/docs/docker-desktop.html new file mode 100644 index 000000000..63a19bd0a --- /dev/null +++ b/docs/docker-desktop.html @@ -0,0 +1,107 @@ + + + + Docker Desktop + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Docker Desktop

Intro

Docker Desktop for Windows provides a development environment for building, shipping, and running dockerized apps. By enabling the WSL 2 based engine, you can run both Linux and Windows containers in Docker Desktop on the same machine.

Configuration

+

Warning
+This process requires reboot

+
    +
  1. Ensure Hyper-V has been enabled
  2. +
  3. Run winget install -e --id Docker.DockerDesktop
  4. +
  5. Click Settings
  6. +
  7. Tick the “Start Docker Desktop when you log in“ option
  8. +
  9. Run systeminfo | find "System Type" to check if your system is x64 (if so, download wsl_update_x64.msi)
  10. +
  11. Run wsl --set-default-version 2
  12. +
  13. Run wsl --install -d Ubuntu
  14. +
  15. Create a default UNIX user account
  16. +

WSL Process

image

Configure WSL2

    +
  1. Run wsl --shutdown
  2. +
  3. Run notepad "$env:USERPROFILE/.wslconfig"
  4. +
[wsl2]
+memory=5GB   
+processors=1 
+

See all configuration options

Build and Run a Container

    +
  1. Navigate to the folder where the Dockerfile is stored
  2. +
  3. Run docker build -t angular-container:1.0 .
  4. +
  5. Search ImageID by running docker images
  6. +
  7. Run docker run -p 80:80 469b3a773ed7
  8. +

Running Docker Windows and Linux Containers Simultaneously

Dockerfile example

FROM node:lts as node
+
+RUN npm install -g @angular/cli
+
+WORKDIR /usr/src/app
+COPY src/TeamHub.UI/ ./my-app/
+
+WORKDIR /usr/src/app/my-app
+RUN npm install
+RUN npm run build
+
+FROM nginx:alpine
+COPY --from=node /usr/src/app/my-app/dist/team-hub.ui /usr/share/nginx/html
+

Images

docker pull jagregory/cognito-local:latest
+docker pull localstack/localstack:latest
+docker pull amazon/dynamodb-local:latest
+docker pull redis:latest
+docker pull mcr.microsoft.com/mssql/server:2022-latest
+docker pull datalust/seq:latest
+docker pull motoserver/moto:latest
+docker pull jijiechen/papercut:latest
+

Commands

    +
  • Display containers' resource usage statistics docker stats --all --no-stream
  • +
  • Stop running containers docker kill $(docker ps -q)
  • +
  • Remove all containers docker rm $(docker ps -a -q)
  • +
  • Remove all images docker rmi $(docker images -q)
  • +

Security

Documentation

\ No newline at end of file diff --git a/docs/docker.html b/docs/docker.html new file mode 100644 index 000000000..3b241e869 --- /dev/null +++ b/docs/docker.html @@ -0,0 +1,103 @@ + + + + Docker + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Docker

Installation

Build and Run a Container

    +
  1. Navigate to the folder where the Dockerfile is stored
  2. +
  3. Run docker build -t angular-container:1.0 .
  4. +
  5. Search ImageID by running docker images
  6. +
  7. Run docker run -p 80:80 469b3a773ed7
  8. +

Images

Commands

    +
  • Display containers' resource usage statistics docker stats --all --no-stream
  • +
  • Stop running containers docker kill $(docker ps -q)
  • +
  • Remove all containers docker rm $(docker ps -a -q)
  • +
  • Remove all images docker rmi $(docker images -q)
  • +
    +
  • +

    Security

    +:PROPERTIES:
    +:heading: 2
    +:END:
  • +
\ No newline at end of file diff --git a/docs/documentation.html b/docs/documentation.html new file mode 100644 index 000000000..07eb3cc8a --- /dev/null +++ b/docs/documentation.html @@ -0,0 +1,56 @@ + + + + Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/dotnet-list-package.html b/docs/dotnet-list-package.html new file mode 100644 index 000000000..25b849c8b --- /dev/null +++ b/docs/dotnet-list-package.html @@ -0,0 +1,57 @@ + + + + dotnet list package + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
  • +

    dotnet list package command in the .NET Core CLI tools to fetch installed packages for a given solution or project. Use it like so from the Windows command line:

    +

    dotnet list "C:\Source\MySolution\MySolution.sln" package

    +

    It works on both .NET Framework and .NET Core projects.

    +

    Note: For this command to work, the solution must use the new NuGet PackageReference format for referencing NuGet packages.

    +

    Migration is as easy as right-clicking packages.config, and clicking Migrate packages.config to PackageReference..., then restoring packages by building the solution.

    +
  • +

Parameters

\ No newline at end of file diff --git a/docs/effective-meetings.html b/docs/effective-meetings.html new file mode 100644 index 000000000..1faa3934b --- /dev/null +++ b/docs/effective-meetings.html @@ -0,0 +1,48 @@ + + + + Effective Meetings + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/email-templates.html b/docs/email-templates.html new file mode 100644 index 000000000..46d333e19 --- /dev/null +++ b/docs/email-templates.html @@ -0,0 +1,171 @@ + + + + Email Templates + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Email Templates
    +
  • +

    Onboarding Templates

    +
  • +
  • +
  • +

    Before Starting

    +
  • +
  • +

    Hi [new team member],

    +
  • +
  • +

    I wanted to take a moment to welcome you to our team and to confirm your start date of Monday. We are glad to have you on board and we hope that you will find this to be a positive and productive experience.

    +
  • +
  • +

    I am confident that your skills and experience will be a valuable addition to our group, and I look forward to working with you. If you have any questions or concerns leading up to your start date, please don't hesitate to reach out. I am here to help make your transition as smooth as possible.

    +
  • +
  • +

    Best,
    +[Your Name]

    +
  • +
  • +
  • +

    Day 1

    +
  • +
  • +

    Hi [new team member],

    +

    Welcome to your first day on the team! I'm excited to have you here and I'm looking forward to getting to know you better.

    +

    To help you get started, here are a few things you'll need to know:

    +
  • +
  • +

    Your computer login is [username] and your temporary password is [password]. Please make sure to change your password as soon as you can.

    +
  • +
  • +

    Our team typically starts the day at 9:00 AM, with a stand-up meeting at 9:30 AM. This is a short meeting where everyone shares what they're working on for the day.

    +
  • +
  • +

    Your team leader is [team leader name] and they will be your primary point of contact. Feel free to reach out to them with any questions you have.

    +
  • +
  • +

    We have a slack channel for the team where we communicate throughout the day. Make sure to join and introduce yourself to the team!

    +
  • +
  • +

    I have put together an onboarding plan for your first few weeks with us to help you get up to speed.

    +
  • +
  • +
  • +

    Again, welcome to the team! I'm looking forward to working with you.

    +

    Best,
    +[Your Name]

    +
  • +
  • +
  • +

    Introducing a new team member

    +
  • +
  • +
  • +

    Hi team,

    +
  • +
  • +

    I am excited to introduce [new team member] who will be joining us on the team! [New team member] brings with them a wealth of experience in [industry/area of expertise] and I have no doubt that they will be a valuable asset to our group.

    +
  • +
  • +

    Please join me in welcoming [new team member] to the team. I know that they are looking forward to getting to know everyone and getting started on their new role.

    +
  • +
  • +

    Best,
    +[Your Name]

    +
  • +
  • +
  • +

    Starting a Community Of Practice

    +
  • +
  • +
  • +

    Dear [Colleagues],

    +

    I hope this email finds you well. I wanted to reach out to you about an idea I have been thinking about for a while - starting a community of practice (CoP) centered around [focus of CoP].

    +

    I believe that this CoP has the potential to bring together a group of individuals who are passionate about [focus of CoP] and provide a space for us to share our knowledge and experiences, collaborate on projects, and support each other in our professional development.

    +

    I envision the CoP meeting [frequency] and hosting events or activities that facilitate learning and collaboration. Some potential benefits of participating in the CoP include:

    +
  • +
  • +

    Staying up-to-date on the latest developments in [focus of CoP]

    +
  • +
  • +

    Connecting with like-minded professionals

    +
  • +
  • +

    Sharing best practices and ideas

    +
  • +
  • +

    Collaborating on projects and initiatives

    +
  • +
  • +

    Providing support and guidance to one another

    +

    I would love to hear your thoughts on this idea and whether you might be interested in joining the CoP. Please let me know if you have any questions or if there is anything else I can provide to help convince you of the value of this opportunity.

    +

    Thank you for considering this request.

    +

    Best,
    +[Your Name]

    +
  • +
  • +
  • +

    CoP Invite

    +
  • +
  • +
  • +

    Dear [CoP Members],

    +

    I hope this email finds you well. I am writing to invite you to the next meeting of our community of practice (CoP) focused on [focus of CoP].

    +

    The meeting will take place on [date] at [time] and will be held via [online platform or in-person location]. The agenda for the meeting is as follows:

    +
  • +
  • +

    [Agenda item 1]

    +
  • +
  • +

    [Agenda item 2]

    +
  • +
  • +

    [Agenda item 3]

    +
  • +
  • +

    [etc.]

    +

    I encourage you to come prepared to share any updates, ideas, or successes related to [focus of CoP] and to actively participate in the discussion.

    +

    I look forward to seeing you at the meeting and continuing to collaborate as a community.

    +

    Best,
    +[Your Name]

    +
  • +
\ No newline at end of file diff --git a/docs/entityframework.html b/docs/entityframework.html new file mode 100644 index 000000000..bdc4b5942 --- /dev/null +++ b/docs/entityframework.html @@ -0,0 +1,75 @@ + + + + EntityFramework + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EntityFramework

EF CLI

Commands

    +
  • Install: dotnet tool install --global dotnet-ef
  • +
  • Update: dotnet tool update --global dotnet-ef
  • +

Create/Update Model (Database First)

    +
  1. .csproj file must reference the following nuget packages: +
      +
    • Microsoft.EntityFrameworkCore.Design
    • +
    • Microsoft.EntityFrameworkCore.SqlServer
    • +
    +
  2. +
  3. Navigate to the folder where you want to store the model
  4. +
  5. Update EF Model Classes dotnet ef dbcontext scaffold "Server=localhost;Database=DbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Database -f --project C:\Dev\Something.csproj
  6. +

Connection String

Search for DbContext.cs class

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+{
+    var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
+    optionsBuilder.UseSqlServer(connectionString);
+}
+

Logging

This will allow us to see the SQL Queries being executed

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+{
+    var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
+    optionsBuilder.LogTo(Console.Write, LogLevel.Trace)
+                  .EnableSensitiveDataLogging()
+                  .EnableDetailedErrors()
+                  .UseSqlServer(connectionString);
+}
+
\ No newline at end of file diff --git a/docs/featureflags.html b/docs/featureflags.html new file mode 100644 index 000000000..ff6605059 --- /dev/null +++ b/docs/featureflags.html @@ -0,0 +1,83 @@ + + + + FeatureFlags + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Objective

To implement a Feature Management solution that allows us to change application behaviour without changing code.

AWS AppConfig

AWS AppConfig is a capability of AWS Systems Manager, to create, manage, and quickly deploy application configurations. A configuration is a collection of settings that influence the behavior of the application.

The Amazon.Extensions.Configuration.SystemsManager simplifies using AWS AppConfig as a source for configuration information for .NET applications.

Microsoft.FeatureManagement

Microsoft.FeatureManagement provides standardized APIs for enabling feature flags within applications. This library secures a consistent experience when developing applications that use patterns such as beta access, rollout, dark deployments, and more.

Configuration Sample

"FeatureFlags": {
+        "featureA": false,
+        "featureB": true,
+        "featureC": false,
+        "featureD": {
+            "EnabledFor": [
+                {
+                    "Name": "Microsoft.Targeting",
+                    "Parameters": {
+                        "Audience": {
+                            "Users": [
+                                "{tenantId}:{userId}",
+                                "{tenantId}:{userId2}"
+                            ],
+                            "Groups": [
+                                {
+                                    "Name": "{tenantId}",
+                                    "RolloutPercentage": 0
+                                },
+                                {
+
+                                    "Name": "{tenantId2}",
+                                    "RolloutPercentage": 50
+                                },
+                                {
+
+                                    "Name": "{tenantId3}",
+                                    "RolloutPercentage": 100
+                                }
+                            ],
+                            "DefaultRolloutPercentage": 0
+                        }
+                    }
+                }
+            ]
+        }
+    }
+
\ No newline at end of file diff --git a/docs/frontend.html b/docs/frontend.html new file mode 100644 index 000000000..2393aec4f --- /dev/null +++ b/docs/frontend.html @@ -0,0 +1,52 @@ + + + + Frontend + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/git.html b/docs/git.html new file mode 100644 index 000000000..a68db4f05 --- /dev/null +++ b/docs/git.html @@ -0,0 +1,97 @@ + + + + Git + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Git

Tools

    +
  • winget install -e --id Git.Git
  • +
  • winget install -e --id GitHub.GitHubDesktop
  • +
  • winget install -e --id GitHub.cli
  • +
  • winget install -e --id GitHub.GitLFS
  • +
  • winget install -e --id Microsoft.Git
  • +
  • winget install -e --id Microsoft.VFSforGit
  • +
  • winget install -e --id Microsoft.GitCredentialManagerCore
  • +
  • winget install -e --id Atlassian.Sourcetree
  • +
  • winget install -e --id TortoiseGit.TortoiseGit
  • +

Git Credentials Manager

Commands

Clean Repository

git clean -fdx is a command used in Git to remove untracked files and directories from the working tree.

    +
  • -f flag stands for "force", which allows the command to execute without prompting the user for confirmation.
  • +
  • -d flag is used to also remove untracked directories.
  • +
  • -x flag is used to also remove ignored files.
  • +

Git Clone with Submodules

git clone git@github.com:leandromonaco/leandromonaco.github.io.git C:\Dev\Repo --recurse-submodules

Basic Git Commands

git checkout main
+git fetch
+git pull
+git branch branch_name
+git checkout branch_name
+git push --set-upstream origin branch_name
+--Make code changes, stage and commit them
+git push
+

Reset author for ALL commits

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='new@email'; GIT_COMMITTER_NAME='Newname'; GIT_COMMITTER_EMAIL='new@email';" HEAD
+git push --force --tags origin 'refs/heads/main'
+

Change last commit message

    +
  1. Run git commit --amend -m "New and correct message"
  2. +

Delete the most recent commit

without destroying the work you've done: git reset --soft HEAD~1
+destroying the work you've done: git reset --hard HEAD~1

Fix .gitignore issues

    +
  1. Run git rm -r --cached . to unstage and remove the path to your files from the Git index.
  2. +
  3. Execute git add . to re-add all your files back (only the correct files will be updated).
  4. +
  5. Execute git commit -m ".gitignore is now working" to commit all your files back into the Git index.
  6. +

Configuration

Read All Configuration

git config --local -l
+git config --global -l
+

Read specific values

git config --global user.name
+git config --global user.email
+

Make sure that local git config does not override the global configuration

git config --local user.name
+git config --local user.email
+

Change values

git config --global user.name [username]
+git config --global user.email [email address]
+

Removing sensitive data from a repository

Example

    +
  1. winget install -e --id Oracle.JavaRuntimeEnvironment
  2. +
  3. java -jar bfg.jar --delete-folders ReleasePlanning
  4. +
  5. git push --force
  6. +
    +
  • if dealing with protected commits add --no-blob-protection parameter
  • +

Troubleshooting

set GIT_TRACE=1
+set GIT_CURL_VERBOSE=1
+
\ No newline at end of file diff --git a/docs/goals.html b/docs/goals.html new file mode 100644 index 000000000..d71faaa8b --- /dev/null +++ b/docs/goals.html @@ -0,0 +1,62 @@ + + + + Goals + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Objectives

OKRs

Definition

OKR stands for Objectives and Key Results. OKRs help break up big, audacious missions into actionable goals and milestones.

    +
  • Objectives (The “What”): An objective is what you want to do. It describes our mission-supporting goal.
  • +
  • Key Results (The “How”): Objectives must be paired with a roadmap that will help you know whether or not you’re on the path to meeting your goals.
  • +

Resources

\ No newline at end of file diff --git a/docs/google-calendar-api.html b/docs/google-calendar-api.html new file mode 100644 index 000000000..8e7489fa9 --- /dev/null +++ b/docs/google-calendar-api.html @@ -0,0 +1,58 @@ + + + + Google Calendar API + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/hackerone.html b/docs/hackerone.html new file mode 100644 index 000000000..396535ddc --- /dev/null +++ b/docs/hackerone.html @@ -0,0 +1,52 @@ + + + + HackerOne + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/health-monitor.html b/docs/health-monitor.html new file mode 100644 index 000000000..9816ffd7c --- /dev/null +++ b/docs/health-monitor.html @@ -0,0 +1,126 @@ + + + + Health Monitor + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Health Monitor

Employee

    +
  • I know what is expected of me at work.
  • +
  • I have the materials and equipment I need to do my work right.
  • +
  • At work, I have the opportunity to do what I do best every day.
  • +
  • In the last seven days, I have received recognition or praise for doing good work.
  • +
  • My supervisor, or someone at work, seems to care about me as a person.
  • +
  • There is someone at work who encourages my development.
  • +
  • At work, my opinions seem to count.
  • +
  • The mission or purpose of my company makes me feel my job is important.
  • +
  • My associates or fellow employees are committed to doing quality work.
  • +
  • I have a best friend at work.
  • +
  • In the last six months, someone at work has talked to me about my progress.
  • +
  • This last year, I have had opportunities at work to learn and grow.
  • +

Developer Velocity

Manager

    +
  • I would recommend my manager to others.
  • +
  • My manager assigns stretch opportunities to help me develop in my career.
  • +
  • My manager communicates clear goals for our team.
  • +
  • My manager gives me actionable feedback on a regular basis.
  • +
  • My manager provides the autonomy I need to do my job (i.e., does not "micro-manage" by getting involved in details that should be handled at other levels).
  • +
  • My manager consistently shows consideration for me as a person.
  • +
  • My manager keeps the team focused on priorities, even when it’s difficult (e.g., declining or deprioritizing other projects).
  • +
  • My manager regularly shares relevant information from their manager and senior leadership.
  • +
  • My manager has had a meaningful discussion with me about my career development in the past six months.
  • +
  • My manager has the technical expertise (e.g., technical judgment in Tech, selling in Sales, accounting in Finance) required to effectively manage me.
  • +
  • The actions of my manager show they value the perspective I bring to the team, even if it is different from their own.
  • +
  • My manager makes tough decisions effectively (e.g., decisions involving multiple teams, competing priorities).
  • +
  • My manager effectively collaborates across boundaries (e.g., team, organizational).
  • +
  • What would you recommend your manager keep doing?
  • +
  • What would you have your manager change?
  • +

Psychological Safety

    +
  • If you make a mistake on this team, it is often held against you.
  • +
  • Members of this team are able to bring up problems and tough issues.
  • +
  • People on this team sometimes reject others for being different.
  • +
  • It is safe to take a risk on this team.
  • +
  • It is difficult to ask other members of this team for help.
  • +
  • No one on this team would deliberately act in a way that undermines my efforts.
  • +
  • Working with members of this team, my unique skills and talents are valued and utilized.
  • +

Stress

We’ve all been working under a lot of stress this past year. I wanted to gauge how the team is feeling, and see if there’s anything I can do to help mitigate feelings of burnout. Please answer these questions and send your responses back to me before the end of the day tomorrow. Feel free to provide more context in any of your answers. And please be honest — the goal here is for me to find out how you’re really doing, not to punish anyone for feeling unproductive or overwhelmed. Everything you say will be kept confidential.

Over the past week…

    +
  • How overwhelmed did you feel, on a scale of 1 to 5? (1 is lowest, 5 is highest)
  • +
  • How many days did you work later than you should?
  • +
  • How many days did you answer emails after hours?
  • +
  • How effective did you feel, on a scale of 1 to 5?
  • +
  • How productive did you feel, on a scale of 1 to 5?
  • +
  • How much fun did you have, on a scale of 1 to 5?
  • +

Service Team

Team leadership

    +
  • There is a team lead who is responsible for team performance, communication and process ownership.
  • +
  • The team lead actively monitors work, identifies and successfully advocates improvements in process, and communicates opportunities both inside and outside of the team.
  • +

Balanced team

    +
  • The team has the right specialist skills and experience.
  • +
  • The team is empowered to make decisions and escalate where appropriate.
  • +
  • The team share stories, collaborate on tricky problems and share lessons learned.
  • +
  • Individual service excellence is recognized.
  • +
  • Team schedules and rosters are set and agreed with an even distribution of work across the team.
  • +
  • There is a smooth onboarding process for new team members.
  • +

Service mandate

    +
  • The services offered by the team are defined and documented. The scope of the team’s work is clear.
  • +
  • Ownership and accountabilities for individuals and leads are defined.
  • +
  • The service mandate has been communicated and agreed by key stakeholders, with agreed-upon success metrics that are well-defined and actively monitored.
  • +

Service levels

    +
  • Service levels for all areas of the teams’ service mandate are defined, agreed and visible to key stakeholders, including customers.
  • +
  • All service levels are current, applicable and there is queue management, categorization, prioritization & escalation in place to meet SLAs.
  • +
  • The team operates at a good velocity with recognized consequences for not meeting SLAs.
  • +

Customer centricity

    +
  • You understand what your customers need and have the necessary information about the customer to resolve their issues.
  • +
  • You are skilled at understanding, empathizing and resolving requests with an effective customer feedback loop in place which drives improvements to build trust and
    +improve your service offering.
  • +
  • Your service offering balances quality with velocity.
  • +
  • Customers can self serve and your team has a mechanism or cycle in place to detect, correct and prevent problem management.
  • +

Tools and processes

    +
  • The team has the necessary tool set that is well designed and optimized towards delivering the services offered by your team.
  • +
  • Processes are well documented, and have defined workflows and owners.
  • +
  • There is a well defined and followed hand-over process to operationalize new services and handle rootcause analysis.
  • +

Effective partnership

    +
  • Your vendors and partners are known, key contracts are documented and there is a trusting relationship(s) in place.
  • +
  • There are established operational level agreements (OLAs) for down-level teams and partners.
  • +
  • Partner contracts are current and their OLAs allow your team to uphold your commitments and retain ownership of the customer request.
  • +

Reporting and analytics

    +
  • You are capturing feedback and your performance reporting is available, visible and helping your team improve established service levels.
  • +
  • KPIs are realistic, focused on the correct metrics and you are meeting your KPIs.
  • +
  • Your cost to serve is known and a focus area for the team to improve on.
  • +
\ No newline at end of file diff --git a/docs/high-performing-teams.html b/docs/high-performing-teams.html new file mode 100644 index 000000000..8c897ac22 --- /dev/null +++ b/docs/high-performing-teams.html @@ -0,0 +1,48 @@ + + + + High Performing Teams + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
High Performing Teams
    +
  • "../assets/image_1667451270542_0.png" is not created yet. Click to create.
  • +
\ No newline at end of file diff --git a/docs/hiring.html b/docs/hiring.html new file mode 100644 index 000000000..49fe454cb --- /dev/null +++ b/docs/hiring.html @@ -0,0 +1,50 @@ + + + + Hiring + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/host-file.html b/docs/host-file.html new file mode 100644 index 000000000..64a476066 --- /dev/null +++ b/docs/host-file.html @@ -0,0 +1,83 @@ + + + + Host File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Change host file on Windows


+$HostFile = 'C:\Windows\System32\drivers\etc\hosts'
+
+# Create a backup copy of the Hosts file
+$dateFormat = (Get-Date).ToString('dd-MM-yyyy hh-mm-ss')
+$FileCopy = $HostFile + '.' + $dateFormat  + '.copy'
+Copy-Item $HostFile -Destination $FileCopy
+
+$Bindings = Get-IISSiteBinding "websitename.com"
+
+# Get the contents of the Hosts file
+$File = Get-Content $HostFile
+
+# write the Entries to hosts file, if it doesn't exist.
+foreach ($Binding in $Bindings) 
+{
+$HostFileEntry = $Binding.bindingInformation
+$HostFileEntry = $HostFileEntry -replace "\*:443:", ""
+
+Write-Host "Checking existing HOST file entries for $HostFileEntry..."
+
+#Set a Flag
+$EntryExists = $false
+
+if ($File -contains "127.0.0.1 `t $HostFileEntry") 
+{
+  Write-Host "Host File Entry for $HostFileEntry already exists."
+  $EntryExists = $true
+}
+#Add Entry to Host File
+if (!$EntryExists) 
+{
+  Write-host "Adding Host File Entry for $HostFileEntry"
+  Add-content -path $HostFile -value "127.0.0.1 `t $HostFileEntry"
+}
+}
+
+
\ No newline at end of file diff --git a/docs/identityserver.html b/docs/identityserver.html new file mode 100644 index 000000000..195ab7f94 --- /dev/null +++ b/docs/identityserver.html @@ -0,0 +1,54 @@ + + + + IdentityServer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/iis.html b/docs/iis.html new file mode 100644 index 000000000..a85fc21b8 --- /dev/null +++ b/docs/iis.html @@ -0,0 +1,52 @@ + + + + IIS + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IIS

Create IIS Websites

+

Powershell 7+ is required

+
    +
  1. Run Install-Module -Name IISAdministration -Scope AllUsers -AllowClobber
  2. +
  3. Run New-IISSite -Name 'website_name' -PhysicalPath 'C:\Inetpub\wwwroot' -BindingInformation "*:443:hostname1.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
  4. +
  5. Run New-IISSiteBinding -Name "website_name" -BindingInformation "*:443:hostname2.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
  6. +
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 000000000..bce829282 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,51 @@ + + + + Index + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index

Welcome to my Digital Knowledge Garden 🌱

"The more I learn, the more I realize how much I don't know" -Aristotle

This project was inspired by this blog post

Toolkit

Sources

\ No newline at end of file diff --git a/docs/infer%23.html b/docs/infer%23.html new file mode 100644 index 000000000..00c4c268f --- /dev/null +++ b/docs/infer%23.html @@ -0,0 +1,57 @@ + + + + Infer%23 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Infer%23

Getting started with Infer

With Infer# v1.4 you can identify Security and Performance issues with a single click, all in VS2022 and VSCode. First, make sure that Windows Subsystem for Linux (WSL) is properly installed. Then, download and install the InferSharp extension from the Visual Studio or Visual Studio Code marketplaces. In this article, we’ll show the VS experience, which is mimicked in VS Code. You can also use Infer# directly in WSL and Docker.

The extension adds an Infer# Analysis menu item to the Tools menu. The first time it’s selected, it will complete setup by downloading and installing the Infer# custom WSL distro from Github.

    +
  • "../assets/image_1667865010674_0.png" is not created yet. Click to create.
  • +
  • +

Analyze your code

After waiting for setup to complete, selecting the Infer# Analysis menu item again will prompt you to provide a directory tree (defaulting to the solution directory, if it exists) containing the DLLs and PDBs you want to analyze. Your selection is automatically saved for future runs in the .infersharpconfig file created in your project directory. The analysis will then run, displaying the warnings in the Error List pane. Additionally, information about the analysis steps is shown in a pane on the right side of the editor, with clickable links to the relevant lines of code.

    +
  • "../assets/image_1667865053544_0.png" is not created yet. Click to create.
  • +

References

\ No newline at end of file diff --git a/docs/interview.html b/docs/interview.html new file mode 100644 index 000000000..35bdd6248 --- /dev/null +++ b/docs/interview.html @@ -0,0 +1,86 @@ + + + + Interview + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/jwt.html b/docs/jwt.html new file mode 100644 index 000000000..7f4a663de --- /dev/null +++ b/docs/jwt.html @@ -0,0 +1,87 @@ + + + + JWT + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
  • +

    A JWT is a set of claims (JSON property–value pairs) that together make up a JSON object.

    +

    It consists of three parts:

    +
      +
    1. Header: Consists of two properties: { "alg": "HS256", "typ": "JWT" }. alg is the algorithm that is used to encrypt the JWT.
    2. +
    3. Payload: This is where the data to be sent is stored; this data is stored as JSON property–value pairs.
    4. +
    5. Signature: This is created by encrypting, with the algorithm specified in the header:
      +(i) the base64Url-encoded header,
      +(ii) base64Url-encoded payload
      +(iii) a secret (or a private key)
    6. +
    +

    Format: {header}.{payload}.{signature}

    +

    https://openid.net/specs/draft-jones-json-web-token-07.html#ExampleJWT

    +
  • +

Encryption

Symmetric key and asymmetric keys

A JWT can be encrypted using either a symmetric key (shared secret) or asymmetric keys (the private key of a private–public pair).

    +
  1. Symmetric key: Both encryption (JWT signing) and verification are done with the symmetric key—also known as the shared secret.
  2. +
  3. Asymmetric keys: The encryption (JWT signing) is done with the private key, and verification is done with the public key.
  4. +
\ No newline at end of file diff --git a/docs/knowledge-sharing.html b/docs/knowledge-sharing.html new file mode 100644 index 000000000..cf3703c4a --- /dev/null +++ b/docs/knowledge-sharing.html @@ -0,0 +1,157 @@ + + + + Knowledge Sharing + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Knowledge Sharing

What

Share knowledge

Why

Sharing knowledge is crucial for software development teams to be successful in delivering high-quality software, improving team collaboration and efficiency, and staying up-to-date with new trends and technologies.

    +
  • Collaboration: Software development is rarely a solitary activity. Teamwork and collaboration are critical to the success of any software project. Sharing knowledge allows team members to work together more effectively and to leverage each other's strengths.
  • +
  • Efficiency: Sharing knowledge allows developers to avoid reinventing the wheel. They can build on the work of others, reuse code, and avoid common mistakes, which can save time and resources.
  • +
  • Quality: Sharing knowledge can help improve the quality of software. Developers can share best practices, techniques, and tools that can help ensure that software is well-designed, secure, and reliable.
  • +
  • Continuous Learning: The field of software development is constantly evolving. Sharing knowledge helps developers stay up-to-date with the latest developments, trends, and technologies. It also helps them learn from each other's experiences and mistakes.
  • +

Examples

How

    +
  • Document infrastructure, architecture, technical analysis and designs.
  • +
  • Provide how-to guides, tutorials, and runbooks.
  • +
  • Establish guidelines for contributors and code reviews.
  • +
  • Create and update documentation regularly.
  • +
  • Consolidate conflicting information in documentation.
  • +

Presentation Agenda

I. Introduction

    +
  • +

    Purpose of the presentation

    +
  • +
  • +

    Overview of knowledge sharing in software development

    +

    II. The Importance of Knowledge Sharing

    +
  • +
  • +

    Benefits of knowledge sharing for the team and organization

    +

    III. Strategies for Knowledge Sharing

    +
  • +
  • +

    Best practices for knowledge sharing

    +
  • +
  • +

    Examples of successful knowledge sharing practices

    +

    IV. Overcoming Challenges to Knowledge Sharing

    +
  • +
  • +

    Common challenges to knowledge sharing

    +
  • +
  • +

    Solutions for overcoming these challenges

    +

    V. Documenting Knowledge

    +
  • +
  • +

    Importance of documenting knowledge

    +
  • +
  • +

    Types of knowledge that should be documented

    +

    VI. Collaborative Learning

    +
  • +
  • +

    Benefits of collaborative learning

    +
  • +
  • +

    Ways to encourage collaborative learning

    +

    VII. Knowledge Sharing Tools

    +
  • +
  • +

    Tools that can be used for knowledge sharing

    +
  • +
  • +

    Examples of how these tools can be used effectively

    +

    VIII. Conclusion

    +
  • +
  • +

    Summary of key points

    +
  • +
  • +

    Importance of knowledge sharing in software development

    +
  • +
  • +

    Call to action for implementing knowledge sharing practices

    +

    IX. Questions and Answers

    +
  • +
  • +

    Open floor for questions and discussion

    +

    X. Closing

    +
  • +
  • +

    Final thoughts

    +
  • +
  • +

    Thank audience for their time and attention

    +
  • +
\ No newline at end of file diff --git a/docs/leadership.html b/docs/leadership.html new file mode 100644 index 000000000..4871fa446 --- /dev/null +++ b/docs/leadership.html @@ -0,0 +1,48 @@ + + + + Leadership + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Leadership
    +
  • "../assets/image_1667451208006_0.png" is not created yet. Click to create.
  • +
\ No newline at end of file diff --git a/docs/lib/scripts/graph-render-worker.js b/docs/lib/scripts/graph-render-worker.js new file mode 100644 index 000000000..df3e4c319 --- /dev/null +++ b/docs/lib/scripts/graph-render-worker.js @@ -0,0 +1,356 @@ +// Import Pixi.js library +if( 'function' === typeof importScripts) +{ + importScripts('https://d157l7jdn8e5sf.cloudfront.net/v7.2.0/webworker.js', './tinycolor.js'); + + addEventListener('message', onMessage); + + let app; + let container; + let graphics; + let labelText; + + isDrawing = false; + + let linkCount = 0; + let linkSources = []; + let linkTargets = []; + let nodeCount = 0; + let radii = []; + let labels = []; + let cameraOffset = {x: 0, y: 0}; + let positions = new Float32Array(0); + let linkLength = 0; + let edgePruning = 0; + let colors = + { + background: 0x232323, + link: 0xAAAAAA, + node: 0xCCCCCC, + outline: 0xAAAAAA, + text: 0xFFFFFF, + accent: 0x4023AA + } + + let hoveredNode = -1; + let lastHoveredNode = -1; + let grabbedNode = -1; + let updateAttached = false; + let attachedToGrabbed = []; + let activeNode = -1; + let attachedToActive = []; + + let cameraScale = 1; + let cameraScaleRoot = 1; + + function toScreenSpace(x, y, floor = true) + { + if (floor) + { + return {x: Math.floor((x * cameraScale) + cameraOffset.x), y: Math.floor((y * cameraScale) + cameraOffset.y)}; + } + else + { + return {x: (x * cameraScale) + cameraOffset.x, y: (y * cameraScale) + cameraOffset.y}; + } + } + + function vecToScreenSpace({x, y}, floor = true) + { + return toScreenSpace(x, y, floor); + } + + function toWorldspace(x, y) + { + return {x: (x - cameraOffset.x) / cameraScale, y: (y - cameraOffset.y) / cameraScale}; + } + + function vecToWorldspace({x, y}) + { + return toWorldspace(x, y); + } + + function setCameraCenterWorldspace({x, y}) + { + cameraOffset.x = (canvas.width / 2) - (x * cameraScale); + cameraOffset.y = (canvas.height / 2) - (y * cameraScale); + } + + function getCameraCenterWorldspace() + { + return toWorldspace(canvas.width / 2, canvas.height / 2); + } + + function getNodeScreenRadius(radius) + { + return radius * cameraScaleRoot; + } + + function getNodeWorldspaceRadius(radius) + { + return radius / cameraScaleRoot; + } + + function getPosition(index) + { + return {x: positions[index * 2], y: positions[index * 2 + 1]}; + } + + function mixColors(hexStart, hexEnd, factor) + { + return tinycolor.mix(tinycolor(hexStart.toString(16)), tinycolor(hexEnd.toString(16)), factor).toHexNumber() + } + + function darkenColor(hexColor, factor) + { + return tinycolor(hexColor.toString(16)).darken(factor).toHexNumber(); + } + + function lightenColor(hexColor, factor) + { + return tinycolor(hexColor.toString(16)).lighten(factor).toHexNumber(); + } + + function invertColor(hex, bw) + { + hex = hex.toString(16); // force conversion + + if (hex.indexOf('#') === 0) { + hex = hex.slice(1); + } + // convert 3-digit hex to 6-digits. + if (hex.length === 3) { + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + if (hex.length !== 6) { + throw new Error('Invalid HEX color.'); + } + var r = parseInt(hex.slice(0, 2), 16), + g = parseInt(hex.slice(2, 4), 16), + b = parseInt(hex.slice(4, 6), 16); + if (bw) { + // https://stackoverflow.com/a/3943023/112731 + return (r * 0.299 + g * 0.587 + b * 0.114) > 186 + ? '#000000' + : '#FFFFFF'; + } + // invert color components + r = (255 - r).toString(16); + g = (255 - g).toString(16); + b = (255 - b).toString(16); + // pad each with zeros and return + return "#" + padZero(r) + padZero(g) + padZero(b); + } + + let hoverFade = 0; + let hoverFadeSpeed = 0.2; + + function draw() + { + graphics.clear(); + + let topLines = []; + if (updateAttached) + { + attachedToGrabbed = []; + // hoverFade = 0; + } + + if (hoveredNode != -1 || grabbedNode != -1) + { + hoverFade = Math.min(1, hoverFade + hoverFadeSpeed); + } + else + { + hoverFade = Math.max(0, hoverFade - hoverFadeSpeed); + } + + graphics.lineStyle(1, mixColors(colors.link, colors.background, hoverFade * 50), 0.7); + + for (let i = 0; i < linkCount; i++) + { + let target = linkTargets[i]; + let source = linkSources[i]; + + if (hoveredNode == source || hoveredNode == target || ((lastHoveredNode == source || lastHoveredNode == target) && hoverFade != 0)) + { + if (updateAttached && hoveredNode == source) + attachedToGrabbed.push(target); + + else if (updateAttached && hoveredNode == target) + attachedToGrabbed.push(source); + + topLines.push(i); + } + + let startWorld = getPosition(source); + let endWorld = getPosition(target); + + let start = vecToScreenSpace(startWorld); + let end = vecToScreenSpace(endWorld); + + let dist = Math.sqrt(Math.pow(startWorld.x - endWorld.x, 2) + Math.pow(startWorld.y - endWorld.y, 2)); + + if (dist < (radii[source] + radii[target]) * edgePruning) + { + graphics.moveTo(start.x, start.y); + graphics.lineTo(end.x, end.y); + } + } + + let opacity = 1 - (hoverFade * 0.5); + graphics.beginFill(mixColors(colors.node, colors.background, hoverFade * 50), opacity); + graphics.lineStyle(0, 0xffffff); + for (let i = 0; i < nodeCount; i++) + { + if (hoveredNode == i || (lastHoveredNode == i && hoverFade != 0) || (hoveredNode != -1 && attachedToGrabbed.includes(i))) continue; + + let pos = vecToScreenSpace(getPosition(i)); + + graphics.drawCircle(pos.x, pos.y, getNodeScreenRadius(radii[i])); + } + + graphics.endFill(); + + + opacity = hoverFade * 0.7; + graphics.lineStyle(1, mixColors(mixColors(colors.link, colors.accent, hoverFade * 100), colors.background, 20), opacity); + + for (let i = 0; i < topLines.length; i++) + { + let target = linkTargets[topLines[i]]; + let source = linkSources[topLines[i]]; + + // draw lines on top when hovered + let start = vecToScreenSpace(getPosition(source)); + let end = vecToScreenSpace(getPosition(target)); + + + graphics.moveTo(start.x, start.y); + graphics.lineTo(end.x, end.y); + } + + if(hoveredNode != -1 || (lastHoveredNode != -1 && hoverFade != 0)) + { + graphics.beginFill(mixColors(colors.node, colors.accent, hoverFade * 20), 0.9); + graphics.lineStyle(0, 0xffffff); + for (let i = 0; i < attachedToGrabbed.length; i++) + { + let point = attachedToGrabbed[i]; + + let pos = vecToScreenSpace(getPosition(point)); + + graphics.drawCircle(pos.x, pos.y, getNodeScreenRadius(radii[point])); + } + graphics.endFill(); + + let index = hoveredNode != -1 ? hoveredNode : lastHoveredNode; + + let pos = vecToScreenSpace(getPosition(index)); + graphics.beginFill(mixColors(colors.node, colors.accent, hoverFade * 100), 1); + graphics.lineStyle(hoverFade, mixColors(invertColor(colors.background, true), colors.accent, 50)); + graphics.drawCircle(pos.x, pos.y, getNodeScreenRadius(radii[index])); + graphics.endFill(); + + labelText.text = labels[index]; + let nodePos = vecToScreenSpace(getPosition(index)); + labelText.x = nodePos.x - labelText.width/2; + labelText.y = nodePos.y + getNodeScreenRadius(radii[index]) + hoverFade * 5 + 15; + } + + updateAttached = false; + + if (hoveredNode == -1) + { + labelText.text = ""; + } + else + { + + } + + graphics.lineStyle(2, colors.accent); + // draw the active node + if (activeNode != -1) + { + let pos = vecToScreenSpace(getPosition(activeNode)); + graphics.drawCircle(pos.x, pos.y, getNodeScreenRadius(radii[activeNode]) + 4); + } + } + + function onMessage(event) + { + if(event.data.type == "draw") + { + positions = new Float32Array(event.data.positions); + draw(); + } + else if(event.data.type == "update_camera") + { + cameraOffset = event.data.cameraOffset; + cameraScale = event.data.cameraScale; + cameraScaleRoot = Math.sqrt(cameraScale); + } + else if(event.data.type == "update_interaction") + { + if(hoveredNode != event.data.hoveredNode && event.data.hoveredNode != -1) updateAttached = true; + if(grabbedNode != event.data.grabbedNode && event.data.hoveredNode != -1) updateAttached = true; + + if(event.data.hoveredNode == -1) lastHoveredNode = hoveredNode; + else lastHoveredNode = -1; + + hoveredNode = event.data.hoveredNode; + grabbedNode = event.data.grabbedNode; + } + else if(event.data.type == "resize") + { + app.renderer.resize(event.data.width, event.data.height); + } + else if(event.data.type == "set_active") + { + activeNode = event.data.active; + } + else if(event.data.type == "update_colors") + { + colors = event.data.colors; + + if(labelText) + { + labelText.style.fill = invertColor(colors.background, true); + } + } + else if(event.data.type == "init") + { + // Extract data from message + linkCount = event.data.linkCount; + linkSources = event.data.linkSources; + linkTargets = event.data.linkTargets; + nodeCount = event.data.nodeCount; + radii = event.data.radii; + labels = event.data.labels; + linkLength = event.data.linkLength; + edgePruning = event.data.edgePruning; + + app = new PIXI.Application({... event.data.options, antialias: true, resolution: 2, backgroundAlpha: 0, transparent: true}); + container = new PIXI.Container(); + graphics = new PIXI.Graphics(); + app.stage.addChild(container); + container.addChild(graphics); + + labelText = new PIXI.Text("", {fontFamily : 'Arial', fontSize: 16, fontWeight: "bold", fill : invertColor(colors.background, true), align : 'center', anchor: 0.5}); + app.stage.addChild(labelText); + + } + else + { + console.log("Unknown message type sent to graph worker: " + event.data.type); + } + } +} + + + + + + + diff --git a/docs/lib/scripts/graph_view.js b/docs/lib/scripts/graph_view.js new file mode 100644 index 000000000..f6683f3a5 --- /dev/null +++ b/docs/lib/scripts/graph_view.js @@ -0,0 +1,913 @@ +// -------------------------- GRAPH VIEW -------------------------- +var running = false; +let batchFraction = 1; +let minBatchFraction = 0.3; +repulsionForce /= batchFraction; +let dt = 1; +let targetFPS = 40; +let startingCameraScale = undefined; +let startingCameraOffset = undefined; + +let mousePositionWorld = { x: undefined, y: undefined }; +let mousePositionScreen = { x: undefined, y: undefined }; +let scrollVelocity = 0; +let lastMousePos = { x: 0, y: 0 }; +let averageFPS = targetFPS; + +let mouseInside = false; +let graphExpanded = false; +let leftButtonDown = false; +let rightButtonDown = false; +let middleButtonDown = false; +let panning = false; + +const pixiApp = new PIXI.Application(); +var renderWorker = undefined; + + +class GraphAssembly +{ + static nodeCount = 0; + static linkCount = 0; + static hoveredNode = -1; + + static #positionsPtr = 0; + static #positionsByteLength = 0; + static #radiiPtr = 0; + static #linkSourcesPtr = 0; + static #linkTargetsPtr = 0; + + static linkSources = new Int32Array(0); + static linkTargets = new Int32Array(0); + static radii = new Float32Array(0); + static maxRadius = 0; + static averageRadius = 0; + static minRadius = 0; + + /** + * @param {{nodeCount: number, linkCount:number, radii: number[], labels: string[], paths: string[], linkSources: number[], linkTargets: number[], linkCounts: number[]}} nodes + */ + static init(nodes) + { + GraphAssembly.nodeCount = nodes.nodeCount; + GraphAssembly.linkCount = nodes.linkCount; + + // create arrays for the data + let positions = new Float32Array(GraphAssembly.nodeCount * 2); + GraphAssembly.radii = new Float32Array(nodes.radii); + GraphAssembly.linkSources = new Int32Array(nodes.linkSources); + GraphAssembly.linkTargets = new Int32Array(nodes.linkTargets); + + // allocate memory on the heap + GraphAssembly.#positionsPtr = Module._malloc(positions.byteLength); + GraphAssembly.#positionsByteLength = positions.byteLength; + GraphAssembly.#radiiPtr = Module._malloc(GraphAssembly.radii.byteLength); + GraphAssembly.#linkSourcesPtr = Module._malloc(GraphAssembly.linkSources.byteLength); + GraphAssembly.#linkTargetsPtr = Module._malloc(GraphAssembly.linkTargets.byteLength); + + GraphAssembly.maxRadius = GraphAssembly.radii.reduce((a, b) => Math.max(a, b)); + GraphAssembly.averageRadius = GraphAssembly.radii.reduce((a, b) => a + b) / GraphAssembly.radii.length; + GraphAssembly.minRadius = GraphAssembly.radii.reduce((a, b) => Math.min(a, b)); + + positions = this.loadState(); + + // copy the data to the heap + Module.HEAP32.set(new Int32Array(positions.buffer), GraphAssembly.#positionsPtr / positions.BYTES_PER_ELEMENT); + Module.HEAP32.set(new Int32Array(GraphAssembly.radii.buffer), GraphAssembly.#radiiPtr / GraphAssembly.radii.BYTES_PER_ELEMENT); + Module.HEAP32.set(new Int32Array(GraphAssembly.linkSources.buffer), GraphAssembly.#linkSourcesPtr / GraphAssembly.linkSources.BYTES_PER_ELEMENT); + Module.HEAP32.set(new Int32Array(GraphAssembly.linkTargets.buffer), GraphAssembly.#linkTargetsPtr / GraphAssembly.linkTargets.BYTES_PER_ELEMENT); + + Module._Init( + GraphAssembly.#positionsPtr, + GraphAssembly.#radiiPtr, + GraphAssembly.#linkSourcesPtr, + GraphAssembly.#linkTargetsPtr, + GraphAssembly.nodeCount, + GraphAssembly.linkCount, + batchFraction, + dt, + attractionForce, + linkLength, + repulsionForce, + centralForce + ); + } + + /** + * @returns {Float32Array} + */ + static get positions() + { + return Module.HEAP32.buffer.slice(GraphAssembly.#positionsPtr, GraphAssembly.#positionsPtr + GraphAssembly.#positionsByteLength); + } + + /** + * @param {GraphRenderWorker} renderWorker + * */ + static saveState(renderWorker) + { + localStorage.setItem("positions", JSON.stringify(new Float32Array(GraphAssembly.positions))); + localStorage.setItem("cameraOffset", JSON.stringify(renderWorker.cameraOffset)); + localStorage.setItem("cameraScale", JSON.stringify(renderWorker.cameraScale)); + } + + /** + * @returns {Float32Array} + * */ + static loadState() + { + let positionsLoad = localStorage.getItem("positions"); + let positions = null; + if(positionsLoad) positions = new Float32Array(Object.values(JSON.parse(positionsLoad))); + if (!positions || !positionsLoad || positions.length != GraphAssembly.nodeCount * 2) + { + positions = new Float32Array(GraphAssembly.nodeCount * 2); + let spawnRadius = (GraphAssembly.averageRadius * Math.sqrt(GraphAssembly.nodeCount)) * 2; + for (let i = 0; i < GraphAssembly.nodeCount; i++) + { + let distance = (1 - GraphAssembly.radii[i] / GraphAssembly.maxRadius) * spawnRadius; + positions[i * 2] = Math.cos(i/GraphAssembly.nodeCount * 7.41 * 2 * Math.PI) * distance; + positions[i * 2 + 1] = Math.sin(i/GraphAssembly.nodeCount * 7.41 * 2 * Math.PI) * distance; + } + } + + startingCameraOffset = JSON.parse(localStorage.getItem("cameraOffset")); + startingCameraScale = JSON.parse(localStorage.getItem("cameraScale")); + + return positions; + } + + /** + * @param {{x: number, y: number}} mousePosition + * @param {number} grabbedNode + */ + static update(mousePosition, grabbedNode, cameraScale) + { + GraphAssembly.hoveredNode = Module._Update(mousePosition.x, mousePosition.y, grabbedNode, cameraScale); + } + + static free() + { + Module._free(GraphAssembly.#positionsPtr); + Module._free(GraphAssembly.#radiiPtr); + Module._free(GraphAssembly.#linkSourcesPtr); + Module._free(GraphAssembly.#linkTargetsPtr); + Module._FreeMemory(); + } + + /** + * @param {number} value + */ + static set batchFraction(value) + { + Module._SetBatchFractionSize(value); + } + + /** + * @param {number} value + */ + static set attractionForce(value) + { + Module._SetAttractionForce(value); + } + + /** + * @param {number} value + */ + static set repulsionForce(value) + { + Module._SetRepulsionForce(value); + } + + /** + * @param {number} value + */ + static set centralForce(value) + { + Module._SetCentralForce(value); + } + + /** + * @param {number} value + */ + static set linkLength(value) + { + Module._SetLinkLength(value); + } + + /** + * @param {number} value + */ + static set dt(value) + { + Module._SetDt(value); + } +} + +class GraphRenderWorker +{ + #cameraOffset + #cameraScale + #hoveredNode + #grabbedNode + #colors + #width + #height + + + constructor() + { + this.canvas = document.querySelector("#graph-canvas"); + + this.view = this.canvas.transferControlToOffscreen(); + + this.worker = new Worker(new URL("./graph-render-worker.js", import.meta.url)); + + this.#cameraOffset = {x: 0, y: 0}; + this.#cameraScale = 1; + this.#hoveredNode = -1; + this.#grabbedNode = -1; + this.#colors = + { + background: 0x000000, + link: 0x000000, + node: 0x000000, + outline: 0x000000, + text: 0x000000, + accent: 0x000000, + } + this.#width = 0; + this.#height = 0; + + this.cameraOffset = {x: this.canvas.width / 2, y: this.canvas.height / 2}; + this.cameraScale = 1; + this.hoveredNode = -1; + this.grabbedNode = -1; + this.resampleColors(); + + this.#pixiInit(); + + this.width = this.canvas.width; + this.height = this.canvas.height; + + this.autoResizeCanvas(); + + if (startingCameraOffset && startingCameraScale) + { + this.cameraOffset = startingCameraOffset; + this.cameraScale = startingCameraScale; + } + else + { + this.centerCamera(); + } + } + + #pixiInit() + { + let { width, height } = this.view; + + this.worker.postMessage( + { + type: 'init', + linkCount: GraphAssembly.linkCount, + linkSources: GraphAssembly.linkSources, + linkTargets: GraphAssembly.linkTargets, + nodeCount: GraphAssembly.nodeCount, + radii: GraphAssembly.radii, + labels: nodes.labels, + linkLength: linkLength, + edgePruning: edgePruning, + options: { width: width, height: height, view: this.view }, + }, [this.view]); + } + + resampleColors() + { + function sampleColor(variable) + { + let testEl = document.createElement('div'); + testEl.style.setProperty('display', 'none'); + testEl.style.setProperty('color', 'var(' + variable + ')'); + document.body.appendChild(testEl); + + let col = getComputedStyle(testEl).color; + let opacity = getComputedStyle(testEl).opacity; + + testEl.remove(); + + function toColorObject(str) + { + var match = str.match(/rgb?\((\d+),\s*(\d+),\s*(\d+)\)/); + return match ? { + red: parseInt(match[1]), + green: parseInt(match[2]), + blue: parseInt(match[3]), + alpha: 1 + } : null + } + + var color = toColorObject(col), alpha = parseFloat(opacity); + return isNaN(alpha) && (alpha = 1), + color ? { + a: alpha * color.alpha, + rgb: color.red << 16 | color.green << 8 | color.blue + } : { + a: alpha, + rgb: 8947848 + } + }; + + this.colors = + { + background: sampleColor('--background-secondary').rgb, + link: sampleColor('--graph-line').rgb, + node: sampleColor('--graph-node').rgb, + outline: sampleColor('--graph-line').rgb, + text: sampleColor('--graph-text').rgb, + accent: sampleColor('--interactive-accent').rgb, + }; + } + + draw(_positions) + { + this.worker.postMessage( + { + type: 'draw', + positions: _positions, + }, [_positions]); + } + + resizeCanvas(width, height) + { + this.worker.postMessage( + { + type: "resize", + width: width, + height: height, + }); + + this.#width = width; + this.#height = height; + } + + autoResizeCanvas() + { + this.resizeCanvas(this.canvas.offsetWidth, this.canvas.offsetHeight); + } + + centerCamera() + { + this.cameraOffset = { x: this.width / 2, y: this.height / 2 }; + } + + #pixiSetInteraction(hoveredNodeIndex, grabbedNodeIndex) + { + let obj = + { + type: "update_interaction", + hoveredNode: hoveredNodeIndex, + grabbedNode: grabbedNodeIndex, + } + + this.worker.postMessage(obj); + } + + #pixiSetCamera(cameraOffset, cameraScale) + { + this.worker.postMessage( + { + type: "update_camera", + cameraOffset: cameraOffset, + cameraScale: cameraScale, + }); + } + + #pixiSetColors(colors) + { + this.worker.postMessage( + { + type: "update_colors", + colors: colors, + }); + + } + + set cameraOffset(offset) + { + this.#cameraOffset = offset; + this.#pixiSetCamera(offset, this.cameraScale); + } + + set cameraScale(scale) + { + this.#cameraScale = scale; + this.#pixiSetCamera(this.cameraOffset, scale); + } + + get cameraOffset() + { + return this.#cameraOffset; + } + + get cameraScale() + { + return this.#cameraScale; + } + + /** + * @param {number} node + */ + set hoveredNode(node) + { + this.#hoveredNode = node; + this.#pixiSetInteraction(node, this.#grabbedNode); + } + + /** + * @param {number} node + */ + set grabbedNode(node) + { + this.#grabbedNode = node; + this.#pixiSetInteraction(this.#hoveredNode, node); + } + + /** + * @param {number} node + */ + set activeNode(node) + { + this.worker.postMessage( + { + type: 'set_active', + active: node, + }); + } + + get hoveredNode() + { + return this.#hoveredNode; + } + + get grabbedNode() + { + return this.#grabbedNode; + } + + /** + * @param {{ background: number; link: number; node: number; outline: number; text: number; accent: number; }} colors + */ + set colors(colors) + { + this.#colors = colors; + this.#pixiSetColors(colors); + } + + get colors() + { + return this.#colors; + } + + set width(width) + { + this.#width = width; + this.resizeCanvas(width, this.#height); + } + + set height(height) + { + this.#height = height; + this.resizeCanvas(this.#width, height); + } + + get height() + { + return this.#height; + } + + get width() + { + return this.#width; + } + + /** + * @param {number} x + * @param {number} y + * @param {boolean} floor + * @returns {{x: number; y: number;}} + */ + toScreenSpace(x, y, floor = true) + { + if (floor) + { + return {x: Math.floor((x * this.cameraScale) + this.cameraOffset.x), y: Math.floor((y * this.cameraScale) + this.cameraOffset.y)}; + } + else + { + return {x: (x * this.cameraScale) + this.cameraOffset.x, y: (y * this.cameraScale) + this.cameraOffset.y}; + } + } + + /** + * @param {{x: number; y: number;}} vector + * @param {boolean} floor + * @returns {{x: number; y: number;}} + */ + vecToScreenSpace(vector, floor = true) + { + return this.toScreenSpace(vector.x, vector.y, floor); + } + + /** + * @param {number} x + * @param {number} y + * @returns {{x: number; y: number;}} + */ + toWorldspace(x, y) + { + return {x: (x - this.cameraOffset.x) / this.cameraScale, y: (y - this.cameraOffset.y) / this.cameraScale}; + } + + /** + * @param {{x: number; y: number;}} vector + * @returns {{x: number; y: number;}} + */ + vecToWorldspace(vector) + { + return this.toWorldspace(vector.x, vector.y); + } + + setCameraCenterWorldspace({x, y}) + { + this.cameraOffset = {x: (this.width / 2) - (x * this.cameraScale), y: (this.height / 2) - (y * this.cameraScale)}; + } + + getCameraCenterWorldspace() + { + return this.toWorldspace(this.width / 2, this.height / 2); + } +} + +async function initializeGraphView() +{ + if(running) return; + running = true; + + console.log("Module Ready"); + GraphAssembly.init(nodes); + + renderWorker = new GraphRenderWorker(); + window.renderWorker = renderWorker; + + initializeGraphEvents(); + + pixiApp.ticker.maxFPS = targetFPS; + pixiApp.ticker.add(updateGraph); + + setActiveDocument(getURLPath()); + + setInterval(() => + { + function isHidden(el) { + var style = window.getComputedStyle(el); + return (style.display === 'none') + } + + try + { + var hidden = (isHidden(document.querySelector(".graph-view-placeholder")) || isHidden(document.querySelector(".sidebar:has(.graph-view-placeholder)"))); + } + catch(e) + { + return; + } + + if(running && hidden) + { + running = false; + } + else if (!running && !hidden) + { + running = true; + renderWorker.autoResizeCanvas(); + renderWorker.centerCamera(); + } + + }, 1000); +} + +function updateGraph() +{ + if(!running) return; + + GraphAssembly.update(mousePositionWorld, renderWorker.grabbedNode, renderWorker.cameraScale); + + if (GraphAssembly.hoveredNode != renderWorker.hoveredNode) + { + renderWorker.hoveredNode = GraphAssembly.hoveredNode; + renderWorker.canvas.style.cursor = GraphAssembly.hoveredNode == -1 ? "default" : "pointer"; + } + + renderWorker.draw(GraphAssembly.positions); + + averageFPS = averageFPS * 0.95 + pixiApp.ticker.FPS * 0.05; + + if (averageFPS < targetFPS * 0.9 && batchFraction > minBatchFraction) + { + batchFraction = Math.max(batchFraction - 0.5 * 1/targetFPS, minBatchFraction); + GraphAssembly.batchFraction = batchFraction; + GraphAssembly.repulsionForce = repulsionForce / batchFraction; + } + + if (scrollVelocity != 0) + { + let cameraCenter = renderWorker.getCameraCenterWorldspace(); + + if (Math.abs(scrollVelocity) < 0.001) + { + scrollVelocity = 0; + } + + renderWorker.cameraScale = Math.max(Math.min(renderWorker.cameraScale + scrollVelocity * renderWorker.cameraScale, 10.0), 0.1); + + if(renderWorker.cameraScale != 0.1 && renderWorker.cameraScale != 10 && scrollVelocity > 0 && mousePositionWorld.x != undefined && mousePositionWorld.y != undefined) + { + // zoom towards cursor position + let mouseDiff = {x: mousePositionWorld.x - cameraCenter.x, y: mousePositionWorld.y - cameraCenter.y}; + var movePos = {x: cameraCenter.x + mouseDiff.x * scrollVelocity, y: cameraCenter.y + mouseDiff.y * scrollVelocity}; + renderWorker.setCameraCenterWorldspace(movePos); + } + else renderWorker.setCameraCenterWorldspace(cameraCenter); + + scrollVelocity *= 0.6; + } +} + +function initializeGraphEvents() +{ + window.addEventListener('beforeunload', () => + { + running = false; + GraphAssembly.free(); + }); + + let lastCanvasWidth = renderWorker.canvas.width; + window.addEventListener('resize', () => + { + if(graphExpanded) + { + renderWorker.autoResizeCanvas(); + renderWorker.centerCamera(); + } + else + { + if (renderWorker.canvas.width != lastCanvasWidth) + { + renderWorker.autoResizeCanvas(); + renderWorker.centerCamera(); + } + } + }); + + // Get the mouse position relative to the canvas. + function getMousePos(canvas, event) + { + var rect = canvas.getBoundingClientRect(); + var clientX = event.clientX; + var clientY = event.clientY; + + return { + x: clientX - rect.left, + y: clientY - rect.top + }; + } + + function handleMouseMove(event) + { + mousePositionScreen = getMousePos(renderWorker.canvas, event); + mousePositionWorld = renderWorker.vecToWorldspace(mousePositionScreen); + + if (lastMousePos.x == 0 && lastMousePos.y == 0) + { + lastMousePos = { x: event.clientX, y: event.clientY }; + return; + } + + let delta = { x: lastMousePos.x - event.clientX, y: lastMousePos.y - event.clientY }; + + if (leftButtonDown && renderWorker.hoveredNode != -1) + { + renderWorker.grabbedNode = renderWorker.hoveredNode; + } + + if (middleButtonDown || (leftButtonDown && renderWorker.hoveredNode == -1)) + { + let camOffset = renderWorker.cameraOffset; + renderWorker.cameraOffset = { x: camOffset.x - delta.x, y: camOffset.y - delta.y }; + panning = true; + } + else + { + panning = false; + } + + lastMousePos = { x: event.clientX, y: event.clientY }; + } + + renderWorker.canvas.addEventListener("mouseenter", () => mouseInside = true); + renderWorker.canvas.addEventListener("mouseleave", () => mouseInside = false); + + document.querySelectorAll("body").forEach(element => + { + element.addEventListener("mousemove", event => + { + event.stopPropagation(); + + if(mouseInside) return; + + if (panning || renderWorker.grabbedNode != -1) { + handleMouseMove(event); + } + }); + }); + + document.getElementById("graph-canvas").addEventListener("mousemove", event => + { + handleMouseMove(event); + }); + + + document.getElementById("graph-canvas").addEventListener("mousedown", event => + { + event.stopPropagation(); + + if (event.button == 0) leftButtonDown = true; + if (event.button == 1) middleButtonDown = true; + if (event.button == 2) rightButtonDown = true; + }); + + async function navigateToNode(nodeIndex) + { + if (!graphExpanded) GraphAssembly.saveState(renderWorker); + else toggleExpandedGraph(); + + let url = nodes.paths[nodeIndex]; + if(window.location.pathname.endsWith(nodes.paths[nodeIndex])) return; + await loadDocument(url); + } + + document.body.addEventListener("mouseup", event => + { + event.stopPropagation(); + + if (event.button == 0) leftButtonDown = false; + if (event.button == 1) middleButtonDown = false; + if (event.button == 2) rightButtonDown = false; + + // we must have just clicked on a node without dragging it + if (!panning && renderWorker.grabbedNode == -1 && renderWorker.hoveredNode != -1) + { + navigateToNode(renderWorker.hoveredNode); + } + + renderWorker.grabbedNode = -1; + }); + + // also mouse up if mouse leaves canvas + document.getElementById("graph-canvas").addEventListener("mouseleave", event => + { + event.stopPropagation(); + + if (renderWorker.grabbedNode == -1 && !(middleButtonDown || leftButtonDown)) + { + mousePositionScreen = { x: undefined, y: undefined }; + mousePositionWorld = { x: undefined, y: undefined }; + } + }); + + document.getElementById("graph-canvas").addEventListener("wheel", function(e) + { + e.preventDefault(); + e.stopPropagation(); + + let startingScrollVelocity = 0.08; + + let delta = e.deltaY; + if (delta > 0) + { + if(scrollVelocity >= -startingScrollVelocity) + { + scrollVelocity = -startingScrollVelocity; + } + + scrollVelocity *= 1.3; + } + else + { + if(scrollVelocity <= startingScrollVelocity) + { + scrollVelocity = startingScrollVelocity; + } + + scrollVelocity *= 1.3; + } + }); + + // touch controls + document.getElementById("graph-canvas").addEventListener("touchstart", function(e) + { + e.preventDefault(); + e.stopPropagation(); + + if (e.touches.length == 1) + { + lastMousePos = { x: e.touches[0].clientX, y: e.touches[0].clientY }; + + leftButtonDown = true; + } + else if (e.touches.length == 2) + { + middleButtonDown = true; + } + }); + + document.getElementById("graph-canvas").addEventListener("touchmove", function(e) + { + handleMouseMove(e.touches[0]); + }); + + document.addEventListener("touchend", function(e) + { + e.preventDefault(); + e.stopPropagation(); + + if (e.touches.length == 0) + { + leftButtonDown = false; + middleButtonDown = false; + + if (!panning && renderWorker.grabbedNode == -1 && renderWorker.hoveredNode != -1) + { + navigateToNode(renderWorker.hoveredNode); + } + + renderWorker.grabbedNode = -1; + } + else if (e.touches.length == 1) + { + middleButtonDown = false; + } + }); + + document.querySelector(".theme-toggle-input")?.addEventListener("change", event => + { + renderWorker.resampleColors(); + }); + + function toggleExpandedGraph() + { + let container = document.querySelector(".graph-view-container"); + let initialWidth = container.clientWidth; + let initialHeight = container.clientHeight; + + // scale and fade out animation: + container.classList.add("scale-down"); + let fadeOutAnimation = container.animate({ opacity: 0 }, {duration: 100, easing: "ease-in", fill: "forwards"}); + fadeOutAnimation.addEventListener("finish", function() + { + container.classList.toggle("expanded"); + + renderWorker.autoResizeCanvas(); + renderWorker.centerCamera(); + + let finalWidth = container.clientWidth; + let finalHeight = container.clientHeight; + renderWorker.cameraScale *= ((finalWidth / initialWidth) + (finalHeight / initialHeight)) / 2; + + container.classList.remove("scale-down"); + container.classList.add("scale-up"); + + updateGraph(); + + let fadeInAnimation = container.animate({ opacity: 1 }, {duration: 200, easing: "ease-out", fill: "forwards"}); + fadeInAnimation.addEventListener("finish", function() + { + container.classList.remove("scale-up"); + }); + }); + + graphExpanded = !graphExpanded; + } + + document.querySelector(".graph-expand.graph-icon")?.addEventListener("click", event => + { + event.preventDefault(); + event.stopPropagation(); + + toggleExpandedGraph(); + }); +} + +Module['onRuntimeInitialized'] = initializeGraphView; +setTimeout(() => Module['onRuntimeInitialized'](), 300); diff --git a/docs/lib/scripts/graph_wasm.js b/docs/lib/scripts/graph_wasm.js new file mode 100644 index 000000000..e3a86bb72 --- /dev/null +++ b/docs/lib/scripts/graph_wasm.js @@ -0,0 +1,3 @@ + +// Wasm glue +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",function(ex){if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",function(reason){throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="graph_wasm.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(binaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(binaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(binaryFile)})}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(function(binary){return WebAssembly.instantiate(binary,imports)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["f"];updateMemoryViews();wasmTable=Module["asm"]["r"];addOnInit(Module["asm"]["g"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={2304:$0=>{console.log(UTF8ToString($0))}};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: "+type)}}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: "+type)}}function _abort(){abort("")}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function getCFunc(ident){var func=Module["_"+ident];return func}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;itype==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return function(){return ccall(ident,returnType,argTypes,arguments,opts)}}var wasmImports={"b":_abort,"e":_emscripten_asm_const_int,"d":_emscripten_date_now,"c":_emscripten_memcpy_big,"a":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["g"]).apply(null,arguments)};var _SetBatchFractionSize=Module["_SetBatchFractionSize"]=function(){return(_SetBatchFractionSize=Module["_SetBatchFractionSize"]=Module["asm"]["h"]).apply(null,arguments)};var _SetAttractionForce=Module["_SetAttractionForce"]=function(){return(_SetAttractionForce=Module["_SetAttractionForce"]=Module["asm"]["i"]).apply(null,arguments)};var _SetLinkLength=Module["_SetLinkLength"]=function(){return(_SetLinkLength=Module["_SetLinkLength"]=Module["asm"]["j"]).apply(null,arguments)};var _SetRepulsionForce=Module["_SetRepulsionForce"]=function(){return(_SetRepulsionForce=Module["_SetRepulsionForce"]=Module["asm"]["k"]).apply(null,arguments)};var _SetCentralForce=Module["_SetCentralForce"]=function(){return(_SetCentralForce=Module["_SetCentralForce"]=Module["asm"]["l"]).apply(null,arguments)};var _SetDt=Module["_SetDt"]=function(){return(_SetDt=Module["_SetDt"]=Module["asm"]["m"]).apply(null,arguments)};var _Init=Module["_Init"]=function(){return(_Init=Module["_Init"]=Module["asm"]["n"]).apply(null,arguments)};var _Update=Module["_Update"]=function(){return(_Update=Module["_Update"]=Module["asm"]["o"]).apply(null,arguments)};var _SetPosition=Module["_SetPosition"]=function(){return(_SetPosition=Module["_SetPosition"]=Module["asm"]["p"]).apply(null,arguments)};var _FreeMemory=Module["_FreeMemory"]=function(){return(_FreeMemory=Module["_FreeMemory"]=Module["asm"]["q"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["__errno_location"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["s"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["t"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["u"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["v"]).apply(null,arguments)};var stackAlloc=function(){return(stackAlloc=Module["asm"]["w"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["__cxa_is_pointer_type"]).apply(null,arguments)};Module["cwrap"]=cwrap;Module["setValue"]=setValue;Module["getValue"]=getValue;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); diff --git a/docs/lib/scripts/graph_wasm.wasm b/docs/lib/scripts/graph_wasm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e94bee22df7e2e277d34b3887496c68fdf3827ae GIT binary patch literal 23377 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 literal 0 HcmV?d00001 diff --git a/docs/lib/scripts/tinycolor.js b/docs/lib/scripts/tinycolor.js new file mode 100644 index 000000000..dd2cbedcf --- /dev/null +++ b/docs/lib/scripts/tinycolor.js @@ -0,0 +1,1863 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.tinycolor = factory()); +})(this, (function () { 'use strict'; + + function _typeof(obj) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, _typeof(obj); + } + + // https://github.com/bgrins/TinyColor + // Brian Grinstead, MIT License + + var trimLeft = /^\s+/; + var trimRight = /\s+$/; + function tinycolor(color, opts) { + color = color ? color : ""; + opts = opts || {}; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + var rgb = inputToRGB(color); + this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (this._r < 1) this._r = Math.round(this._r); + if (this._g < 1) this._g = Math.round(this._g); + if (this._b < 1) this._b = Math.round(this._b); + this._ok = rgb.ok; + } + tinycolor.prototype = { + isDark: function isDark() { + return this.getBrightness() < 128; + }, + isLight: function isLight() { + return !this.isDark(); + }, + isValid: function isValid() { + return this._ok; + }, + getOriginalInput: function getOriginalInput() { + return this._originalInput; + }, + getFormat: function getFormat() { + return this._format; + }, + getAlpha: function getAlpha() { + return this._a; + }, + getBrightness: function getBrightness() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function getLuminance() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r / 255; + GsRGB = rgb.g / 255; + BsRGB = rgb.b / 255; + if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4); + if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4); + if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4); + return 0.2126 * R + 0.7152 * G + 0.0722 * B; + }, + setAlpha: function setAlpha(value) { + this._a = boundAlpha(value); + this._roundA = Math.round(100 * this._a) / 100; + return this; + }, + toHsv: function toHsv() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { + h: hsv.h * 360, + s: hsv.s, + v: hsv.v, + a: this._a + }; + }, + toHsvString: function toHsvString() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = Math.round(hsv.h * 360), + s = Math.round(hsv.s * 100), + v = Math.round(hsv.v * 100); + return this._a == 1 ? "hsv(" + h + ", " + s + "%, " + v + "%)" : "hsva(" + h + ", " + s + "%, " + v + "%, " + this._roundA + ")"; + }, + toHsl: function toHsl() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { + h: hsl.h * 360, + s: hsl.s, + l: hsl.l, + a: this._a + }; + }, + toHslString: function toHslString() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = Math.round(hsl.h * 360), + s = Math.round(hsl.s * 100), + l = Math.round(hsl.l * 100); + return this._a == 1 ? "hsl(" + h + ", " + s + "%, " + l + "%)" : "hsla(" + h + ", " + s + "%, " + l + "%, " + this._roundA + ")"; + }, + toHex: function toHex(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function toHexString(allow3Char) { + return "#" + this.toHex(allow3Char); + }, + toHexNumber: function toHexNumber() { + return Number("0x" + this.toHex()); + }, + toHex8: function toHex8(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function toHex8String(allow4Char) { + return "#" + this.toHex8(allow4Char); + }, + toRgb: function toRgb() { + return { + r: Math.round(this._r), + g: Math.round(this._g), + b: Math.round(this._b), + a: this._a + }; + }, + toRgbString: function toRgbString() { + return this._a == 1 ? "rgb(" + Math.round(this._r) + ", " + Math.round(this._g) + ", " + Math.round(this._b) + ")" : "rgba(" + Math.round(this._r) + ", " + Math.round(this._g) + ", " + Math.round(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function toPercentageRgb() { + return { + r: Math.round(bound01(this._r, 255) * 100) + "%", + g: Math.round(bound01(this._g, 255) * 100) + "%", + b: Math.round(bound01(this._b, 255) * 100) + "%", + a: this._a + }; + }, + toPercentageRgbString: function toPercentageRgbString() { + return this._a == 1 ? "rgb(" + Math.round(bound01(this._r, 255) * 100) + "%, " + Math.round(bound01(this._g, 255) * 100) + "%, " + Math.round(bound01(this._b, 255) * 100) + "%)" : "rgba(" + Math.round(bound01(this._r, 255) * 100) + "%, " + Math.round(bound01(this._g, 255) * 100) + "%, " + Math.round(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function toName() { + if (this._a === 0) { + return "transparent"; + } + if (this._a < 1) { + return false; + } + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function toFilter(secondColor) { + var hex8String = "#" + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = "#" + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + return "progid:DXImageTransform.Microsoft.gradient(" + gradientType + "startColorstr=" + hex8String + ",endColorstr=" + secondHex8String + ")"; + }, + toString: function toString(format) { + var formatSet = !!format; + format = format || this._format; + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + return formattedString || this.toHexString(); + }, + clone: function clone() { + return tinycolor(this.toString()); + }, + _applyModification: function _applyModification(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function lighten() { + return this._applyModification(_lighten, arguments); + }, + brighten: function brighten() { + return this._applyModification(_brighten, arguments); + }, + darken: function darken() { + return this._applyModification(_darken, arguments); + }, + desaturate: function desaturate() { + return this._applyModification(_desaturate, arguments); + }, + saturate: function saturate() { + return this._applyModification(_saturate, arguments); + }, + greyscale: function greyscale() { + return this._applyModification(_greyscale, arguments); + }, + spin: function spin() { + return this._applyModification(_spin, arguments); + }, + _applyCombination: function _applyCombination(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function analogous() { + return this._applyCombination(_analogous, arguments); + }, + complement: function complement() { + return this._applyCombination(_complement, arguments); + }, + monochromatic: function monochromatic() { + return this._applyCombination(_monochromatic, arguments); + }, + splitcomplement: function splitcomplement() { + return this._applyCombination(_splitcomplement, arguments); + }, + // Disabled until https://github.com/bgrins/TinyColor/issues/254 + // polyad: function (number) { + // return this._applyCombination(polyad, [number]); + // }, + triad: function triad() { + return this._applyCombination(polyad, [3]); + }, + tetrad: function tetrad() { + return this._applyCombination(polyad, [4]); + } + }; + + // If input is an object, force 1 into "1.0" to handle ratios properly + // String input requires "1.0" as input, so 1 will be treated as 1 + tinycolor.fromRatio = function (color, opts) { + if (_typeof(color) == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + return tinycolor(color, opts); + }; + + // Given a string or object, convert that input to RGB + // Possible string inputs: + // + // "red" + // "#f00" or "f00" + // "#ff0000" or "ff0000" + // "#ff000000" or "ff000000" + // "rgb 255 0 0" or "rgb (255, 0, 0)" + // "rgb 1.0 0 0" or "rgb (1, 0, 0)" + // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" + // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" + // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" + // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" + // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" + // + function inputToRGB(color) { + var rgb = { + r: 0, + g: 0, + b: 0 + }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + if (typeof color == "string") { + color = stringInputToObject(color); + } + if (_typeof(color) == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + a = boundAlpha(a); + return { + ok: ok, + format: color.format || format, + r: Math.min(255, Math.max(rgb.r, 0)), + g: Math.min(255, Math.max(rgb.g, 0)), + b: Math.min(255, Math.max(rgb.b, 0)), + a: a + }; + } + + // Conversion Functions + // -------------------- + + // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: + // + + // `rgbToRgb` + // Handle bounds / percentage checking to conform to CSS color spec + // + // *Assumes:* r, g, b in [0, 255] or [0, 1] + // *Returns:* { r, g, b } in [0, 255] + function rgbToRgb(r, g, b) { + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; + } + + // `rgbToHsl` + // Converts an RGB color value to HSL. + // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] + // *Returns:* { h, s, l } in [0,1] + function rgbToHsl(r, g, b) { + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + var max = Math.max(r, g, b), + min = Math.min(r, g, b); + var h, + s, + l = (max + min) / 2; + if (max == min) { + h = s = 0; // achromatic + } else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + } + h /= 6; + } + return { + h: h, + s: s, + l: l + }; + } + + // `hslToRgb` + // Converts an HSL color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hslToRgb(h, s, l) { + var r, g, b; + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + } + if (s === 0) { + r = g = b = l; // achromatic + } else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + return { + r: r * 255, + g: g * 255, + b: b * 255 + }; + } + + // `rgbToHsv` + // Converts an RGB color value to HSV + // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] + // *Returns:* { h, s, v } in [0,1] + function rgbToHsv(r, g, b) { + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + var max = Math.max(r, g, b), + min = Math.min(r, g, b); + var h, + s, + v = max; + var d = max - min; + s = max === 0 ? 0 : d / max; + if (max == min) { + h = 0; // achromatic + } else { + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + } + h /= 6; + } + return { + h: h, + s: s, + v: v + }; + } + + // `hsvToRgb` + // Converts an HSV color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + return { + r: r * 255, + g: g * 255, + b: b * 255 + }; + } + + // `rgbToHex` + // Converts an RGB color to hex + // Assumes r, g, and b are contained in the set [0, 255] + // Returns a 3 or 6 character hex + function rgbToHex(r, g, b, allow3Char) { + var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + return hex.join(""); + } + + // `rgbaToHex` + // Converts an RGBA color plus alpha transparency to hex + // Assumes r, g, b are contained in the set [0, 255] and + // a in [0, 1]. Returns a 4 or 8 character rgba hex + function rgbaToHex(r, g, b, a, allow4Char) { + var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + return hex.join(""); + } + + // `rgbaToArgbHex` + // Converts an RGBA color to an ARGB Hex8 string + // Rarely used, but required for "toFilter()" + function rgbaToArgbHex(r, g, b, a) { + var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))]; + return hex.join(""); + } + + // `equals` + // Can be called with any tinycolor input + tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) return false; + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); + }; + tinycolor.random = function () { + return tinycolor.fromRatio({ + r: Math.random(), + g: Math.random(), + b: Math.random() + }); + }; + + // Modification Functions + // ---------------------- + // Thanks to less.js for some of the basics here + // + + function _desaturate(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + } + function _saturate(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + } + function _greyscale(color) { + return tinycolor(color).desaturate(100); + } + function _lighten(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + } + function _brighten(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var rgb = tinycolor(color).toRgb(); + rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100)))); + rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100)))); + rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100)))); + return tinycolor(rgb); + } + function _darken(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + } + + // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. + // Values outside of this range will be wrapped into this range. + function _spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); + } + + // Combination Functions + // --------------------- + // Thanks to jQuery xColor for some of the ideas behind these + // + + function _complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); + } + function polyad(color, number) { + if (isNaN(number) || number <= 0) { + throw new Error("Argument to polyad must be a positive number"); + } + var hsl = tinycolor(color).toHsl(); + var result = [tinycolor(color)]; + var step = 360 / number; + for (var i = 1; i < number; i++) { + result.push(tinycolor({ + h: (hsl.h + i * step) % 360, + s: hsl.s, + l: hsl.l + })); + } + return result; + } + function _splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [tinycolor(color), tinycolor({ + h: (h + 72) % 360, + s: hsl.s, + l: hsl.l + }), tinycolor({ + h: (h + 216) % 360, + s: hsl.s, + l: hsl.l + })]; + } + function _analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; + } + function _monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, + s = hsv.s, + v = hsv.v; + var ret = []; + var modification = 1 / results; + while (results--) { + ret.push(tinycolor({ + h: h, + s: s, + v: v + })); + v = (v + modification) % 1; + } + return ret; + } + + + + // Utility Functions + // --------------------- + + tinycolor.mix = function (color1, color2, amount) { + amount = amount === 0 ? 0 : amount || 50; + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + var p = amount / 100; + var rgba = { + r: (rgb2.r - rgb1.r) * p + rgb1.r, + g: (rgb2.g - rgb1.g) * p + rgb1.g, + b: (rgb2.b - rgb1.b) * p + rgb1.b, + a: (rgb2.a - rgb1.a) * p + rgb1.a + }; + return tinycolor(rgba); + }; + + // Readability Functions + // --------------------- + // false + // tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false + tinycolor.isReadable = function (color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + out = false; + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + }; + + // `mostReadable` + // Given a base color and a list of possible foreground or background + // colors for that base, returns the most readable color. + // Optionally returns Black or White if the most readable color is unreadable. + // *Example* + // tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" + // tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" + // tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" + // tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" + tinycolor.mostReadable = function (baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size; + args = args || {}; + includeFallbackColors = args.includeFallbackColors; + level = args.level; + size = args.size; + for (var i = 0; i < colorList.length; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + if (tinycolor.isReadable(baseColor, bestColor, { + level: level, + size: size + }) || !includeFallbackColors) { + return bestColor; + } else { + args.includeFallbackColors = false; + return tinycolor.mostReadable(baseColor, ["#fff", "#000"], args); + } + }; + + // Big List of Colors + // ------------------ + // + var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" + }; + + // Make it easy to access colors via `hexNames[hex]` + var hexNames = tinycolor.hexNames = flip(names); + + // Utilities + // --------- + + // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` + function flip(o) { + var flipped = {}; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; + } + + // Return a valid alpha value [0,1] with all invalid values being set to 1 + function boundAlpha(a) { + a = parseFloat(a); + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + return a; + } + + // Take input from [0, n] and return it as [0, 1] + function bound01(n, max) { + if (isOnePointZero(n)) n = "100%"; + var processPercent = isPercentage(n); + n = Math.min(max, Math.max(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if (Math.abs(n - max) < 0.000001) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return n % max / parseFloat(max); + } + + // Force a number between 0 and 1 + function clamp01(val) { + return Math.min(1, Math.max(0, val)); + } + + // Parse a base-16 hex value into a base-10 integer + function parseIntFromHex(val) { + return parseInt(val, 16); + } + + // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 + // + function isOnePointZero(n) { + return typeof n == "string" && n.indexOf(".") != -1 && parseFloat(n) === 1; + } + + // Check to see if string passed in is a percentage + function isPercentage(n) { + return typeof n === "string" && n.indexOf("%") != -1; + } + + // Force a hex value to have 2 characters + function pad2(c) { + return c.length == 1 ? "0" + c : "" + c; + } + + // Replace a decimal with it's percentage value + function convertToPercentage(n) { + if (n <= 1) { + n = n * 100 + "%"; + } + return n; + } + + // Converts a decimal to a hex value + function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); + } + // Converts a hex value to a decimal + function convertHexToDecimal(h) { + return parseIntFromHex(h) / 255; + } + var matchers = function () { + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; + }(); + + // `isValidCSSUnit` + // Take in a single string / number and check to see if it looks like a CSS unit + // (see `matchers` above for definition). + function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); + } + + // `stringInputToObject` + // Permissive string parsing. Take in a number of formats, and output an object + // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` + function stringInputToObject(color) { + color = color.replace(trimLeft, "").replace(trimRight, "").toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } else if (color == "transparent") { + return { + r: 0, + g: 0, + b: 0, + a: 0, + format: "name" + }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if (match = matchers.rgb.exec(color)) { + return { + r: match[1], + g: match[2], + b: match[3] + }; + } + if (match = matchers.rgba.exec(color)) { + return { + r: match[1], + g: match[2], + b: match[3], + a: match[4] + }; + } + if (match = matchers.hsl.exec(color)) { + return { + h: match[1], + s: match[2], + l: match[3] + }; + } + if (match = matchers.hsla.exec(color)) { + return { + h: match[1], + s: match[2], + l: match[3], + a: match[4] + }; + } + if (match = matchers.hsv.exec(color)) { + return { + h: match[1], + s: match[2], + v: match[3] + }; + } + if (match = matchers.hsva.exec(color)) { + return { + h: match[1], + s: match[2], + v: match[3], + a: match[4] + }; + } + if (match = matchers.hex8.exec(color)) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if (match = matchers.hex6.exec(color)) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if (match = matchers.hex4.exec(color)) { + return { + r: parseIntFromHex(match[1] + "" + match[1]), + g: parseIntFromHex(match[2] + "" + match[2]), + b: parseIntFromHex(match[3] + "" + match[3]), + a: convertHexToDecimal(match[4] + "" + match[4]), + format: named ? "name" : "hex8" + }; + } + if (match = matchers.hex3.exec(color)) { + return { + r: parseIntFromHex(match[1] + "" + match[1]), + g: parseIntFromHex(match[2] + "" + match[2]), + b: parseIntFromHex(match[3] + "" + match[3]), + format: named ? "name" : "hex" + }; + } + return false; + } + function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || { + level: "AA", + size: "small" + }; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return { + level: level, + size: size + }; + } + + return tinycolor; + +})); + + +// w3color.js + +/* w3color.js ver.1.18 by w3schools.com (Do not remove this line)*/ + + +function w3color(color, elmnt) { + if (!(this instanceof w3color)) { return new w3color(color, elmnt); } + if (typeof color == "object") { return color; } + this.attachValues(toColorObject(color)); + if (elmnt) { elmnt.style.backgroundColor = this.toRgbString(); } +} + +w3color.prototype = { + toRgbString: function () { + return "rgb(" + this.red + ", " + this.green + ", " + this.blue + ")"; + }, + toRgbaString: function () { + return "rgba(" + this.red + ", " + this.green + ", " + this.blue + ", " + this.opacity + ")"; + }, + toHwbString: function () { + return "hwb(" + this.hue + ", " + Math.round(this.whiteness * 100) + "%, " + Math.round(this.blackness * 100) + "%)"; + }, + toHwbStringDecimal: function () { + return "hwb(" + this.hue + ", " + this.whiteness + ", " + this.blackness + ")"; + }, + toHwbaString: function () { + return "hwba(" + this.hue + ", " + Math.round(this.whiteness * 100) + "%, " + Math.round(this.blackness * 100) + "%, " + this.opacity + ")"; + }, + toHslString: function () { + return "hsl(" + this.hue + ", " + Math.round(this.sat * 100) + "%, " + Math.round(this.lightness * 100) + "%)"; + }, + toHslStringDecimal: function () { + return "hsl(" + this.hue + ", " + this.sat + ", " + this.lightness + ")"; + }, + toHslaString: function () { + return "hsla(" + this.hue + ", " + Math.round(this.sat * 100) + "%, " + Math.round(this.lightness * 100) + "%, " + this.opacity + ")"; + }, + toCmykString: function () { + return "cmyk(" + Math.round(this.cyan * 100) + "%, " + Math.round(this.magenta * 100) + "%, " + Math.round(this.yellow * 100) + "%, " + Math.round(this.black * 100) + "%)"; + }, + toCmykStringDecimal: function () { + return "cmyk(" + this.cyan + ", " + this.magenta + ", " + this.yellow + ", " + this.black + ")"; + }, + toNcolString: function () { + return this.ncol + ", " + Math.round(this.whiteness * 100) + "%, " + Math.round(this.blackness * 100) + "%"; + }, + toNcolStringDecimal: function () { + return this.ncol + ", " + this.whiteness + ", " + this.blackness; + }, + toNcolaString: function () { + return this.ncol + ", " + Math.round(this.whiteness * 100) + "%, " + Math.round(this.blackness * 100) + "%, " + this.opacity; + }, + toName: function () { + var r, g, b, colorhexs = getColorArr('hexs'); + for (i = 0; i < colorhexs.length; i++) { + r = parseInt(colorhexs[i].substr(0, 2), 16); + g = parseInt(colorhexs[i].substr(2, 2), 16); + b = parseInt(colorhexs[i].substr(4, 2), 16); + if (this.red == r && this.green == g && this.blue == b) { + return getColorArr('names')[i]; + } + } + return ""; + }, + toHexString: function () { + var r = toHex(this.red); + var g = toHex(this.green); + var b = toHex(this.blue); + return "#" + r + g + b; + }, + toRgb: function () { + return { r: this.red, g: this.green, b: this.blue, a: this.opacity }; + }, + toHsl: function () { + return { h: this.hue, s: this.sat, l: this.lightness, a: this.opacity }; + }, + toHwb: function () { + return { h: this.hue, w: this.whiteness, b: this.blackness, a: this.opacity }; + }, + toCmyk: function () { + return { c: this.cyan, m: this.magenta, y: this.yellow, k: this.black, a: this.opacity }; + }, + toNcol: function () { + return { ncol: this.ncol, w: this.whiteness, b: this.blackness, a: this.opacity }; + }, + isDark: function (n) { + var m = (n || 128); + return (((this.red * 299 + this.green * 587 + this.blue * 114) / 1000) < m); + }, + saturate: function (n) { + var x, rgb, color; + x = (n / 100 || 0.1); + this.sat += x; + if (this.sat > 1) { this.sat = 1; } + rgb = hslToRgb(this.hue, this.sat, this.lightness); + color = colorObject(rgb, this.opacity, this.hue, this.sat); + this.attachValues(color); + }, + desaturate: function (n) { + var x, rgb, color; + x = (n / 100 || 0.1); + this.sat -= x; + if (this.sat < 0) { this.sat = 0; } + rgb = hslToRgb(this.hue, this.sat, this.lightness); + color = colorObject(rgb, this.opacity, this.hue, this.sat); + this.attachValues(color); + }, + lighter: function (n) { + var x, rgb, color; + x = (n / 100 || 0.1); + this.lightness += x; + if (this.lightness > 1) { this.lightness = 1; } + rgb = hslToRgb(this.hue, this.sat, this.lightness); + color = colorObject(rgb, this.opacity, this.hue, this.sat); + this.attachValues(color); + }, + darker: function (n) { + var x, rgb, color; + x = (n / 100 || 0.1); + this.lightness -= x; + if (this.lightness < 0) { this.lightness = 0; } + rgb = hslToRgb(this.hue, this.sat, this.lightness); + color = colorObject(rgb, this.opacity, this.hue, this.sat); + this.attachValues(color); + }, + attachValues: function (color) { + this.red = color.red; + this.green = color.green; + this.blue = color.blue; + this.hue = color.hue; + this.sat = color.sat; + this.lightness = color.lightness; + this.whiteness = color.whiteness; + this.blackness = color.blackness; + this.cyan = color.cyan; + this.magenta = color.magenta; + this.yellow = color.yellow; + this.black = color.black; + this.ncol = color.ncol; + this.opacity = color.opacity; + this.valid = color.valid; + } +}; + +function toColorObject(c) { + var x, y, typ, arr = [], arrlength, i, opacity, match, a, hue, sat, rgb, colornames = [], colorhexs = []; + c = w3trim(c.toLowerCase()); + x = c.substr(0, 1).toUpperCase(); + y = c.substr(1); + a = 1; + if ((x == "R" || x == "Y" || x == "G" || x == "C" || x == "B" || x == "M" || x == "W") && !isNaN(y)) { + if (c.length == 6 && c.indexOf(",") == -1) { + } else { + c = "ncol(" + c + ")"; + } + } + if (c.length != 3 && c.length != 6 && !isNaN(c)) { c = "ncol(" + c + ")"; } + if (c.indexOf(",") > 0 && c.indexOf("(") == -1) { c = "ncol(" + c + ")"; } + if (c.substr(0, 3) == "rgb" || c.substr(0, 3) == "hsl" || c.substr(0, 3) == "hwb" || c.substr(0, 4) == "ncol" || c.substr(0, 4) == "cmyk") { + if (c.substr(0, 4) == "ncol") { + if (c.split(",").length == 4 && c.indexOf("ncola") == -1) { + c = c.replace("ncol", "ncola"); + } + typ = "ncol"; + c = c.substr(4); + } else if (c.substr(0, 4) == "cmyk") { + typ = "cmyk"; + c = c.substr(4); + } else { + typ = c.substr(0, 3); + c = c.substr(3); + } + arrlength = 3; + opacity = false; + if (c.substr(0, 1).toLowerCase() == "a") { + arrlength = 4; + opacity = true; + c = c.substr(1); + } else if (typ == "cmyk") { + arrlength = 4; + if (c.split(",").length == 5) { + arrlength = 5; + opacity = true; + } + } + c = c.replace("(", ""); + c = c.replace(")", ""); + arr = c.split(","); + if (typ == "rgb") { + if (arr.length != arrlength) { + return emptyObject(); + } + for (i = 0; i < arrlength; i++) { + if (arr[i] == "" || arr[i] == " ") { arr[i] = "0"; } + if (arr[i].indexOf("%") > -1) { + arr[i] = arr[i].replace("%", ""); + arr[i] = Number(arr[i] / 100); + if (i < 3) { arr[i] = Math.round(arr[i] * 255); } + } + if (isNaN(arr[i])) { return emptyObject(); } + if (parseInt(arr[i]) > 255) { arr[i] = 255; } + if (i < 3) { arr[i] = parseInt(arr[i]); } + if (i == 3 && Number(arr[i]) > 1) { arr[i] = 1; } + } + rgb = { r: arr[0], g: arr[1], b: arr[2] }; + if (opacity == true) { a = Number(arr[3]); } + } + if (typ == "hsl" || typ == "hwb" || typ == "ncol") { + while (arr.length < arrlength) { arr.push("0"); } + if (typ == "hsl" || typ == "hwb") { + if (parseInt(arr[0]) >= 360) { arr[0] = 0; } + } + for (i = 1; i < arrlength; i++) { + if (arr[i].indexOf("%") > -1) { + arr[i] = arr[i].replace("%", ""); + arr[i] = Number(arr[i]); + if (isNaN(arr[i])) { return emptyObject(); } + arr[i] = arr[i] / 100; + } else { + arr[i] = Number(arr[i]); + } + if (Number(arr[i]) > 1) { arr[i] = 1; } + if (Number(arr[i]) < 0) { arr[i] = 0; } + } + if (typ == "hsl") { rgb = hslToRgb(arr[0], arr[1], arr[2]); hue = Number(arr[0]); sat = Number(arr[1]); } + if (typ == "hwb") { rgb = hwbToRgb(arr[0], arr[1], arr[2]); } + if (typ == "ncol") { rgb = ncolToRgb(arr[0], arr[1], arr[2]); } + if (opacity == true) { a = Number(arr[3]); } + } + if (typ == "cmyk") { + while (arr.length < arrlength) { arr.push("0"); } + for (i = 0; i < arrlength; i++) { + if (arr[i].indexOf("%") > -1) { + arr[i] = arr[i].replace("%", ""); + arr[i] = Number(arr[i]); + if (isNaN(arr[i])) { return emptyObject(); } + arr[i] = arr[i] / 100; + } else { + arr[i] = Number(arr[i]); + } + if (Number(arr[i]) > 1) { arr[i] = 1; } + if (Number(arr[i]) < 0) { arr[i] = 0; } + } + rgb = cmykToRgb(arr[0], arr[1], arr[2], arr[3]); + if (opacity == true) { a = Number(arr[4]); } + } + } else if (c.substr(0, 3) == "ncs") { + rgb = ncsToRgb(c); + } else { + match = false; + colornames = getColorArr('names'); + for (i = 0; i < colornames.length; i++) { + if (c.toLowerCase() == colornames[i].toLowerCase()) { + colorhexs = getColorArr('hexs'); + match = true; + rgb = { + r: parseInt(colorhexs[i].substr(0, 2), 16), + g: parseInt(colorhexs[i].substr(2, 2), 16), + b: parseInt(colorhexs[i].substr(4, 2), 16) + }; + break; + } + } + if (match == false) { + c = c.replace("#", ""); + if (c.length == 3) { c = c.substr(0, 1) + c.substr(0, 1) + c.substr(1, 1) + c.substr(1, 1) + c.substr(2, 1) + c.substr(2, 1); } + for (i = 0; i < c.length; i++) { + if (!isHex(c.substr(i, 1))) { return emptyObject(); } + } + arr[0] = parseInt(c.substr(0, 2), 16); + arr[1] = parseInt(c.substr(2, 2), 16); + arr[2] = parseInt(c.substr(4, 2), 16); + for (i = 0; i < 3; i++) { + if (isNaN(arr[i])) { return emptyObject(); } + } + rgb = { + r: arr[0], + g: arr[1], + b: arr[2] + }; + } + } + return colorObject(rgb, a, hue, sat); +} + +function colorObject(rgb, a, h, s) { + var hsl, hwb, cmyk, ncol, color, hue, sat; + if (!rgb) { return emptyObject(); } + if (a === null) { a = 1; } + hsl = rgbToHsl(rgb.r, rgb.g, rgb.b); + hwb = rgbToHwb(rgb.r, rgb.g, rgb.b); + cmyk = rgbToCmyk(rgb.r, rgb.g, rgb.b); + hue = (h || hsl.h); + sat = (s || hsl.s); + ncol = hueToNcol(hue); + color = { + red: rgb.r, + green: rgb.g, + blue: rgb.b, + hue: hue, + sat: sat, + lightness: hsl.l, + whiteness: hwb.w, + blackness: hwb.b, + cyan: cmyk.c, + magenta: cmyk.m, + yellow: cmyk.y, + black: cmyk.k, + ncol: ncol, + opacity: a, + valid: true + }; + color = roundDecimals(color); + return color; +} + +function emptyObject() { + return { + red: 0, + green: 0, + blue: 0, + hue: 0, + sat: 0, + lightness: 0, + whiteness: 0, + blackness: 0, + cyan: 0, + magenta: 0, + yellow: 0, + black: 0, + ncol: "R", + opacity: 1, + valid: false + }; +} + +function getColorArr(x) { + if (x == "names") { return ['AliceBlue', 'AntiqueWhite', 'Aqua', 'Aquamarine', 'Azure', 'Beige', 'Bisque', 'Black', 'BlanchedAlmond', 'Blue', 'BlueViolet', 'Brown', 'BurlyWood', 'CadetBlue', 'Chartreuse', 'Chocolate', 'Coral', 'CornflowerBlue', 'Cornsilk', 'Crimson', 'Cyan', 'DarkBlue', 'DarkCyan', 'DarkGoldenRod', 'DarkGray', 'DarkGrey', 'DarkGreen', 'DarkKhaki', 'DarkMagenta', 'DarkOliveGreen', 'DarkOrange', 'DarkOrchid', 'DarkRed', 'DarkSalmon', 'DarkSeaGreen', 'DarkSlateBlue', 'DarkSlateGray', 'DarkSlateGrey', 'DarkTurquoise', 'DarkViolet', 'DeepPink', 'DeepSkyBlue', 'DimGray', 'DimGrey', 'DodgerBlue', 'FireBrick', 'FloralWhite', 'ForestGreen', 'Fuchsia', 'Gainsboro', 'GhostWhite', 'Gold', 'GoldenRod', 'Gray', 'Grey', 'Green', 'GreenYellow', 'HoneyDew', 'HotPink', 'IndianRed', 'Indigo', 'Ivory', 'Khaki', 'Lavender', 'LavenderBlush', 'LawnGreen', 'LemonChiffon', 'LightBlue', 'LightCoral', 'LightCyan', 'LightGoldenRodYellow', 'LightGray', 'LightGrey', 'LightGreen', 'LightPink', 'LightSalmon', 'LightSeaGreen', 'LightSkyBlue', 'LightSlateGray', 'LightSlateGrey', 'LightSteelBlue', 'LightYellow', 'Lime', 'LimeGreen', 'Linen', 'Magenta', 'Maroon', 'MediumAquaMarine', 'MediumBlue', 'MediumOrchid', 'MediumPurple', 'MediumSeaGreen', 'MediumSlateBlue', 'MediumSpringGreen', 'MediumTurquoise', 'MediumVioletRed', 'MidnightBlue', 'MintCream', 'MistyRose', 'Moccasin', 'NavajoWhite', 'Navy', 'OldLace', 'Olive', 'OliveDrab', 'Orange', 'OrangeRed', 'Orchid', 'PaleGoldenRod', 'PaleGreen', 'PaleTurquoise', 'PaleVioletRed', 'PapayaWhip', 'PeachPuff', 'Peru', 'Pink', 'Plum', 'PowderBlue', 'Purple', 'RebeccaPurple', 'Red', 'RosyBrown', 'RoyalBlue', 'SaddleBrown', 'Salmon', 'SandyBrown', 'SeaGreen', 'SeaShell', 'Sienna', 'Silver', 'SkyBlue', 'SlateBlue', 'SlateGray', 'SlateGrey', 'Snow', 'SpringGreen', 'SteelBlue', 'Tan', 'Teal', 'Thistle', 'Tomato', 'Turquoise', 'Violet', 'Wheat', 'White', 'WhiteSmoke', 'Yellow', 'YellowGreen']; } + if (x == "hexs") { return ['f0f8ff', 'faebd7', '00ffff', '7fffd4', 'f0ffff', 'f5f5dc', 'ffe4c4', '000000', 'ffebcd', '0000ff', '8a2be2', 'a52a2a', 'deb887', '5f9ea0', '7fff00', 'd2691e', 'ff7f50', '6495ed', 'fff8dc', 'dc143c', '00ffff', '00008b', '008b8b', 'b8860b', 'a9a9a9', 'a9a9a9', '006400', 'bdb76b', '8b008b', '556b2f', 'ff8c00', '9932cc', '8b0000', 'e9967a', '8fbc8f', '483d8b', '2f4f4f', '2f4f4f', '00ced1', '9400d3', 'ff1493', '00bfff', '696969', '696969', '1e90ff', 'b22222', 'fffaf0', '228b22', 'ff00ff', 'dcdcdc', 'f8f8ff', 'ffd700', 'daa520', '808080', '808080', '008000', 'adff2f', 'f0fff0', 'ff69b4', 'cd5c5c', '4b0082', 'fffff0', 'f0e68c', 'e6e6fa', 'fff0f5', '7cfc00', 'fffacd', 'add8e6', 'f08080', 'e0ffff', 'fafad2', 'd3d3d3', 'd3d3d3', '90ee90', 'ffb6c1', 'ffa07a', '20b2aa', '87cefa', '778899', '778899', 'b0c4de', 'ffffe0', '00ff00', '32cd32', 'faf0e6', 'ff00ff', '800000', '66cdaa', '0000cd', 'ba55d3', '9370db', '3cb371', '7b68ee', '00fa9a', '48d1cc', 'c71585', '191970', 'f5fffa', 'ffe4e1', 'ffe4b5', 'ffdead', '000080', 'fdf5e6', '808000', '6b8e23', 'ffa500', 'ff4500', 'da70d6', 'eee8aa', '98fb98', 'afeeee', 'db7093', 'ffefd5', 'ffdab9', 'cd853f', 'ffc0cb', 'dda0dd', 'b0e0e6', '800080', '663399', 'ff0000', 'bc8f8f', '4169e1', '8b4513', 'fa8072', 'f4a460', '2e8b57', 'fff5ee', 'a0522d', 'c0c0c0', '87ceeb', '6a5acd', '708090', '708090', 'fffafa', '00ff7f', '4682b4', 'd2b48c', '008080', 'd8bfd8', 'ff6347', '40e0d0', 'ee82ee', 'f5deb3', 'ffffff', 'f5f5f5', 'ffff00', '9acd32']; } +} + +function roundDecimals(c) { + c.red = Number(c.red.toFixed(0)); + c.green = Number(c.green.toFixed(0)); + c.blue = Number(c.blue.toFixed(0)); + c.hue = Number(c.hue.toFixed(0)); + c.sat = Number(c.sat.toFixed(2)); + c.lightness = Number(c.lightness.toFixed(2)); + c.whiteness = Number(c.whiteness.toFixed(2)); + c.blackness = Number(c.blackness.toFixed(2)); + c.cyan = Number(c.cyan.toFixed(2)); + c.magenta = Number(c.magenta.toFixed(2)); + c.yellow = Number(c.yellow.toFixed(2)); + c.black = Number(c.black.toFixed(2)); + c.ncol = c.ncol.substr(0, 1) + Math.round(Number(c.ncol.substr(1))); + c.opacity = Number(c.opacity.toFixed(2)); + return c; +} + +function hslToRgb(hue, sat, light) { + var t1, t2, r, g, b; + hue = hue / 60; + if (light <= 0.5) { + t2 = light * (sat + 1); + } else { + t2 = light + sat - (light * sat); + } + t1 = light * 2 - t2; + r = hueToRgb(t1, t2, hue + 2) * 255; + g = hueToRgb(t1, t2, hue) * 255; + b = hueToRgb(t1, t2, hue - 2) * 255; + return { r: r, g: g, b: b }; +} + +function hueToRgb(t1, t2, hue) { + if (hue < 0) hue += 6; + if (hue >= 6) hue -= 6; + if (hue < 1) return (t2 - t1) * hue + t1; + else if (hue < 3) return t2; + else if (hue < 4) return (t2 - t1) * (4 - hue) + t1; + else return t1; +} + +function hwbToRgb(hue, white, black) { + var i, rgb, rgbArr = [], tot; + rgb = hslToRgb(hue, 1, 0.50); + rgbArr[0] = rgb.r / 255; + rgbArr[1] = rgb.g / 255; + rgbArr[2] = rgb.b / 255; + tot = white + black; + if (tot > 1) { + white = Number((white / tot).toFixed(2)); + black = Number((black / tot).toFixed(2)); + } + for (i = 0; i < 3; i++) { + rgbArr[i] *= (1 - (white) - (black)); + rgbArr[i] += (white); + rgbArr[i] = Number(rgbArr[i] * 255); + } + return { r: rgbArr[0], g: rgbArr[1], b: rgbArr[2] }; +} + +function cmykToRgb(c, m, y, k) { + var r, g, b; + r = 255 - ((Math.min(1, c * (1 - k) + k)) * 255); + g = 255 - ((Math.min(1, m * (1 - k) + k)) * 255); + b = 255 - ((Math.min(1, y * (1 - k) + k)) * 255); + return { r: r, g: g, b: b }; +} + +function ncolToRgb(ncol, white, black) { + var letter, percent, h, w, b; + h = ncol; + if (isNaN(ncol.substr(0, 1))) { + letter = ncol.substr(0, 1).toUpperCase(); + percent = ncol.substr(1); + if (percent == "") { percent = 0; } + percent = Number(percent); + if (isNaN(percent)) { return false; } + if (letter == "R") { h = 0 + (percent * 0.6); } + if (letter == "Y") { h = 60 + (percent * 0.6); } + if (letter == "G") { h = 120 + (percent * 0.6); } + if (letter == "C") { h = 180 + (percent * 0.6); } + if (letter == "B") { h = 240 + (percent * 0.6); } + if (letter == "M") { h = 300 + (percent * 0.6); } + if (letter == "W") { + h = 0; + white = 1 - (percent / 100); + black = (percent / 100); + } + } + return hwbToRgb(h, white, black); +} + +function hueToNcol(hue) { + while (hue >= 360) { + hue = hue - 360; + } + if (hue < 60) { return "R" + (hue / 0.6); } + if (hue < 120) { return "Y" + ((hue - 60) / 0.6); } + if (hue < 180) { return "G" + ((hue - 120) / 0.6); } + if (hue < 240) { return "C" + ((hue - 180) / 0.6); } + if (hue < 300) { return "B" + ((hue - 240) / 0.6); } + if (hue < 360) { return "M" + ((hue - 300) / 0.6); } +} + +function ncsToRgb(ncs) { + var black, chroma, bc, percent, black1, chroma1, red1, factor1, blue1, red1, red2, green2, blue2, max, factor2, grey, r, g, b; + ncs = w3trim(ncs).toUpperCase(); + ncs = ncs.replace("(", ""); + ncs = ncs.replace(")", ""); + ncs = ncs.replace("NCS", "NCS "); + ncs = ncs.replace(/ /g, " "); + if (ncs.indexOf("NCS") == -1) { ncs = "NCS " + ncs; } + ncs = ncs.match(/^(?:NCS|NCS\sS)\s(\d{2})(\d{2})-(N|[A-Z])(\d{2})?([A-Z])?$/); + if (ncs === null) return false; + black = parseInt(ncs[1], 10); + chroma = parseInt(ncs[2], 10); + bc = ncs[3]; + if (bc != "N" && bc != "Y" && bc != "R" && bc != "B" && bc != "G") { return false; } + percent = parseInt(ncs[4], 10) || 0; + if (bc !== 'N') { + black1 = (1.05 * black - 5.25); + chroma1 = chroma; + if (bc === 'Y' && percent <= 60) { + red1 = 1; + } else if ((bc === 'Y' && percent > 60) || (bc === 'R' && percent <= 80)) { + if (bc === 'Y') { + factor1 = percent - 60; + } else { + factor1 = percent + 40; + } + red1 = ((Math.sqrt(14884 - Math.pow(factor1, 2))) - 22) / 100; + } else if ((bc === 'R' && percent > 80) || (bc === 'B')) { + red1 = 0; + } else if (bc === 'G') { + factor1 = (percent - 170); + red1 = ((Math.sqrt(33800 - Math.pow(factor1, 2))) - 70) / 100; + } + if (bc === 'Y' && percent <= 80) { + blue1 = 0; + } else if ((bc === 'Y' && percent > 80) || (bc === 'R' && percent <= 60)) { + if (bc === 'Y') { + factor1 = (percent - 80) + 20.5; + } else { + factor1 = (percent + 20) + 20.5; + } + blue1 = (104 - (Math.sqrt(11236 - Math.pow(factor1, 2)))) / 100; + } else if ((bc === 'R' && percent > 60) || (bc === 'B' && percent <= 80)) { + if (bc === 'R') { + factor1 = (percent - 60) - 60; + } else { + factor1 = (percent + 40) - 60; + } + blue1 = ((Math.sqrt(10000 - Math.pow(factor1, 2))) - 10) / 100; + } else if ((bc === 'B' && percent > 80) || (bc === 'G' && percent <= 40)) { + if (bc === 'B') { + factor1 = (percent - 80) - 131; + } else { + factor1 = (percent + 20) - 131; + } + blue1 = (122 - (Math.sqrt(19881 - Math.pow(factor1, 2)))) / 100; + } else if (bc === 'G' && percent > 40) { + blue1 = 0; + } + if (bc === 'Y') { + green1 = (85 - 17 / 20 * percent) / 100; + } else if (bc === 'R' && percent <= 60) { + green1 = 0; + } else if (bc === 'R' && percent > 60) { + factor1 = (percent - 60) + 35; + green1 = (67.5 - (Math.sqrt(5776 - Math.pow(factor1, 2)))) / 100; + } else if (bc === 'B' && percent <= 60) { + factor1 = (1 * percent - 68.5); + green1 = (6.5 + (Math.sqrt(7044.5 - Math.pow(factor1, 2)))) / 100; + } else if ((bc === 'B' && percent > 60) || (bc === 'G' && percent <= 60)) { + green1 = 0.9; + } else if (bc === 'G' && percent > 60) { + factor1 = (percent - 60); + green1 = (90 - (1 / 8 * factor1)) / 100; + } + factor1 = (red1 + green1 + blue1) / 3; + red2 = ((factor1 - red1) * (100 - chroma1) / 100) + red1; + green2 = ((factor1 - green1) * (100 - chroma1) / 100) + green1; + blue2 = ((factor1 - blue1) * (100 - chroma1) / 100) + blue1; + if (red2 > green2 && red2 > blue2) { + max = red2; + } else if (green2 > red2 && green2 > blue2) { + max = green2; + } else if (blue2 > red2 && blue2 > green2) { + max = blue2; + } else { + max = (red2 + green2 + blue2) / 3; + } + factor2 = 1 / max; + r = parseInt((red2 * factor2 * (100 - black1) / 100) * 255, 10); + g = parseInt((green2 * factor2 * (100 - black1) / 100) * 255, 10); + b = parseInt((blue2 * factor2 * (100 - black1) / 100) * 255, 10); + if (r > 255) { r = 255; } + if (g > 255) { g = 255; } + if (b > 255) { b = 255; } + if (r < 0) { r = 0; } + if (g < 0) { g = 0; } + if (b < 0) { b = 0; } + } else { + grey = parseInt((1 - black / 100) * 255, 10); + if (grey > 255) { grey = 255; } + if (grey < 0) { grey = 0; } + r = grey; + g = grey; + b = grey; + } + return { + r: r, + g: g, + b: b + }; +} + +function rgbToHsl(r, g, b) { + var min, max, i, l, s, maxcolor, h, rgb = []; + rgb[0] = r / 255; + rgb[1] = g / 255; + rgb[2] = b / 255; + min = rgb[0]; + max = rgb[0]; + maxcolor = 0; + for (i = 0; i < rgb.length - 1; i++) { + if (rgb[i + 1] <= min) { min = rgb[i + 1]; } + if (rgb[i + 1] >= max) { max = rgb[i + 1]; maxcolor = i + 1; } + } + if (maxcolor == 0) { + h = (rgb[1] - rgb[2]) / (max - min); + } + if (maxcolor == 1) { + h = 2 + (rgb[2] - rgb[0]) / (max - min); + } + if (maxcolor == 2) { + h = 4 + (rgb[0] - rgb[1]) / (max - min); + } + if (isNaN(h)) { h = 0; } + h = h * 60; + if (h < 0) { h = h + 360; } + l = (min + max) / 2; + if (min == max) { + s = 0; + } else { + if (l < 0.5) { + s = (max - min) / (max + min); + } else { + s = (max - min) / (2 - max - min); + } + } + s = s; + return { h: h, s: s, l: l }; +} + +function rgbToHwb(r, g, b) { + var h, w, bl; + r = r / 255; + g = g / 255; + b = b / 255; + max = Math.max(r, g, b); + min = Math.min(r, g, b); + chroma = max - min; + if (chroma == 0) { + h = 0; + } else if (r == max) { + h = (((g - b) / chroma) % 6) * 360; + } else if (g == max) { + h = ((((b - r) / chroma) + 2) % 6) * 360; + } else { + h = ((((r - g) / chroma) + 4) % 6) * 360; + } + w = min; + bl = 1 - max; + return { h: h, w: w, b: bl }; +} + +function rgbToCmyk(r, g, b) { + var c, m, y, k; + r = r / 255; + g = g / 255; + b = b / 255; + max = Math.max(r, g, b); + k = 1 - max; + if (k == 1) { + c = 0; + m = 0; + y = 0; + } else { + c = (1 - r - k) / (1 - k); + m = (1 - g - k) / (1 - k); + y = (1 - b - k) / (1 - k); + } + return { c: c, m: m, y: y, k: k }; +} + +function toHex(n) { + var hex = n.toString(16); + while (hex.length < 2) { hex = "0" + hex; } + return hex; +} + +function cl(x) { + console.log(x); +} + +function w3trim(x) { + return x.replace(/^\s+|\s+$/g, ''); +} + +function isHex(x) { + return ('0123456789ABCDEFabcdef'.indexOf(x) > -1); +} + +if(typeof window === undefined) window.w3color = w3color; + +function w3SetColorsByAttribute() { +var z, i, att; +z = document.getElementsByTagName("*"); +for (i = 0; i < z.length; i++) { + att = z[i].getAttribute("data-w3-color"); + if (att) { + z[i].style.backgroundColor = w3color(att).toRgbString(); + } +} + +} diff --git a/docs/lib/scripts/webpage.js b/docs/lib/scripts/webpage.js new file mode 100644 index 000000000..ac3d6425e --- /dev/null +++ b/docs/lib/scripts/webpage.js @@ -0,0 +1,936 @@ + +//#region Helpers + +function getAbsoluteRootPath() +{ + if (typeof rootPath == 'undefined') setupRootPath(document); + return new URL(window.location.href + "/../" + rootPath).pathname; +} + +function getURLPath(url = window.location.pathname) +{ + let absoluteRoot = getAbsoluteRootPath(); + let pathname = url.substring(absoluteRoot.length); + return pathname; +} + +function getURLRootPath(url = window.location.pathname) +{ + let path = getURLPath(url); + let splitPath = path.split("/"); + let rootPath = ""; + for (let i = 0; i < splitPath.length - 1; i++) + { + rootPath += "../"; + } + return rootPath; +} + +async function setTreeCollapsed(element, collapsed, animate = true) +{ + if (!element || !element.classList.contains("mod-collapsible")) return; + + let children = element.querySelector(".tree-item-children"); + + if (collapsed) + { + element.classList.add("is-collapsed"); + if(animate) slideUp(children, 100); + else children.style.display = "none"; + } + else + { + element.classList.remove("is-collapsed"); + if(animate) slideDown(children, 100); + else children.style.removeProperty("display"); + } +} + +async function setTreeCollapsedAll(elements, collapsed, animate = true) +{ + let childrenList = []; + elements.forEach(async element => + { + if (!element || !element.classList.contains("mod-collapsible")) return; + + let children = element.querySelector(".tree-item-children"); + + if (collapsed) + { + element.classList.add("is-collapsed"); + } + else + { + element.classList.remove("is-collapsed"); + } + + childrenList.push(children); + }); + + if (collapsed) + { + if(animate) slideUpAll(childrenList, 100); + else childrenList.forEach(async children => children.style.display = "none"); + } + else + { + if(animate) slideDownAll(childrenList, 100); + else childrenList.forEach(async children => children.style.removeProperty("display")); + } +} + +function toggleTreeCollapsed(element) +{ + if (!element) return; + setTreeCollapsed(element, !element.classList.contains("is-collapsed")); +} + +function toggleTreeCollapsedAll(elements) +{ + if (!elements) return; + setTreeCollapsedAll(elements, !elements[0].classList.contains("is-collapsed")); +} + +function getHeaderEl(headerDiv) +{ + let possibleChildHeader = headerDiv.firstChild; + let isHeader = false; + + while (possibleChildHeader != null) + { + isHeader = possibleChildHeader ? /[Hh][1-6]/g.test(possibleChildHeader.tagName) : false; + if (isHeader) break; + + possibleChildHeader = possibleChildHeader.nextElementSibling; + } + + return possibleChildHeader; +} + +function getPreviousHeader(headerDiv) +{ + let possibleParent = headerDiv.previousElementSibling; + let isHeader = false; + + while (possibleParent != null) + { + let possibleChildHeader = getHeaderEl(possibleParent); + isHeader = possibleChildHeader ? /[Hh][1-6]/g.test(possibleChildHeader.tagName) : false; + if (isHeader) break; + + possibleParent = possibleParent.previousElementSibling; + } + + return possibleParent; +} + +function setHeaderOpen(headerDiv, open, openParents = true) +{ + if(headerDiv.tagName != "DIV" || !getHeaderEl(headerDiv)) + { + console.error("setHeaderOpen() must be called with a header div"); + return; + } + + // let selector = getHeadingContentsSelector(header); + if (open) + { + headerDiv.classList.remove("is-collapsed"); + headerDiv.style.display = ""; + } + if (!open) + { + headerDiv.classList.add("is-collapsed"); + } + + let headerEl = getHeaderEl(headerDiv); + + let childHeaders = []; + + let possibleChild = headerDiv.nextElementSibling; + + // loop through next siblings showing/ hiding children until we reach a header of the same or lower level + while (possibleChild != null) + { + let possibleChildHeader = getHeaderEl(possibleChild); + + if(possibleChildHeader) + { + // if header is a sibling of this header then break + if (possibleChildHeader.tagName <= headerEl.tagName) break; + + // save child headers to be re closed afterwards + childHeaders.push(possibleChild); + } + + if (!open) possibleChild.style.display = "none"; + else possibleChild.style.display = ""; + + possibleChild = possibleChild.nextElementSibling; + } + + if(open) + { + // if we are opening the header then we need to make sure that all closed child headers stay closed + childHeaders.forEach(function(item) + { + if (item.classList.contains("is-collapsed")) + { + setHeaderOpen(item, false); + } + }); + + // if we are opening the header then we need to make sure that all parent headers are open + if (openParents) + { + let previousHeader = getPreviousHeader(headerDiv); + + while (previousHeader != null) + { + let previousHeaderEl = getHeaderEl(previousHeader); + + if (previousHeaderEl.tagName < headerEl.tagName) + { + // if header is a parent of this header then unhide + setHeaderOpen(previousHeader, true); + break; + } + + previousHeader = getPreviousHeader(previousHeader); + } + } + } +} + +let slideUp = (target, duration=500) => { + + target.style.transitionProperty = 'height, margin, padding'; + target.style.transitionDuration = duration + 'ms'; + target.style.boxSizing = 'border-box'; + target.style.height = target.offsetHeight + 'px'; + target.offsetHeight; + target.style.overflow = 'hidden'; + target.style.height = 0; + target.style.paddingTop = 0; + target.style.paddingBottom = 0; + target.style.marginTop = 0; + target.style.marginBottom = 0; + window.setTimeout(async () => { + target.style.display = 'none'; + target.style.removeProperty('height'); + target.style.removeProperty('padding-top'); + target.style.removeProperty('padding-bottom'); + target.style.removeProperty('margin-top'); + target.style.removeProperty('margin-bottom'); + target.style.removeProperty('overflow'); + target.style.removeProperty('transition-duration'); + target.style.removeProperty('transition-property'); + }, duration); +} + +let slideUpAll = (targets, duration=500) => { + + targets.forEach(async target => { + target.style.transitionProperty = 'height, margin, padding'; + target.style.transitionDuration = duration + 'ms'; + target.style.boxSizing = 'border-box'; + target.style.height = target.offsetHeight + 'px'; + target.offsetHeight; + target.style.overflow = 'hidden'; + target.style.height = 0; + target.style.paddingTop = 0; + target.style.paddingBottom = 0; + target.style.marginTop = 0; + target.style.marginBottom = 0; + }); + + window.setTimeout(async () => { + targets.forEach(async target => { + target.style.display = 'none'; + target.style.removeProperty('height'); + target.style.removeProperty('padding-top'); + target.style.removeProperty('padding-bottom'); + target.style.removeProperty('margin-top'); + target.style.removeProperty('margin-bottom'); + target.style.removeProperty('overflow'); + target.style.removeProperty('transition-duration'); + target.style.removeProperty('transition-property'); + }); + }, duration); +} + +let slideDown = (target, duration=500) => { + + target.style.removeProperty('display'); + let display = window.getComputedStyle(target).display; + if (display === 'none') display = 'block'; + target.style.display = display; + let height = target.offsetHeight; + target.style.overflow = 'hidden'; + target.style.height = 0; + target.style.paddingTop = 0; + target.style.paddingBottom = 0; + target.style.marginTop = 0; + target.style.marginBottom = 0; + target.offsetHeight; + target.style.boxSizing = 'border-box'; + target.style.transitionProperty = "height, margin, padding"; + target.style.transitionDuration = duration + 'ms'; + target.style.height = height + 'px'; + target.style.removeProperty('padding-top'); + target.style.removeProperty('padding-bottom'); + target.style.removeProperty('margin-top'); + target.style.removeProperty('margin-bottom'); + window.setTimeout(async () => { + target.style.removeProperty('height'); + target.style.removeProperty('overflow'); + target.style.removeProperty('transition-duration'); + target.style.removeProperty('transition-property'); + }, duration); +} + +let slideDownAll = (targets, duration=500) => { + + targets.forEach(async target => { + target.style.removeProperty('display'); + let display = window.getComputedStyle(target).display; + if (display === 'none') display = 'block'; + target.style.display = display; + let height = target.offsetHeight; + target.style.overflow = 'hidden'; + target.style.height = 0; + target.style.paddingTop = 0; + target.style.paddingBottom = 0; + target.style.marginTop = 0; + target.style.marginBottom = 0; + target.offsetHeight; + target.style.boxSizing = 'border-box'; + target.style.transitionProperty = "height, margin, padding"; + target.style.transitionDuration = duration + 'ms'; + target.style.height = height + 'px'; + target.style.removeProperty('padding-top'); + target.style.removeProperty('padding-bottom'); + target.style.removeProperty('margin-top'); + target.style.removeProperty('margin-bottom'); + }); + + window.setTimeout( async () => { + targets.forEach(async target => { + target.style.removeProperty('height'); + target.style.removeProperty('overflow'); + target.style.removeProperty('transition-duration'); + target.style.removeProperty('transition-property'); + }); + }, duration); +} + +var slideToggle = (target, duration = 500) => { + if (window.getComputedStyle(target).display === 'none') { + return slideDown(target, duration); + } else { + return slideUp(target, duration); + } +} + +var slideToggleAll = (targets, duration = 500) => { + if (window.getComputedStyle(targets[0]).display === 'none') { + return slideDownAll(targets, duration); + } else { + return slideUpAll(targets, duration); + } +} + +//#endregion + +async function loadDocument(url, pushHistory = true, scrollTo = true) +{ + console.log("Loading document: " + url); + + // change the active file + setActiveDocument(url, scrollTo, pushHistory); + + let response; + + // if(typeof embeddedDocuments == 'undefined') + // { + try + { + response = await fetch(url); + } + catch (error) + { + console.log("Cannot use fetch API (likely due to CORS), just loading the page normally."); + window.location.assign(url); + return; + } + // } + // else + // { + // response = new Response(embeddedDocuments[url], {status: 200, statusText: "OK"}); + // } + + let doc = document.implementation.createHTMLDocument(); + + if (response.ok) + { + let html = (await response.text()).replaceAll("", "").replaceAll("", "").replaceAll("", ""); + doc.documentElement.innerHTML = html; + + // copy document content and outline tree + document.querySelector(".document-container").innerHTML = doc.querySelector(".document-container").innerHTML; + document.querySelector(".outline-tree").innerHTML = doc.querySelector(".outline-tree").innerHTML; + + // if the url has a heading, scroll to it + let splitURL = url.split("#"); + let pathnameTarget = splitURL[0] ?? url; + let headingTarget = splitURL.length > 1 ? splitURL[1] : null; + if (headingTarget) document.getElementById(headingTarget).scrollIntoView(); + + // Change the root path to match the match from the new page + setupRootPath(doc); + + // initialize events on the new page + initializePage(document.querySelector(".document-container")); + initializePage(document.querySelector(".outline-tree")); + + document.title = doc.title; + } + else + { + // if the page is not able to load instead add a header saying the page doesn't exist + document.querySelector(".markdown-preview-view").innerHTML = + ` +
+
+

Page Not Found

+
+
+ `; + + document.querySelector(".outline-tree").innerHTML = ""; + + console.log("Page not found: " + getAbsoluteRootPath() + url); + let newRootPath = getURLRootPath(getAbsoluteRootPath() + url); + rootPath = newRootPath; + document.querySelector("base").href = newRootPath; + + document.title = "Page Not Found"; + } + + return doc; +} + +function setActiveDocument(url, scrollTo = true, pushHistory = true) +{ + let pathnameTarget = url.split("#")[0] ?? url; // path with no header + + // switch active file in file tree + document.querySelector(".tree-item.mod-active")?.classList.remove("mod-active"); + let treeItems = Array.from(document.querySelectorAll(".tree-item > .tree-item-contents > .tree-item-link")); + let treeItem = undefined; + for (let item of treeItems) + { + if (item.getAttribute("href") == url) + { + let parent = item.parentElement.parentElement; + + parent.classList.add("mod-active"); + treeItem = parent; + + while (parent.hasAttribute("data-depth")) + { + setTreeCollapsed(parent, false, false); + parent = parent.parentElement.parentElement; + } + + continue; + } + } + + if(scrollTo) treeItem?.scrollIntoView({block: "center", inline: "nearest"}); + + // set the active file in th graph view + if(typeof nodes != 'undefined' && window.renderWorker) + { + let activeNode = nodes?.paths.findIndex(function(item) { return item.endsWith(pathnameTarget); }) ?? -1; + + if(activeNode >= 0) + { + window.renderWorker.activeNode = activeNode; + } + } + + if(pushHistory && window.location.protocol != "file:") window.history.pushState({ path: pathnameTarget }, '', pathnameTarget); +} + +//#region Initialization +function setupThemeToggle(setupOnNode) +{ + if (localStorage.getItem("theme_toggle") != null) + { + setThemeToggle(localStorage.getItem("theme_toggle") == "true"); + } + + // var lastScheme = "theme-dark"; + // change theme to match current system theme + // if (localStorage.getItem("theme_toggle") == null && window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) + // { + // setThemeToggle(true); + // lastScheme = "theme-light"; + // } + // if (localStorage.getItem("theme_toggle") == null && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) + // { + // setThemeToggle(true); + // lastScheme = "theme-dark"; + // } + + // set initial toggle state based on body theme class + if (document.body.classList.contains("theme-light")) + { + setThemeToggle(true); + } + else + { + setThemeToggle(false); + } + + function setThemeToggle(state, instant = false) + { + let toggle = document.querySelector(".theme-toggle-input"); + + toggle.checked = state; + + if (instant) + { + var oldTransition = document.body.style.transition; + document.body.style.transition = "none"; + } + + if(!toggle.classList.contains("is-checked") && state) + { + toggle.classList.add("is-checked"); + } + else if (toggle.classList.contains("is-checked") && !state) + { + toggle.classList.remove("is-checked"); + } + + if(!state) + { + if (document.body.classList.contains("theme-light")) + { + document.body.classList.remove("theme-light"); + } + + if (!document.body.classList.contains("theme-dark")) + { + document.body.classList.add("theme-dark"); + } + } + else + { + if (document.body.classList.contains("theme-dark")) + { + document.body.classList.remove("theme-dark"); + } + + if (!document.body.classList.contains("theme-light")) + { + document.body.classList.add("theme-light"); + } + } + + if (instant) + { + setTimeout(function() + { + document.body.style.transition = oldTransition; + }, 100); + } + + localStorage.setItem("theme_toggle", state ? "true" : "false"); + } + + setupOnNode.querySelector(".theme-toggle-input")?.addEventListener("change", event => + { + console.log("Theme toggle changed to: " + !(localStorage.getItem("theme_toggle") == "true")); + setThemeToggle(!(localStorage.getItem("theme_toggle") == "true")); + }); + + // window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => + // { + // // return if we are printing + // if (window.matchMedia('print').matches) + // { + // printing = true; + // return; + // } + + // let newColorScheme = event.matches ? "theme-dark" : "theme-light"; + + // if (newColorScheme == lastScheme) return; + + // if (newColorScheme == "theme-dark") + // { + // setThemeToggle(false); + // } + + // if (newColorScheme == "theme-light") + // { + // setThemeToggle(true); + // } + + // lastScheme = newColorScheme; + // }); + +} + +function setupHeaders(setupOnNode) +{ + // MAKE HEADERS COLLAPSIBLE + setupOnNode.querySelectorAll(".heading-collapse-indicator").forEach(function (element) + { + element.addEventListener("click", function () + { + var isOpen = !this.parentElement.parentElement.classList.contains("is-collapsed"); + setHeaderOpen(this.parentElement.parentElement, !isOpen); + }); + }); + + // unfold header when an internal link that points to that header is clicked + setupOnNode.querySelectorAll("a.internal-link, a.tree-item-link").forEach(function (element) + { + element.addEventListener("click", function (event) + { + event.preventDefault(); + let target = this.getAttribute("href"); + + // if the target is a header uncollapse it + if (target.startsWith("#")) + { + console.log("Uncollapsing header: " + target); + let header = document.getElementById(target.substring(1)); + setHeaderOpen(header.parentElement, true); + } + }); + }); +} + +function setupTrees(setupOnNode) +{ + const fileTreeItems = Array.from(setupOnNode.querySelectorAll(".tree-container.file-tree .tree-item")); + + setupOnNode.querySelectorAll(".tree-item-contents > .collapse-icon").forEach(function(item) + { + item.addEventListener("click", function() + { + toggleTreeCollapsed(item.parentElement.parentElement); + }); + }); + + let fileTreeCollapse = setupOnNode.querySelector(".tree-container.file-tree .collapse-tree-button"); + if (fileTreeCollapse) fileTreeCollapse.addEventListener("click", async function() + { + let fileTreeIsCollapsed = fileTreeCollapse.classList.contains("is-collapsed"); + + setTreeCollapsedAll(fileTreeItems, !fileTreeIsCollapsed, fileTreeItems.length < 100); + + fileTreeCollapse.classList.toggle("is-collapsed"); + fileTreeCollapse.querySelector("iconify-icon").setAttribute("icon", fileTreeIsCollapsed ? "ph:arrows-out-line-horizontal-bold" : "ph:arrows-in-line-horizontal-bold"); + }); + + + let outlineTreeCollapse = setupOnNode.querySelector(".tree-container.outline-tree .collapse-tree-button"); + if(outlineTreeCollapse) outlineTreeCollapse.addEventListener("click", async function() + { + let outlineTreeIsCollapsed = outlineTreeCollapse.classList.contains("is-collapsed"); + + let items = Array.from(outlineTreeCollapse.parentElement.parentElement.querySelectorAll(".tree-item")); + setTreeCollapsedAll(items, !outlineTreeIsCollapsed, items.length < 100); + + outlineTreeCollapse.classList.toggle("is-collapsed"); + outlineTreeCollapse.querySelector("iconify-icon").setAttribute("icon", outlineTreeIsCollapsed ? "ph:arrows-out-line-horizontal-bold" : "ph:arrows-in-line-horizontal-bold"); + }); + + // start with all closed + setupOnNode.querySelectorAll(".tree-container .tree-item").forEach(function(item) + { + if (item.classList.contains("is-collapsed")) setTreeCollapsed(item, true, false); + }); + + // make sure the icons match their starting collaped state + setupOnNode.querySelectorAll(".tree-container > .tree-header > .collapse-tree-button").forEach(function(item) + { + if (item.classList.contains("is-collapsed")) + { + item.querySelector("iconify-icon").setAttribute("icon", "ph:arrows-out-line-horizontal-bold"); + } + else + { + item.querySelector("iconify-icon").setAttribute("icon", "ph:arrows-in-line-horizontal-bold"); + } + }); +} + +function setupCallouts(setupOnNode) +{ + // MAKE CALLOUTS COLLAPSIBLE + // if the callout title is clicked, toggle the display of .callout-content + setupOnNode.querySelectorAll(".callout.is-collapsible .callout-title").forEach(function (element) + { + element.addEventListener("click", function () + { + var parent = this.parentElement; + var isCollapsed = parent.classList.contains("is-collapsed"); + + parent.classList.toggle("is-collapsed"); + element.querySelector(".callout-fold").classList.toggle("is-collapsed"); + + slideToggle(parent.querySelector(".callout-content"), 100); + }); + }); + +} + +function setupCheckboxes(setupOnNode) +{ + // Fix checkboxed toggling .is-checked + setupOnNode.querySelectorAll(".task-list-item-checkbox").forEach(function (element) + { + element.addEventListener("click", function () + { + var parent = this.parentElement; + parent.classList.toggle("is-checked"); + parent.setAttribute("data-task", parent.classList.contains("is-checked") ? "x" : " "); + }); + }); + + setupOnNode.querySelectorAll(`.plugin-tasks-list-item input[type="checkbox"]`).forEach(function(checkbox) + { + checkbox.checked = checkbox.parentElement.classList.contains("is-checked"); + }); + + setupOnNode.querySelectorAll('.kanban-plugin__item.is-complete').forEach(function(checkbox) + { + checkbox.querySelector('input[type="checkbox"]').checked = true; + }); +} + +function setupCanvas(setupOnNode) +{ + let focusedNode = null; + + // make canvas nodes selectable + setupOnNode.querySelectorAll(".canvas-node-content-blocker").forEach(function (element) + { + element.addEventListener("click", function () + { + var parent = this.parentElement.parentElement; + parent.classList.toggle("is-focused"); + this.style.display = "none"; + + if (focusedNode) + { + focusedNode.classList.remove("is-focused"); + focusedNode.querySelector(".canvas-node-content-blocker").style.display = ""; + } + + focusedNode = parent; + }); + }); + + // make canvas node deselect when clicking outside + // document.addEventListener("click", function (event) + // { + // if (!event.target.closest(".canvas-node")) + // { + // document.querySelectorAll(".canvas-node").forEach(function (node) + // { + // node.classList.remove("is-focused"); + // node.querySelector(".canvas-node-content-blocker").style.display = ""; + // }); + // } + // }); + +} + +function setupCodeblocks(setupOnNode) +{ + // make code snippet block copy button copy the code to the clipboard + setupOnNode.querySelectorAll(".copy-code-button").forEach(function (element) + { + element.addEventListener("click", function () + { + var code = this.parentElement.querySelector("code").textContent; + navigator.clipboard.writeText(code); + this.textContent = "Copied!"; + // set a timeout to change the text back + setTimeout(function () + { + setupOnNode.querySelectorAll(".copy-code-button").forEach(function (button) + { + button.textContent = "Copy"; + }); + }, 2000); + }); + }); +} + +function setupLinks(setupOnNode) +{ + setupOnNode.querySelectorAll(".internal-link, .footnote-link, .tree-item-link").forEach(function(link) + { + link.addEventListener("click", function(event) + { + let target = link.getAttribute("href"); + event.preventDefault(); + + // this is linking to a different page + if (!target.startsWith("#")) + { + // load doc, if it is a tree link then don't scroll to the active doc in the file tree + loadDocument(target, true, !link.classList.contains("tree-item-link")); + return; + } + else + { + let headerTarget = document.getElementById(target.substring(1)); + setHeaderOpen(headerTarget.parentElement, true); + headerTarget.scrollIntoView(); + } + }); + }); + + window.onpopstate = function(event) + { + loadDocument(getURLPath(), false); + } +} + + +let sidebarWidth = undefined; +let lineWidth = undefined; +function setupResize(setupOnNode) +{ + if (setupOnNode != document) return; + + function updateSidebars() + { + let rightSidebar = document.querySelector(".sidebar-right"); + let leftSidebar = document.querySelector(".sidebar-left"); + let sidebarCount = (rightSidebar ? 1 : 0) + (leftSidebar ? 1 : 0); + + if (sidebarCount == 0) return; + + if(!sidebarWidth) sidebarWidth = Math.max(rightSidebar?.clientWidth, leftSidebar?.clientWidth); + + if (!lineWidth) + { + let docWidthTestEl = document.createElement("div"); + document.querySelector(".markdown-preview-view").appendChild(docWidthTestEl); + docWidthTestEl.style.width = "var(--line-width)"; + docWidthTestEl.style.minWidth = "var(--line-width)"; + docWidthTestEl.style.maxWidth = "var(--line-width)"; + lineWidth = docWidthTestEl.clientWidth; + docWidthTestEl.remove(); + } + + let letHideRightThreshold = sidebarWidth * sidebarCount + lineWidth / 2; + + if (window.innerWidth < letHideRightThreshold) + { + rightSidebar.style.display = "none"; + } + else + { + rightSidebar.style.display = ""; + } + + let letHideLeftThreshold = lineWidth / 2 + sidebarWidth; + + if (window.innerWidth < letHideLeftThreshold) + { + leftSidebar.style.display = "none"; + } + else + { + leftSidebar.style.display = ""; + } + } + + window.addEventListener("resize", function() + { + updateSidebars(); + }); + + updateSidebars(); +} + +function setupRootPath(fromDocument) +{ + let basePath = fromDocument.querySelector("#root-path").getAttribute("root-path"); + document.querySelector("base").href = basePath; + document.querySelector("#root-path").setAttribute("root-path", basePath); + rootPath = basePath; +} + +let touchDrag = false; + +function initializePage(setupOnNode) +{ + setupThemeToggle(setupOnNode); + setupHeaders(setupOnNode); + setupTrees(setupOnNode); + setupCallouts(setupOnNode); + setupCheckboxes(setupOnNode); + setupCanvas(setupOnNode); + setupCodeblocks(setupOnNode); + setupLinks(setupOnNode); + setupResize(setupOnNode); + + setupOnNode.querySelectorAll("*").forEach(function(element) + { + element.addEventListener("touchend", function(event) + { + if (touchDrag) + { + touchDrag = false; + event.stopPropagation(); + return; + } + + if (element instanceof HTMLElement) element.click(); + }); + }); + + if(setupOnNode == document) + { + document.body.addEventListener("touchmove", function(event) + { + event.stopImmediatePropagation(); + touchDrag = true; + }); + + setupRootPath(document); + setActiveDocument(getURLPath()); + } +} + +function initializeForFileProtocol() +{ + let graphEl = document.querySelector(".graph-view-placeholder"); + if(graphEl) + { + console.log("Running locally, skipping graph view initialization and hiding graph."); + graphEl.style.display = "none"; + graphEl.previousElementSibling.style.display = "none"; // hide the graph's header + } +} + +//#endregion + +window.onload = function() +{ + if (window.location.protocol == "file:") initializeForFileProtocol(); + initializePage(document); +} \ No newline at end of file diff --git a/docs/lib/styles/obsidian-styles.css b/docs/lib/styles/obsidian-styles.css new file mode 100644 index 000000000..de1c833c2 --- /dev/null +++ b/docs/lib/styles/obsidian-styles.css @@ -0,0 +1,2753 @@ +.callout +{ + mix-blend-mode: normal !important; +} + +@media print +{ + + html body> :not(.print) + { + display: unset !important; + } + + .collapse-indicator + { + display: none !important; + } + + .is-collapsed > element > .collapse-indicator + { + display: unset !important; + } +} + +.list-collapse-indicator +{ + display: none !important; +} + +@font-face +{ + font-family: MJXZERO; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-B; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-I; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-MI; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-BI; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-S1; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-S2; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-S3; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-S4; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-A; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-C; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-CB; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-FR; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-FRB; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-SS; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-SSB; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-SSI; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-SC; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-T; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-V; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-VB; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff") format("woff"); +} + +@font-face { + font-family: 'Avenir Next'; + font-weight: normal; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/94f2f163d4b698242fef.otf'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/72505e6a122c6acd5471.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/2d5198822ab091ce4305.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 400; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/c8ba52b05a9ef10f4758.woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 400; + font-style: italic; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/cb10ffd7684cd9836a05.woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 600; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/b5f0f109bc88052d4000.woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 800; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/cbe0ae49c52c920fd563.woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 800; + font-style: italic; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/535a6cf662596b3bd6a6.woff2'); +} + +@font-face { + font-family: 'Source Code Pro'; + font-weight: normal; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/70cc7ff27245e82ad414.ttf'); +} + +@font-face { + font-family: 'Source Code Pro'; + font-weight: normal; + font-style: italic; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/454577c22304619db035.ttf'); +} + +@font-face { + font-family: 'Source Code Pro'; + font-weight: bold; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/52ac8f3034507f1d9e53.ttf'); +} + +@font-face { + font-family: 'Source Code Pro'; + font-weight: bold; + font-style: italic; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/05b618077343fbbd92b7.ttf'); +} + +@font-face { + font-family: 'Flow Circular'; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/853ff76f08786ae44ca0.woff'); +} + +.collapse-icon::before +{ + /* content: "​" !important; */ + content: "" !important; + visibility: hidden !important; +} +body { --anim-duration-none: 0; --anim-duration-superfast: 70ms; --anim-duration-fast: 140ms; --anim-duration-moderate: 300ms; --anim-duration-slow: 560ms; --anim-motion-smooth: cubic-bezier(0.45, 0.05, 0.55, 0.95); --anim-motion-delay: cubic-bezier(0.65, 0.05, 0.36, 1); --anim-motion-jumpy: cubic-bezier(0.68, -0.55, 0.27, 1.55); --anim-motion-swing: cubic-bezier(0, 0.55, 0.45, 1); --blockquote-border-thickness: 2px; --blockquote-border-color: var(--interactive-accent); --blockquote-font-style: normal; --blockquote-color: inherit; --blockquote-background-color: transparent; --bold-weight: var(--font-semibold); --bold-color: inherit; --border-width: 1px; --button-radius: var(--input-radius); --callout-border-width: 0px; --callout-border-opacity: 0.25; --callout-padding: var(--size-4-3) var(--size-4-3) var(--size-4-3) var(--size-4-6); --callout-radius: var(--radius-s); --callout-blend-mode: var(--highlight-mix-blend-mode); --callout-title-color: inherit; --callout-title-padding: 0; --callout-title-size: inherit; --callout-content-padding: 0; --callout-content-background: transparent; --callout-bug: var(--color-red-rgb); --callout-default: var(--color-blue-rgb); --callout-error: var(--color-red-rgb); --callout-example: var(--color-purple-rgb); --callout-fail: var(--color-red-rgb); --callout-important: var(--color-cyan-rgb); --callout-info: var(--color-blue-rgb); --callout-question: var(--color-yellow-rgb); --callout-success: var(--color-green-rgb); --callout-summary: var(--color-cyan-rgb); --callout-tip: var(--color-cyan-rgb); --callout-todo: var(--color-blue-rgb); --callout-warning: var(--color-orange-rgb); --callout-quote: 158, 158, 158; --canvas-background: var(--background-primary); --canvas-card-label-color: var(--text-faint); --canvas-color-1: var(--color-red-rgb); --canvas-color-2: var(--color-orange-rgb); --canvas-color-3: var(--color-yellow-rgb); --canvas-color-4: var(--color-green-rgb); --canvas-color-5: var(--color-cyan-rgb); --canvas-color-6: var(--color-purple-rgb); --canvas-dot-pattern: var(--color-base-30); --checkbox-radius: var(--radius-s); --checkbox-size: var(--font-text-size); --checkbox-marker-color: var(--background-primary); --checkbox-color: var(--interactive-accent); --checkbox-color-hover: var(--interactive-accent-hover); --checkbox-border-color: var(--text-faint); --checkbox-border-color-hover: var(--text-muted); --checklist-done-decoration: line-through; --checklist-done-color: var(--text-muted); --code-white-space: pre-wrap; --code-size: var(--font-smaller); --code-background: var(--background-primary-alt); --code-normal: var(--text-muted); --code-comment: var(--text-faint); --code-function: var(--color-yellow); --code-important: var(--color-orange); --code-keyword: var(--color-pink); --code-operator: var(--color-red); --code-property: var(--color-cyan); --code-punctuation: var(--text-muted); --code-string: var(--color-green); --code-tag: var(--color-red); --code-value: var(--color-purple); --collapse-icon-color: var(--text-faint); --collapse-icon-color-collapsed: var(--text-accent); --cursor: default; --cursor-link: pointer; --dialog-width: 560px; --dialog-max-width: 80vw; --dialog-max-height: 85vh; --divider-color: var(--background-modifier-border); --divider-color-hover: var(--interactive-accent); --divider-width: 1px; --divider-width-hover: 3px; --divider-vertical-height: calc(100% - var(--header-height)); --drag-ghost-background: rgba(0, 0, 0, 0.85); --drag-ghost-text-color: #fff; --embed-max-height: 4000px; --embed-canvas-max-height: 400px; --embed-background: inherit; --embed-border-left: 2px solid var(--interactive-accent); --embed-border-right: none; --embed-border-top: none; --embed-border-bottom: none; --embed-padding: 0 0 0 var(--size-4-6); --embed-font-style: inherit; --embed-block-shadow-hover: 0 0 0 1px var(--background-modifier-border), inset 0 0 0 1px var(--background-modifier-border); --file-line-width: 700px; --file-folding-offset: 24px; --file-margins: var(--size-4-8); --file-header-font-size: var(--font-ui-small); --file-header-font-weight: 400; --file-header-border: var(--border-width) solid transparent; --file-header-justify: center; --font-smallest: 0.8em; --font-smaller: 0.875em; --font-small: 0.933em; --font-ui-smaller: 12px; --font-ui-small: 13px; --font-ui-medium: 15px; --font-ui-large: 20px; --font-thin: 100; --font-extralight: 200; --font-light: 300; --font-normal: 400; --font-medium: 500; --font-semibold: 600; --font-bold: 700; --font-extrabold: 800; --font-black: 900; --footnote-size: var(--font-smaller); --graph-controls-width: 240px; --graph-text: var(--text-normal); --graph-line: var(--color-base-35, var(--background-modifier-border-focus)); --graph-node: var(--text-muted); --graph-node-unresolved: var(--text-faint); --graph-node-focused: var(--text-accent); --graph-node-tag: var(--color-green); --graph-node-attachment: var(--color-yellow); --heading-formatting: var(--text-faint); --h1-color: inherit; --h2-color: inherit; --h3-color: inherit; --h4-color: inherit; --h5-color: inherit; --h6-color: inherit; --h1-font: inherit; --h2-font: inherit; --h3-font: inherit; --h4-font: inherit; --h5-font: inherit; --h6-font: inherit; --h1-line-height: 1.2; --h2-line-height: 1.2; --h3-line-height: 1.3; --h4-line-height: 1.4; --h5-line-height: var(--line-height-normal); --h6-line-height: var(--line-height-normal); --h1-size: 2em; --h2-size: 1.6em; --h3-size: 1.37em; --h4-size: 1.25em; --h5-size: 1.12em; --h6-size: 1.12em; --h1-style: normal; --h2-style: normal; --h3-style: normal; --h4-style: normal; --h5-style: normal; --h6-style: normal; --h1-variant: normal; --h2-variant: normal; --h3-variant: normal; --h4-variant: normal; --h5-variant: normal; --h6-variant: normal; --h1-weight: 700; --h2-weight: 600; --h3-weight: 600; --h4-weight: 600; --h5-weight: 600; --h6-weight: 600; --header-height: 40px; --hr-color: var(--background-modifier-border); --hr-thickness: 2px; --icon-size: var(--icon-m); --icon-stroke: var(--icon-m-stroke-width); --icon-xs: 14px; --icon-s: 16px; --icon-m: 18px; --icon-l: 18px; --icon-xl: 32px; --icon-xs-stroke-width: 2px; --icon-s-stroke-width: 2px; --icon-m-stroke-width: 1.75px; --icon-l-stroke-width: 1.75px; --icon-xl-stroke-width: 1.25px; --icon-color: var(--text-muted); --icon-color-hover: var(--text-muted); --icon-color-active: var(--text-accent); --icon-color-focused: var(--text-normal); --icon-opacity: 0.85; --icon-opacity-hover: 1; --icon-opacity-active: 1; --clickable-icon-radius: var(--radius-s); --indentation-guide-width: 1px; --indentation-guide-color: rgba(var(--mono-rgb-100), 0.12); --indentation-guide-color-active: rgba(var(--mono-rgb-100), 0.3); --inline-title-color: var(--h1-color); --inline-title-font: var(--h1-font); --inline-title-line-height: var(--h1-line-height); --inline-title-size: var(--h1-size); --inline-title-style: var(--h1-style); --inline-title-variant: var(--h1-variant); --inline-title-weight: var(--h1-weight); --inline-title-margin-bottom: 0.5em; --input-height: 30px; --input-radius: 5px; --input-font-weight: var(--font-normal); --input-border-width: 1px; --italic-color: inherit; --italic-weight: inherit; --layer-cover: 5; --layer-sidedock: 10; --layer-status-bar: 15; --layer-popover: 30; --layer-slides: 45; --layer-modal: 50; --layer-notice: 60; --layer-menu: 65; --layer-tooltip: 70; --layer-dragged-item: 80; --line-height-normal: 1.5; --line-height-tight: 1.3; --link-color: var(--text-accent); --link-color-hover: var(--text-accent-hover); --link-decoration: underline; --link-decoration-hover: underline; --link-decoration-thickness: auto; --link-external-color: var(--text-accent); --link-external-color-hover: var(--text-accent-hover); --link-external-decoration: underline; --link-external-decoration-hover: underline; --link-external-filter: none; --link-unresolved-color: var(--text-accent); --link-unresolved-opacity: 0.7; --link-unresolved-filter: none; --link-unresolved-decoration-style: solid; --link-unresolved-decoration-color: hsla(var(--interactive-accent-hsl), 0.3); --list-indent: 2em; --list-spacing: 0.075em; --list-marker-color: var(--text-faint); --list-marker-color-hover: var(--text-muted); --list-marker-color-collapsed: var(--text-accent); --list-bullet-border: none; --list-bullet-radius: 50%; --list-bullet-size: 0.3em; --list-bullet-transform: none; --list-numbered-style: decimal; --nav-item-size: var(--font-ui-small); --nav-item-color: var(--text-muted); --nav-item-color-hover: var(--text-normal); --nav-item-color-active: var(--text-normal); --nav-item-color-selected: var(--text-normal); --nav-item-color-highlighted: var(--text-accent-hover); --nav-item-background-hover: var(--background-modifier-hover); --nav-item-background-active: var(--background-modifier-hover); --nav-item-background-selected: hsla(var(--color-accent-hsl), 0.15); --nav-item-padding: var(--size-4-1) var(--size-4-2) var(--size-4-1) var(--size-4-6); --nav-item-parent-padding: var(--nav-item-padding); --nav-item-children-padding-left: var(--size-2-2); --nav-item-children-margin-left: var(--size-4-3); --nav-item-weight: inherit; --nav-item-weight-hover: inherit; --nav-item-weight-active: inherit; --nav-item-white-space: nowrap; --nav-indentation-guide-width: var(--indentation-guide-width); --nav-indentation-guide-color: var(--indentation-guide-color); --nav-collapse-icon-color: var(--collapse-icon-color); --nav-collapse-icon-color-collapsed: var(--text-faint); --modal-background: var(--background-primary); --modal-width: 90vw; --modal-height: 85vh; --modal-max-width: 1100px; --modal-max-height: 1000px; --modal-max-width-narrow: 800px; --modal-border-width: var(--border-width); --modal-border-color: var(--color-base-40, var(--background-modifier-border-focus)); --modal-radius: var(--radius-l); --modal-community-sidebar-width: 280px; --pdf-background: var(--background-primary); --pdf-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05), 0 2px 8px rgba(0, 0, 0, 0.1); --pdf-spread-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05); --pdf-sidebar-background: var(--background-primary); --pdf-thumbnail-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.2); --popover-width: 450px; --popover-height: 400px; --popover-max-height: 70vh; --popover-pdf-width: 600px; --popover-pdf-height: 800px; --popover-font-size: var(--font-text-size); --prompt-width: 700px; --prompt-max-width: 80vw; --prompt-max-height: 70vh; --prompt-border-width: var(--border-width); --prompt-border-color: var(--color-base-40, var(--background-modifier-border-focus)); --radius-s: 4px; --radius-m: 8px; --radius-l: 12px; --radius-xl: 16px; --ribbon-background: var(--background-secondary); --ribbon-background-collapsed: var(--background-primary); --ribbon-width: 44px; --ribbon-padding: var(--size-4-2) var(--size-4-1) var(--size-4-3); --scrollbar-active-thumb-bg: rgba(var(--mono-rgb-100), 0.2); --scrollbar-bg: rgba(var(--mono-rgb-100), 0.05); --scrollbar-thumb-bg: rgba(var(--mono-rgb-100), 0.1); --search-clear-button-color: var(--text-muted); --search-clear-button-size: 13px; --search-icon-color: var(--text-muted); --search-icon-size: 18px; --search-result-background: var(--background-primary); --size-2-1: 2px; --size-2-2: 4px; --size-2-3: 6px; --size-4-1: 4px; --size-4-2: 8px; --size-4-3: 12px; --size-4-4: 16px; --size-4-5: 20px; --size-4-6: 24px; --size-4-8: 32px; --size-4-9: 36px; --size-4-12: 48px; --size-4-16: 64px; --size-4-18: 72px; --sidebar-markdown-font-size: calc(var(--font-text-size) * 0.9); --sidebar-tab-text-display: none; --slider-thumb-border-width: 1px; --slider-thumb-border-color: var(--background-modifier-border-hover); --slider-thumb-height: 18px; --slider-thumb-width: 18px; --slider-thumb-y: -6px; --slider-thumb-radius: 50%; --slider-s-thumb-size: 15px; --slider-s-thumb-position: -5px; --slider-track-background: var(--background-modifier-border); --slider-track-height: 3px; --status-bar-background: var(--background-secondary); --status-bar-border-color: var(--divider-color); --status-bar-border-width: 1px 0 0 1px; --status-bar-font-size: var(--font-ui-smaller); --status-bar-text-color: var(--text-muted); --status-bar-position: fixed; --status-bar-radius: var(--radius-m) 0 0 0; --status-bar-scroll-padding: calc(var(--status-bar-font-size) + 18px); --swatch-radius: 14px; --swatch-height: 24px; --swatch-width: 24px; --swatch-shadow: inset 0 0 0 1px rgba(var(--mono-rgb-100), 0.15); --tab-background-active: var(--background-primary); --tab-text-color: var(--text-faint); --tab-text-color-active: var(--text-muted); --tab-text-color-focused: var(--text-muted); --tab-text-color-focused-active: var(--text-muted); --tab-text-color-focused-highlighted: var(--text-accent); --tab-text-color-focused-active-current: var(--text-normal); --tab-font-size: var(--font-ui-small); --tab-font-weight: inherit; --tab-container-background: var(--background-secondary); --tab-divider-color: var(--background-modifier-border-hover); --tab-outline-color: var(--divider-color); --tab-outline-width: 1px; --tab-curve: 6px; --tab-radius: var(--radius-s); --tab-radius-active: 6px 6px 0 0; --tab-width: 200px; --tab-max-width: 320px; --tab-stacked-pane-width: 700px; --tab-stacked-header-width: var(--header-height); --tab-stacked-font-size: var(--font-ui-small); --tab-stacked-font-weight: 400; --tab-stacked-text-align: left; --tab-stacked-text-transform: rotate(0deg); --tab-stacked-text-writing-mode: vertical-lr; --tab-stacked-shadow: -8px 0 8px 0 rgba(0, 0, 0, 0.05); --table-background: transparent; --table-border-width: 1px; --table-border-color: var(--background-modifier-border); --table-white-space: normal; --table-header-background: var(--table-background); --table-header-background-hover: inherit; --table-header-border-width: var(--table-border-width); --table-header-border-color: var(--table-border-color); --table-header-font: inherit; --table-header-size: var(--font-text-size); --table-header-weight: var(--bold-weight); --table-header-color: var(--text-normal); --table-text-size: inherit; --table-text-color: inherit; --table-column-max-width: none; --table-column-alt-background: var(--table-background); --table-column-first-border-width: var(--table-border-width); --table-column-last-border-width: var(--table-border-width); --table-row-background-hover: var(--table-background); --table-row-alt-background: var(--table-background); --table-row-last-border-width: var(--table-border-width); --tag-size: var(--font-smaller); --tag-color: var(--text-accent); --tag-color-hover: var(--text-accent); --tag-decoration: none; --tag-decoration-hover: none; --tag-background: hsla(var(--interactive-accent-hsl), 0.1); --tag-background-hover: hsla(var(--interactive-accent-hsl), 0.2); --tag-border-color: hsla(var(--interactive-accent-hsl), 0.15); --tag-border-color-hover: hsla(var(--interactive-accent-hsl), 0.15); --tag-border-width: 0px; --tag-padding-x: 0.65em; --tag-padding-y: 0.25em; --tag-radius: 2em; --titlebar-background: var(--background-secondary); --titlebar-background-focused: var(--background-secondary-alt); --titlebar-border-width: 0px; --titlebar-border-color: var(--background-modifier-border); --titlebar-text-color: var(--text-muted); --titlebar-text-color-focused: var(--text-normal); --titlebar-text-weight: var(--font-bold); --toggle-border-width: 2px; --toggle-width: 40px; --toggle-radius: 18px; --toggle-thumb-color: white; --toggle-thumb-radius: 18px; --toggle-thumb-height: 18px; --toggle-thumb-width: 18px; --toggle-s-border-width: 2px; --toggle-s-width: 34px; --toggle-s-thumb-height: 15px; --toggle-s-thumb-width: 15px; --vault-name-font-size: var(--font-ui-small); --vault-name-font-weight: var(--font-medium); --vault-name-color: var(--text-normal); --workspace-background-translucent: rgba(var(--mono-rgb-0), 0.6); --accent-h: 254; --accent-s: 80%; --accent-l: 68%; --background-primary: var(--color-base-00); --background-primary-alt: var(--color-base-10); --background-secondary: var(--color-base-20); --background-modifier-hover: rgba(var(--mono-rgb-100), 0.075); --background-modifier-active-hover: hsla(var(--interactive-accent-hsl), 0.15); --background-modifier-border: var(--color-base-30); --background-modifier-border-hover: var(--color-base-35); --background-modifier-border-focus: var(--color-base-40); --background-modifier-error-rgb: var(--color-red-rgb); --background-modifier-error: var(--color-red); --background-modifier-error-hover: var(--color-red); --background-modifier-success-rgb: var(--color-green-rgb); --background-modifier-success: var(--color-green); --background-modifier-message: rgba(0, 0, 0, 0.9); --background-modifier-form-field: var(--color-base-00); --text-normal: var(--color-base-100); --text-muted: var(--color-base-70); --text-faint: var(--color-base-50); --text-on-accent: white; --text-on-accent-inverted: black; --text-error: var(--color-red); --text-success: var(--color-green); --text-selection: hsla(var(--color-accent-hsl), 0.2); --text-highlight-bg: rgba(255, 208, 0, 0.4); --text-accent: var(--color-accent); --text-accent-hover: var(--color-accent-2); --interactive-normal: var(--color-base-00); --interactive-hover: var(--color-base-10); --interactive-accent-hsl: var(--color-accent-hsl); --interactive-accent: var(--color-accent-1); --interactive-accent-hover: var(--color-accent-2); } +.theme-light { color-scheme: light; --highlight-mix-blend-mode: darken; --mono-rgb-0: 255, 255, 255; --mono-rgb-100: 0, 0, 0; --color-red-rgb: 233, 49, 71; --color-red: #e93147; --color-orange-rgb: 236, 117, 0; --color-orange: #ec7500; --color-yellow-rgb: 224, 172, 0; --color-yellow: #e0ac00; --color-green-rgb: 8, 185, 78; --color-green: #08b94e; --color-cyan-rgb: 0, 191, 188; --color-cyan: #00bfbc; --color-blue-rgb: 8, 109, 221; --color-blue: #086ddd; --color-purple-rgb: 120, 82, 238; --color-purple: #7852ee; --color-pink-rgb: 213, 57, 132; --color-pink: #d53984; --color-base-00: #ffffff; --color-base-05: #fcfcfc; --color-base-10: #fafafa; --color-base-20: #f6f6f6; --color-base-25: #e3e3e3; --color-base-30: #e0e0e0; --color-base-35: #d4d4d4; --color-base-40: #bdbdbd; --color-base-50: #ababab; --color-base-60: #707070; --color-base-70: #5a5a5a; --color-base-100: #222222; --color-accent-hsl: var(--accent-h), var(--accent-s), var(--accent-l); --color-accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l)); --color-accent-1: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 2.5%)); --color-accent-2: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 5%)); --background-secondary-alt: var(--color-base-05); --background-modifier-box-shadow: rgba(0, 0, 0, 0.1); --background-modifier-cover: rgba(220, 220, 220, 0.4); --input-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12), 0 2px 3px 0 rgba(0,0,0,0.05), 0 1px 1.5px 0 rgba(0,0,0,0.03), 0 1px 2px 0 rgba(0,0,0,0.04), 0 0 0 0 transparent; --input-shadow-hover: inset 0 0 0 1px rgba(0, 0, 0, 0.17), 0 2px 3px 0 rgba(0,0,0,0.1), 0 1px 1.5px 0 rgba(0,0,0,0.03), 0 1px 2px 0 rgba(0,0,0,0.04), 0 0 0 0 transparent; --shadow-s: 0px 1px 2px rgba(0, 0, 0, 0.028), 0px 3.4px 6.7px rgba(0, 0, 0, 0.042), 0px 15px 30px rgba(0, 0, 0, 0.07); --shadow-l: 0px 1.8px 7.3px rgba(0, 0, 0, 0.071), 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), 0px 30px 90px rgba(0, 0, 0, 0.2); } +.theme-dark { color-scheme: dark; --highlight-mix-blend-mode: lighten; --mono-rgb-0: 0, 0, 0; --mono-rgb-100: 255, 255, 255; --color-red-rgb: 251, 70, 76; --color-red: #fb464c; --color-orange-rgb: 233, 151, 63; --color-orange: #e9973f; --color-yellow-rgb: 224, 222, 113; --color-yellow: #e0de71; --color-green-rgb: 68, 207, 110; --color-green: #44cf6e; --color-cyan-rgb: 83, 223, 221; --color-cyan: #53dfdd; --color-blue-rgb: 2, 122, 255; --color-blue: #027aff; --color-purple-rgb: 168, 130, 255; --color-purple: #a882ff; --color-pink-rgb: 250, 153, 205; --color-pink: #fa99cd; --color-base-00: #1e1e1e; --color-base-05: #212121; --color-base-10: #242424; --color-base-20: #262626; --color-base-25: #2a2a2a; --color-base-30: #363636; --color-base-35: #3f3f3f; --color-base-40: #555555; --color-base-50: #666666; --color-base-60: #999999; --color-base-70: #bababa; --color-base-100: #dadada; --color-accent-hsl: var(--accent-h), var(--accent-s), var(--accent-l); --color-accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l)); --color-accent-1: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) - 3.8%)); --color-accent-2: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 3.8%)); --background-modifier-form-field: var(--color-base-25); --background-secondary-alt: var(--color-base-30); --interactive-normal: var(--color-base-30); --interactive-hover: var(--color-base-35); --background-modifier-box-shadow: rgba(0, 0, 0, 0.3); --background-modifier-cover: rgba(10, 10, 10, 0.4); --text-selection: hsla(var(--interactive-accent-hsl), 0.25); --input-shadow: inset 0 0.5px 0.5px 0.5px rgba(255, 255, 255, 0.09), 0 2px 4px 0 rgba(0,0,0,0.15), 0 1px 1.5px 0 rgba(0,0,0,0.1), 0 1px 2px 0 rgba(0,0,0,0.2), 0 0 0 0 transparent; --input-shadow-hover: inset 0 0.5px 1px 0.5px rgba(255, 255, 255, 0.16), 0 2px 3px 0 rgba(0,0,0,0.3), 0 1px 1.5px 0 rgba(0,0,0,0.2), 0 1px 2px 0 rgba(0,0,0,0.4), 0 0 0 0 transparent; --shadow-s: 0px 1px 2px rgba(0, 0, 0, 0.121), 0px 3.4px 6.7px rgba(0, 0, 0, 0.179), 0px 15px 30px rgba(0, 0, 0, 0.3); --shadow-l: 0px 1.8px 7.3px rgba(0, 0, 0, 0.071), 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), 0px 30px 90px rgba(0, 0, 0, 0.2); --pdf-shadow: 0 0 0 1px var(--background-modifier-border); --pdf-thumbnail-shadow: 0 0 0 1px var(--background-modifier-border); } +iframe { color-scheme: normal; } +@media print { + .theme-dark { --highlight-mix-blend-mode: darken; } +} +body { --font-default: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Inter", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei Light", sans-serif; --font-monospace-default: Menlo, SFMono-Regular, Consolas, "Roboto Mono", "Source Code Pro", monospace; --font-interface-override: "??"; --font-interface-theme: "??"; --font-interface: var(--font-interface-override), var(--font-interface-theme), var(--default-font, "??"), var(--font-default); --font-text-override: "??"; --font-text-theme: "??"; --font-text: var(--font-text-override), var(--font-text-theme), var(--font-interface); --font-print-override: "??"; --font-print: var(--font-print-override), var(--font-text-override), var(--font-text-theme), "Arial"; --font-monospace-override: "??"; --font-monospace-theme: "??"; --font-monospace: var(--font-monospace-override), var(--font-monospace-theme), var(--font-monospace-default); --font-text-size: 16px; --font-mermaid: var(--font-text); } +@media print { + html, body { padding-top: 0px !important; overflow: auto !important; height: auto !important; } + iframe, .titlebar, .app-container, .progress-bar, .popover, .markdown-embed-link { display: none !important; } + body > :not(.print) { display: none !important; } + .print .markdown-preview-view { -webkit-print-color-adjust: exact; color: initial; } + .print .markdown-preview-view mark { color: initial; } + .print .markdown-preview-view .frontmatter-container { display: none; } + .print .markdown-preview-view .markdown-embed-content { max-height: none; overflow: visible; } + .print .markdown-preview-view .callout-content { display: inherit !important; } + .print .external-link { background: none; padding-right: 0px; } + * { text-shadow: none !important; } + webview { display: none; } + ::-webkit-scrollbar { display: none; } + body { --font-text: var(--font-print) !important; } +} +* { box-sizing: border-box; } +html, body { margin: 0px; padding: 0px; height: 100%; width: 100%; overflow: hidden; } +body { text-rendering: optimizelegibility; font-family: var(--font-interface); line-height: var(--line-height-tight); font-size: var(--font-ui-medium); background-color: var(--background-primary); color: var(--text-normal); -webkit-tap-highlight-color: rgba(255, 255, 255, 0); } +body.is-translucent { background-color: transparent; } +@keyframes node-inserted { + 0% { outline-color: rgb(255, 255, 255); } + 100% { outline-color: rgb(0, 0, 0); } +} +.node-insert-event { animation-duration: 0.01s; animation-name: node-inserted; } +.is-flashing { transition: all 0.25s ease 0s; color: var(--text-normal); mix-blend-mode: var(--highlight-mix-blend-mode); border-radius: var(--radius-s); background-color: var(--text-highlight-bg) !important; } +body { user-select: none; overflow: hidden; } +body [contenteditable="true"], body [contenteditable=""] { user-select: text; } +body.is-grabbing, body.is-grabbing :not(.workspace-leaf-resize-handle) { cursor: grabbing !important; } +body.is-grabbing iframe:not(.is-controlled), body.is-grabbing webview { pointer-events: none; } +.app-container { display: flex; height: 100%; width: 100%; position: relative; flex-direction: column; } +.app-container.no-transition * { transition: none 0s ease 0s !important; } +.horizontal-main-container { width: 100%; display: flex; overflow: hidden; flex: 1 0 0px; } +:focus { outline: none; } +.is-text-garbled * { font-family: "Flow Circular", sans-serif !important; line-height: 1.45em !important; } +@-webkit-keyframes blink { + 50% { background-color: transparent; } +} +@keyframes blink { + 50% { background-color: transparent; } +} +div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 187, 0); } +div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(170, 34, 34); } +div.CodeMirror-cursors { visibility: hidden; position: relative; z-index: 3; } +div.CodeMirror-dragcursors { visibility: visible; } +@media print { + .CodeMirror div.CodeMirror-cursors { visibility: hidden; } +} +span.CodeMirror-selectedtext { background: none; } +.markdown-source-view { font-size: var(--font-text-size); font-family: var(--font-text); } +.markdown-source-view.mod-cm5 { height: 100%; } +.workspace-leaf-content.is-read-mode .markdown-source-view { z-index: 0; } +.markdown-source-view.is-readable-line-width .CodeMirror { max-width: var(--file-line-width); margin-left: auto; margin-right: auto; } +.drag-ghost { position: fixed; font-size: var(--font-ui-small); color: var(--drag-ghost-text-color); padding: var(--size-2-3) var(--size-4-2); border-radius: var(--radius-s); background-color: var(--drag-ghost-background); box-shadow: 0 2px 8px var(--background-modifier-box-shadow); z-index: var(--layer-dragged-item); max-width: 300px; font-weight: var(--font-medium); pointer-events: none; } +.drag-ghost.mod-leaf { display: flex; z-index: var(--layer-tooltip); } +.drag-ghost-icon { margin-right: var(--size-2-3); position: relative; } +.drag-reorder-ghost { position: fixed; border-radius: var(--radius-s); background-color: var(--background-primary); box-shadow: 0 2px 8px var(--background-modifier-box-shadow); z-index: var(--layer-dragged-item); pointer-events: none; } +.drag-ghost-self { display: flex; } +.drag-ghost-self > .svg-icon { --icon-size: var(--icon-xs); --icon-stroke: var(--icon-xs-stroke-width); opacity: 0.7; vertical-align: middle; align-self: center; margin-right: var(--size-2-2); flex-shrink: 0; } +.drag-ghost-self span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } +.drag-ghost-action { padding: var(--size-2-1) 0 0 0; font-size: var(--font-ui-smaller); opacity: 0.7; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } +.drag-ghost-hidden { visibility: hidden; position: relative; } +.drag-ghost-hidden::before { content: " "; position: absolute; inset: 0px; visibility: visible; border-radius: 5px; background-color: hsla(var(--interactive-accent-hsl), 0.3); } +.markdown-source-view.mod-cm6 { height: 100%; display: flex; flex-direction: column; } +.markdown-source-view.mod-cm6 ::selection { background-color: var(--text-selection); } +.markdown-source-view.mod-cm6 .cm-line .cm-selection, .markdown-source-view.mod-cm6 .cm-line .cm-inline-code .cm-selection { background-color: var(--text-selection); } +.markdown-source-view.mod-cm6 .cm-selectionBackground, .markdown-source-view.mod-cm6 .cm-editor > .cm-scroller > .cm-selectionLayer > .cm-selectionBackground { background-color: var(--text-selection); } +.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer { max-width: var(--file-line-width); margin-left: auto; margin-right: auto; } +.markdown-source-view.mod-cm6.is-readable-line-width .cm-content { max-width: var(--file-line-width); } +.markdown-source-view.mod-cm6.is-readable-line-width .cm-line { max-width: var(--file-line-width); } +.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-table-row { max-width: 100%; } +.markdown-source-view.mod-cm6 .cm-editor { flex: 1 1 0px; min-height: 0px; } +.markdown-source-view.mod-cm6 .cm-editor.cm-focused { outline: none; } +.markdown-source-view.mod-cm6 .cm-scroller { font-family: var(--font-text); line-height: var(--line-height-normal); scroll-padding-block-end: var(--status-bar-scroll-padding); } +.markdown-source-view.mod-cm6 .cm-sizer { display: flex; flex-direction: column; align-items: stretch; width: 100%; min-height: 100%; } +.markdown-source-view.mod-cm6 .cm-contentContainer { flex: 1 1 auto; display: flex; align-items: stretch; overflow-x: visible; } +.markdown-source-view.mod-cm6 .cm-content { width: 0px; caret-color: var(--text-normal); min-height: unset; padding: 0px; flex-basis: unset !important; } +.is-mobile.is-ios .markdown-source-view.mod-cm6 .cm-content { -webkit-user-modify: read-write; } +.markdown-source-view.mod-cm6 .cm-content > * { display: block; margin: 0px !important; } +.markdown-source-view.mod-cm6 .cm-content > [contenteditable="false"] { contain: paint !important; } +.markdown-source-view.mod-cm6 .cm-gutters { flex: 0 0 auto; background-color: transparent; padding-inline-end: var(--file-folding-offset); font-size: var(--font-ui-smaller); z-index: 1; font-variant: tabular-nums; color: var(--text-faint) !important; border-right: none !important; } +.markdown-source-view.mod-cm6 .cm-line > * { text-indent: 0px; } +.markdown-source-view.mod-cm6 .cm-transparent { color: transparent; } +.markdown-source-view.mod-cm6 .cm-html-embed, .markdown-source-view.mod-cm6 .cm-callout, .markdown-source-view.mod-cm6 .cm-table-widget { white-space: normal; overflow-wrap: normal; word-break: normal; } +.markdown-source-view.mod-cm6 .cm-line { position: relative; padding: 0px; } +.markdown-source-view.mod-cm6 .edit-block-button { padding: var(--size-2-2) var(--size-2-3); position: absolute; top: var(--size-2-2); right: var(--size-2-2); display: flex; opacity: 0; color: var(--text-muted); border-radius: var(--radius-s); cursor: var(--cursor); } +@media (hover: hover) { + .markdown-source-view.mod-cm6 .edit-block-button:hover { background-color: var(--background-modifier-hover); } +} +.markdown-source-view.mod-cm6 .cm-panels { background-color: inherit; color: inherit; } +.markdown-source-view.mod-cm6 img.cm-widgetBuffer { display: inline !important; width: 0px !important; border: 0px !important; margin: 0px !important; padding: 0px !important; } +.view-content > .markdown-source-view.mod-cm6 > .cm-editor > .cm-scroller { padding: var(--file-margins); } +.empty-state { position: absolute; height: 100%; width: 100%; top: 0px; left: 0px; display: flex; align-items: center; justify-content: center; flex-direction: column; } +.empty-state-container { max-width: 480px; max-height: 280px; margin: 20px; text-align: center; } +.empty-state-title { margin: 20px 0px; font-weight: var(--h2-weight); font-size: var(--h2-size); line-height: var(--line-height-tight); position: relative; } +.empty-state-action-list { font-size: var(--font-text-size); line-height: var(--line-height-tight); color: var(--text-muted); margin-top: 20px; } +.empty-state-action { cursor: var(--cursor); line-height: 36px; color: var(--text-accent); } +@media (hover: hover) { + .empty-state-action:hover { color: var(--text-accent-hover); } +} +.empty-state-close-button { display: none; } +body { --zoom-factor: 1; --titlebar-height: 30px; } +.mod-macos { --frame-left-space: calc(80px - var(--ribbon-width)); --frame-right-space: 0px; } +.mod-macos.is-popout-window { --frame-left-space: 80px; } +.mod-windows, .mod-linux { --frame-left-space: 0px; --frame-right-space: 126px; } +body.is-frameless:not(.is-hidden-frameless) { padding-top: calc(var(--titlebar-height) / var(--zoom-factor)); } +body.is-frameless:not(.is-hidden-frameless) .titlebar { height: var(--titlebar-height); zoom: calc(1 / var(--zoom-factor)); } +body.is-frameless:not(.is-hidden-frameless):not(.is-maximized) .titlebar { padding-top: 2px; } +body.is-frameless.is-hidden-frameless .titlebar { height: calc(var(--header-height) - 1px); } +body.is-frameless.is-hidden-frameless.starter .titlebar { height: var(--titlebar-height); } +.is-fullscreen .titlebar { display: none; } +.sidebar-toggle-button, .workspace-tabs.mod-top { --tab-container-background: var(--titlebar-background); } +body.is-focused .titlebar, body.is-focused .workspace-ribbon.mod-left { --titlebar-background: var(--titlebar-background-focused); } +body.is-focused .sidebar-toggle-button, body.is-focused .workspace-tabs.mod-top { --tab-container-background: var(--titlebar-background-focused); } +.is-hidden-frameless { --divider-vertical-height: 100%; } +.workspace-ribbon .sidebar-toggle-button { position: absolute; top: 0px; left: 0px; width: var(--ribbon-width); justify-content: center; } +.titlebar-button.mod-logo { width: var(--ribbon-width); justify-content: center; } +.is-hidden-frameless:not(.starter) .titlebar { app-region: no-drag; } +.is-hidden-frameless .titlebar-button.mod-logo { display: none; } +.is-hidden-frameless:not(.is-fullscreen) .workspace-tab-header-container { transition: padding-left 275ms var(--anim-motion-swing), padding-right 275ms var(--anim-motion-swing); } +.is-hidden-frameless:not(.is-fullscreen) .workspace-tabs.mod-top-left-space .workspace-tab-header-container { padding-left: var(--frame-left-space); } +.is-hidden-frameless:not(.is-fullscreen) .workspace-tabs.mod-top-left-space .workspace-tab-header-container::before { app-region: no-drag; content: ""; height: 100%; left: 0px; top: 0px; position: absolute; width: var(--frame-left-space); } +.is-hidden-frameless:not(.is-fullscreen) .workspace-tabs.mod-top-right-space .workspace-tab-header-container { padding-right: var(--frame-right-space); } +.is-hidden-frameless:not(.is-fullscreen) .workspace-tabs.mod-top-right-space .workspace-tab-header-container::after { app-region: no-drag; content: ""; height: 100%; right: 0px; top: 0px; position: absolute; width: var(--frame-right-space); } +.is-hidden-frameless:not(.is-fullscreen) .titlebar-button-container.mod-right { background-color: var(--titlebar-background); } +.is-hidden-frameless:not(.is-fullscreen).is-focused .titlebar-button-container.mod-right { background-color: var(--titlebar-background-focused); } +.titlebar-button.mod-logo:hover .logo-wireframe, .titlebar-button.mod-logo:not(:hover) .logo-full { display: none; } +body.is-frameless > .app-container ~ * { app-region: no-drag; } +body.is-frameless .modal-container, body.is-frameless .suggestion-bg { app-region: initial; } +body.is-frameless .modal { app-region: no-drag; } +.loader-cube { width: 40px; height: 40px; margin: 100px auto; } +.loader-cube .sk-cube { width: 33%; height: 33%; background-color: var(--interactive-accent); float: left; animation: 1.3s ease-in-out 0s infinite normal none running sk-cubeGridScaleDelay; } +.loader-cube .sk-cube1 { animation-delay: 0.2s; } +.loader-cube .sk-cube2 { animation-delay: 0.3s; } +.loader-cube .sk-cube3 { animation-delay: 0.4s; } +.loader-cube .sk-cube4 { animation-delay: 0.1s; } +.loader-cube .sk-cube5 { animation-delay: 0.2s; } +.loader-cube .sk-cube6 { animation-delay: 0.3s; } +.loader-cube .sk-cube7 { animation-delay: 0s; } +.loader-cube .sk-cube8 { animation-delay: 0.1s; } +.loader-cube .sk-cube9 { animation-delay: 0.2s; } +@-webkit-keyframes sk-cubeGridScaleDelay { + 0%, 70%, 100% { transform: scale3d(1, 1, 1); } + 35% { transform: scale3d(0, 0, 1); } +} +@keyframes sk-cubeGridScaleDelay { + 0%, 70%, 100% { transform: scale3d(1, 1, 1); } + 35% { transform: scale3d(0, 0, 1); } +} +.is-loading { position: relative; } +.is-loading::before { content: " "; position: absolute; top: 0px; width: 0px; height: 3px; background-color: var(--interactive-accent); animation: 1000ms ease-in-out 300ms infinite normal none running progress-bar; } +.pane-empty { color: var(--text-faint); font-size: var(--font-ui-small); margin: var(--size-4-2) auto; text-align: center; } +.view-header { height: var(--header-height); display: none; border-bottom: var(--file-header-border); background-color: var(--background-primary); z-index: 1; position: relative; gap: var(--size-4-2); padding: 0 var(--size-4-3); } +body.is-phone .view-header, .show-view-header .view-header { display: flex; } +.is-focused .workspace-leaf.mod-active .view-header { background-color: var(--background-primary); } +.workspace-split.mod-left-split .view-header, .workspace-split.mod-right-split .view-header, .workspace-fake-target-overlay.is-in-sidebar .view-header { display: none; } +.view-header.is-highlighted::after { content: " "; position: absolute; width: 100%; height: 100%; top: 0px; left: 0px; background-color: hsla(var(--interactive-accent-hsl), 0.5); } +.view-header .view-header-icon { display: none; padding: var(--size-2-2); margin-right: var(--size-2-3); color: var(--text-muted); align-self: center; cursor: grab; } +.view-header .view-header-icon:active { cursor: grabbing; } +.view-header-title { font-size: var(--file-header-font-size); font-weight: var(--file-header-font-weight); flex: 1 1 0px; max-width: max-content; overflow: auto; padding: 0 var(--size-4-1); white-space: pre; overflow-wrap: normal; color: var(--text-muted); scroll-padding-inline-end: 20px; } +.is-focused .workspace-leaf.mod-active .view-header-title { color: var(--text-normal); } +.view-header-title::-webkit-scrollbar { display: none; } +.view-header-title-container { flex-grow: 1; overflow: hidden; position: relative; justify-content: var(--file-header-justify); display: flex; align-items: center; gap: 0px; white-space: nowrap; } +.view-header-title-container:not(.mod-at-start)::before { content: " "; position: absolute; top: 0px; left: 0px; width: 30px; height: 100%; background: linear-gradient(to right, var(--background-primary), transparent); } +.view-header-title-container:not(.mod-at-end)::after { content: " "; position: absolute; top: 0px; right: 0px; width: 30px; height: 100%; background: linear-gradient(to right, transparent, var(--background-primary)); } +.view-header-title-parent { font-size: var(--file-header-font-size); color: var(--text-muted); min-width: 0px; display: flex; gap: 0px; overflow: hidden; } +.view-header-title-parent .view-header-breadcrumb { padding: 2px 4px; border-radius: var(--radius-s); } +@media (hover: hover) { + .view-header-title-parent .view-header-breadcrumb:hover { background-color: var(--background-modifier-hover); color: var(--text-normal); } +} +.view-header-title-parent .view-header-breadcrumb-separator { padding: 2px 1px; color: var(--text-faint); } +.view-content { width: 100%; height: calc(100% - var(--header-height)); } +.workspace-split.mod-root .view-content { background-color: var(--background-primary); } +.workspace-split.mod-root .workspace-fake-target-overlay .view-content { background-color: transparent; } +.workspace-split.mod-left-split .view-content, .workspace-split.mod-right-split .view-content { height: 100%; overflow: auto; } +.inline-title { font-weight: var(--inline-title-weight); font-size: var(--inline-title-size); line-height: var(--inline-title-line-height); font-style: var(--inline-title-style); font-variant: var(--inline-title-variant); font-family: var(--inline-title-font); margin-bottom: var(--inline-title-margin-bottom); letter-spacing: -0.015em; color: var(--inline-title-color); } +.hover-popover .inline-title, .inline-embed .inline-title { display: none; } +body:not(.show-inline-title) .inline-title:not([data-level]) { display: none; } +::selection { background-color: var(--text-selection); } +.markdown-reading-view { display: flex; flex-direction: column; } +.markdown-preview-view { font-size: var(--font-text-size); font-family: var(--font-text); line-height: var(--line-height-normal); width: 100%; height: 100%; padding: var(--file-margins); position: relative; overflow-y: auto; overflow-wrap: break-word; color: var(--text-normal); user-select: text; } +.workspace-leaf-content.is-read-mode .markdown-preview-view { width: 100%; left: 0px; background-color: var(--background-primary); } +.markdown-preview-view.is-readable-line-width .markdown-preview-sizer { max-width: var(--file-line-width); margin-left: auto; margin-right: auto; } +.markdown-rendered.rtl { direction: rtl; } +.workspace-ribbon.mod-left { margin-top: var(--header-height); } +.workspace-ribbon.mod-left::before { position: absolute; left: 0px; top: 0px; background-color: var(--titlebar-background); content: " "; border-bottom: var(--tab-outline-width) solid var(--tab-outline-color); height: calc(var(--header-height) - var(--tab-outline-width)); width: var(--ribbon-width); } +.workspace-ribbon { width: var(--ribbon-width); flex: 0 0 var(--ribbon-width); display: flex; flex-direction: column; overflow: hidden; background-color: var(--ribbon-background); z-index: var(--layer-sidedock); color: var(--text-muted); padding: var(--ribbon-padding); gap: var(--size-4-1); border-right: var(--divider-width) solid var(--divider-color); } +.workspace-ribbon.mod-left.is-collapsed { transition: background-color 250ms ease-in-out 95ms; background-color: var(--ribbon-background-collapsed); border-right-color: var(--divider-color); } +.workspace-ribbon.mod-right { display: none; } +.workspace-ribbon.is-hidden { display: none; } +.workspace-ribbon.is-collapsed { background-color: var(--background-secondary); } +.side-dock-settings, .side-dock-actions { flex-direction: column; } +.side-dock-settings .side-dock-ribbon-action, .side-dock-actions .side-dock-ribbon-action { margin: 0px auto; } +.side-dock-settings { margin-top: auto; } +.release-notes-view { padding: var(--file-margins); } +.release-notes-view .markdown-preview-view { overflow: visible; } +.release-notes-view .is-readable-line-width { max-width: var(--file-line-width); margin-left: auto; margin-right: auto; } +.setting { display: flex; align-items: center; } +.setting-text { flex-grow: 1; } +.setting-title { font-size: var(--font-ui-large); line-height: var(--line-height-normal); } +.setting-explanation { color: var(--text-muted); } +.modal.mod-new-editor { max-width: 600px; } +.modal.mod-trust-folder { max-width: 700px; } +.modal.mod-settings .vertical-tab-header { flex: 0 0 25%; min-width: 180px; max-width: 250px; overflow: auto; border-right: 1px solid var(--divider-color); } +.modal.mod-settings .modal-content { margin-top: 0px; overflow: hidden; } +.modal.mod-plugin-options .modal-content { margin: var(--size-4-6) 0; } +.setting-item { display: flex; align-items: center; padding: 0.75em 0px; border-top: 1px solid var(--background-modifier-border); } +.setting-item + .setting-item-heading { margin-top: 0.75em; } +.setting-item:first-child { padding-top: 0px; border-top: none; } +.setting-item > :first-child { margin-right: var(--size-4-4); } +.setting-item > :last-child { margin-right: 0px; } +.setting-item.mod-cta { justify-content: center; } +.setting-item-heading { font-weight: var(--font-semibold); border-top: none; } +.setting-item-heading .setting-item-info { flex-grow: 0; margin-right: 0px; } +.setting-item-heading .setting-item-description { font-weight: var(--font-normal); } +.setting-item-info { flex: 1 1 auto; } +.setting-item-description { color: var(--text-muted); font-size: var(--font-ui-smaller); padding-top: var(--size-4-1); line-height: var(--line-height-tight); } +.setting-item-description:empty { display: none; } +.setting-item-description code { font-family: var(--font-monospace); font-size: var(--font-smaller); border-radius: var(--radius-s); padding: 0px 3px 2px; position: relative; bottom: 1px; } +.setting-item-description ul { margin: var(--size-4-1) 0; padding-left: var(--size-4-6); } +.setting-item-name { color: var(--text-normal); font-size: var(--font-ui-medium); line-height: var(--line-height-tight); } +.setting-item-control { flex: 1 1 auto; text-align: right; display: flex; justify-content: flex-end; align-items: center; gap: var(--size-4-2); } +.setting-item-control.mod-vertical { flex-direction: column; } +.setting-item-control.mod-vertical > :not(:last-child) { margin-bottom: 10px; margin-right: 0px; } +.setting-item-control.mod-hotkey { padding-top: 0px; cursor: default; } +.setting-item-control.mod-hotkey input { font-family: var(--font-monospace); font-size: var(--font-smaller); } +.setting-item-control.mod-hotkey input:focus { background-color: var(--interactive-accent); color: var(--text-on-accent); } +.setting-item-control select { width: inherit; max-width: 400px; } +.setting-command-hotkeys { display: flex; flex-wrap: wrap; gap: var(--size-4-1); } +.setting-hotkey { font-family: -apple-system, BlinkMacSystemFont, var(--font-monospace); font-size: var(--font-ui-small); background-color: var(--background-modifier-hover); border-radius: var(--radius-s); padding: 2px 4px 2px 8px; align-self: flex-end; white-space: nowrap; display: flex; align-items: center; gap: var(--size-4-1); } +.setting-hotkey.has-conflict { background-color: var(--background-modifier-error); color: var(--text-on-accent); } +@media (hover: hover) { + .setting-hotkey.has-conflict:hover { background-color: var(--background-modifier-error-hover); } +} +.setting-hotkey.mod-active { background-color: var(--interactive-accent); color: var(--text-on-accent); } +.setting-hotkey.mod-empty { padding-right: var(--size-4-2); } +.setting-hotkey-icon { display: flex; align-items: center; cursor: var(--cursor); border-radius: 50%; line-height: 1; text-align: center; } +.setting-hotkey-icon .svg-icon { width: 16px; height: 16px; stroke-width: 2px; opacity: 0.6; } +@media (hover: hover) { + .setting-hotkey-icon:hover .svg-icon { opacity: 1; } +} +@media (hover: hover) { + .setting-delete-hotkey:hover { background-color: var(--background-modifier-error); color: var(--text-on-accent); } +} +.setting-add-hotkey-button, .setting-restore-hotkey-button { padding: var(--size-2-2); border-radius: var(--radius-s); color: var(--text-faint); cursor: var(--cursor); height: calc(var(--icon-l) + var(--size-2-2) + var(--size-2-2)); } +.setting-add-hotkey-button.mod-active, .setting-restore-hotkey-button.mod-active { color: var(--text-accent); } +@media (hover: hover) { + .setting-add-hotkey-button:hover, .setting-restore-hotkey-button:hover { background-color: var(--background-modifier-hover); color: var(--text-normal); } +} +.setting-editor-extra-setting-button { line-height: 0; } +.setting-message { font-size: var(--font-ui-small); } +.setting-font-list { margin: 1.5em 0px 0.75em; } +.hotkey-settings-container { display: flex; flex-direction: column; } +.hotkey-settings-container .setting-item-description { padding-top: 0px; } +.hotkey-settings-container hr { margin: 20px 0px 10px; } +.hotkey-list-container { overflow: auto; } +.hotkey-header-container { justify-content: space-between; padding-bottom: var(--size-4-8); display: flex; flex-wrap: wrap; } +.hotkey-filter { align-items: center; background-color: var(--background-secondary); border-radius: var(--radius-s); display: flex; font-size: var(--font-ui-small); padding: var(--size-4-1) var(--size-4-1) var(--size-4-1) var(--size-4-2); gap: var(--size-2-1); } +.setting-filter-container { display: flex; gap: var(--size-4-2); margin-bottom: var(--size-4-8); } +.input-right-decorator { position: absolute; transform: translateY(-50%); top: 50%; right: var(--size-4-1); } +.search-input-container input:not(:placeholder-shown) ~ .input-right-decorator { right: calc(var(--size-4-1) + 28px); } +.search-input-container.mod-hotkey .clickable-icon { padding: var(--size-2-1); } +.hotkey-filter-remove-button { cursor: var(--cursor); color: var(--text-muted); padding: var(--size-2-1); border-radius: var(--radius-s); display: flex; align-items: center; --icon-size: var(--icon-xs); --icon-stroke: var(--icon-xs-stroke-width); } +@media (hover: hover) { + .hotkey-filter-remove-button:hover { background-color: var(--background-modifier-hover); } +} +.modal.mod-image-lightbox { max-width: 90vw; max-height: 90vh; padding: 0px; } +.modal.mod-image-lightbox .modal-content { padding: var(--size-4-12) var(--size-4-3) var(--size-4-2) var(--size-4-3); text-align: center; } +.login-field { max-width: 500px; margin: 1em auto; } +.spellchecker-dictionary-container { max-height: 60vh; overflow: auto; } +.spellchecker-dictionary-item { display: flex; margin-bottom: 10px; } +.spellchecker-dictionary-word { flex-grow: 1; } +.spellchecker-dictionary-remove-button { cursor: var(--cursor); color: var(--text-muted); margin-right: 10px; } +@media (hover: hover) { + .spellchecker-dictionary-remove-button:hover { color: var(--text-normal); } +} +.modal.mod-new-editor .card, .modal.mod-restricted-mode .card { flex: 1 0 0px; } +.input-right-decorator { position: absolute; transform: translateY(-50%); top: 50%; right: var(--size-4-1); } +.input-right-decorator.clickable-icon { padding: var(--size-2-1) var(--size-2-2); } +.input-right-decorator.clickable-icon.is-active { background-color: transparent; } +.search-input-container input:not(:placeholder-shown) ~ .input-right-decorator { right: calc(var(--size-4-1) + 28px); } +.search-input-container input:placeholder-shown ~ .search-input-clear-button { display: none; } +.mod-community-modal .modal-sidebar .setting-item { max-width: var(--modal-community-sidebar-width); padding: 0 var(--size-4-3) var(--size-4-1); border: none; gap: var(--size-4-2); } +.mod-community-modal .modal-sidebar .setting-item:first-child { max-width: 500px; gap: 0px; margin-bottom: var(--size-4-2); } +.mod-community-modal .modal-sidebar .setting-item-name { font-size: var(--font-ui-small); padding-left: var(--size-4-1); } +.mod-community-modal .modal-sidebar .setting-item-info { margin: 0px; flex-grow: 0; } +.mod-community-modal .modal-sidebar .search-input-container { width: 100%; } +.mod-community-modal .modal-sidebar button.clickable-icon { padding: 6px 10px; display: flex; align-items: center; color: var(--text-normal); } +.community-modal-details-empty-state { padding: 0px; text-align: center; } +.community-modal-search-summary { font-size: var(--font-ui-small); padding: var(--size-4-1) var(--size-4-3) var(--size-4-3) var(--size-4-4); } +.community-modal-search-results-wrapper { flex: 1 0 auto; overflow: auto; border-top: var(--border-width) solid var(--divider-color); scroll-padding: var(--size-4-3); contain: strict; } +.community-modal-search-results { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--size-4-3); padding: var(--size-4-3); } +.community-item { position: relative; background-color: var(--background-primary); padding: var(--size-4-3); cursor: var(--cursor); border-radius: var(--radius-m); border: 1px solid var(--background-modifier-border); display: flex; flex-direction: column; gap: var(--size-2-1); } +.community-item:last-child { margin-bottom: 0px; } +.community-item .suggestion-highlight { background-color: var(--text-highlight-bg); } +.community-item.is-selected, .community-item.is-selected:hover { border-color: var(--interactive-accent); background-color: var(--interactive-accent); color: var(--text-on-accent); } +.community-item.is-selected .community-item-author, .community-item.is-selected:hover .community-item-author, .community-item.is-selected .community-item-repo, .community-item.is-selected:hover .community-item-repo, .community-item.is-selected .community-item-downloads, .community-item.is-selected:hover .community-item-downloads, .community-item.is-selected .community-item-updated, .community-item.is-selected:hover .community-item-updated { color: var(--text-on-accent); opacity: 0.8; } +.community-item.is-selected .flair, .community-item.is-selected:hover .flair { color: var(--text-on-accent); background-color: transparent; } +@media (hover: hover) { + .community-item:hover { border-color: var(--background-modifier-border-hover); } +} +.is-mobile .community-item { max-width: 500px; } +.community-item .flair { margin-left: var(--size-4-1); background-color: var(--tag-background); color: var(--tag-color); vertical-align: middle; top: -1px; } +.community-item-name { font-size: var(--font-ui-medium); line-height: var(--line-height-tight); font-weight: var(--font-medium); } +.community-item-author { font-size: var(--font-ui-smaller); line-height: var(--line-height-tight); color: var(--text-muted); } +.community-item-downloads { font-size: var(--font-ui-smaller); color: var(--text-muted); --icon-color: var(--text-faint); --icon-size: var(--icon-xs); --icon-stroke: var(--icon-xs-stroke-width); } +.community-item-downloads svg { vertical-align: text-bottom; } +.community-item-updated { font-size: var(--font-ui-smaller); color: var(--text-muted); margin-bottom: var(--size-4-2); } +.community-item-downloads-text { margin-left: var(--size-2-2); } +.community-item-desc { font-size: var(--font-ui-small); line-height: var(--line-height-tight); margin-top: 4px; } +.community-item-badge.mod-update { --icon-size: var(--icon-xs); --icon-stroke: var(--icon-xs-stroke-width); color: var(--interactive-accent); position: absolute; top: var(--size-4-3); right: var(--size-4-3); } +.community-item-screenshot { max-width: 100%; object-fit: cover; border-radius: var(--radius-s); aspect-ratio: 16 / 9; image-rendering: -webkit-optimize-contrast; margin-top: var(--size-4-1); } +.community-item-screenshot.mod-unavailable { text-align: center; color: var(--text-muted); } +.community-item-screenshot .placeholder-icon { display: flex; align-items: center; justify-content: center; height: 100%; } +.community-item-screenshot .placeholder-icon .svg-icon { color: var(--text-faint); width: var(--size-4-8); height: var(--size-4-8); } +.community-modal-info-name { font-size: var(--h2-size); font-weight: var(--font-semibold); line-height: var(--line-height-tight); margin-bottom: var(--size-4-6); } +.community-modal-info-author, .community-modal-info-repo, .community-modal-info-version { font-size: var(--font-ui-small); line-height: var(--line-height-tight); color: var(--text-muted); } +.community-modal-info-desc { font-size: var(--font-ui-small); line-height: var(--line-height-tight); margin-top: 4px; } +.community-modal-details { flex: 1 1 calc(var(--modal-max-width) - var(--modal-community-sidebar-width)); overflow: auto; display: flex; flex-direction: column; border-left: 1px solid var(--divider-color); } +.community-modal-info { flex: 1 1 0px; overflow-y: auto; padding: var(--size-4-8) var(--size-4-16); scroll-padding: var(--size-4-4); } +.community-readme { overflow-y: visible; height: auto; padding: var(--size-4-4) 0; } +.community-readme video, .community-readme img { max-width: 100%; } +.community-modal-info-desc { font-size: var(--font-ui-medium); line-height: var(--line-height-tight); margin-top: var(--size-4-2); } +.community-modal-button-container { display: flex; flex-wrap: wrap; gap: var(--size-4-2); margin: 1.5em 0px; } +.community-modal-info-downloads { color: var(--text-muted); margin-top: var(--size-4-1); display: inline-block; --icon-size: var(--icon-xs); --icon-stroke: var(--icon-xs-stroke-width); } +.community-modal-info-downloads-text { margin-left: var(--size-4-1); position: relative; top: -1px; } +.community-modal-readme { font-size: var(--font-text-size); font-family: var(--font-text); line-height: var(--line-height-normal); overflow-wrap: break-word; color: var(--text-normal); user-select: text; } +.installed-plugins-container { padding-top: var(--size-4-4); border-top: 1px solid var(--background-modifier-border); } +.community-modal-grid-button-container { position: absolute; top: var(--size-4-4); right: var(--size-4-12); display: flex; gap: var(--size-4-2); } +.status-bar { position: var(--status-bar-position); width: auto; bottom: 0px; right: 0px; border-radius: var(--status-bar-radius); border-style: solid; border-width: var(--status-bar-border-width); border-color: var(--status-bar-border-color); background-color: var(--status-bar-background); color: var(--status-bar-text-color); display: flex; font-size: var(--status-bar-font-size); justify-content: flex-end; min-height: 18px; padding: var(--size-4-1); gap: var(--size-2-1); user-select: none; z-index: var(--layer-status-bar); font-variant-numeric: tabular-nums; } +.status-bar-item { border-radius: var(--radius-s); display: inline-flex; align-items: center; padding: 3px var(--size-2-2); line-height: 1; } +.status-bar-item.mod-clickable { cursor: var(--cursor); } +@media (hover: hover) { + .status-bar-item.mod-clickable:hover { background-color: var(--background-modifier-hover); color: var(--text-normal); } +} +.status-bar-item.plugin-editor-status, .status-bar-item.plugin-sync { padding: 0 var(--size-2-2); } +@media (hover: hover) { + .status-bar-item.plugin-editor-status:hover, .status-bar-item.plugin-sync:hover { background-color: var(--background-modifier-hover); } +} +.status-bar-item-icon { vertical-align: middle; display: flex; align-items: center; } +.status-bar-item-segment { margin-right: var(--size-4-2); } +.status-bar-item-segment:last-child { margin-right: 0px; } +.is-screenshotting .status-bar { display: none; } +.titlebar { app-region: drag; position: fixed; top: 0px; left: 0px; right: 0px; display: flex; background-color: var(--titlebar-background); border-bottom: var(--titlebar-border-width) solid var(--titlebar-border-color); } +.titlebar-inner { color: var(--titlebar-text-color); font-weight: var(--titlebar-text-weight); width: 100%; display: flex; } +.is-focused .titlebar-inner { color: var(--titlebar-text-color-focused); } +.titlebar-text { opacity: 0.85; position: absolute; width: 100%; height: 100%; top: 0px; left: 0px; flex-grow: 1; font-size: var(--font-ui-small); text-align: center; display: flex; justify-content: center; align-items: center; padding: 0px 125px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } +.titlebar-button-container { display: flex; position: absolute; top: 0px; } +.mod-macos .titlebar-button-container { top: 8px; } +.titlebar-button-container.mod-left { left: 0px; } +.mod-macos .titlebar-button-container.mod-left { left: calc(80px / var(--zoom-factor)); } +.titlebar-button-container .mod-back, .titlebar-button-container .mod-forward { color: var(--icon-color); } +.titlebar-button-container .mod-back .svg-icon, .titlebar-button-container .mod-forward .svg-icon { width: 14px; height: 14px; stroke-width: 2.25px; } +@media (hover: hover) { + .titlebar-button-container .mod-back:hover, .titlebar-button-container .mod-forward:hover { color: var(--icon-color-hover); } +} +.titlebar-button-container.mod-right { right: 0px; } +.titlebar-button { app-region: no-drag; padding: var(--size-2-2) var(--size-2-3); cursor: var(--cursor); display: inline-flex; align-items: center; } +@media (hover: hover) { + .titlebar-button:hover { opacity: 1; background-color: var(--background-modifier-hover); } + .titlebar-button.mod-close:hover { background-color: var(--background-modifier-error); } +} +.mod-macos .titlebar-button { border-radius: var(--radius-s); } +body.is-frameless.is-hidden-frameless { padding-top: 0px !important; } +.is-hidden-frameless.mod-macos .titlebar { display: none; } +.is-hidden-frameless.mod-windows .titlebar, .is-hidden-frameless.mod-linux .titlebar { background: transparent; border: none; z-index: var(--layer-popover); pointer-events: none; } +.is-hidden-frameless.mod-windows .titlebar-button.mod-back, .is-hidden-frameless.mod-linux .titlebar-button.mod-back, .is-hidden-frameless.mod-windows .titlebar-button.mod-forward, .is-hidden-frameless.mod-linux .titlebar-button.mod-forward, .is-hidden-frameless.mod-windows .titlebar-text, .is-hidden-frameless.mod-linux .titlebar-text { display: none; } +.is-hidden-frameless.mod-windows .titlebar-button-container, .is-hidden-frameless.mod-linux .titlebar-button-container { pointer-events: auto; } +.mod-linux .titlebar-button-container, .mod-windows .titlebar-button-container { height: 100%; } +.mod-linux .titlebar-button, .mod-windows .titlebar-button { padding: 0px 16px; display: flex; align-items: center; } +.mod-linux .titlebar-button.mod-logo, .mod-windows .titlebar-button.mod-logo { padding: 4px 8px; } +@media (hover: hover) { + .mod-linux .titlebar-button.mod-close:hover, .mod-windows .titlebar-button.mod-close:hover { background-color: var(--background-modifier-error); } + .mod-linux .titlebar-button.mod-close:hover .svg-icon, .mod-windows .titlebar-button.mod-close:hover .svg-icon { fill: white; stroke: white; } +} +@media screen and (max-width: 300px) { + .titlebar-text { display: none; } +} +.is-translucent:not(.is-fullscreen) { --nav-collapse-icon-color: rgba(var(--mono-rgb-100), 0.3); --nav-collapse-icon-color-collapsed: rgba(var(--mono-rgb-100), 0.3); --divider-color: rgba(0, 0, 0, 0.15); } +.is-translucent:not(.is-fullscreen) .titlebar, .is-translucent:not(.is-fullscreen) .app-container { background-color: var(--workspace-background-translucent); } +.is-translucent:not(.is-fullscreen) .workspace-ribbon.mod-left, .is-translucent:not(.is-fullscreen) .workspace-tabs, .is-translucent:not(.is-fullscreen) .workspace-split.mod-root, .is-translucent:not(.is-fullscreen) .sidebar-toggle-button, .is-translucent:not(.is-fullscreen) .mod-left-split .workspace-tab-header-container, .is-translucent:not(.is-fullscreen) .mod-right-split .workspace-tab-header-container, .is-translucent:not(.is-fullscreen) .mod-top .workspace-tab-header-container, .is-translucent:not(.is-fullscreen) .workspace-tabs .workspace-leaf, .is-translucent:not(.is-fullscreen) .workspace-ribbon.mod-left::before { background-color: transparent !important; } +.workspace { background-color: var(--background-primary); display: flex; flex: 1 0 0px; transition: padding-left 100ms ease-in 0s; overflow: hidden; height: 100%; } +.is-translucent .workspace { background-color: transparent; } +.workspace-split { display: flex; position: relative; } +.workspace-split.mod-vertical > .workspace-split:last-child { padding-right: 0px; } +.workspace-split:last-child:not(.mod-right-split) > .workspace-leaf-resize-handle { display: none; } +.workspace-split.mod-vertical { flex-direction: row; } +.workspace-split.mod-horizontal { flex-direction: column; } +.workspace-split.mod-root { background-color: var(--background-primary); } +.workspace-leaf { display: flex; flex-direction: column; position: relative; overflow: hidden; isolation: isolate; contain: strict !important; } +.workspace-split.mod-root .workspace-leaf:last-child .workspace-leaf-resize-handle { display: none; } +.workspace-leaf.is-highlighted::before { content: " "; position: absolute; height: 100%; width: 100%; top: 0px; left: 0px; background-color: hsla(var(--interactive-accent-hsl), 0.25); z-index: var(--layer-popover); pointer-events: none; } +.workspace > .workspace-leaf, .workspace > .workspace-split { height: 100%; width: 100%; } +.workspace-split.mod-root > .workspace-leaf-resize-handle { display: none; } +.workspace-leaf-resize-handle { app-region: no-drag; position: absolute; z-index: var(--layer-cover); background-color: transparent; transition: background-color 200ms ease-in-out 0s, border-color 200ms ease-in-out 0s, opacity 200ms ease-in-out 0s; border-right-color: ; border-bottom-color: ; border-left-color: ; border-top-style: initial; border-top-color: initial; border-width: var(--divider-width); margin: 0px; } +@media (hover: hover) { + .workspace-leaf-resize-handle:hover { background-color: var(--divider-color-hover); border-color: var(--divider-color-hover); } + .is-translucent .workspace-leaf-resize-handle:hover { background-color: var(--divider-color-hover); border-color: var(--divider-color-hover); } +} +.workspace-split.mod-horizontal > * > .workspace-leaf-resize-handle { bottom: 0px; left: 0px; border-bottom-style: solid; border-bottom-width: var(--divider-width); height: var(--divider-width-hover); width: 100%; cursor: row-resize; } +.workspace-split.mod-vertical > * > .workspace-leaf-resize-handle, .workspace-split.mod-left-split > .workspace-leaf-resize-handle, .workspace-split.mod-right-split > .workspace-leaf-resize-handle { right: 0px; bottom: 0px; width: var(--divider-width-hover); height: var(--divider-vertical-height); cursor: col-resize; } +.workspace-split.mod-right-split > .workspace-leaf-resize-handle { border-left-style: solid; border-left-width: var(--divider-width); } +.workspace-split.mod-vertical > * > .workspace-leaf-resize-handle, .workspace-split.mod-left-split > .workspace-leaf-resize-handle { border-right-style: solid; border-right-width: var(--divider-width); } +.workspace-split.mod-right-split > .workspace-leaf-resize-handle { right: unset; left: 0px; } +.workspace-split.mod-vertical > * { height: 100%; flex: 1 0 0px; width: 0px; } +.workspace-split.mod-horizontal > * { width: 100%; flex: 1 0 0px; height: 0px; } +.workspace-split.mod-left-split, .workspace-split.mod-right-split { flex: 0 0 auto; } +.is-translucent .workspace-split.mod-left-split.is-sidedock-collapsed .workspace-tabs, .is-translucent .workspace-split.mod-right-split.is-sidedock-collapsed .workspace-tabs { visibility: hidden; } +.workspace-split.mod-left-split > .workspace-leaf-resize-handle, .workspace-split.mod-right-split > .workspace-leaf-resize-handle { z-index: var(--layer-status-bar); height: var(--divider-vertical-height); top: unset; bottom: 0px; } +.view-header-nav-buttons { --icon-size: var(--icon-s); align-items: center; display: flex; margin-right: var(--size-4-1); } +body.is-phone .view-header-nav-buttons { display: none; } +.workspace-leaf-content { width: 100%; height: 100%; overflow: hidden; position: relative; display: flex; flex-direction: column; } +.workspace-leaf-content .view-content { padding: var(--size-4-4); overflow: auto; } +.workspace-leaf-content[data-type="markdown"] .view-content { padding: 0px; overflow: hidden; } +.workspace-leaf-content[data-type="backlink"] .view-content, .workspace-leaf-content[data-type="outgoing-link"] .view-content { padding: 0px; overflow: hidden; display: flex; flex-direction: column; } +.workspace-leaf-content .image-container, .workspace-leaf-content .audio-container, .workspace-leaf-content .video-container { text-align: center; } +.workspace-leaf-content img:not([width]), .workspace-leaf-content audio, .workspace-leaf-content video { max-width: 100%; } +.workspace-fake-target-overlay, .workspace-drop-overlay { will-change: transform, width, height; position: fixed; left: 0px; top: 0px; width: 0px; height: 0px; transform: translate(0px, 0px); transition: all 100ms ease-in-out 0s; z-index: var(--layer-cover); pointer-events: none; } +.workspace-drop-overlay::before { content: " "; position: absolute; width: calc(100% - 6px); height: calc(100% - 6px); inset: 0px; margin: auto; background-color: var(--interactive-accent); border-radius: var(--radius-m); opacity: 0.5; } +.workspace-fake-target-container { visibility: hidden; position: absolute; pointer-events: none; top: 0px; left: 0px; } +.workspace-fake-target-overlay { visibility: visible; overflow: hidden; background-color: var(--background-primary); } +.workspace-fake-target-overlay > * { width: 100%; height: 100%; } +.workspace-tabs { overflow: hidden; display: flex; flex-direction: column; position: relative; } +.workspace-tabs > * { flex: 1 0 0px; } +.workspace-tabs .workspace-leaf { height: 100%; } +.workspace-split.mod-right-split .workspace-tabs { padding-right: 0px; } +.workspace-tabs:last-child .workspace-leaf-resize-handle { display: none; } +.workspace-fake-target-overlay:not(.is-in-sidebar) .workspace-tabs .workspace-leaf, .mod-root .workspace-tabs .workspace-leaf { background-color: var(--background-primary); } +.workspace-tabs .workspace-leaf { background-color: var(--background-secondary); } +.workspace-tabs .workspace-leaf .view-content { height: 100%; } +.workspace-tab-header-container { display: flex; background-color: var(--tab-container-background); height: var(--header-height); border-bottom: var(--tab-outline-width) solid var(--tab-outline-color); flex: 0 0 auto; padding-left: 0px; padding-right: var(--size-4-2); position: relative; } +.is-phone .workspace-tab-header-container { display: none; } +.workspace-tab-header-container-inner { display: flex; flex: 0 1 auto; overflow: auto; margin: 6px -5px calc(var(--tab-outline-width) * -1); padding: 1px 15px 0px; } +.mod-root .workspace-tab-header-container-inner { padding: 1px 15px 0px; } +.workspace-tab-header-container-inner::-webkit-scrollbar, .workspace-tab-header-container-inner::-webkit-scrollbar-thumb { display: none; } +.workspace-tab-header-inner-icon { flex: 0 0 auto; display: flex; } +.mod-root .workspace-tab-header[data-type="markdown"] .workspace-tab-header-inner-icon, .mod-root .workspace-tab-header[data-type="empty"] .workspace-tab-header-inner-icon { display: none; } +.is-focused .workspace-tab-header { color: var(--tab-text-color-focused); } +.is-focused .workspace-tab-header.is-active { color: var(--tab-text-color-focused-active); } +.is-focused .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, .is-focused .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-title { color: var(--tab-text-color-focused-active-current); } +.is-focused .mod-active .workspace-tab-header.is-active.is-highlighted .workspace-tab-header-inner-icon, .is-focused .mod-active .workspace-tab-header.is-active.is-highlighted .workspace-tab-header-inner-title { color: var(--tab-text-color-focused-highlighted); } +.is-focused .workspace-tab-header.active.is-highlighted .workspace-tab-header-inner-icon, .is-focused .workspace-tab-header.is-highlighted .workspace-tab-header-inner-icon, .is-focused .workspace-tab-header.active.is-highlighted .workspace-tab-header-inner-title, .is-focused .workspace-tab-header.is-highlighted .workspace-tab-header-inner-title { color: var(--tab-text-color-focused-highlighted); } +.workspace-tab-header { app-region: no-drag; color: var(--tab-text-color); display: flex; position: relative; padding: 1px 4px 3.5px; scroll-margin-inline-start: var(--size-2-3); scroll-margin-inline-end: var(--size-4-1); text-align: center; border-radius: var(--tab-radius-active); } +.workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner { background-color: var(--background-modifier-hover); } +.workspace-tab-header::before, .workspace-tab-header::after { position: absolute; bottom: 0px; content: ""; width: calc(var(--tab-curve) * 2); height: calc(var(--tab-curve) * 2); border-radius: 100%; box-shadow: 0 0 0 calc(var(--tab-curve) * 3) transparent; } +.workspace-tab-header::before { left: calc(var(--tab-curve) * -2); clip-path: inset(50% calc(var(--tab-curve) * -1) 0 50%); } +.workspace-tab-header::after { right: calc(var(--tab-curve) * -2); clip-path: inset(50% 50% 0 calc(var(--tab-curve) * -1)); } +.workspace-tab-header.is-active { box-shadow: 0 0 0 var(--tab-outline-width) var(--tab-outline-color); color: var(--tab-text-color-active); background-color: var(--tab-background-active); } +.workspace-split.mod-root .workspace-tab-header.is-active::before, .workspace-split.mod-root .workspace-tab-header.is-active::after { box-shadow: inset 0 0 0 var(--tab-outline-width) var(--tab-outline-color), 0 0 0 calc(var(--tab-curve) * 4) var(--tab-background-active); } +.workspace-tab-header.is-active .workspace-tab-header-inner::after { opacity: 0; } +.workspace-tab-container { display: flex; overflow: hidden; } +.workspace-tab-container > * { flex: 1 0 0px; } +.workspace-tab-header-inner { align-items: center; display: flex; gap: var(--size-2-1); height: 100%; border-radius: var(--tab-radius); overflow: hidden; padding: 0px 8px; width: 100%; } +.workspace-tab-header-inner .workspace-tab-header-inner-icon { color: var(--icon-color); opacity: var(--icon-opacity); } +@media (hover: hover) { + .workspace-tab-header-inner:hover .workspace-tab-header-inner-icon { color: var(--icon-color-hover); opacity: var(--icon-opacity-hover); } +} +.mod-root .workspace-tab-header-inner { padding: 0px 3px 0px 6px; } +.workspace-tab-header-inner-title { flex: 1 1 auto; font-size: var(--tab-font-size); font-weight: var(--tab-font-weight); overflow: hidden; text-align: left; text-overflow: ellipsis; white-space: nowrap; width: 100%; } +.workspace-tab-header-status-container { display: flex; flex-shrink: 0; gap: var(--size-2-1); justify-content: center; } +.workspace-tab-header-status-container:empty { display: none; } +.workspace-tab-header-status-icon, .workspace-tab-header-inner-close-button { cursor: var(--cursor); padding: var(--size-2-1); border-radius: var(--radius-s); display: flex; align-items: center; --icon-size: var(--icon-xs); --icon-stroke: var(--icon-xs-stroke-width); } +@media (hover: hover) { + .workspace-tab-header.is-active .workspace-tab-header-status-icon:hover, .workspace-tab-header.is-active .workspace-tab-header-inner-close-button:hover { background-color: var(--background-modifier-hover); } + .mod-root .workspace-tab-header.is-active .workspace-tab-header-status-icon.mod-linked:hover, .mod-root .workspace-tab-header.is-active .workspace-tab-header-inner-close-button.mod-linked:hover, .mod-root .workspace-tab-header.is-active .workspace-tab-header-status-icon.mod-pinned:hover, .mod-root .workspace-tab-header.is-active .workspace-tab-header-inner-close-button.mod-pinned:hover { background-color: var(--background-modifier-active-hover); } +} +.workspace-tab-header.is-active .workspace-tab-header-status-icon::after, .workspace-tab-header.is-active .workspace-tab-header-inner-close-button::after { background-color: transparent; } +@media (hover: hover) { + .workspace-tab-header-inner-close-button:hover { color: var(--tab-text-color-focused-active-current); } +} +.workspace-tab-header:hover .workspace-tab-header-inner-close-button { color: var(--tab-text-color-focused); } +@media (hover: hover) { + .workspace-tab-header:hover .workspace-tab-header-inner-close-button:hover { color: var(--tab-text-color-focused-active-current); } +} +.workspace-tab-header.is-active .workspace-tab-header-inner-close-button { color: var(--tab-text-color-focused); } +@media (hover: hover) { + .workspace-tab-header.is-active .workspace-tab-header-inner-close-button:hover { color: var(--tab-text-color-focused-active-current); } +} +.workspace-sidedock-empty-state { font-size: var(--font-ui-small); padding: 20px 30px; } +.workspace-tab-header.is-before-active .workspace-tab-header-inner { border-bottom-right-radius: 10px; } +.workspace-tab-header-spacer { display: flex; flex-grow: 1; } +body:not(.is-grabbing):not(.is-fullscreen) .workspace-tabs.mod-top .workspace-tab-header-spacer { app-region: drag; } +body:not(.is-grabbing):not(.is-fullscreen).is-hidden-frameless .mod-top .workspace-tab-header-container { app-region: drag; } +.workspace-tab-header-tab-list, .workspace-tab-header-new-tab { app-region: no-drag; display: none; z-index: 1; align-items: center; } +.titlebar .workspace-tab-header-tab-list, .titlebar .workspace-tab-header-new-tab, .mod-root .workspace-tab-header-tab-list, .mod-root .workspace-tab-header-new-tab { display: flex; } +.workspace-tab-header-tab-list .clickable-icon, .workspace-tab-header-new-tab .clickable-icon { color: var(--icon-color); padding: var(--size-2-2); --icon-size: var(--icon-m); --icon-stroke: var(--icon-m-stroke-width); align-items: center; } +.workspace-tab-header-new-tab { padding: var(--size-4-2) 0 var(--size-2-3); margin-right: var(--size-4-3); margin-left: -4px; } +.workspace-tab-header-tab-list { margin-right: var(--size-4-1); padding: var(--size-4-2) 0 var(--size-2-3); } +.workspace-fake-target-overlay.is-in-sidebar .workspace-tab-header-inner-title, .mod-left-split .workspace-tab-header-inner-title, .mod-right-split .workspace-tab-header-inner-title { display: var(--sidebar-tab-text-display); } +.workspace-fake-target-overlay.is-in-sidebar .workspace-tab-header-inner-close-button, .mod-left-split .workspace-tab-header-inner-close-button, .mod-right-split .workspace-tab-header-inner-close-button { display: none; } +body > .workspace-split { height: 100%; } +.mod-root .workspace-tabs > .workspace-leaf .view-header-title { white-space: normal; } +.mod-root .workspace-tab-header-status-icon { color: var(--text-accent); } +.mod-root .workspace-tab-header-status-icon, .mod-root .workspace-tab-header-inner-icon { --icon-size: var(--icon-xs); --icon-stroke: var(--icon-xs-stroke-width); } +.mod-root .mod-pinned, .mod-root .workspace-tab-header-inner-close-button { --icon-size: var(--icon-s); --icon-stroke: var(--icon-s-stroke-width); } +.mod-right-split .markdown-preview-view, .mod-left-split .markdown-preview-view, .mod-right-split .markdown-source-view.mod-cm6 .cm-scroller, .mod-left-split .markdown-source-view.mod-cm6 .cm-scroller { --file-margins: var(--size-4-5); } +.mod-right-split .markdown-preview-view, .mod-left-split .markdown-preview-view, .mod-right-split .markdown-source-view, .mod-left-split .markdown-source-view { font-size: var(--sidebar-markdown-font-size); } +.mod-left-split .workspace-tab-header-container-inner, .mod-right-split .workspace-tab-header-container-inner { padding: 1px 8px 7px; margin: 6px 0px 0px; gap: 3px; } +.mod-left-split .workspace-tab-header, .mod-right-split .workspace-tab-header { box-shadow: none; background-color: transparent; padding: 0px; margin: 0px; border-radius: var(--radius-s); } +.mod-left-split .workspace-tab-header::before, .mod-right-split .workspace-tab-header::before, .mod-left-split .workspace-tab-header::after, .mod-right-split .workspace-tab-header::after { display: none; } +.mod-left-split .workspace-tab-header:active .workspace-tab-header-inner-icon, .mod-right-split .workspace-tab-header:active .workspace-tab-header-inner-icon { color: var(--icon-color-focused); } +.mod-left-split .workspace-tab-header.has-active-menu, .mod-right-split .workspace-tab-header.has-active-menu, .mod-left-split .workspace-tab-header.is-active, .mod-right-split .workspace-tab-header.is-active { background-color: var(--background-modifier-hover); } +@media (hover: hover) { + .mod-left-split .workspace-tab-header.has-active-menu:hover, .mod-right-split .workspace-tab-header.has-active-menu:hover, .mod-left-split .workspace-tab-header.is-active:hover, .mod-right-split .workspace-tab-header.is-active:hover { background-color: var(--background-modifier-hover); } +} +.mod-left-split .workspace-tab-header.has-active-menu .workspace-tab-header-inner-icon, .mod-right-split .workspace-tab-header.has-active-menu .workspace-tab-header-inner-icon, .mod-left-split .workspace-tab-header.is-active .workspace-tab-header-inner-icon, .mod-right-split .workspace-tab-header.is-active .workspace-tab-header-inner-icon { opacity: var(--icon-opacity-active); color: var(--icon-color-focused); } +.workspace .mod-root .workspace-tab-header { app-region: no-drag; flex: 1 1 0px; width: var(--tab-width); min-width: 0px; max-width: var(--tab-max-width); padding: 1px 3px 3.5px; } +.workspace .mod-root .workspace-tab-header .workspace-tab-header-status-container { position: sticky; right: 0px; } +.workspace .mod-root .workspace-tab-header .workspace-tab-header-inner-close-button { position: sticky; right: 0px; } +.workspace .mod-root .workspace-tab-header.is-active:hover .workspace-tab-header-inner-close-button, .workspace .mod-root .workspace-tab-header.is-active .workspace-tab-header-inner-close-button { pointer-events: all; opacity: 1; } +.workspace .mod-root .workspace-tab-header.is-active:hover .workspace-tab-header-inner-close-button svg, .workspace .mod-root .workspace-tab-header.is-active .workspace-tab-header-inner-close-button svg { opacity: 1; } +.workspace .mod-root .workspace-tab-header.is-active .workspace-tab-header-inner-close-button::after { background-color: transparent; } +.workspace .mod-root .workspace-tab-header-inner::after { position: absolute; right: -0.5px; width: 1px; background-color: var(--tab-divider-color); content: ""; height: 20px; } +.workspace .mod-root .workspace-tab-header-inner-icon { display: flex; padding-right: 4px; } +.workspace .mod-root .workspace-tab-header[data-type="markdown"] .workspace-tab-header-inner-icon, .workspace .mod-root .workspace-tab-header[data-type="empty"] .workspace-tab-header-inner-icon { display: none; } +.workspace .mod-root .workspace-tab-header-inner-title { text-overflow: ellipsis; width: 100%; } +.workspace .mod-root .workspace-tab-header-status-container.mod-linked { display: none; } +.workspace .mod-root .workspace-tab-header-spacer { flex-shrink: 1; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-header-container-inner { padding: 0 0 0 var(--size-4-3); margin: 0px; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container { overflow: auto hidden; position: relative; display: flex; flex-direction: row; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container > * { flex: 0 0 auto; position: sticky; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header { width: var(--tab-stacked-header-width); writing-mode: var(--tab-stacked-text-writing-mode); text-orientation: sideways; background-color: var(--background-primary); padding: 0px; border-radius: 0px; box-shadow: -1px 0 0 0 var(--tab-outline-color), var(--tab-stacked-shadow); --no-tooltip: true; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header::before, .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header::after { display: none; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header:hover .workspace-tab-header-inner { background-color: transparent; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner { padding: var(--size-4-2) var(--size-4-2) var(--size-4-4); border-radius: 0px; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner::after { display: none; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner-title { order: 3; width: auto; -webkit-mask-image: unset; padding: var(--size-4-1) 0; transform: var(--tab-stacked-text-transform); text-align: var(--tab-stacked-text-align); font-weight: var(--tab-stacked-font-weight); font-size: var(--tab-stacked-font-size); text-orientation: mixed; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner-icon { order: 2; cursor: grab; display: flex; padding: var(--size-2-2); border-radius: var(--radius-s); } +@media (hover: hover) { + .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner-icon:hover { background-color: var(--background-modifier-hover); } +} +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner-icon:active { cursor: grabbing; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner-close-button { color: var(--tab-text-color-focused); } +@media (hover: hover) { + .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner-close-button:hover { background-color: var(--background-modifier-hover); } +} +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-leaf { width: var(--tab-stacked-pane-width); contain: strict; } +.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-leaf.is-hidden > * { display: none; } +.sidebar-toggle-button { height: calc(var(--header-height) - 1px); display: flex; justify-content: center; padding: var(--size-4-2) 0 7px 0; app-region: no-drag; --icon-size: var(--icon-l); --icon-stroke: var(--icon-l-stroke-width); } +.mod-macos.is-hidden-frameless:not(.is-popout-window) .sidebar-toggle-button.mod-right { background-color: var(--tab-container-background); position: fixed; top: 0px; right: 0px; padding-right: var(--size-4-2); z-index: var(--layer-popover); } +.mod-macos.is-hidden-frameless:not(.is-popout-window) .workspace .workspace-tabs.mod-top-right-space .workspace-tab-header-container { padding-right: 38px; } +.button-container { margin-top: 20px; } +button { app-region: no-drag; display: inline-flex; align-items: center; justify-content: center; color: var(--text-normal); font-size: var(--font-ui-small); border-radius: var(--button-radius); border: 0px; padding: var(--size-4-1) var(--size-4-3); height: var(--input-height); font-weight: var(--input-font-weight); cursor: var(--cursor); font-family: inherit; outline: none; user-select: none; white-space: nowrap; } +button:not(.clickable-icon) { background-color: var(--interactive-normal); box-shadow: var(--input-shadow); } +@media (hover: hover) { + button:hover { background-color: var(--interactive-hover); box-shadow: var(--input-shadow-hover); } +} +button[aria-disabled="true"] { background-color: var(--interactive-normal); } +button:focus-visible { box-shadow: 0 0 0 3px var(--background-modifier-border-focus); } +button[disabled="true"] { cursor: not-allowed; } +button.mod-cta { background-color: var(--interactive-accent); color: var(--text-on-accent); } +@media (hover: hover) { + button.mod-cta:hover { background-color: var(--interactive-accent-hover); } +} +button.mod-cta:focus-visible { box-shadow: 0 0 0 3px var(--background-modifier-border-focus); } +button.mod-muted { background-color: var(--background-secondary); color: var(--text-muted); } +@media (hover: hover) { + button.mod-muted:hover { background-color: var(--background-secondary); } +} +button.mod-warning { background-color: var(--background-modifier-error); color: var(--text-on-accent); } +@media (hover: hover) { + button.mod-warning:hover { background-color: var(--background-modifier-error-hover); } +} +button.mod-destructive { color: var(--background-modifier-error); } +.icon-button-group { display: inline-block; } +.icon-button { display: inline-block; color: var(--interactive-normal); } +.rich-button { width: auto; padding-top: 5px; } +.rich-button-icon { position: relative; top: 6px; } +.horizontal-preference-group { display: flex; } +.horizontal-preference-group button { border-radius: 0px; margin: 0px -1px; } +.horizontal-preference-group button:first-child { border-top-left-radius: var(--input-radius); border-bottom-left-radius: var(--input-radius); } +.horizontal-preference-group button:last-child { border-top-right-radius: var(--input-radius); border-bottom-right-radius: var(--input-radius); } +.horizontal-preference-group button.is-selected { background-color: var(--interactive-accent); color: var(--text-on-accent); } +@media (hover: hover) { + .horizontal-preference-group button.is-selected:hover { background-color: var(--interactive-accent-hover); } +} +.card-container { display: flex; } +.card-container.mod-horizontal { flex-direction: column; } +.card { background-color: var(--background-secondary-alt); border-radius: 4px; border: 1px solid var(--background-modifier-border); margin: 0px 10px; padding: 15px 30px; display: flex; flex-direction: column; flex-grow: 1; } +.card ul { padding: 0px; } +.card .button-container { margin: 10px 0px; } +.card-container.mod-horizontal .card { margin: 10px 0px; } +.card-container.mod-horizontal .card ul { padding-left: 24px; } +.card li { margin: 5px 0px; } +.card.u-clickable { cursor: var(--cursor); } +@media (hover: hover) { + .card.u-clickable:hover { border: 1px solid var(--interactive-accent); background-color: hsla(var(--interactive-accent-hsl), 0.1); } +} +.card.is-selected { border: 1px solid var(--interactive-accent); background-color: hsla(var(--interactive-accent-hsl), 0.2); } +.card-title { text-align: center; font-size: 20px; line-height: 30px; color: var(--text-muted); margin-bottom: 8px; } +.card-description { color: var(--text-muted); font-size: var(--font-ui-small); line-height: 20px; flex-grow: 1; } +.changelog-item { margin: var(--size-4-2) 0; font-size: var(--font-ui-medium); line-height: var(--line-height); } +.changelog-item::before { content: attr(data-label); width: 50px; border-radius: var(--radius-m); font-size: var(--font-ui-small); display: inline-block; text-align: center; margin-right: 14px; text-transform: uppercase; letter-spacing: 1px; line-height: 22px; } +.changelog-item.mod-success::before { background-color: var(--background-modifier-success); } +.changelog-item.mod-highlighted::before { background-color: var(--interactive-accent); } +.page-container { width: 50vw; max-width: 1000px; margin: 0px auto; padding: 50px 0px; background-color: var(--background-primary); } +.page-title { font-weight: var(--font-extrabold); font-size: 46px; } +[contenteditable] { outline: none; } +.rich-link { color: var(--text-accent); position: relative; padding-left: 30px; } +.rich-link-icon { position: absolute; left: 5px; top: 3px; } +.horizontal-link-group { text-align: center; } +.horizontal-link-group a, .horizontal-link-group span { margin: 0px 10px; } +.footer-link-group { list-style: none; display: inline-block; margin: 0px 30px; padding: 0px; } +.footer-header { font-size: 22px; line-height: 30px; margin-bottom: 10px; } +.footer-link { margin: 4px 0px; } +.components-container .menu { position: relative; display: inline-block; } +.list-item { display: flex; padding: 0px; margin: 8px 0px; gap: var(--size-4-2); align-items: center; } +.list-item-part.mod-extended { flex-grow: 1; overflow-wrap: anywhere; } +.list-item-part.clickable-icon { display: flex; align-items: center; justify-content: center; padding: var(--size-2-2); cursor: var(--cursor); border-radius: var(--radius-s); color: var(--icon-color); } +.list-item-part.clickable-icon:hover, .list-item-part.clickable-icon:active { color: var(--icon-color-hover); background-color: var(--background-modifier-hover); } +.lightbox { display: none; position: fixed; z-index: 999; width: 100%; height: 100%; text-align: center; top: 0px; left: 0px; background: rgba(0, 0, 0, 0.8); } +.lightbox img { max-width: 90vw; max-height: 90vh; margin-top: 5vh; } +.lightbox:target { display: block; } +.u-center-text { text-align: center; } +.u-faded-text { color: var(--text-muted); } +.u-pop { color: var(--text-accent); font-weight: var(--font-semibold); } +.u-muted { color: var(--text-muted); } +.u-small { font-size: 0.8em; } +.u-clickable { cursor: var(--cursor); } +.u-pop-bg { background-color: var(--interactive-accent); color: var(--text-on-accent); display: inline-block; padding: 3px 16px; border-radius: 20px; opacity: 0.6; cursor: default; } +@media (hover: hover) { + .u-pop-bg:hover { opacity: 1; } +} +.components-container h3 { font-weight: var(--font-semibold); font-size: 30px; margin: 60px 0px 25px; } +.components-container .vertical-tabs-container { height: 300px; } +.components-container .checkbox-demo { margin: 10px 0px; } +.components-container .checkbox-demo label { display: inline-block; width: 300px; } +.components-container .prompt { position: static; } +.diff-view { height: 100%; overflow: auto; user-select: text; } +.diff-line { padding: 0 var(--size-4-2); } +.diff-line.mod-left { background-color: rgba(var(--background-modifier-error-rgb), 0.2); } +.diff-line.mod-left .diff-changed { background-color: rgba(var(--background-modifier-error-rgb), 0.4); } +.diff-line.mod-right { background-color: rgba(var(--background-modifier-success-rgb), 0.2); } +.diff-line.mod-right .diff-changed { background-color: rgba(var(--background-modifier-success-rgb), 0.4); } +.diff-collapsed { text-align: center; color: var(--text-muted); cursor: pointer; font-size: var(--font-ui-small); margin: var(--size-4-2) 0; } +.diff-collapsed:hover { color: var(--text-accent); } +.markdown-reading-view.is-searching, .markdown-source-view.is-replacing, .markdown-source-view.is-searching { flex-direction: column-reverse; } +.mod-active .document-search-container { background-color: var(--background-primary); } +.document-search-container { display: flex; flex-direction: column; padding: var(--size-4-2) 0; margin: 0 var(--size-4-4); gap: var(--size-4-2); z-index: var(--layer-popover); } +.document-search, .document-replace { width: 100%; max-width: var(--file-line-width); margin: 0px auto; display: flex; padding: 0 var(--size-4-2); gap: var(--size-4-2); } +.document-replace { display: none; } +.document-search-container.mod-replace-mode .document-replace { display: flex; } +input.document-search-input, input.document-replace-input { flex-grow: 1; } +input.document-search-input.mod-no-match, input.document-replace-input.mod-no-match { background-color: rgba(var(--background-modifier-error-rgb), 0.2); } +@media (hover: hover) { + input.document-search-input.mod-no-match:hover, input.document-replace-input.mod-no-match:hover { background-color: rgba(var(--background-modifier-error-rgb), 0.2); } +} +.document-replace-buttons, .document-search-buttons { display: flex; gap: var(--size-4-2); align-items: center; } +.document-search-button { font-size: var(--font-ui-small); padding: 0 var(--size-4-2); color: var(--text-muted); } +.document-search-close-button { cursor: var(--cursor); position: relative; top: 2px; font-size: 24px; line-height: 20px; height: 24px; width: 24px; padding: 0 var(--size-2-2); border-radius: var(--radius-s); color: var(--text-muted); } +.document-search-close-button::before { font-family: Inter, sans-serif; content: "×"; font-weight: 300; } +@media (hover: hover) { + .document-search-close-button:hover { background-color: var(--background-modifier-hover); color: var(--text-normal); } +} +.markdown-rendered .search-highlight > div { position: absolute; pointer-events: none; box-shadow: 0 0 0px 2px var(--text-normal); opacity: 0.3; mix-blend-mode: var(--highlight-mix-blend-mode); border-radius: 2px; } +.markdown-rendered .search-highlight > div.is-active { box-shadow: 0 0 0px 3px var(--text-accent); opacity: 1; } +.markdown-source-view.mod-cm5 { position: relative; padding-left: 20px; padding-right: 30px; } +.workspace-leaf-content.is-read-mode .markdown-source-view.mod-cm5 { z-index: 0; } +.markdown-source-view.mod-cm5 .document-search-container { position: absolute; top: 0px; left: 0px; width: 100%; z-index: 5; } +.markdown-source-view.mod-cm6 .document-search-container { flex: 0 0 auto; } +[dir="rtl"] .dropdown, :root:lang(ar) .dropdown, :root:lang(iw) .dropdown { background-position: left 0.7em top 50%, 0px 0px; padding: 0.6em 0.8em 0.5em 1.4em; } +select, .dropdown { app-region: no-drag; height: var(--input-height); font-size: var(--font-ui-small); font-family: inherit; font-weight: var(--input-font-weight); color: var(--text-normal); line-height: var(--line-height-tight); padding: 0px 1.9em 0px 0.8em; max-width: 100%; box-sizing: border-box; margin: 0px; border: 0px; box-shadow: var(--input-shadow); border-radius: var(--input-radius); appearance: none; background-color: var(--interactive-normal); background-repeat: no-repeat, repeat; background-position: right 0.7em top 50%, 0px 0px; background-size: 0.65em, 100%; } +@media (hover: hover) { + select:hover, .dropdown:hover { box-shadow: var(--input-shadow-hover); background-color: var(--interactive-hover); } +} +select:focus, .dropdown:focus { box-shadow: 0 0 0px 3px var(--background-modifier-border-focus); outline: none; } +.dropdown { background-image: url("data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"292.4\" height=\"292.4\"%3E%3Cpath fill=\"%23000\" opacity=\"0.4\" d=\"M287 69.4a17.6 17.6 0 0 0-13-5.4H18.4c-5 0-9.3 1.8-12.9 5.4A17.6 17.6 0 0 0 0 82.2c0 5 1.8 9.3 5.4 12.9l128 127.9c3.6 3.6 7.8 5.4 12.8 5.4s9.2-1.8 12.8-5.4L287 95c3.5-3.5 5.4-7.8 5.4-12.8 0-5-1.9-9.2-5.5-12.8z\"/%3E%3C/svg%3E"); } +.theme-dark .dropdown { background-image: url("data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"292.4\" height=\"292.4\"%3E%3Cpath fill=\"%23FFF\" opacity=\"0.4\" d=\"M287 69.4a17.6 17.6 0 0 0-13-5.4H18.4c-5 0-9.3 1.8-12.9 5.4A17.6 17.6 0 0 0 0 82.2c0 5 1.8 9.3 5.4 12.9l128 127.9c3.6 3.6 7.8 5.4 12.8 5.4s9.2-1.8 12.8-5.4L287 95c3.5-3.5 5.4-7.8 5.4-12.8 0-5-1.9-9.2-5.5-12.8z\"/%3E%3C/svg%3E"); } +.dropdown option { font-weight: normal; background-color: var(--background-primary); } +.flair { background-color: var(--interactive-normal); border-radius: var(--radius-s); color: var(--text-normal); font-size: 10px; letter-spacing: 0.05em; margin-left: var(--size-4-2); padding: var(--size-2-1) var(--size-2-2); position: relative; text-transform: uppercase; white-space: nowrap; vertical-align: middle; } +.flair.mod-flat { vertical-align: top; } +.flair.mod-pop { background-color: var(--interactive-accent); color: var(--text-on-accent); } +.markdown-preview-view:not(.allow-fold-lists) .list-collapse-indicator, .markdown-preview-view:not(.allow-fold-headings) .heading-collapse-indicator { display: none; } +h1:hover .collapse-indicator, h2:hover .collapse-indicator, h3:hover .collapse-indicator, h4:hover .collapse-indicator, h5:hover .collapse-indicator, h6:hover .collapse-indicator, .collapse-indicator:hover, .is-collapsed .collapse-indicator, .cm-fold-indicator.is-collapsed .collapse-indicator, .cm-gutterElement:hover .collapse-indicator, .cm-gutterElement .is-collapsed .collapse-indicator, .cm-line:hover .cm-fold-indicator .collapse-indicator, .fold-gutter.is-collapsed, .fold-gutter:hover { opacity: 1; } +.collapse-icon { display: flex; align-items: center; } +.collapse-icon::before { content: "​"; } +.collapse-icon svg.svg-icon { color: var(--nav-collapse-icon-color); stroke-width: 4px; width: 10px; height: 10px; transition: transform 100ms ease-in-out 0s; } +.collapse-icon.is-collapsed svg.svg-icon { transform: rotate(-90deg); } +.rtl .collapse-icon.is-collapsed svg.svg-icon { transform: rotate(90deg); } +.view-content .list-collapse-indicator svg.svg-icon, .view-content .collapse-indicator svg.svg-icon { color: var(--collapse-icon-color); } +.view-content .is-collapsed .list-collapse-indicator svg.svg-icon, .view-content .is-collapsed .collapse-indicator svg.svg-icon { color: var(--collapse-icon-color-collapsed); } +.markdown-preview-view .collapse-indicator { float: left; cursor: var(--cursor); } +.markdown-preview-view .collapse-indicator .svg-icon { vertical-align: middle; } +.markdown-preview-view li.is-collapsed > ul, .markdown-preview-view li.is-collapsed > ol { display: none; } +.markdown-preview-view .heading-collapse-indicator { margin-left: -22px; padding: 0px 6px; } +.markdown-source-view.mod-cm6 .cm-fold-indicator .collapse-indicator { opacity: 0; } +.markdown-source-view.mod-cm6 .cm-line:hover .cm-fold-indicator .collapse-indicator, .markdown-source-view.mod-cm6 .cm-fold-indicator.is-collapsed .collapse-indicator { opacity: 1; } +.markdown-source-view.mod-cm6 .cm-foldPlaceholder { color: var(--text-faint); background-color: transparent; border: none; margin-left: 8px; } +.markdown-source-view.mod-cm6 .cm-fold-indicator { display: inline-block; position: relative; z-index: 1; } +.markdown-source-view.mod-cm6 .cm-fold-indicator .collapse-indicator { position: absolute; top: 0px; right: 0px; height: 100%; cursor: var(--cursor); padding-right: 5px; } +svg.svg-icon { height: var(--icon-size); width: var(--icon-size); stroke-width: var(--icon-stroke); } +.nav-buttons-container, .view-actions, .workspace-tab-header-inner, .side-dock-settings, .side-dock-actions { display: flex; justify-content: center; } +.side-dock-settings, .side-dock-actions { gap: var(--size-2-3); } +.view-actions { gap: 0px; align-items: center; --icon-size: var(--icon-s); } +.nav-file-icon .svg-icon, .suggestion-flair .svg-icon, .menu-item-icon .svg-icon, .status-bar-item .svg-icon { --icon-size: var(--icon-s); --icon-stroke: var(--icon-s-stroke-width); } +.clickable-icon.side-dock-ribbon-action .svg-icon, .mod-left-split .workspace-tab-header-inner-icon .svg-icon, .mod-right-split .workspace-tab-header-inner-icon .svg-icon { --icon-size: var(--icon-l); --icon-stroke: var(--icon-l-stroke-width); } +.clickable-icon.side-dock-ribbon-action:active, .mod-left-split .workspace-tab-header-inner-icon:active, .mod-right-split .workspace-tab-header-inner-icon:active { color: var(--icon-color-focused); } +.clickable-icon { app-region: no-drag; background-color: transparent; display: flex; align-items: center; justify-content: center; padding: var(--size-2-2) var(--size-2-3); cursor: var(--cursor); border-radius: var(--clickable-icon-radius); color: var(--icon-color); opacity: var(--icon-opacity); transition: opacity 0.15s ease-in-out 0s; height: auto; } +@media (hover: hover) { + .clickable-icon:hover { box-shadow: none; opacity: var(--icon-opacity-hover); color: var(--icon-color-hover); background-color: var(--background-modifier-hover); } + .clickable-icon.has-active-menu, .clickable-icon:active { opacity: var(--icon-opacity-hover); color: var(--icon-color-focused); background-color: var(--background-modifier-hover); } +} +.clickable-icon.is-active { opacity: var(--icon-opacity-hover); color: var(--icon-color-active); background-color: var(--background-modifier-active-hover); } +@media (hover: hover) { + .clickable-icon.is-active:hover { background-color: var(--background-modifier-active-hover); } +} +.clickable-icon[aria-disabled="true"] { background-color: unset; color: var(--text-muted); opacity: 0.4; } +@media (hover: hover) { + .clickable-icon[aria-disabled="true"]:hover { background-color: unset; } +} +.clickable-icon.mod-warning { color: var(--text-error); } +.setting-item-control .clickable-icon { padding: var(--size-2-2); } +.markdown-rendered.show-indentation-guide li > ul, .markdown-rendered.show-indentation-guide li > ol { position: relative; } +.markdown-rendered.show-indentation-guide li > ul::before, .markdown-rendered.show-indentation-guide li > ol::before { content: "​"; position: absolute; display: block; left: -1em; top: 0px; bottom: 0px; border-right: var(--indentation-guide-width) solid var(--indentation-guide-color); } +.markdown-source-view.mod-cm6 .cm-indent { display: inline-block; } +.markdown-source-view.mod-cm6 .cm-indent::before { content: "​"; display: block; width: 1px; border-right: var(--indentation-guide-width) solid var(--indentation-guide-color); color: transparent; position: absolute; top: 0px; bottom: 0px; transform: translateX(0.15em); } +.markdown-source-view.mod-cm6 .cm-active-indent::before { border-color: var(--indentation-guide-color-active); } +.input-label { display: inline-block; width: 150px; text-align: right; margin-right: var(--size-4-2); } +.input-button { padding: 6px 14px; margin-left: 14px; color: var(--text-muted); font-size: var(--font-ui-medium); position: relative; top: -1px; } +@media (hover: hover) { + .input-button:hover { color: var(--text-normal); } +} +textarea, input[type="text"], input[type="search"], input[type="email"], input[type="password"], input[type="number"] { app-region: no-drag; background: var(--background-modifier-form-field); border: var(--input-border-width) solid var(--background-modifier-border); color: var(--text-normal); font-family: inherit; padding: var(--size-4-1) var(--size-4-2); font-size: var(--font-ui-small); border-radius: var(--input-radius); outline: none; } +@media (hover: hover) { + textarea:hover, input[type="text"]:hover, input[type="search"]:hover, input[type="email"]:hover, input[type="password"]:hover, input[type="number"]:hover { border-color: var(--background-modifier-border-hover); transition: box-shadow 0.15s ease-in-out 0s, border 0.15s ease-in-out 0s; } +} +textarea:active, input[type="text"]:active, input[type="search"]:active, input[type="email"]:active, input[type="password"]:active, input[type="number"]:active, textarea:focus, input[type="text"]:focus, input[type="search"]:focus, input[type="email"]:focus, input[type="password"]:focus, input[type="number"]:focus { border-color: var(--background-modifier-border-focus); transition: box-shadow 0.15s ease-in-out 0s, border 0.15s ease-in-out 0s; } +textarea:active, input[type="text"]:active, input[type="search"]:active, input[type="email"]:active, input[type="password"]:active, input[type="number"]:active, textarea:focus, input[type="text"]:focus, input[type="search"]:focus, input[type="email"]:focus, input[type="password"]:focus, input[type="number"]:focus, textarea:focus-visible, input[type="text"]:focus-visible, input[type="search"]:focus-visible, input[type="email"]:focus-visible, input[type="password"]:focus-visible, input[type="number"]:focus-visible { box-shadow: 0 0 0 2px var(--background-modifier-border-focus); } +textarea::placeholder, input[type="text"]::placeholder, input[type="search"]::placeholder, input[type="email"]::placeholder, input[type="password"]::placeholder, input[type="number"]::placeholder { color: var(--text-faint); } +input[type="text"], input[type="search"], input[type="email"], input[type="password"], input[type="number"] { height: var(--input-height); } +textarea { line-height: var(--line-height-tight); } +input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { display: none; pointer-events: none; } +input[type="number"]::-webkit-inner-spin-button { appearance: none; } +input[type="range"] { width: 100px; appearance: none; background-color: var(--slider-track-background); border-radius: var(--slider-track-height); height: var(--slider-track-height); padding: 0px; } +body:not(.is-mobile) input[type="range"]:focus { box-shadow: none; } +input[type="range"]::-webkit-slider-runnable-track { height: 6px; appearance: none; } +input[type="range"]::-webkit-slider-thumb { appearance: none; height: var(--slider-thumb-height); width: var(--slider-thumb-width); border-radius: var(--slider-thumb-radius); cursor: default; background: rgb(255, 255, 255); border: var(--slider-thumb-border-width) solid var(--slider-thumb-border-color); position: relative; top: var(--slider-thumb-y); transition: all 0.1s linear 0s; box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 1px 0px, rgba(0, 0, 0, 0.1) 0px 2px 2px 0px; } +input[type="range"]::-webkit-slider-thumb:hover, input[type="range"]::-webkit-slider-thumb:active { background: white; border-color: var(--background-modifier-border-focus); box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px 0px, rgba(0, 0, 0, 0.2) 0px 2px 3px 0px; transition: all 0.1s linear 0s; } +input[type="range"] { outline: none; } +body:not(.is-mobile) input[type="range"]:focus::-webkit-slider-thumb { box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 2px 0px, rgba(0, 0, 0, 0.2) 0px 2px 3px 0px; } +body:not(.is-mobile) input[type="range"]:focus-visible::-webkit-slider-thumb { border-color: var(--background-modifier-border-focus); box-shadow: 0 1px 2px 0px rgba(0, 0, 0, 0.05), 0 2px 3px 0px rgba(0, 0, 0, 0.2), 0 0 0px 2px var(--background-modifier-border-focus); } +input[type="color"] { appearance: none; width: calc(var(--swatch-width) + 4px); background-color: transparent; border: none; cursor: var(--cursor); padding: 0px; } +input[type="color"]::-webkit-color-swatch-wrapper { padding: 2px; } +input[type="color"]::-webkit-color-swatch { border: 0px; box-shadow: var(--swatch-shadow); border-radius: var(--swatch-radius); height: var(--swatch-height); width: var(--swatch-width); align-self: center; } +@media (hover: hover) { + input[type="color"]::-webkit-color-swatch:hover { box-shadow: inset 0 0 0 1px rgba(var(--mono-rgb-100), 0.25), 0 0 0 3px var(--background-modifier-border-hover); } +} +input[type="color"]:focus-visible::-webkit-color-swatch, input[type="color"]:focus::-webkit-color-swatch { box-shadow: var(--swatch-shadow), 0 0 0 3px var(--background-modifier-border-focus); } +select.mod-hidden { display: none; } +.notice-container { z-index: var(--layer-notice); position: fixed; top: 22px; right: 0px; padding: 10px; overflow: hidden; } +.notice { background-color: var(--background-modifier-message); border-radius: var(--radius-m); box-shadow: 0 2px 8px var(--background-modifier-box-shadow); color: rgb(250, 250, 250); font-size: var(--font-ui-small); line-height: var(--line-height-tight); padding: 0.75em 1em; max-width: 300px; margin-bottom: 14px; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; cursor: var(--cursor); } +.menu { app-region: no-drag; padding: var(--size-2-3); border: 1px solid var(--background-modifier-border-hover); background-color: var(--background-secondary); border-radius: var(--radius-m); box-shadow: var(--shadow-s); position: fixed; z-index: var(--layer-menu); user-select: none; max-height: calc(100% - var(--header-height)); overflow: hidden; } +.menu.mod-no-icon .menu-item-icon:first-child { display: none; } +.menu-separator { height: 0px; margin: var(--size-2-3) calc(var(--size-2-3) * -1); border-bottom: 1px solid var(--background-modifier-border); } +.menu-separator:last-child, .menu-separator:first-child { display: none; } +.menu-separator + .menu-separator { display: none; } +.menu-item { display: flex; align-items: center; gap: var(--size-4-2); padding: var(--size-4-1) var(--size-4-2); cursor: var(--cursor); font-size: var(--font-ui-small); border-radius: var(--radius-s); white-space: nowrap; } +.menu-item.is-disabled { cursor: default; color: var(--text-faint); } +.menu-item.is-warning.selected { color: var(--text-error); } +.menu-item.is-label { cursor: default; pointer-events: none; font-size: var(--font-ui-medium); color: var(--text-muted); white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; } +@media (hover: hover) { + .menu-item.is-warning:hover { color: var(--text-error); } + .menu-item:hover:not(.is-disabled):not(.is-label) { background-color: var(--background-modifier-hover); } +} +.menu-item.selected:not(.is-disabled):not(.is-label) { background-color: var(--background-modifier-hover); } +.menu-item-icon { flex: 0 1 auto; display: flex; color: var(--text-muted); } +.menu-item.is-warning.selected .menu-item-icon, .menu-item.is-warning:hover .menu-item-icon { color: var(--text-error); } +.menu-item.is-disabled .menu-item-icon { color: var(--text-faint); } +.menu-item-icon .mod-submenu { color: var(--text-faint); } +.menu-item-title { flex: 1 0 0px; } +.menu.mod-tab-list .menu-item-title { max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; } +.debug-textarea { width: 100%; height: 50vh; max-height: 80vh; font-family: var(--font-monospace); tab-size: 4; resize: none; } +.modal-container { display: flex; align-items: center; justify-content: center; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; z-index: var(--layer-modal); } +.modal-container.mod-dim .modal { box-shadow: var(--shadow-l); } +.modal-bg { position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; background-color: var(--background-modifier-cover); } +.modal { --checkbox-size: var(--font-ui-medium); background-color: var(--modal-background); border-radius: var(--modal-radius); border: var(--modal-border-width) solid var(--modal-border-color); padding: var(--size-4-4); position: relative; min-height: 100px; width: var(--dialog-width); max-width: var(--dialog-max-width); max-height: var(--dialog-max-height); display: flex; flex-direction: column; overflow: auto; } +.modal.mod-sidebar-layout { padding: 0px; width: var(--modal-width); height: var(--modal-height); max-width: var(--modal-max-width); max-height: var(--modal-max-height); overflow: hidden; display: flex; flex-direction: column; } +.modal.mod-sidebar-layout .modal-content { display: flex; } +.modal.mod-scrollable-content { padding: 0px; overflow: hidden; } +.modal.mod-scrollable-content .modal-title { padding: var(--size-4-4) var(--size-4-4) 0 var(--size-4-4); } +.modal.mod-scrollable-content .modal-content { padding: 0 var(--size-4-4) var(--size-4-4) var(--size-4-4); overflow: auto; } +.modal-sidebar { background-color: var(--background-secondary); flex: 1 1 var(--modal-community-sidebar-width); min-width: var(--modal-community-sidebar-width); padding: var(--size-4-3) 0 0 0; display: flex; flex-direction: column; } +body:not(.native-scrollbars) .modal-close-button { right: 12px; } +.modal-close-button { cursor: var(--cursor); position: absolute; top: var(--size-2-3); right: var(--size-2-3); font-size: 24px; line-height: 20px; height: 24px; width: 24px; padding: 0 var(--size-2-2); border-radius: var(--radius-s); color: var(--text-muted); } +@media (hover: hover) { + .modal-close-button:hover { background-color: var(--background-modifier-hover); color: var(--text-normal); } +} +.modal-close-button::before { font-family: Inter, sans-serif; content: "×"; font-weight: 300; } +.modal-title { font-size: 1.2em; margin-bottom: 0.75em; font-weight: var(--font-semibold); text-align: left; line-height: var(--line-height-tight); } +.mod-sidebar-layout .modal-title { display: none; } +.modal-title:empty { display: none; } +.modal-content { flex: 1 1 auto; font-size: var(--font-ui-medium); } +.modal-button-container { margin-top: 1.5em; display: flex; justify-content: flex-end; gap: var(--size-4-2); flex-wrap: wrap; font-size: var(--font-ui-medium); } +.modal-button-container .mod-checkbox { flex-grow: 1; display: flex; align-items: center; gap: var(--size-4-1); } +.modal-button-container .mod-secondary { margin-right: auto; } +.modal.mod-scrollable-content > .modal-button-container { margin-top: 0px; border-top: 1px solid var(--background-modifier-border); padding: var(--size-4-4); } +.modal-checkbox-label { cursor: var(--cursor); margin-left: 10px; user-select: none; } +.message-container { margin: var(--size-4-4) 0; } +.message { display: inline-block; padding: 6px 12px; border-radius: var(--radius-s); } +.message.mod-success { background-color: var(--background-modifier-success); color: var(--text-on-accent); } +.message.mod-success a { color: var(--text-normal); } +.message.mod-info { background-color: var(--background-modifier-info); } +.message.mod-error { background-color: var(--background-modifier-error); color: var(--text-on-accent); } +.message.mod-error a { color: var(--text-normal); } +.mod-warning { color: var(--text-error); } +.mod-success { color: var(--text-success); } +.mod-file-rename .rename-textarea { overflow: hidden; padding: var(--size-2-3) var(--size-4-2); resize: none; width: 100%; } +.modal-setting-back-button { position: absolute; top: var(--safe-area-inset-top); left: 0px; padding: var(--size-4-3) var(--size-4-3); height: var(--modal-header-height); color: var(--text-normal); font-weight: var(--font-semibold); } +.modal-setting-back-button-icon { display: flex; align-items: center; margin-right: 6px; } +.modal-setting-nav-bar { display: flex; flex: 0 1 auto; padding: var(--size-4-3); border-bottom: 1px solid var(--background-modifier-border); } +.modal .modal-nav-action { background-color: unset; margin-top: var(--size-4-1); position: absolute; top: 0px; width: unset; } +.modal .modal-nav-action.mod-secondary { left: 0px; } +.modal .modal-nav-action.mod-cta { color: var(--color-accent); font-weight: var(--font-semibold); right: 0px; } +.nav-header { padding: var(--size-4-2); } +.nav-header ~ .search-input-container { padding: 0px; width: calc(100% - var(--size-4-8)); margin: 4px auto; } +.nav-buttons-container { flex-wrap: wrap; gap: var(--size-2-1); } +.nav-buttons-container.has-separator { border-bottom: 1px solid var(--background-modifier-border); padding-bottom: var(--size-2-3); margin-bottom: var(--size-4-2); } +.multi-select-container { display: inline-flex; flex-wrap: wrap; width: 100%; background: var(--background-modifier-form-field); border: var(--input-border-width) solid var(--background-modifier-border); color: var(--text-normal); font-size: var(--font-ui-small); border-radius: var(--input-radius); outline: none; padding: 2px; } +.multi-select-selection { display: inline-flex; align-items: center; background-color: var(--tag-background); border: var(--tag-border-width) solid var(--tag-border-color); border-radius: var(--tag-radius); color: var(--tag-color); line-height: 1; padding: var(--tag-padding); margin: 0.5ch; } +.multi-select-selection-content { display: inline-flex; align-items: center; margin: 4px; } +.multi-select-input { min-width: 10ch; flex-grow: 1; background-color: inherit; border: none; } +@keyframes multi-select-highlight { + 0% { background-color: var(--background-modifier-error); } +} +.multi-select-duplicate { animation: 2000ms ease-in 0s 1 normal none running multi-select-highlight; } +.popover { background-color: var(--background-primary); border: 1px solid var(--background-modifier-border); box-shadow: var(--shadow-s); border-radius: var(--radius-m); padding: var(--size-4-5); position: relative; max-height: 95vh; } +.popover-title { font-weight: var(--font-extrabold); } +.popover-content { margin: var(--size-4-2) 0; } +.components-container .popover { width: 300px; margin-top: var(--size-4-5); } +.components-container .popover .popover-content { font-size: var(--font-ui-medium); } +.popover.hover-popover { position: absolute; z-index: var(--layer-popover); max-width: 80vw; min-height: 60px; overflow: hidden; width: fit-content; padding: 0px; } +.popover.hover-popover > * { width: var(--popover-width); } +.popover.hover-popover .markdown-preview-view { font-size: var(--popover-font-size); } +.popover.hover-popover > .mod-empty { display: flex; justify-content: center; align-items: center; padding: 20px; font-size: var(--popover-font-size); color: var(--text-muted); } +.popover.hover-popover > .media-embed { min-height: 0px; line-height: 0; border: none; } +.popover.hover-popover > .media-embed video { max-height: 100%; max-width: 100%; height: auto; } +.popover.hover-popover > .image-embed img { max-height: 100%; max-width: 100%; height: auto; } +.popover.hover-popover > .pdf-embed { width: var(--popover-pdf-width); height: var(--popover-pdf-height); max-height: var(--popover-max-height); } +.popover.hover-popover > .markdown-embed { height: var(--popover-height); max-height: var(--popover-max-height); border: 0px; padding: 0px; margin: 0px; } +.popover.hover-popover > .markdown-embed > .markdown-embed-content { height: 100%; overflow: auto; } +.popover.hover-popover > .markdown-embed > .markdown-embed-content > .markdown-preview-view { padding: var(--file-margins); } +.popover.hover-popover > .markdown-embed .mod-header + div > :first-child { margin-top: 0px; } +.follow-link-popover { box-shadow: 0 2px 8px var(--background-modifier-box-shadow); background-color: rgba(0, 0, 0, 0.9); border-radius: var(--radius-m); color: rgb(204, 204, 204); font-size: var(--font-ui-small); line-height: 20px; max-width: 300px; padding: 5px 12px; text-align: center; z-index: var(--layer-tooltip); white-space: pre-wrap; top: calc(100%); } +.follow-link-popover.mod-bottom { top: 0px; } +@media (hover: hover) { + .follow-link-popover:hover { background-color: rgb(0, 0, 0); } +} +.follow-link-popover .popover-arrow { position: absolute; top: calc(100%); left: 50%; width: 0px; margin-left: -5px; border-width: 5px; border-style: solid; border-color: rgba(0, 0, 0, 0.9) transparent transparent; content: " "; font-size: 0px; line-height: 0; } +.follow-link-popover.mod-bottom .popover-arrow { border-bottom: 5px solid rgba(0, 0, 0, 0.9); border-top: none; top: -5px; } +.markdown-preview-view progress, .markdown-rendered progress, .markdown-source-view.is-live-preview progress { -webkit-writing-mode: horizontal-tb; writing-mode: horizontal-tb; appearance: none; box-sizing: border-box; display: inline-block; height: 6px; margin-bottom: 4px; max-width: 100%; overflow: hidden; border-radius: 0px; border: 0px; vertical-align: -0.2rem; } +.markdown-preview-view progress[value]::-webkit-progress-bar, .markdown-rendered progress[value]::-webkit-progress-bar, .markdown-source-view.is-live-preview progress[value]::-webkit-progress-bar { background-color: var(--background-secondary); box-shadow: inset 0px 0px 0px 1px var(--background-modifier-border); border-radius: 6px; overflow: hidden; } +.markdown-preview-view progress[value]::-webkit-progress-value, .markdown-rendered progress[value]::-webkit-progress-value, .markdown-source-view.is-live-preview progress[value]::-webkit-progress-value { background-color: var(--interactive-accent); overflow: hidden; } +.progress-bar { position: absolute; height: 100vh; width: 100vw; top: 0px; left: 0px; background-color: var(--background-primary); z-index: 10000; display: flex; flex-direction: column; justify-content: center; align-items: center; } +.progress-bar-message { margin-bottom: var(--size-4-8); opacity: 1; color: var(--text-muted); } +.progress-bar-indicator { position: relative; height: 8px; margin: 0px 10vw; width: 90vw; overflow-x: hidden; border-radius: 3px; } +.progress-bar-line { position: absolute; opacity: 0.4; background-color: var(--interactive-accent); width: 150%; height: 8px; } +.progress-bar-subline { position: absolute; background-color: var(--interactive-accent); height: 8px; } +.progress-bar-subline.mod-increase { animation: 2s ease 0s infinite normal none running increase; } +.progress-bar-subline.mod-decrease { animation: 2s ease 0.5s infinite normal none running decrease; } +.progress-bar .progress-bar-subline { transition: width 150ms ease-in-out 0s; } +@keyframes increase { + 0% { left: -5%; width: 5%; } + 100% { left: 130%; width: 100%; } +} +@keyframes decrease { + 0% { left: -80%; width: 80%; } + 100% { left: 110%; width: 10%; } +} +.prompt { display: flex; flex-direction: column; border-radius: var(--radius-l); background-color: var(--background-primary); box-shadow: var(--shadow-l); border: var(--prompt-border-width) solid var(--prompt-border-color); z-index: 1; position: absolute; top: 80px; width: var(--prompt-width); max-width: var(--prompt-max-width); max-height: var(--prompt-max-height); overflow: hidden; } +.prompt-input-container { display: flex; } +input.prompt-input { width: 100%; padding: var(--size-4-6); background-color: var(--background-primary); font-size: var(--font-ui-medium); border-top: none; border-right: none; border-left: none; border-image: initial; height: 40px; border-radius: 0px; border-bottom: 1px solid var(--background-secondary); } +input.prompt-input:hover, input.prompt-input:focus, input.prompt-input:focus-visible { border-bottom: 1px solid var(--background-secondary); box-shadow: none; } +.prompt-results { list-style: none; margin: 0px; padding: var(--size-4-3); overflow-y: auto; } +.prompt-instructions { border-top: 1px solid var(--background-secondary); user-select: none; font-size: var(--font-ui-smaller); color: var(--text-muted); padding: var(--size-4-2); text-align: center; display: flex; flex-wrap: wrap; justify-content: center; gap: var(--size-4-3); } +.prompt-instruction { display: inline-block; } +.prompt-instruction-command { font-weight: var(--bold-weight); margin-right: var(--size-2-2); } +body:not(.native-scrollbars) ::-webkit-scrollbar { width: 12px; height: 12px; border-radius: var(--radius-l); background-color: transparent; } +body:not(.native-scrollbars) ::-webkit-scrollbar-track { background-color: transparent; } +body:not(.native-scrollbars) ::-webkit-scrollbar-thumb { background-color: var(--scrollbar-thumb-bg); border-radius: var(--radius-l); background-clip: padding-box; border-style: solid; border-color: transparent; border-image: initial; border-width: 3px 3px 3px 2px; min-height: 45px; } +body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active { border-radius: var(--radius-l); } +body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover, body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active { background-color: var(--scrollbar-active-thumb-bg); } +body:not(.native-scrollbars) ::-webkit-scrollbar-corner { background: transparent; } +body:not(.native-scrollbars) * { } +.suggestion-container { position: absolute; background-color: var(--background-primary); max-width: 500px; border-radius: var(--radius-m); border: 1px solid var(--background-modifier-border); box-shadow: var(--shadow-s); z-index: var(--layer-notice); } +.suggestion { max-height: 300px; overflow-y: auto; padding: var(--size-2-3); } +.suggestion-item, .suggestion-empty { font-size: var(--font-ui-medium); margin-bottom: 1px; } +.suggestion-empty { color: var(--text-muted); padding-right: ; padding-bottom: ; padding-left: ; padding-top: var(--size-4-3); text-align: center; } +.suggestion-item { cursor: var(--cursor); padding-top: ; padding-right: ; padding-bottom: ; padding-left: 12px; white-space: pre-wrap; border-radius: var(--radius-s); } +.suggestion-item.is-selected { background-color: var(--background-modifier-hover); } +.suggestion-item.mod-downranked { color: var(--text-muted); } +.suggestion-item.mod-complex { align-items: baseline; display: flex; justify-content: space-between; } +.suggestion-item.mod-complex .suggestion-title { overflow-wrap: break-word; } +.suggestion-item.mod-complex .suggestion-content { display: flex; flex-direction: column; overflow: hidden; text-overflow: ellipsis; margin-right: auto; } +.suggestion-item.mod-complex .suggestion-prefix::after { content: ": "; } +.suggestion-item.mod-complex .suggestion-highlight { font-weight: bold; } +.suggestion-item.mod-complex .suggestion-note { font-size: 0.8em; color: var(--text-muted); width: 100%; flex-basis: 100%; overflow-wrap: break-word; } +.suggestion-item.mod-complex .suggestion-aux { display: flex; align-items: center; align-self: center; flex-shrink: 0; } +.suggestion-item.mod-complex .suggestion-hotkey { font-size: var(--font-ui-smaller); font-family: var(--font-interface); padding: 2px 6px; } +.suggestion-item.mod-complex .suggestion-hotkey:not(:last-child) { margin-left: 10px; } +.suggestion-item.mod-complex .suggestion-flair { color: var(--text-muted); opacity: var(--icon-opacity); margin: 0px 4px 0px 12px; display: flex; align-items: center; } +.suggestion-item.mod-complex .suggestion-flair:not(:last-child) { margin-left: 6px; } +.suggestion-highlight { font-weight: bold; } +.suggestion-bg { position: fixed; top: 0px; left: 0px; width: 100%; height: 100%; background-color: var(--background-modifier-cover); z-index: var(--layer-popover); } +.horizontal-tab-header { display: flex; } +.horizontal-tab-nav-item, .vertical-tab-nav-item { padding: var(--size-4-1) var(--size-4-2); user-select: none; cursor: var(--cursor); font-size: calc(var(--font-ui-small) + 1px); border-radius: var(--radius-s); } +.horizontal-tab-nav-item.is-active, .vertical-tab-nav-item.is-active { background-color: var(--interactive-accent); color: var(--text-on-accent); } +@media (hover: hover) { + .horizontal-tab-nav-item.is-active:hover, .vertical-tab-nav-item.is-active:hover { background-color: var(--interactive-accent); } +} +@media (hover: hover) { + .horizontal-tab-nav-item:hover, .vertical-tab-nav-item:hover { background-color: var(--background-modifier-hover); } +} +.vertical-tab-nav-item { margin-bottom: var(--size-2-1); } +.vertical-tab-nav-item-chevron { display: none; } +.horizontal-tab-content, .vertical-tab-content { background-color: var(--background-primary); padding-left: var(--size-4-12); padding-right: var(--size-4-12); } +.vertical-tabs-container { display: flex; } +.vertical-tab-header { padding: var(--size-4-3); background-color: var(--background-secondary); } +.vertical-tab-header-group-items { display: flex; flex-direction: column; } +.vertical-tab-header-group-title { font-size: var(--font-ui-smaller); color: var(--text-faint); font-weight: var(--font-semibold); padding: var(--size-4-2); user-select: none; } +.vertical-tab-header-group { padding: var(--size-4-3) 0; } +.vertical-tab-content-container { overflow: hidden; flex-grow: 1; } +.vertical-tab-content { overflow-y: auto; height: 100%; padding-top: var(--size-4-8); padding-bottom: var(--size-4-16); } +.vertical-tab-content h2 { font-size: var(--font-ui-medium); font-weight: var(--font-semibold); } +.checkbox-container { app-region: no-drag; cursor: var(--cursor); background-color: var(--background-modifier-border-hover); border-radius: var(--toggle-radius); display: inline-block; flex-shrink: 0; height: calc(var(--toggle-thumb-height) + var(--toggle-border-width) * 2); position: relative; user-select: none; width: var(--toggle-width); box-shadow: rgba(0, 0, 0, 0.07) 0px 4px 10px inset, rgba(0, 0, 0, 0.21) 0px 0px 1px inset; transition: box-shadow 0.15s ease-in-out 0s, outline 0.15s ease-in-out 0s, border 0.15s ease-in-out 0s, opacity 0.15s ease-in-out 0s; outline: 0 solid var(--background-modifier-border-focus); } +.checkbox-container input[type="checkbox"] { position: absolute; opacity: 0; left: 0px; } +.checkbox-container:focus-within { outline: var(--toggle-border-width) solid var(--background-modifier-border-focus); } +@media (hover: hover) { + .checkbox-container:hover { box-shadow: rgba(0, 0, 0, 0.14) 0px 6px 20px inset, rgba(0, 0, 0, 0.28) 0px 0px 1px inset; } +} +.checkbox-container.is-enabled { background-color: var(--interactive-accent); } +.checkbox-container.is-enabled::after { transform: translate3d(calc(var(--toggle-width) - var(--toggle-thumb-width) - var(--toggle-border-width)), 0, 0); } +.checkbox-container.is-enabled:active::after { left: -4px; } +.checkbox-container::before { content: ""; display: block; position: absolute; inset: 0px; opacity: 0; } +.checkbox-container::after { pointer-events: none; content: ""; display: block; position: absolute; background-color: var(--toggle-thumb-color); width: var(--toggle-thumb-width); height: var(--toggle-thumb-height); margin: var(--toggle-border-width) 0 0 0; border-radius: var(--toggle-thumb-radius); transition: transform 0.15s ease-in-out 0s, width 0.1s ease-in-out 0s, left 0.1s ease-in-out 0s; left: 0px; transform: translate3d(var(--toggle-border-width), 0, 0); box-shadow: rgba(0, 0, 0, 0.15) 0px 1px 2px; } +.checkbox-container:active::after { width: calc(var(--toggle-thumb-width) + var(--toggle-border-width)); } +.checkbox-container.mod-small { width: var(--toggle-s-width); height: calc(var(--toggle-s-thumb-height) + var(--toggle-s-border-width) * 2); } +.checkbox-container.mod-small:focus-within { outline: var(--toggle-s-border-width) solid var(--background-modifier-border-focus); } +.checkbox-container.mod-small::after { width: var(--toggle-s-thumb-width); height: var(--toggle-s-thumb-height); margin: var(--toggle-s-border-width) 0 0 0; transform: translate3d(var(--toggle-s-border-width), 0, 0); } +.checkbox-container.mod-small.is-enabled::after { transform: translate3d(calc(var(--toggle-s-width) - var(--toggle-s-thumb-width) - var(--toggle-s-border-width)), 0, 0); } +.checkbox-container.mod-small:active::after { width: calc(var(--toggle-s-thumb-width) + var(--toggle-s-border-width)); } +.tooltip { animation: 200ms ease-in-out 0s 1 normal forwards running pop-down; box-shadow: 0 2px 8px var(--background-modifier-box-shadow); background-color: var(--background-modifier-message); border-radius: var(--radius-s); color: rgb(250, 250, 250); font-size: var(--font-ui-smaller); font-weight: var(--font-medium); left: 50%; line-height: var(--line-height-tight); max-width: 300px; padding: 4px 8px; position: fixed; text-align: center; transform: translateX(-50%); z-index: var(--layer-tooltip); pointer-events: none; white-space: pre-wrap; word-break: normal; overflow-wrap: anywhere; } +.tooltip.mod-right { animation: 200ms ease-in-out 0s 1 normal forwards running pop-right; transform: translateY(-50%); } +.tooltip.mod-left { animation: 200ms ease-in-out 0s 1 normal forwards running pop-right; transform: translateY(-50%); } +.tooltip.mod-error { width: 200px; background-color: var(--background-modifier-error); color: var(--text-on-accent); } +.tooltip.mod-wide { max-width: 450px; width: 400px; } +.tooltip .tooltip-arrow { position: absolute; top: -5px; left: 50%; width: 0px; margin-left: -5px; border-bottom: 5px solid var(--background-modifier-message); border-right: 5px solid transparent; border-left: 5px solid transparent; content: " "; font-size: 0px; line-height: 0; } +.tooltip.mod-right .tooltip-arrow { top: calc(50% - 5px); left: -5px; border-right: 5px solid var(--background-modifier-message); border-top: 5px solid transparent; border-bottom: 5px solid transparent; } +.tooltip.mod-left .tooltip-arrow { top: calc(50% - 5px); left: calc(100% + 5px); border-left: 5px solid var(--background-modifier-message); border-top: 5px solid transparent; border-bottom: 5px solid transparent; } +.tooltip.mod-top .tooltip-arrow { top: calc(100%); border-top: 5px solid var(--background-modifier-message); border-bottom: 5px solid transparent; } +.tooltip.mod-error .tooltip-arrow { border-bottom-color: var(--background-modifier-error); } +.tooltip.mod-error.mod-right .tooltip-arrow { border-right-color: var(--background-modifier-error); border-bottom: 5px solid transparent; } +.tooltip.mod-error.mod-left .tooltip-arrow { border-left-color: var(--background-modifier-error); border-bottom: 5px solid transparent; } +[aria-label] .svg-icon { pointer-events: none; } +@keyframes pop-down { + 0% { opacity: 0; transform: translateX(-50%) scale(1); } + 20% { opacity: 0.7; transform: translateX(-50%) scale(1.02); } + 40% { opacity: 1; transform: translateX(-50%) scale(1.05); } + 100% { opacity: 1; transform: translateX(-50%) scale(1); } +} +@keyframes pop-right { + 0% { opacity: 0; transform: translateY(-50%) scale(1); } + 20% { opacity: 0.7; transform: translateY(-50%) scale(1.02); } + 40% { opacity: 1; transform: translateY(-50%) scale(1.05); } + 100% { opacity: 1; transform: translateY(-50%) scale(1); } +} +.tree-item-self { padding: var(--nav-item-padding); margin-bottom: 1px; display: flex; align-items: flex-start; border-radius: var(--radius-s); font-size: var(--nav-item-size); font-weight: var(--nav-item-weight); color: var(--nav-item-color); position: relative; } +.workspace-leaf.mod-active .tree-item-self.has-focus { border-radius: var(--radius-s); box-shadow: 0 0 0 2px var(--background-modifier-border-focus); } +.workspace-leaf.mod-active .tree-item-self.has-focus:focus-within { box-shadow: 0 0 0 2px var(--interactive-accent); } +.tree-item-self.mod-collapsible { padding: var(--nav-item-parent-padding); } +.tree-item-self.mod-collapsible.is-being-dragged-over { border-radius: var(--radius-s); color: var(--nav-item-color-highlighted); background: hsla(var(--interactive-accent-hsl), 0.1); } +.tree-item-self.mod-collapsible.is-being-dragged-over .collapse-icon { color: var(--nav-item-color-highlighted); } +.tree-item-self.is-being-renamed .tree-item-inner { cursor: text; } +.tree-item-self.is-clickable { cursor: var(--cursor); } +@media (hover: hover) { + body:not(.is-grabbing) .tree-item-self.is-clickable:hover { color: var(--nav-item-color-hover); background-color: var(--nav-item-background-hover); font-weight: var(--nav-item-weight-hover); } +} +body:not(.is-grabbing) .tree-item-self.is-active:hover, .tree-item-self.is-active { color: var(--nav-item-color-active); background-color: var(--nav-item-background-active); font-weight: var(--nav-item-weight-active); } +body:not(.is-grabbing) .tree-item-self.is-selected:hover, .tree-item-self.is-selected { color: var(--nav-item-color-selected); background-color: var(--nav-item-background-selected); } +body:not(.is-grabbing) .tree-item-self.is-being-dragged:hover, .tree-item-self.is-being-dragged { color: var(--text-on-accent); background-color: var(--interactive-accent); } +body:not(.is-grabbing) .tree-item-self.is-being-dragged:hover .tree-item-icon, .tree-item-self.is-being-dragged .tree-item-icon { color: var(--text-on-accent); } +.tree-item-self .tree-item-icon { position: absolute; margin-left: calc(-1 * var(--size-4-5)); width: var(--size-4-4); display: flex; align-items: center; justify-content: center; opacity: var(--icon-opacity); color: var(--icon-color); flex: 0 0 auto; } +.tree-item-self .tree-item-icon::before { content: "​"; } +.tree-item-self .tree-item-icon .svg-icon:not(.right-triangle) { --icon-size: var(--icon-xs); --icon-stroke: var(--icon-s-stroke-width); } +.tree-item-flair-outer { padding-left: var(--size-4-1); margin-left: auto; } +.tree-item-flair { font-size: var(--font-ui-smaller); color: var(--text-faint); line-height: 1; border-radius: var(--radius-s); } +.tree-item-self:hover .tree-item-flair { color: var(--text-muted); } +.tree-item-inner { line-height: var(--line-height-tight); } +.tree-item-inner-subtext { color: var(--text-faint); font-size: 85%; } +.tree-item-children { padding-left: var(--nav-item-children-padding-left); margin-left: var(--nav-item-children-margin-left); margin-bottom: 1px; border-left: var(--nav-indentation-guide-width) solid var(--nav-indentation-guide-color); } +.drop-indicator { position: absolute; left: 0px; width: 100%; height: 0px; border: 2px solid var(--interactive-accent); pointer-events: none; } +.drop-indicator:not(.is-active) { display: none; } +audio { outline: none; } +.markdown-rendered audio { max-width: 100%; outline: none; } +audio { width: 100%; height: 42px; } +audio::-webkit-media-controls-enclosure { border-radius: calc(var(--radius-m) - 1px); border: 1px solid var(--background-modifier-border); background-color: var(--background-primary-alt); } +audio::-webkit-media-controls-current-time-display, audio::-webkit-media-controls-time-remaining-display { font-family: var(--font-interface); } +iframe { border: 0px; } +kbd { color: var(--code-normal); font-family: var(--font-monospace); background-color: var(--code-background); border-radius: var(--radius-s); font-size: var(--code-size); padding: 0.1em 0.25em; } +.workspace-leaf-content[data-type="pdf"] .view-content { display: flex; flex-direction: column; overflow: hidden; padding: 0px; } +.pdf-container { background-color: var(--pdf-background); flex-grow: 1; min-width: 350px; overflow: hidden; position: relative; } +.pdf-viewer-container { outline: none; overflow: auto; position: absolute; inset: 0px; } +.findbarOpen .pdf-viewer-container { margin-top: var(--findbar-height); } +.pdf-viewer { --scale-factor: 1; } +.pdf-content-container { --sidebar-width: 140px; } +.pdf-content-container.sidebarMoving .pdf-sidebar-container, .pdf-content-container.sidebarOpen .pdf-sidebar-container { visibility: visible; } +.pdf-content-container.sidebarOpen .pdf-sidebar-container { inset-inline-start: 0px; } +.pdf-content-container.sidebarOpen .pdf-viewer-container { inset-inline-start: var(--sidebar-width); transition-property: inset-inline-start; } +.pdf-embed .pdf-content-container.sidebarOpen .pdf-sidebar-container, .is-mobile .pdf-content-container.sidebarOpen .pdf-sidebar-container { inset-inline-start: 0px; } +.pdf-embed .pdf-content-container.sidebarOpen .pdf-findbar, .is-mobile .pdf-content-container.sidebarOpen .pdf-findbar, .pdf-embed .pdf-content-container.sidebarOpen .pdf-viewer-container, .is-mobile .pdf-content-container.sidebarOpen .pdf-viewer-container { inset-inline-start: 0px; } +.pdf-content-container .pdf-findbar, .pdf-content-container .pdf-sidebar-container, .pdf-content-container .pdf-viewer-container { transition-duration: 275ms; transition-timing-function: var(--anim-motion-swing); } +.pdf-content-container.sidebarResizing .pdf-findbar, .pdf-content-container.sidebarResizing .pdf-sidebar-container, .pdf-content-container.sidebarResizing .pdf-viewer-container { transition-duration: 0s; } +.pdf-content-container { inset: 0px; min-width: 350px; position: absolute; } +.pdf-content-container.is-loading::before { z-index: 1; } +.pdf-sidebar-container { background-color: var(--pdf-sidebar-background); border-right: var(--divider-width) solid var(--divider-color); bottom: 0px; display: flex; flex-direction: column; inset-inline-start: calc(-1 * var(--sidebar-width)); position: absolute; top: 0px; transition-property: inset-inline-start; visibility: hidden; width: var(--sidebar-width); z-index: 100; } +.findbarOpen .pdf-sidebar-container { top: var(--findbar-height); } +.is-mobile .pdf-sidebar-container[data-view="1"], .pdf-embed .pdf-sidebar-container[data-view="1"] { inset-inline-start: -140px; width: 140px; } +.is-mobile .pdf-sidebar-container[data-view="2"], .pdf-embed .pdf-sidebar-container[data-view="2"] { inset-inline-start: -275px; width: 275px; } +.pdf-sidebar-container .pdf-thumbnail-view, .pdf-sidebar-container .pdf-outline-view { bottom: 0px; overflow: auto; padding: var(--size-4-2) var(--size-4-2); position: absolute; top: 0px; user-select: none; width: 100%; } +.pdf-sidebar-container .pdf-thumbnail-view { display: flex; flex-wrap: wrap; gap: var(--size-4-1); place-content: flex-start center; padding: var(--size-4-3); width: 100%; } +.pdf-sidebar-container .pdf-thumbnail-view a { display: block; cursor: var(--cursor); } +.pdf-sidebar-container .pdf-thumbnail-view a:active, .pdf-sidebar-container .pdf-thumbnail-view a:focus { outline: 0px; } +.pdf-sidebar-container .thumbnail { --thumbnail-width: 0; --thumbnail-height: 0; position: relative; width: var(--thumbnail-width); height: var(--thumbnail-height); border: var(--size-4-2) solid transparent; border-radius: var(--radius-s); box-sizing: content-box; } +.pdf-sidebar-container .thumbnail::before { content: " "; position: absolute; inset: 0px; box-shadow: var(--pdf-thumbnail-shadow); } +.pdf-sidebar-container .thumbnail::after { background-color: var(--background-secondary); border-radius: 3px; bottom: var(--size-4-1); content: attr(data-page-label); color: var(--text-muted); display: block; font-size: var(--font-ui-smaller); line-height: 1; padding: var(--size-2-1) var(--size-4-1); position: absolute; right: var(--size-4-1); } +.pdf-sidebar-container .thumbnail:not([data-loaded]) { border: 1px dashed var(--background-modifier-border); margin: calc(var(--size-4-2) - 1px); } +.pdf-sidebar-container .thumbnail:hover, .pdf-sidebar-container .thumbnail.selected { border-color: var(--background-modifier-hover); } +.pdf-sidebar-container img.thumbnailImage { border: 1px solid transparent; max-width: unset; width: var(--thumbnail-width); height: var(--thumbnail-height); } +.pdf-outline-view .tree-item-self:not(.mod-collapsible) { padding-left: calc(10px + var(--size-4-2) + var(--size-2-3)); } +.pdf-outline-view .tree-item-self.mod-active { color: var(--nav-item-color-active); background-color: var(--nav-item-background-active); font-weight: var(--nav-item-weight-active); } +.pdf-outline-view .tree-item-flair { white-space: nowrap; } +.pdf-sidebar-content-wrapper { position: relative; flex-grow: 1; } +.pdf-sidebar-content { bottom: 0px; inset-inline-start: 0px; overflow: auto; position: absolute; top: 0px; width: 100%; } +.pdf-sidebar-content > .hidden { display: none; } +.pdf-sidebar-resizer { background-color: transparent; bottom: 0px; cursor: col-resize; inset-inline-end: calc(var(--divider-width-hover) * -1); position: absolute; top: 0px; transition: background-color 200ms ease-in-out 0s; width: var(--divider-width-hover); z-index: var(--layer-cover); } +.is-mobile .pdf-sidebar-resizer, .pdf-embed .pdf-sidebar-resizer { display: none; } +@media (hover: hover) { + .pdf-sidebar-resizer:hover { background-color: var(--divider-color-hover); } + .is-translucent .pdf-sidebar-resizer:hover { background-color: var(--divider-color-hover); } +} +.pdf-toolbar { align-items: stretch; background-color: var(--background-primary); border-bottom: 1px solid var(--background-modifier-border); display: flex; justify-content: space-between; overflow: auto; padding: var(--size-4-1) var(--size-4-3); position: relative; } +.hover-popover .pdf-toolbar { display: none; } +.pdf-page-numbers { white-space: nowrap; margin-right: var(--size-4-1); font-size: var(--font-ui-small); font-variant-numeric: tabular-nums; } +.pdf-toolbar-left, .pdf-toolbar-center, .pdf-toolbar-right { display: flex; align-items: center; gap: var(--size-4-1); } +.pdf-toolbar-left.hidden, .pdf-toolbar-center.hidden, .pdf-toolbar-right.hidden { display: none; } +.pdf-toolbar-center { position: absolute; top: var(--size-4-1); height: calc(100% - var(--size-4-2)); left: 50%; transform: translateX(-50%); } +.pdf-toolbar-spacer { width: var(--size-4-3); } +.pdf-toolbar-divider { width: var(--border-width); height: var(--icon-size); background-color: var(--background-modifier-border); } +.pdf-page-input { width: 7ch; text-align: right; font-variant-numeric: tabular-nums; } +.pdf-page-input.mod-page-loading { background-color: var(--background-secondary); opacity: 0.5; } +[data-main-rotation="90"] { transform: rotate(90deg) translateY(-100%); } +[data-main-rotation="180"] { transform: rotate(180deg) translate(-100%, -100%); } +[data-main-rotation="270"] { transform: rotate(270deg) translateX(-100%); } +.pdf-viewer .canvasWrapper { inset: 0px; box-shadow: var(--pdf-shadow); overflow: hidden; position: absolute; z-index: 1; } +.pdf-viewer .page { border: calc(var(--size-4-1) * var(--scale-factor)) solid transparent; box-sizing: content-box; direction: ltr; flex-shrink: 0; height: 1056px; margin: 0px auto; overflow: visible; position: relative; width: 816px; } +.pdf-viewer .spread .page { border: var(--size-4-1) solid transparent; } +.pdf-viewer.removePageBorders .page { border: none; } +.pdf-viewer.removePageBorders .page + .page { border-top: var(--size-4-1) solid transparent; } +.pdf-viewer.removePageBorders .spread .page + .page { border-top: none; } +.pdf-viewer.removePageBorders .spread .canvasWrapper { box-shadow: var(--pdf-spread-shadow); } +.pdf-viewer.removePageBorders .spread + .spread { border-top: var(--size-4-1) solid transparent; } +.pdf-viewer.mod-scroll-horizontal, .pdf-viewer.mod-scroll-wrapped, .pdf-spread { margin-left: 3.5px; margin-right: 3.5px; text-align: center; } +.pdf-viewer.mod-scroll-horizontal, .pdf-spread { white-space: nowrap; } +.pdf-viewer.mod-scroll-horizontal .pdf-spread, .pdf-viewer.mod-scroll-wrapped .pdf-spread { margin-left: 0px; margin-right: 0px; } +.pdf-spread .pdf-page, .pdf-viewer.mod-scroll-horizontal .pdf-page, .pdf-viewer.mod-scroll-wrapped .pdf-page, .pdf-viewer.mod-scroll-horizontal .pdf-spread, .pdf-viewer.mod-scroll-wrapped .pdf-spread { display: inline-block; vertical-align: middle; } +.pdf-viewer .page canvas { margin: 0px; display: block; } +.pdf-viewer .page canvas .pdf-struct-tree { contain: strict; } +.pdf-viewer .page canvas[hidden] { display: none; } +.pdf-viewer .page canvas[zooming] { width: 100%; height: 100%; } +.pdf-viewer:is(.scrollHorizontal, .scrollWrapped), .spread { margin-inline: 3.5px; text-align: center; } +.pdf-viewer.scrollHorizontal, .spread { white-space: nowrap; } +.pdf-viewer:is(.scrollHorizontal, .scrollWrapped) .spread { margin-inline: 0px; } +.spread :is(.page, .dummyPage), .pdf-viewer:is(.scrollHorizontal, .scrollWrapped) :is(.page, .spread) { display: inline-block; vertical-align: middle; } +.pdf-viewer.enablePermissions .textLayer span { cursor: not-allowed; user-select: none !important; } +.pdf-findbar { background-color: var(--background-primary); flex-direction: row-reverse; font-size: var(--font-ui-small); gap: var(--size-4-1); left: 0px; line-height: 1; padding: var(--size-2-3); position: absolute; right: 0px; top: 0px; transition-property: inset-inline-start; z-index: 101; } +.pdf-findbar input { min-width: 300px; } +.pdf-findbar.mod-hidden { display: none; } +.pdf-findbar input[type="checkbox"] { display: none; pointer-events: none; } +.pdf-findbar label { user-select: none; } +.pdf-findbar label:hover, .pdf-findbar input:focus-visible + label { color: var(--toggled-btn-color); background-color: var(--button-hover-color); } +.pdf-findbar .pdf-toolbar-field[type="checkbox"]:checked + .pdf-toolbar-label { color: var(--toggled-btn-color); background-color: var(--toggled-btn-bg-color) !important; } +.pdf-findbar .pdf-search-wrapper { display: flex; gap: var(--size-4-1); align-items: center; } +.pdf-findbar .mod-not-found { --background-modifier-form-field: rgba(var(--background-modifier-error-rgb), 0.1); --background-modifier-border-focus: rgba(var(--background-modifier-error-rgb), 0.6); } +.pdf-findbar .mod-pending::before { -webkit-mask-image: url("data:image/svg+xml,"); animation: 1s linear 0s infinite normal none running rotation; } +.is-phone .pdf-findbar { } +.is-phone .pdf-findbar .pdf-toolbar-button { height: auto; width: auto; padding: 6px 0px; background-color: transparent; color: var(--text-accent); flex-grow: 0; flex-shrink: 0; } +.is-phone .pdf-findbar .pdf-toolbar-divider, .is-phone .pdf-findbar .pdf-findbar-settings-btn, .is-phone .pdf-findbar .pdf-findbar-message { display: none; } +.is-phone .pdf-findbar input { min-width: 0px; } +.is-phone .pdf-findbar .search-input-container { flex-grow: 1; } +.is-phone .pdf-findbar .pdf-search-wrapper { gap: var(--size-4-2); } +@keyframes rotation { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} +.pdf-find-results-count { color: var(--text-muted); margin: 0 var(--size-4-2); font-style: italic; white-space: nowrap; } +.pdf-find-results-count:empty { display: none; } +.pdf-findbar-settings { background-color: var(--background-primary); border-radius: var(--radius-m); border: 1px solid var(--background-modifier-border); box-shadow: var(--shadow-s); padding: var(--size-4-1) var(--size-4-2); position: absolute; transform: translateX(-100%); width: 200px; z-index: 200; } +.pdf-content-container.sidebarOpen .pdf-findbar-settings { transform: translateX(calc(-100% + var(--sidebar-width))); } +.pdf-findbar-settings .setting-item { padding: var(--size-4-1) 0; border: none; } +.pdf-findbar-settings .setting-item-name { font-size: var(--font-ui-small); } +.pdf-password-dialog { align-items: center; display: flex; flex-direction: column; font-size: var(--font-ui-medium); gap: var(--size-4-1); justify-content: center; left: 50%; position: absolute; top: 50%; transform: translate(-50%, -50%); } +.pdf-password-dialog .mod-small { font-size: var(--font-ui-small); } +.pdf-password-dialog input { margin-top: var(--size-4-2); } +.pdf-lock-icon .svg-icon { --icon-size: var(--icon-xl); --icon-stroke: var(--icon-xl-stroke-width); } +.hiddenCopyElement { position: absolute; top: 0px; left: 0px; width: 0px; height: 0px; display: none; } +:root { --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); --xfa-focus-outline: auto; } +@media screen and (forced-colors: active) { + :root { --xfa-focus-outline: 2px solid CanvasText; } + .xfaLayer :required { outline: selecteditem solid 1.5px; } +} +.xfaLayer { background-color: transparent; } +.xfaLayer .highlight { margin: -1px; padding: 1px; background-color: rgb(239, 203, 237); border-radius: 4px; } +.xfaLayer .highlight.appended { position: initial; } +.xfaLayer .highlight.begin { border-radius: 4px 0px 0px 4px; } +.xfaLayer .highlight.end { border-radius: 0px 4px 4px 0px; } +.xfaLayer .highlight.middle { border-radius: 0px; } +.xfaLayer .highlight.selected { background-color: rgb(203, 223, 203); } +.xfaPage { overflow: hidden; position: relative; } +.xfaContentarea { position: absolute; } +.xfaPrintOnly { display: none; } +.xfaLayer { position: absolute; text-align: initial; top: 0px; left: 0px; transform-origin: 0px 0px; line-height: 1.2; } +.xfaLayer * { color: inherit; font: inherit; letter-spacing: -0.01px; text-align: inherit; text-decoration: inherit; box-sizing: border-box; background-color: transparent; padding: 0px; margin: 0px; pointer-events: auto; } +.xfaLayer :required { outline: red solid 1.5px; } +.xfaLayer div { pointer-events: none; } +.xfaLayer svg { pointer-events: none; } +.xfaLayer svg * { pointer-events: none; } +.xfaLayer a { color: blue; } +.xfaRich li { margin-left: 3em; } +.xfaFont { color: black; font-weight: normal; font-kerning: none; font-size: 10px; font-style: normal; letter-spacing: 0px; text-decoration: none; vertical-align: 0px; } +.xfaCaption { overflow: hidden; flex: 0 0 auto; } +.xfaCaptionForCheckButton { overflow: hidden; flex: 1 1 auto; } +.xfaLabel { height: 100%; width: 100%; } +.xfaLeft { display: flex; flex-direction: row; align-items: center; } +.xfaRight { display: flex; flex-direction: row-reverse; align-items: center; } +.xfaLeft > .xfaCaption, .xfaLeft > .xfaCaptionForCheckButton, .xfaRight > .xfaCaption, .xfaRight > .xfaCaptionForCheckButton { max-height: 100%; } +.xfaTop { display: flex; flex-direction: column; align-items: flex-start; } +.xfaBottom { display: flex; flex-direction: column-reverse; align-items: flex-start; } +.xfaTop > .xfaCaption, .xfaTop > .xfaCaptionForCheckButton, .xfaBottom > .xfaCaption, .xfaBottom > .xfaCaptionForCheckButton { width: 100%; } +.xfaBorder { background-color: transparent; position: absolute; pointer-events: none; } +.xfaWrapped { width: 100%; height: 100%; } +.xfaTextfield:focus, .xfaSelect:focus { background-image: none; background-color: transparent; outline: var(--xfa-focus-outline); outline-offset: -1px; } +.xfaCheckbox:focus, .xfaRadio:focus { outline: var(--xfa-focus-outline); } +.xfaTextfield, .xfaSelect { height: 100%; width: 100%; flex: 1 1 auto; border: none; resize: none; background-image: var(--xfa-unfocused-field-background); } +.xfaSelect { padding-inline: 2px; } +.xfaTop > .xfaTextfield, .xfaTop > .xfaSelect, .xfaBottom > .xfaTextfield, .xfaBottom > .xfaSelect { flex: 0 1 auto; } +.xfaButton { cursor: pointer; width: 100%; height: 100%; border: none; text-align: center; } +.xfaLink { width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; } +.xfaCheckbox, .xfaRadio { width: 100%; height: 100%; flex: 0 0 auto; border: none; } +.xfaRich { white-space: pre-wrap; width: 100%; height: 100%; } +.xfaImage { object-position: left top; object-fit: contain; width: 100%; height: 100%; } +.xfaLrTb, .xfaRlTb, .xfaTb { display: flex; flex-direction: column; align-items: stretch; } +.xfaLr { display: flex; flex-direction: row; align-items: stretch; } +.xfaRl { display: flex; flex-direction: row-reverse; align-items: stretch; } +.xfaTb > div { justify-content: left; } +.xfaPosition { position: relative; } +.xfaArea { position: relative; } +.xfaValignMiddle { display: flex; align-items: center; } +.xfaTable { display: flex; flex-direction: column; align-items: stretch; } +.xfaTable .xfaRow { display: flex; flex-direction: row; align-items: stretch; } +.xfaTable .xfaRlRow { display: flex; flex-direction: row-reverse; align-items: stretch; flex: 1 1 0%; } +.xfaTable .xfaRlRow > div { flex: 1 1 0%; } +.xfaNonInteractive input, .xfaNonInteractive textarea, .xfaDisabled input, .xfaDisabled textarea, .xfaReadOnly input, .xfaReadOnly textarea { background: initial; } +@media print { + .xfaTextfield, .xfaSelect { background: transparent; } + .xfaSelect { appearance: none; text-indent: 1px; } +} +.textLayer { inset: 0px; line-height: 1; overflow: hidden; position: absolute; text-align: initial; text-size-adjust: none; transform-origin: 0px 0px; user-select: text; z-index: 2; opacity: 0.2; } +.textLayer ::selection { background-color: hsl(var(--color-accent-hsl)); } +.textLayer span, .textLayer br { color: transparent; position: absolute; white-space: pre; cursor: text; transform-origin: 0% 0%; } +.textLayer span.markedContent { top: 0px; height: 0px; } +.textLayer .highlight { margin: -1px; padding: 1px; border-radius: var(--radius-s); } +.textLayer .highlight.appended { position: static; display: inline-block; } +.textLayer .highlight.begin { border-radius: var(--radius-s) 0 0 var(--radius-s); } +.textLayer .highlight.end { border-radius: 0 var(--radius-s) var(--radius-s) 0; } +.textLayer .highlight.middle { border-radius: 0px; } +.textLayer .highlight.selected { box-shadow: 0 0 0 2px hsl(var(--interactive-accent-hsl)); background-color: hsl(var(--interactive-accent-hsl)); } +.textLayer .highlight:not(.selected) { box-shadow: 0 0 0 2px rgb(var(--color-yellow-rgb)); background-color: rgb(var(--color-yellow-rgb)); } +.textLayer br::selection { background: transparent; } +:root { --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); --input-focus-border-color: Highlight; --input-focus-outline: 1px solid Canvas; --input-unfocused-border-color: transparent; --input-disabled-border-color: transparent; --input-hover-border-color: black; } +@media screen and (forced-colors: active) { + :root { --input-focus-border-color: CanvasText; --input-unfocused-border-color: ActiveText; --input-disabled-border-color: GrayText; --input-hover-border-color: Highlight; } + .annotationLayer .textWidgetAnnotation input:required, .annotationLayer .textWidgetAnnotation textarea:required, .annotationLayer .choiceWidgetAnnotation select:required, .annotationLayer .buttonWidgetAnnotation.checkBox input:required, .annotationLayer .buttonWidgetAnnotation.radioButton input:required { outline: selecteditem solid 1.5px; } +} +.annotationLayer { position: absolute; top: 0px; left: 0px; pointer-events: none; transform-origin: 0px 0px; z-index: 3; } +.annotationLayer[data-main-rotation="90"] .norotate { transform: rotate(270deg) translateX(-100%); } +.annotationLayer[data-main-rotation="180"] .norotate { transform: rotate(180deg) translate(-100%, -100%); } +.annotationLayer[data-main-rotation="270"] .norotate { transform: rotate(90deg) translateY(-100%); } +.annotationLayer canvas { position: absolute; width: 100%; height: 100%; } +.annotationLayer section { position: absolute; text-align: initial; pointer-events: auto; box-sizing: border-box; transform-origin: 0px 0px; } +.annotationLayer .linkAnnotation > a, .annotationLayer .buttonWidgetAnnotation.pushButton > a { position: absolute; font-size: 1em; top: 0px; left: 0px; width: 100%; height: 100%; } +.annotationLayer .linkAnnotation > a:hover, .annotationLayer .buttonWidgetAnnotation.pushButton > a:hover { opacity: 0.2; background: rgb(255, 255, 0); box-shadow: rgb(255, 255, 0) 0px 2px 10px; } +.annotationLayer .textAnnotation img, .annotationLayer .textAnnotation canvas { position: absolute; cursor: pointer; width: 100%; height: 100%; top: 0px; left: 0px; } +.annotationLayer .textWidgetAnnotation input, .annotationLayer .textWidgetAnnotation textarea, .annotationLayer .choiceWidgetAnnotation select, .annotationLayer .buttonWidgetAnnotation.checkBox input, .annotationLayer .buttonWidgetAnnotation.radioButton input { background-image: var(--annotation-unfocused-field-background); border: 2px solid var(--input-unfocused-border-color); box-sizing: border-box; font: calc(9px * var(--scale-factor)) sans-serif; height: 100%; margin: 0px; vertical-align: top; width: 100%; } +.annotationLayer .textWidgetAnnotation input:required, .annotationLayer .textWidgetAnnotation textarea:required, .annotationLayer .choiceWidgetAnnotation select:required, .annotationLayer .buttonWidgetAnnotation.checkBox input:required, .annotationLayer .buttonWidgetAnnotation.radioButton input:required { outline: red solid 1.5px; } +.annotationLayer .choiceWidgetAnnotation select option { padding: 0px; } +.annotationLayer .buttonWidgetAnnotation.radioButton input { border-radius: 50%; } +.annotationLayer .textWidgetAnnotation textarea { resize: none; } +.annotationLayer .textWidgetAnnotation input[disabled], .annotationLayer .textWidgetAnnotation textarea[disabled], .annotationLayer .choiceWidgetAnnotation select[disabled], .annotationLayer .buttonWidgetAnnotation.checkBox input[disabled], .annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] { background: none; border: 2px solid var(--input-disabled-border-color); cursor: not-allowed; } +.annotationLayer .textWidgetAnnotation input:hover, .annotationLayer .textWidgetAnnotation textarea:hover, .annotationLayer .choiceWidgetAnnotation select:hover, .annotationLayer .buttonWidgetAnnotation.checkBox input:hover, .annotationLayer .buttonWidgetAnnotation.radioButton input:hover { border: 2px solid var(--input-hover-border-color); } +.annotationLayer .textWidgetAnnotation input:hover, .annotationLayer .textWidgetAnnotation textarea:hover, .annotationLayer .choiceWidgetAnnotation select:hover, .annotationLayer .buttonWidgetAnnotation.checkBox input:hover { border-radius: 2px; } +.annotationLayer .textWidgetAnnotation input:focus, .annotationLayer .textWidgetAnnotation textarea:focus, .annotationLayer .choiceWidgetAnnotation select:focus { background: none; border: 2px solid var(--input-focus-border-color); border-radius: 2px; outline: var(--input-focus-outline); } +.annotationLayer .buttonWidgetAnnotation.checkBox :focus, .annotationLayer .buttonWidgetAnnotation.radioButton :focus { background-image: none; background-color: transparent; } +.annotationLayer .buttonWidgetAnnotation.checkBox :focus { border: 2px solid var(--input-focus-border-color); border-radius: 2px; outline: var(--input-focus-outline); } +.annotationLayer .buttonWidgetAnnotation.radioButton :focus { border: 2px solid var(--input-focus-border-color); outline: var(--input-focus-outline); } +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before, .annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after, .annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before { background-color: canvastext; content: ""; display: block; position: absolute; } +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before, .annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after { height: 80%; left: 45%; width: 1px; } +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before { transform: rotate(45deg); } +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after { transform: rotate(-45deg); } +.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before { border-radius: 50%; height: 50%; left: 30%; top: 20%; width: 50%; } +.annotationLayer .textWidgetAnnotation input.comb { font-family: monospace; padding-left: 2px; padding-right: 0px; } +.annotationLayer .textWidgetAnnotation input.comb:focus { width: 103%; } +.annotationLayer .buttonWidgetAnnotation.checkBox input, .annotationLayer .buttonWidgetAnnotation.radioButton input { appearance: none; } +.annotationLayer .fileAttachmentAnnotation .popupTriggerArea { position: absolute; } +.popupTriggerArea { height: 100%; width: 100%; } +.annotationLayer section.boundingRect { pointer-events: none; } +.annotationLayer section.boundingRect > * { pointer-events: initial; } +.popupWrapper { --pdf-popup-width: 280px; animation: 200ms cubic-bezier(0.34, 1.56, 0.64, 1) 0s 1 normal none running popIn; font-size: var(--font-ui-medium); pointer-events: none; position: absolute; transform: translate(-50%, 0px); z-index: 10000; } +.popupWrapper > div { margin: var(--size-4-3); background-color: var(--background-primary); border-radius: var(--radius-s); filter: drop-shadow(rgba(0, 0, 0, 0.2) 0px 0px 1px) drop-shadow(rgba(0, 0, 0, 0.3) 0px 1px 2px) drop-shadow(rgba(0, 0, 0, 0.3) 0px 4px 6px); } +.popupWrapper > div::after { background: var(--background-primary); border-top-left-radius: 2px; content: ""; height: var(--size-4-3); left: calc(50% - 2px); position: absolute; top: -5px; transform: rotate(45deg); width: var(--size-4-3); z-index: -1; } +@keyframes popIn { + 0% { transform: translate(-50%, -1px) scale(0.97); } + 100% { transform: translate(-50%, 0px) scale(1); } +} +.popup { cursor: initial; display: flex; flex-direction: column; pointer-events: auto; user-select: text; white-space: normal; width: 280px; overflow-wrap: break-word; } +.popupContent { font-size: var(--font-ui-small); line-height: var(--line-height-tight); max-height: 200px; overflow: auto; padding: var(--size-4-4); } +.popupContent:empty { display: none; } +.popupMeta { align-items: center; background-color: var(--background-secondary); border-top: 1px solid var(--background-modifier-border); color: var(--text-muted); display: flex; font-size: var(--font-ui-smaller); gap: var(--size-4-1); justify-content: space-between; padding: var(--size-4-1) var(--size-4-2) var(--size-4-1); border-bottom-left-radius: var(--radius-s); border-bottom-right-radius: var(--radius-s); } +.popupContent:empty + .popupMeta { border-top: none; background-color: var(--background-primary); border-top-left-radius: var(--radius-s); border-top-right-radius: var(--radius-s); } +.popupDate { white-space: nowrap; } +.richText > * { white-space: pre-wrap; } +.annotationLayer .highlightAnnotation, .annotationLayer .underlineAnnotation, .annotationLayer .squigglyAnnotation, .annotationLayer .strikeoutAnnotation, .annotationLayer .freeTextAnnotation, .annotationLayer .lineAnnotation svg line, .annotationLayer .squareAnnotation svg rect, .annotationLayer .circleAnnotation svg ellipse, .annotationLayer .polylineAnnotation svg polyline, .annotationLayer .polygonAnnotation svg polygon, .annotationLayer .caretAnnotation, .annotationLayer .inkAnnotation svg polyline, .annotationLayer .stampAnnotation, .annotationLayer .fileAttachmentAnnotation { cursor: pointer; } +.annotationLayer section svg { position: absolute; width: 100%; height: 100%; top: 0px; left: 0px; } +.annotationLayer .annotationTextContent { position: absolute; width: 100%; height: 100%; opacity: 0; color: transparent; user-select: none; pointer-events: none; } +.annotationLayer .annotationTextContent span { width: 100%; display: inline-block; } +.markdown-rendered video { max-width: 100%; outline: none; } +.markdown-rendered blockquote { color: var(--blockquote-color); font-style: var(--blockquote-font-style); background-color: var(--blockquote-background-color); border-left: var(--blockquote-border-thickness) solid var(--blockquote-border-color); padding: 0 0 0 var(--size-4-6); margin-inline: 0px; } +.markdown-rendered blockquote > :first-child { margin-top: 0px; } +.markdown-rendered blockquote > :last-child { margin-bottom: 0px; } +.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote::before, .markdown-source-view.mod-cm6 .cm-blockquote-border::before { content: "​"; display: block; width: 1px; border-left: var(--blockquote-border-thickness) solid var(--blockquote-border-color); color: transparent; position: absolute; top: 0px; bottom: 0px; } +.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote { font-style: var(--blockquote-style); background-color: var(--blockquote-background-color); } +.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote::before { left: 0px; } +.markdown-source-view.mod-cm6 .cm-blockquote-border { display: inline-block; } +.callout { --callout-color: var(--callout-default); --callout-icon: lucide-pencil; } +.callout[data-callout="abstract"], .callout[data-callout="summary"], .callout[data-callout="tldr"] { --callout-color: var(--callout-summary); --callout-icon: lucide-clipboard-list; } +.callout[data-callout="info"] { --callout-color: var(--callout-info); --callout-icon: lucide-info; } +.callout[data-callout="todo"] { --callout-color: var(--callout-todo); --callout-icon: lucide-check-circle-2; } +.callout[data-callout="important"] { --callout-color: var(--callout-important); --callout-icon: lucide-flame; } +.callout[data-callout="tip"], .callout[data-callout="hint"] { --callout-color: var(--callout-tip); --callout-icon: lucide-flame; } +.callout[data-callout="success"], .callout[data-callout="check"], .callout[data-callout="done"] { --callout-color: var(--callout-success); --callout-icon: lucide-check; } +.callout[data-callout="question"], .callout[data-callout="help"], .callout[data-callout="faq"] { --callout-color: var(--callout-question); --callout-icon: help-circle; } +.callout[data-callout="warning"], .callout[data-callout="caution"], .callout[data-callout="attention"] { --callout-color: var(--callout-warning); --callout-icon: lucide-alert-triangle; } +.callout[data-callout="failure"], .callout[data-callout="fail"], .callout[data-callout="missing"] { --callout-color: var(--callout-fail); --callout-icon: lucide-x; } +.callout[data-callout="danger"], .callout[data-callout="error"] { --callout-color: var(--callout-error); --callout-icon: lucide-zap; } +.callout[data-callout="bug"] { --callout-color: var(--callout-bug); --callout-icon: lucide-bug; } +.callout[data-callout="example"] { --callout-color: var(--callout-example); --callout-icon: lucide-list; } +.callout[data-callout="quote"], .callout[data-callout="cite"] { --callout-color: var(--callout-quote); --callout-icon: quote-glyph; } +.callout { overflow: hidden; border-style: solid; border-color: rgba(var(--callout-color), var(--callout-border-opacity)); border-width: var(--callout-border-width); border-radius: var(--callout-radius); margin: 1em 0px; mix-blend-mode: var(--callout-blend-mode); background-color: rgba(var(--callout-color), 0.1); padding: var(--callout-padding); } +.callout.is-collapsible .callout-title { cursor: var(--cursor); } +.callout-title { padding: var(--callout-title-padding); display: flex; gap: var(--size-4-1); font-size: var(--callout-title-size); color: rgb(var(--callout-color)); line-height: var(--line-height-tight); } +.callout-content { overflow-x: auto; padding: var(--callout-content-padding); background-color: var(--callout-content-background); } +.callout-icon { flex: 0 0 auto; display: flex; margin-top: 0.15em; align-self: flex-start; } +.callout-icon .svg-icon { color: rgb(var(--callout-color)); } +.callout-title-inner { font-weight: var(--bold-weight); color: var(--callout-title-color); } +.callout-fold { display: flex; margin-top: 0.15em; align-self: flex-start; padding-right: var(--size-4-2); } +.callout-fold .svg-icon { transition: transform 100ms ease-in-out 0s; } +.callout-fold.is-collapsed .svg-icon { transform: rotate(-90deg); } +.markdown-source-view.mod-cm6 .callout { margin: 0px; } +.markdown-rendered code { color: var(--code-normal); font-family: var(--font-monospace); background-color: var(--code-background); border-radius: var(--radius-s); font-size: var(--code-size); padding: 0.1em 0.25em; } +.markdown-rendered pre { position: relative; padding: var(--size-4-2) var(--size-4-4); min-height: 38px; background-color: var(--code-background); border-radius: var(--radius-s); white-space: var(--code-white-space); overflow-x: auto; } +.markdown-rendered pre code { border: none; padding: 0px; background-color: transparent; } +.markdown-rendered pre:not(:hover) > button.copy-code-button { display: none; } +.markdown-rendered button.copy-code-button { margin: 6px; padding: 6px 8px; height: auto; background-color: transparent; box-shadow: none; color: var(--text-muted); font-size: var(--font-ui-smaller); font-family: var(--font-interface); position: absolute; top: 0px; right: 0px; } +@media (hover: hover) { + .markdown-rendered button.copy-code-button:hover { background-color: var(--background-modifier-hover); } +} +.markdown-source-view.mod-cm6 .cm-preview-code-block pre { margin: 0px; } +.markdown-source-view.mod-cm6 .code-block-flair { position: absolute; right: 6px; top: 6px; z-index: 1; display: inline-block; padding: var(--size-4-1) var(--size-4-2); border-radius: var(--radius-s); font-family: var(--font-interface); font-size: var(--font-ui-smaller); color: var(--text-muted); cursor: var(--cursor); } +@media (hover: hover) { + .markdown-source-view.mod-cm6 .code-block-flair:hover { background-color: var(--background-modifier-hover); } +} +.markdown-source-view.mod-cm6 .cm-line.HyperMD-codeblock { padding-left: var(--size-4-4); color: var(--code-normal); } +code[class*="language-"], pre[class*="language-"] { color: var(--code-normal); background: none; overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; font-family: var(--font-monospace); text-align: left; word-spacing: normal; line-height: var(--line-height-normal); hyphens: none; } +@media print { + code[class*="language-"], pre[class*="language-"] { text-shadow: none; } +} +:not(pre) > code[class*="language-"], pre[class*="language-"] { background: var(--code-background); } +pre[class*="language-"] { overflow: hidden; } +code[class*="language-"] { display: block; padding: 1em; overflow: auto; } +:not(pre) > code[class*="language-"] { padding: 0.1em; border-radius: 0.3em; white-space: normal; } +.token.important, .token.bold { font-weight: bold; } +.token.italic { font-style: italic; } +.token.entity { cursor: help; } +.token.comment, .token.prolog, .token.doctype, .token.cdata { color: var(--code-comment); } +.token.namespace { opacity: 0.7; } +.token.tag, .token.constant, .token.symbol, .token.deleted { color: var(--code-tag); } +.token.punctuation { color: var(--code-punctuation); } +.token.boolean, .token.number { color: var(--code-value); } +.token.selector, .token.attr-name, .token.string, .token.char, .token.inserted { color: var(--code-string); } +.token.operator { color: var(--code-operator); } +.token.entity, .token.parameter, .token.property, .token.url, .language-css .token.string, .style .token.string, .token.variable { color: var(--code-property); } +.token.atrule, .token.attr-value, .token.builtin, .token.function, .token.class-name, .token.property-access { color: var(--code-function); } +.token.keyword { color: var(--code-keyword); } +.token.regex, .token.important { color: var(--code-important); } +.markdown-preview-view .markdown-embed .markdown-preview-view { --file-folding-offset: 0px; height: 100%; padding: 0px; } +.markdown-preview-view .markdown-embed .markdown-preview-view .markdown-preview-pusher h1, .markdown-preview-view .markdown-embed .markdown-preview-view .markdown-preview-pusher h2, .markdown-preview-view .markdown-embed .markdown-preview-view .markdown-preview-pusher h3, .markdown-preview-view .markdown-embed .markdown-preview-view .markdown-preview-pusher h4, .markdown-preview-view .markdown-embed .markdown-preview-view .markdown-preview-pusher h5, .markdown-preview-view .markdown-embed .markdown-preview-view .markdown-preview-pusher h6 { margin-top: 0px; } +.pdf-embed, .markdown-source-view .pdf-embed, .markdown-source-view.mod-cm6 .cm-content > .pdf-embed, .internal-embed.pdf-embed:not(.image-embed) { width: 100%; height: 800px; display: flex; flex-direction: column; } +.pdf-embed { overflow: hidden; position: relative; } +.pdf-embed:not(.canvas-node-content) { border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); } +.pdf-embed:not(.canvas-node-content) .pdf-toolbar { padding-right: var(--size-4-9); } +.markdown-source-view.mod-cm6 .pdf-embed .edit-block-button { background-color: var(--background-primary); opacity: 1; top: 6px; z-index: 1; } +.markdown-source-view.mod-cm6 .pdf-embed .edit-block-button:hover { color: var(--icon-color-hover); background-color: var(--background-modifier-hover); } +.markdown-embed, .file-embed { position: relative; } +.markdown-embed-link, .file-embed-link { position: absolute; top: 4px; right: 4px; color: var(--icon-color); opacity: var(--icon-opacity); cursor: var(--cursor-link); padding: var(--size-2-2); border-radius: var(--radius-s); display: flex; align-items: center; --icon-size: var(--icon-s); --icon-stroke: var(--icon-s-stroke-width); } +@media (hover: hover) { + .markdown-embed-link:hover, .file-embed-link:hover { color: var(--icon-color-hover); opacity: var(--icon-opacity-hover); background: var(--background-modifier-hover); } +} +.file-embed-title { display: flex; align-items: center; justify-content: center; gap: var(--size-4-2); } +.file-embed-icon { color: var(--text-muted); display: flex; } +.file-embed { display: flex; justify-content: center; border-radius: var(--radius-m); background-color: var(--background-primary-alt); } +.file-embed.mod-generic, .file-embed.mod-empty { cursor: var(--cursor-link); padding: var(--size-4-2); color: var(--text-muted); text-align: center; font-size: var(--font-smaller); } +@media (hover: hover) { + .file-embed.mod-generic:hover, .file-embed.mod-empty:hover { color: var(--text-normal); background-color: var(--background-secondary); } +} +.markdown-embed-content { height: 100%; } +.embed-title { align-items: center; display: flex; gap: var(--size-4-1); font-size: var(--font-text-size); font-weight: var(--bold-weight); text-align: left; text-overflow: ellipsis; white-space: nowrap; padding: 0 0 var(--size-4-2) 0; } +.markdown-embed { font-style: var(--embed-font-style); background-color: var(--embed-background); border-top: var(--embed-border-top); border-right: var(--embed-border-right); border-bottom: var(--embed-border-bottom); border-left: var(--embed-border-left); margin: 0px; padding: var(--embed-padding); } +.markdown-embed .markdown-preview-view { padding: 0px; } +.internal-embed:not(.image-embed) { display: block; } +.internal-embed img:not([width]), .internal-embed audio, .internal-embed video { max-width: 100%; } +.inline-embed .markdown-embed-content { height: fit-content; max-height: var(--embed-max-height); overflow: auto; } +.inline-embed .markdown-embed-content p:first-child { margin-top: 0px; } +.inline-embed .markdown-source-view.mod-cm6 .cm-editor { min-height: unset; } +.embed-iframe { width: 100%; height: 100%; } +iframe.external-embed { width: 600px; max-width: 100%; height: 350px; } +.markdown-source-view.mod-cm6 .internal-embed { white-space: normal; } +.markdown-source-view.mod-cm6 .cm-embed-block { position: relative; white-space: normal; overflow-wrap: normal; word-break: normal; } +@media (hover: hover) { + .markdown-source-view.mod-cm6 .cm-embed-block:hover { box-shadow: var(--embed-block-shadow-hover); border-radius: var(--radius-s); overflow: hidden; cursor: text; } + .markdown-source-view.mod-cm6 .cm-embed-block:hover .edit-block-button { opacity: 1; } + .markdown-source-view.mod-cm6 .cm-embed-block:hover .edit-block-button:hover { background-color: var(--background-modifier-hover); } +} +.markdown-source-view.mod-cm6 .cm-embed-block pre { margin: 0px; } +.markdown-source-view.mod-inside-iframe > .cm-editor > .cm-scroller { flex-direction: column; padding: 0 var(--size-4-4); } +.markdown-source-view.mod-inside-iframe > .cm-editor > .cm-scroller::before, .markdown-source-view.mod-inside-iframe > .cm-editor > .cm-scroller::after { content: " "; display: block; min-height: min(calc(10vh - 3px), var(--size-4-4)); max-height: var(--size-4-4); flex: 1 1 0px; } +.markdown-source-view.mod-inside-iframe > .cm-editor > .cm-scroller > .cm-sizer { min-height: unset; flex: 1 0 0px; } +.footnote-link { text-decoration: none; } +.footnotes { font-size: var(--footnote-size); } +.footnote-ref { vertical-align: super; } +.footnote-backref { color: var(--text-faint); text-decoration: none; } +@media (hover: hover) { + .footnote-backref:hover { color: var(--text-accent); text-decoration: none; } +} +@media (hover: hover) { + .cm-s-obsidian .cm-line.HyperMD-footnote span.cm-hmd-footnote:hover { color: var(--text-accent); } +} +.markdown-preview-view:not(.show-frontmatter) .frontmatter-container { display: none; } +.markdown-rendered .frontmatter.mod-failed { position: relative; } +.markdown-rendered .frontmatter.mod-failed .mod-error { color: var(--text-error); font-size: var(--font-smaller); } +.markdown-rendered .frontmatter.mod-failed::after { content: ""; position: absolute; top: 0px; right: 0px; width: 100%; height: 100%; background-color: var(--background-modifier-error); opacity: 0.3; mix-blend-mode: var(--highlight-mix-blend-mode); } +.frontmatter-container { padding: var(--size-4-2) 0 var(--size-4-4); color: var(--text-muted); position: relative; } +.frontmatter-container .frontmatter-section { display: flex; align-items: center; margin-bottom: var(--size-2-2); } +.frontmatter-container .frontmatter-section:last-child { margin-bottom: 0px; } +.frontmatter-container .frontmatter-section .svg-icon { color: var(--text-faint); margin-right: var(--size-4-2); } +.frontmatter-container .frontmatter-section-label { padding-right: 0.5em; flex-basis: 7em; flex-shrink: 0; font-size: var(--font-smaller); display: flex; align-items: center; } +.frontmatter-container .frontmatter-section-data { display: inline-flex; flex-wrap: wrap; flex-grow: 1; align-items: center; gap: var(--size-2-2); } +.markdown-embed-content .frontmatter-container { display: none; } +.frontmatter-container.is-collapsed .frontmatter-section { display: none; } +.frontmatter-container .frontmatter-collapse-indicator { margin-right: 6px; align-self: center; display: none; } +.frontmatter-container .frontmatter-container-header { color: var(--text-normal); font-size: var(--font-smaller); user-select: none; cursor: var(--cursor); font-weight: var(--font-medium); display: flex; content: "Metadata"; border-bottom: 1px solid var(--background-modifier-border); padding-bottom: var(--size-4-2); margin-bottom: var(--size-4-2); } +.frontmatter-container.is-collapsed .frontmatter-container-header { color: var(--text-faint); } +@media (hover: hover) { + .frontmatter-container.is-collapsed .frontmatter-container-header:hover { color: var(--text-muted); } +} +.frontmatter-container .frontmatter-input-text { width: 100%; min-height: var(--input-height); height: var(--input-height); border-width: 0px; resize: none; overflow-y: hidden; } +.frontmatter-container .frontmatter-input-number { width: 100%; border-width: 0px; } +.frontmatter-container .frontmatter-input-checkbox { margin-left: var(--size-4-2); } +.frontmatter-container .frontmatter-alias { font-size: var(--font-smaller); color: var(--text-normal); cursor: default; display: inline-flex; align-items: center; line-height: 1; white-space: nowrap; padding-right: 4px; } +.frontmatter-container .frontmatter-alias-icon { margin-right: var(--size-2-1); color: var(--text-accent); display: flex; align-items: center; } +.frontmatter-container .frontmatter-alias-icon .svg-icon { width: 12px; height: 12px; stroke-width: 2.5px; } +.frontmatter-container .frontmatter-key-input { border: none; } +.markdown-rendered h1, .markdown-rendered h2, .markdown-rendered h3, .markdown-rendered h4, .markdown-rendered h5, .markdown-rendered h6 { margin: 15px 0px; } +.markdown-rendered li h1, .markdown-rendered li h2, .markdown-rendered li h3, .markdown-rendered li h4, .markdown-rendered li h5 { margin-top: 0px; margin-bottom: 0px; } +h1, .markdown-rendered h1 { font-variant: var(--h1-variant); letter-spacing: -0.015em; line-height: var(--h1-line-height); font-size: var(--h1-size); color: var(--h1-color); font-weight: var(--h1-weight); font-style: var(--h1-style); font-family: var(--h1-font); } +h1 a, .markdown-rendered h1 a { font-weight: inherit; } +h2, .markdown-rendered h2 { font-variant: var(--h2-variant); letter-spacing: -0.015em; line-height: var(--h2-line-height); font-size: var(--h2-size); color: var(--h2-color); font-weight: var(--h2-weight); font-style: var(--h2-style); font-family: var(--h2-font); } +h2 a, .markdown-rendered h2 a { font-weight: inherit; } +h3, .markdown-rendered h3 { font-variant: var(--h3-variant); letter-spacing: -0.015em; line-height: var(--h3-line-height); font-size: var(--h3-size); color: var(--h3-color); font-weight: var(--h3-weight); font-style: var(--h3-style); font-family: var(--h3-font); } +h3 a, .markdown-rendered h3 a { font-weight: inherit; } +h4, .markdown-rendered h4 { font-variant: var(--h4-variant); letter-spacing: 0.01em; line-height: var(--h4-line-height); font-size: var(--h4-size); color: var(--h4-color); font-weight: var(--h4-weight); font-style: var(--h4-style); font-family: var(--h4-font); } +h4 a, .markdown-rendered h4 a { font-weight: inherit; } +h5, .markdown-rendered h5 { font-variant: var(--h5-variant); letter-spacing: 0.015em; font-size: var(--h5-size); line-height: var(--h5-line-height); color: var(--h5-color); font-weight: var(--h5-weight); font-style: var(--h5-style); font-family: var(--h5-font); } +h5 a, .markdown-rendered h5 a { font-weight: inherit; } +h6, .markdown-rendered h6 { font-variant: var(--h6-variant); letter-spacing: 0.015em; font-size: var(--h6-size); line-height: var(--h6-line-height); color: var(--h6-color); font-weight: var(--h6-weight); font-style: var(--h6-style); font-family: var(--h6-font); } +h6 a, .markdown-rendered h6 a { font-weight: inherit; } +.HyperMD-header-1, .inline-title[data-level="1"], .HyperMD-list-line .cm-header-1 { font-variant: var(--h1-variant); letter-spacing: -0.015em; line-height: var(--h1-line-height); font-size: var(--h1-size); color: var(--h1-color); font-weight: var(--h1-weight); font-style: var(--h1-style); font-family: var(--h1-font); } +.HyperMD-header-1 a, .inline-title[data-level="1"] a, .HyperMD-list-line .cm-header-1 a { font-weight: inherit; } +.HyperMD-header-2, .inline-title[data-level="2"], .HyperMD-list-line .cm-header-2 { font-variant: var(--h2-variant); letter-spacing: -0.015em; line-height: var(--h2-line-height); font-size: var(--h2-size); color: var(--h2-color); font-weight: var(--h2-weight); font-style: var(--h2-style); font-family: var(--h2-font); } +.HyperMD-header-2 a, .inline-title[data-level="2"] a, .HyperMD-list-line .cm-header-2 a { font-weight: inherit; } +.HyperMD-header-3, .inline-title[data-level="3"], .HyperMD-list-line .cm-header-3 { font-variant: var(--h3-variant); letter-spacing: -0.015em; line-height: var(--h3-line-height); font-size: var(--h3-size); color: var(--h3-color); font-weight: var(--h3-weight); font-style: var(--h3-style); font-family: var(--h3-font); } +.HyperMD-header-3 a, .inline-title[data-level="3"] a, .HyperMD-list-line .cm-header-3 a { font-weight: inherit; } +.HyperMD-header-4, .inline-title[data-level="4"], .HyperMD-list-line .cm-header-4 { font-variant: var(--h4-variant); letter-spacing: 0.015em; line-height: var(--h4-line-height); font-size: var(--h4-size); color: var(--h4-color); font-weight: var(--h4-weight); font-style: var(--h4-style); font-family: var(--h4-font); } +.HyperMD-header-4 a, .inline-title[data-level="4"] a, .HyperMD-list-line .cm-header-4 a { font-weight: inherit; } +.HyperMD-header-5, .inline-title[data-level="5"], .HyperMD-list-line .cm-header-5 { font-variant: var(--h5-variant); letter-spacing: 0.015em; font-size: var(--h5-size); line-height: var(--h5-line-height); color: var(--h5-color); font-weight: var(--h5-weight); font-style: var(--h5-style); font-family: var(--h5-font); } +.HyperMD-header-5 a, .inline-title[data-level="5"] a, .HyperMD-list-line .cm-header-5 a { font-weight: inherit; } +.HyperMD-header-6, .inline-title[data-level="6"], .HyperMD-list-line .cm-header-6 { font-variant: var(--h6-variant); letter-spacing: 0.015em; font-size: var(--h6-size); line-height: var(--h6-line-height); color: var(--h6-color); font-weight: var(--h6-weight); font-style: var(--h6-style); font-family: var(--h6-font); } +.HyperMD-header-6 a, .inline-title[data-level="6"] a, .HyperMD-list-line .cm-header-6 a { font-weight: inherit; } +.HyperMD-header .cm-header-1, .HyperMD-header .cm-header-2, .HyperMD-header .cm-header-3, .HyperMD-header .cm-header-4, .HyperMD-header .cm-header-5, .HyperMD-header .cm-header-6 { font-size: inherit !important; } +hr { border-right-width: initial; border-bottom-width: initial; border-left-width: initial; border-right-style: none; border-bottom-style: none; border-left-style: none; border-image: initial; border-top-width: ; border-top-style: ; border-color: var(--hr-color); margin: 1.5em 0px; } +.markdown-rendered hr { border-right-width: initial; border-bottom-width: initial; border-left-width: initial; border-right-style: none; border-bottom-style: none; border-left-style: none; border-image: initial; border-top-width: ; border-top-style: ; border-color: var(--hr-color); } +.markdown-source-view.mod-cm6 .hr { display: flex; align-items: center; } +.markdown-source-view.mod-cm6 hr { margin: 0px; flex: 1 0 0px; } +@media (hover: hover) { + .cm-s-obsidian .hmd-fold-html:hover { border: 1px dashed rgb(153, 153, 153); } +} +.markdown-preview-view img, .markdown-rendered img { image-rendering: -webkit-optimize-contrast; } +.markdown-preview-view img:not([width]), .markdown-rendered img:not([width]) { max-width: 100%; outline: none; } +.markdown-source-view.mod-cm6 .cm-line .internal-embed.image-embed { display: inline; } +.internal-query { margin: 0px; border-top: 1px solid var(--background-modifier-border); } +.internal-query .search-result-container { padding: var(--size-4-2); max-height: 800px; overflow: auto; border: 1px solid var(--background-modifier-border); background-color: var(--background-secondary); border-radius: var(--radius-m); } +.internal-query .internal-query-header { text-align: center; padding: var(--size-4-3) 0 var(--size-4-3) var(--size-4-1); color: var(--text-normal); display: flex; justify-content: flex-start; align-items: center; } +.internal-query .internal-query-header-icon { color: var(--text-faint); margin-right: var(--size-4-1); display: flex; } +.internal-query .internal-query-header-title { font-weight: var(--font-medium); } +.internal-query .internal-query-header-title::before, .internal-query .internal-query-header-title::after { content: "\""; } +ul ul, ol ul, ol ol ul, ol ul ul, ul ol ul, ul ul ul { list-style-type: disc; } +ol { list-style-type: var(--list-numbered-style); } +ol > li::marker, ul > li::marker { color: var(--list-marker-color); } +ol > li.is-collapsed::marker, ul > li.is-collapsed::marker { color: var(--list-marker-color-collapsed); } +.markdown-rendered ul, .markdown-rendered ol { padding-inline-start: var(--list-indent); } +.markdown-rendered ol > li, .markdown-rendered ul > li { padding-top: var(--list-spacing); padding-bottom: var(--list-spacing); } +.markdown-rendered ul li p:first-of-type, .markdown-rendered ol li p:first-of-type { margin-block-start: 0px; } +.markdown-rendered ul li p:last-of-type, .markdown-rendered ol li p:last-of-type { margin-block-end: 0px; } +.markdown-source-view.mod-cm6 .cm-content > .cm-line.HyperMD-list-line { margin-left: 0.5em; } +.markdown-source-view ol > li, .markdown-source-view ul > li, .markdown-preview-view ol > li, .markdown-preview-view ul > li, .mod-cm6 .HyperMD-list-line.cm-line { padding-top: var(--list-spacing); padding-bottom: var(--list-spacing); } +.markdown-rendered .list-collapse-indicator { margin-left: -3em; padding-right: 2em; } +.markdown-rendered .list-bullet { float: left; margin-left: -1em; } +.markdown-rendered .task-list-item > .list-bullet { display: none; } +.markdown-rendered ul.has-list-bullet { list-style-type: "​"; } +.markdown-rendered ul.has-list-bullet > li::marker { color: transparent; } +.list-bullet { color: transparent; position: relative; display: inline-flex; justify-content: center; align-items: center; } +.list-bullet::before { content: "​"; } +.list-bullet::after { position: absolute; content: "​"; pointer-events: none; color: var(--list-marker-color); border-radius: var(--list-bullet-radius); width: var(--list-bullet-size); height: var(--list-bullet-size); border: var(--list-bullet-border); transform: var(--list-bullet-transform); background-color: var(--list-marker-color); transition: transform 0.15s ease 0s, box-shadow 0.15s ease 0s; } +.list-bullet::selection { background-color: transparent !important; } +@media (hover: hover) { + .list-collapse-indicator:hover ~ .list-bullet::after, .cm-fold-indicator:hover ~ .list-bullet::after, .list-collapse-indicator:hover ~ .cm-formatting-list .list-bullet::after, .cm-fold-indicator:hover ~ .cm-formatting-list .list-bullet::after { background-color: var(--list-marker-color-hover); box-shadow: 0 0 0 4px var(--background-modifier-hover); } + li.is-collapsed .list-collapse-indicator:hover ~ .list-bullet::after, li.is-collapsed .cm-fold-indicator:hover ~ .list-bullet::after, .list-collapse-indicator:hover.is-collapsed ~ .list-bullet::after, .cm-fold-indicator:hover.is-collapsed ~ .list-bullet::after, li.is-collapsed .list-collapse-indicator:hover ~ .cm-formatting-list .list-bullet::after, li.is-collapsed .cm-fold-indicator:hover ~ .cm-formatting-list .list-bullet::after, .list-collapse-indicator:hover.is-collapsed ~ .cm-formatting-list .list-bullet::after, .cm-fold-indicator:hover.is-collapsed ~ .cm-formatting-list .list-bullet::after { background-color: var(--list-marker-color-collapsed); box-shadow: 0 0 0 4px var(--background-modifier-active-hover); } +} +li.is-collapsed .list-bullet::after, .is-collapsed ~ .cm-formatting-list .list-bullet::after { background-color: var(--list-marker-color-collapsed); box-shadow: 0 0 0 4px var(--background-modifier-active-hover); } +.markdown-source-view.mod-cm6 { } +.markdown-source-view.mod-cm6 .cm-fold-indicator .collapse-indicator { padding-right: 0.5rem; } +.markdown-source-view.mod-cm6 .cm-line:not(.cm-active):not(.HyperMD-header):not(.HyperMD-task-line) .cm-fold-indicator .collapse-indicator { padding-right: 1em; right: -0.5em; } +@media (hover: hover) { + .list-collapse-indicator:hover ~ .list-bullet::after, .cm-fold-indicator:hover ~ .list-bullet::after, .list-collapse-indicator:hover ~ .cm-formatting-list .list-bullet::after, .cm-fold-indicator:hover ~ .cm-formatting-list .list-bullet::after { background-color: var(--list-marker-color-hover); box-shadow: 0 0 0 4px var(--background-modifier-hover); } + li.is-collapsed .list-collapse-indicator:hover ~ .list-bullet::after, li.is-collapsed .cm-fold-indicator:hover ~ .list-bullet::after, .list-collapse-indicator:hover.is-collapsed ~ .list-bullet::after, .cm-fold-indicator:hover.is-collapsed ~ .list-bullet::after, li.is-collapsed .list-collapse-indicator:hover ~ .cm-formatting-list .list-bullet::after, li.is-collapsed .cm-fold-indicator:hover ~ .cm-formatting-list .list-bullet::after, .list-collapse-indicator:hover.is-collapsed ~ .cm-formatting-list .list-bullet::after, .cm-fold-indicator:hover.is-collapsed ~ .cm-formatting-list .list-bullet::after { background-color: var(--list-marker-color-collapsed); box-shadow: 0 0 0 4px var(--background-modifier-active-hover); } +} +.markdown-source-view.mod-cm6 .cm-hmd-list-indent { display: inline-block; } +.markdown-source-view.mod-cm6 .cm-formatting-list-ul, .markdown-source-view.mod-cm6 .cm-formatting-list-ol { white-space: pre; } +a { color: var(--link-color); outline: none; text-decoration-line: var(--link-decoration); text-decoration-thickness: var(--link-decoration-thickness); cursor: var(--cursor-link); } +@media (hover: hover) { + a:hover { color: var(--link-color-hover); text-decoration-line: var(--link-decoration-hover); } +} +.external-link { color: var(--link-external-color); text-decoration-line: var(--link-external-decoration); background-position: right 4px; background-repeat: no-repeat; background-image: linear-gradient(transparent, transparent), url("https://publish.obsidian.md/public/images/874d8b8e340f75575caa.svg"); background-size: 13px; padding-right: 16px; cursor: var(--cursor-link); filter: var(--link-external-filter); } +@media (hover: hover) { + .external-link:hover { color: var(--link-external-color-hover); text-decoration-line: var(--link-external-decoration-hover); } +} +.markdown-rendered .internal-link { cursor: var(--cursor-link); text-decoration-line: var(--link-decoration); } +@media (hover: hover) { + .markdown-rendered .internal-link:hover { text-decoration-line: var(--link-decoration-hover); } +} +.markdown-rendered .internal-link.is-unresolved { color: var(--link-unresolved-color); opacity: var(--link-unresolved-opacity); filter: var(--link-unresolved-filter); text-decoration-style: var(--link-unresolved-decoration-style); text-decoration-color: var(--link-unresolved-decoration-color); } +@media (hover: hover) { + .markdown-rendered .internal-link.is-unresolved:hover { opacity: 1; color: var(--link-color-hover); text-decoration-color: var(--link-color-hover); text-decoration-line: var(--link-decoration-hover); } +} +@media (hover: hover) { + .cm-s-obsidian span.cm-link:hover { color: var(--link-external-color-hover); text-decoration-line: var(--link-external-decoration-hover); } +} +@media (hover: hover) { + .cm-s-obsidian span.cm-formatting-link.cm-url:hover, .cm-s-obsidian span.cm-url:hover { color: var(--link-external-color-hover); text-decoration-line: var(--link-external-decoration-hover); } +} +@media (hover: hover) { + .cm-s-obsidian span.hmd-link-icon:hover { opacity: 1; } +} +.markdown-source-view.mod-cm6 .is-unresolved { color: var(--link-unresolved-color); opacity: var(--link-unresolved-opacity); filter: var(--link-unresolved-filter); } +@media (hover: hover) { + .markdown-source-view.mod-cm6 .is-unresolved:hover { opacity: 1; color: var(--link-color-hover); text-decoration-color: var(--link-color-hover); } +} +.markdown-source-view.mod-cm6 .is-unresolved .cm-underline { text-decoration-line: var(--link-decoration); text-decoration-style: var(--link-unresolved-decoration-style); text-decoration-color: var(--link-unresolved-decoration-color); } +.markdown-source-view.mod-cm6 .cm-underline { text-decoration-line: var(--link-decoration); text-decoration-thickness: var(--link-decoration-thickness); } +body.is-mobile .markdown-source-view.mod-cm6 .cm-underline { user-select: text; } +.markdown-source-view.mod-cm6.is-live-preview .cm-hashtag.cm-meta, .markdown-source-view.mod-cm6 .cm-hmd-internal-link .cm-underline, .markdown-source-view.mod-cm6 .cm-link .cm-underline, .markdown-source-view.mod-cm6 .cm-url .cm-underline { cursor: var(--cursor-link); } +@media (hover: hover) { + .markdown-source-view.mod-cm6 .cm-hmd-internal-link .cm-underline:hover { text-decoration-line: var(--link-decoration-hover); } +} +.markdown-source-view.mod-cm6 .cm-link .cm-underline, .markdown-source-view.mod-cm6 .cm-url .cm-underline { text-decoration-line: var(--link-external-decoration); } +@media (hover: hover) { + .markdown-source-view.mod-cm6 .cm-link .cm-underline:hover, .markdown-source-view.mod-cm6 .cm-url .cm-underline:hover { color: var(--link-external-color-hover); text-decoration-line: var(--link-external-decoration-hover); } +} +.inline-block { display: inline-block; vertical-align: middle; } +.hidden-token { display: inline; letter-spacing: -1ch; font-family: monospace; color: transparent; font-size: 1px !important; } +.mod-cm5 .cm-s-obsidian .HyperMD-table-row > :last-child { padding-right: 52px !important; } +@keyframes hmd-file-uploading-ani { + 0%, 100% { opacity: 0.4; } + 50% { opacity: 0.7; } +} +@media (hover: hover) { + .cm-s-obsidian div.HyperMD-goback-button:hover { color: transparent; text-align: left; } + .cm-s-obsidian div.HyperMD-goback-button:hover::before { position: absolute; padding-left: 5px; content: "Back"; color: rgb(247, 247, 247); } +} +mjx-container { outline: none; } +.markdown-source-view.mod-cm6 .math-block > mjx-container { margin: 0px; padding: 1em 0px; overflow-x: auto; } +.markdown-rendered table { border-collapse: collapse; margin-block: 1em; } +.markdown-rendered td, .markdown-rendered th { padding: var(--size-2-2) var(--size-4-2); border: var(--table-border-width) solid var(--table-border-color); max-width: var(--table-column-max-width); } +.markdown-rendered td { font-size: var(--table-text-size); color: var(--table-text-color); } +.markdown-rendered th { font-size: var(--table-header-size); font-weight: var(--table-header-weight); color: var(--table-header-color); font-family: var(--table-header-font); text-align: left; line-height: var(--line-height-tight); } +.markdown-rendered th[align="center"] { text-align: center; } +.markdown-rendered th[align="right"] { text-align: right; } +.markdown-rendered thead > tr > th, .markdown-rendered tbody > tr > td { white-space: var(--table-white-space); text-overflow: ellipsis; overflow: hidden; } +.markdown-rendered tbody tr { background-color: var(--table-background); } +@media (hover: hover) { + .markdown-rendered tbody tr:hover { background-color: var(--table-row-background-hover); } +} +.markdown-rendered tbody tr:nth-child(2n+1) { background-color: var(--table-row-alt-background); } +@media (hover: hover) { + .markdown-rendered tbody tr:nth-child(2n+1):hover { background-color: var(--table-row-background-hover); } +} +.markdown-rendered tbody tr > td:nth-child(2n+2) { background-color: var(--table-column-alt-background); } +.markdown-rendered tbody tr:last-child > td { border-bottom-width: var(--table-row-last-border-width); } +.markdown-rendered tbody tr > td:first-child { border-left-width: var(--table-column-first-border-width); } +.markdown-rendered tbody tr > td:last-child { border-right-width: var(--table-column-last-border-width); } +.markdown-rendered thead tr { background-color: var(--table-header-background); } +@media (hover: hover) { + .markdown-rendered thead tr:hover { background-color: var(--table-header-background-hover); } +} +.markdown-rendered thead tr > th { border-top-width: var(--table-header-border-width); border-color: var(--table-header-border-color); } +.markdown-rendered thead tr > th:nth-child(2n+2) { background-color: var(--table-column-alt-background); } +.markdown-rendered thead tr > th:first-child { border-left-width: var(--table-column-first-border-width); } +.markdown-rendered thead tr > th:last-child { border-right-width: var(--table-column-last-border-width); } +.markdown-source-view.mod-cm6 .cm-line.HyperMD-table-row { min-width: max-content; } +.markdown-source-view.mod-cm6 .cm-table-widget table { margin-bottom: 0px; } +a.tag { background-color: var(--tag-background); border: var(--tag-border-width) solid var(--tag-border-color); border-radius: var(--tag-radius); color: var(--tag-color); font-size: var(--tag-size); text-decoration: var(--tag-decoration); padding: var(--tag-padding-y) var(--tag-padding-x); line-height: 1; } +@media (hover: hover) { + a.tag:hover { background-color: var(--tag-background-hover); border: var(--tag-border-width) solid var(--tag-border-color-hover); color: var(--tag-color-hover); text-decoration: var(--tag-decoration-hover); } +} +a.tag { background-color: var(--tag-background); border: var(--tag-border-width) solid var(--tag-border-color); border-radius: var(--tag-radius); color: var(--tag-color); font-size: var(--tag-size); text-decoration: var(--tag-decoration); padding: var(--tag-padding-y) var(--tag-padding-x); line-height: 1; } +@media (hover: hover) { + a.tag:hover { background-color: var(--tag-background-hover); border: var(--tag-border-width) solid var(--tag-border-color-hover); color: var(--tag-color-hover); text-decoration: var(--tag-decoration-hover); } +} +input[type="checkbox"] { appearance: none; border-radius: var(--checkbox-radius); border: 1px solid var(--checkbox-border-color); flex-shrink: 0; padding: 0px; margin: 0px 6px 0px 0px; width: var(--checkbox-size); height: var(--checkbox-size); position: relative; transition: box-shadow 0.15s ease-in-out 0s; } +input[type="checkbox"]:hover, input[type="checkbox"]:active, input[type="checkbox"]:focus { outline: 0px; border-color: var(--checkbox-border-color-hover); } +input[type="checkbox"]:focus-visible { box-shadow: 0 0 0 2px var(--background-modifier-border-focus); } +input[type="checkbox"]:checked::after { content: ""; top: -1px; left: -1px; position: absolute; width: var(--checkbox-size); height: var(--checkbox-size); display: block; background-color: var(--checkbox-marker-color); -webkit-mask-position: 52% 52%; -webkit-mask-size: 65%; -webkit-mask-repeat: no-repeat; -webkit-mask-image: url("data:image/svg+xml; utf8, "); } +input[type="checkbox"]:checked { background-color: var(--checkbox-color); border-color: var(--checkbox-color); } +@media (hover: hover) { + input[type="checkbox"]:checked:hover { background-color: var(--checkbox-color-hover); border-color: var(--checkbox-color-hover); } +} +.task-list-item-checkbox { width: var(--checkbox-size); height: var(--checkbox-size); } +.markdown-preview-view .task-list-item-checkbox { position: relative; top: 0.2em; margin-right: 0.6em; } +ul > li.task-list-item { list-style: none; } +ul > li.task-list-item .task-list-item-checkbox { margin-inline-start: calc(var(--checkbox-size) * -1.5); } +ul > li.task-list-item[data-task="x"], ul > li.task-list-item[data-task="X"] { text-decoration: var(--checklist-done-decoration); color: var(--checklist-done-color); } +.markdown-source-view.mod-cm6 .task-list-label { padding: 0px; margin-left: -0.25em; } +.markdown-source-view.mod-cm6 .task-list-item-checkbox { top: -0.1em; vertical-align: middle; margin-left: 2px; } +.markdown-source-view.mod-cm6 .HyperMD-task-line[data-task="x"], .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task="X"] { text-decoration: var(--checklist-done-decoration); color: var(--checklist-done-color); } +b, strong { font-weight: var(--bold-weight); color: var(--bold-color); } +i, em { font-style: italic; color: var(--italic-color); } +.markdown-rendered mark { background-color: var(--text-highlight-bg); color: var(--text-normal); } +.markdown-rendered mark .internal-link { color: var(--text-normal); } +.embedded-backlinks { border-top: 1px solid var(--background-modifier-border); } +.markdown-preview-view .embedded-backlinks { margin-top: 3em; } +.embedded-backlinks .backlink-pane { padding: var(--size-4-3) 0 0 0; } +.embedded-backlinks .backlink-pane .search-empty-state, .embedded-backlinks .backlink-pane .tree-item-self { font-size: max(var(--font-ui-small),var(--font-smaller)); align-items: center; } +.embedded-backlinks .backlink-pane > .tree-item-self { font-size: max(var(--font-ui-small),1em); gap: var(--size-2-3); width: fit-content; } +.embedded-backlinks .backlink-pane .tree-item-flair { font-size: max(var(--font-ui-small),var(--font-smallest)); } +.embedded-backlinks .nav-header { padding: 0px; position: relative; } +.embedded-backlinks .nav-header ~ .search-input-container { width: calc(100% - 150px); margin: var(--size-4-3) 0 0 0; } +.embedded-backlinks .nav-buttons-container { position: absolute; right: 0px; top: 14px; z-index: 1; } +.view-action.mod-bookmark { --icon-color: var(--icon-color-active); --icon-color-hover: var(--icon-color-active); } +.workspace-leaf-content[data-type="bookmarks"] .view-content { padding: var(--size-4-3) var(--size-4-3) var(--size-4-8); } +.modal.mod-bookmark .setting-item-control input { width: 100%; } +.nav-buttons-container.has-separator { border-bottom: 1px solid var(--background-modifier-border); padding-bottom: var(--size-2-3); margin-bottom: var(--size-4-2); } +.nav-files-container { flex-grow: 1; overflow: hidden auto; padding: 0 var(--size-4-3) var(--size-4-6) var(--size-4-3); scroll-padding-block: var(--size-4-2); } +.nav-folder.mod-root > .nav-folder-title { font-size: var(--vault-name-font-size); color: var(--vault-name-color); font-weight: var(--vault-name-font-weight); cursor: default; } +@media (hover: hover) { + .nav-folder.mod-root > .nav-folder-title:hover { background-color: inherit; font-weight: var(--vault-name-font-weight); } +} +.nav-folder.mod-root > .nav-folder-title.is-being-dragged-over { background-color: hsla(var(--interactive-accent-hsl), 0.2); } +.nav-folder.mod-root > .nav-folder-children { border-left: none; margin-left: 0px; padding-left: 0px; } +.workspace-leaf.mod-active .nav-folder.has-focus > .nav-folder-title, .workspace-leaf.mod-active .nav-file.has-focus > .nav-file-title { border-radius: var(--radius-s); box-shadow: 0 0 0 2px var(--background-modifier-border-focus); } +.workspace-leaf.mod-active .nav-folder.has-focus > .nav-folder-title:focus-within, .workspace-leaf.mod-active .nav-file.has-focus > .nav-file-title:focus-within { box-shadow: 0 0 0 2px var(--interactive-accent); } +.nav-file-tag { background-color: var(--background-modifier-hover); border-radius: var(--radius-s); font-size: 9px; font-weight: var(--font-semibold); letter-spacing: 0.05em; line-height: var(--line-height-normal); margin-left: var(--size-2-3); padding: 0 var(--size-4-1); text-transform: uppercase; align-self: center; } +.nav-file-icon { display: inline-flex; align-items: center; margin-right: var(--size-2-3); position: relative; color: var(--icon-color); opacity: var(--icon-opacity); } +.nav-files-container:not(.show-unsupported) .is-unsupported { display: none; } +.nav-file-title-content, .nav-folder-title-content { display: inline-block; overflow-wrap: anywhere; overflow: hidden; white-space: var(--nav-item-white-space); text-overflow: ellipsis; } +.nav-file-title-content.is-being-renamed, .nav-folder-title-content.is-being-renamed { flex-grow: 1; white-space: normal; cursor: text; } +.nav-files-container { flex-grow: 1; overflow: hidden auto; padding: 0 var(--size-4-3) var(--size-4-6) var(--size-4-3); scroll-padding-block: var(--size-4-2); } +.nav-folder.mod-root > .nav-folder-title { font-size: var(--vault-name-font-size); color: var(--vault-name-color); font-weight: var(--vault-name-font-weight); cursor: default; } +@media (hover: hover) { + .nav-folder.mod-root > .nav-folder-title:hover { background-color: inherit; font-weight: var(--vault-name-font-weight); } +} +.nav-folder.mod-root > .nav-folder-title.is-being-dragged-over { background-color: hsla(var(--interactive-accent-hsl), 0.2); } +.nav-folder.mod-root .nav-folder > .nav-folder-children { padding-left: var(--nav-item-children-padding-left); margin: 0 0 0 var(--nav-item-children-margin-left); border-left: var(--nav-indentation-guide-width) solid var(--nav-indentation-guide-color); } +.nav-file { border-radius: var(--radius-s); } +.nav-folder-title { padding: var(--nav-item-parent-padding); } +.nav-file-title { padding: var(--nav-item-padding); } +.nav-file-title, .nav-folder-title { margin-bottom: var(--size-2-1); display: flex; border-radius: var(--radius-s); cursor: var(--cursor); color: var(--nav-item-color); font-size: var(--nav-item-size); font-weight: var(--nav-item-weight); line-height: var(--line-height-tight); } +@media (hover: hover) { + body:not(.is-grabbing) .nav-file-title:hover, body:not(.is-grabbing) .nav-folder-title:hover { background-color: var(--nav-item-background-hover); color: var(--nav-item-color-hover); font-weight: var(--nav-item-weight-hover); } +} +body:not(.is-grabbing) .nav-file-title.is-active:hover, body:not(.is-grabbing) .nav-folder-title.is-active:hover, .nav-file-title.is-active, .nav-folder-title.is-active { color: var(--nav-item-color-active); background-color: var(--nav-item-background-active); font-weight: var(--nav-item-weight-active); } +body:not(.is-grabbing) .nav-file-title.is-selected:hover, body:not(.is-grabbing) .nav-folder-title.is-selected:hover, .nav-file-title.is-selected, .nav-folder-title.is-selected { color: var(--nav-item-color-selected); background-color: var(--nav-item-background-selected); } +body:not(.is-grabbing) .nav-file-title.is-being-dragged, body:not(.is-grabbing) .nav-folder-title.is-being-dragged, .nav-file-title.is-being-dragged, .nav-folder-title.is-being-dragged { background-color: var(--interactive-accent); color: var(--text-on-accent); } +body:not(.is-grabbing) .nav-file-title.is-being-dragged .nav-folder-collapse-indicator, body:not(.is-grabbing) .nav-folder-title.is-being-dragged .nav-folder-collapse-indicator, .nav-file-title.is-being-dragged .nav-folder-collapse-indicator, .nav-folder-title.is-being-dragged .nav-folder-collapse-indicator { color: var(--text-on-accent); } +body:not(.is-grabbing) .nav-file-title.is-being-dragged .nav-file-tag, body:not(.is-grabbing) .nav-folder-title.is-being-dragged .nav-file-tag, .nav-file-title.is-being-dragged .nav-file-tag, .nav-folder-title.is-being-dragged .nav-file-tag { color: var(--text-normal); } +.workspace-leaf.mod-active .nav-folder.has-focus > .nav-folder-title, .workspace-leaf.mod-active .nav-file.has-focus > .nav-file-title { border-radius: var(--radius-s); box-shadow: 0 0 0 2px var(--background-modifier-border-focus); } +.workspace-leaf.mod-active .nav-folder.has-focus > .nav-folder-title:focus-within, .workspace-leaf.mod-active .nav-file.has-focus > .nav-file-title:focus-within { box-shadow: 0 0 0 2px var(--interactive-accent); } +.nav-folder-title.is-being-dragged-over { border-radius: var(--radius-s); color: var(--nav-item-color-highlighted); background: hsla(var(--interactive-accent-hsl), 0.1); } +.nav-folder-title.is-being-dragged-over .collapse-icon { color: var(--nav-item-color-highlighted); } +.file-tree-item-checkbox, .file-tree-item-icon { flex-shrink: 0; } +.file-tree-item-title { flex-grow: 1; word-break: break-word; } +.file-tree-item-icon { --icon-size: var(--icon-s); --icon-stroke: var(--icon-s-stroke-width); margin-right: var(--size-4-1); color: var(--icon-color); position: relative; top: var(--size-2-1); } +.file-tree .tree-item-inner { display: flex; align-items: center; position: relative; } +.file-tree .tree-item-flair { line-height: 1; padding: var(--size-2-1) var(--size-2-3); color: var(--text-on-accent); } +.file-tree .is-selected { color: var(--text-normal); } +.file-tree .mod-changed.is-selected { background-color: hsla(var(--interactive-accent-hsl), 0.2); } +.file-tree .mod-changed .tree-item-flair { color: var(--text-accent-hover); } +.file-tree .mod-new.is-selected { background-color: rgba(var(--background-modifier-success-rgb), 0.2); } +.file-tree .mod-new .tree-item-flair { color: var(--text-success); } +.file-tree .mod-deleted.is-selected, .file-tree .mod-to-delete.is-selected { background-color: rgba(var(--background-modifier-error-rgb), 0.2); } +.file-tree .mod-deleted .tree-item-flair, .file-tree .mod-to-delete .tree-item-flair { color: var(--text-error); } +.file-tree .mod-to-delete .tree-item-flair { display: none; } +.file-tree .mod-to-delete.is-selected .tree-item-flair { display: block; } +.file-tree .clickable-icon { display: flex; --icon-size: var(--icon-s); --icon-stroke: var(--icon-s-stroke-width); } +.graph-view.color-fill { color: var(--graph-node); } +.graph-view.color-fill-focused { color: var(--graph-node-focused); } +.graph-view.color-fill-tag { color: var(--graph-node-tag); } +.graph-view.color-fill-attachment { color: var(--graph-node-attachment); } +.graph-view.color-fill-unresolved { color: var(--graph-node-unresolved); opacity: 0.5; } +.graph-view.color-fill-1 { color: var(--text-muted); } +.graph-view.color-fill-2 { color: var(--text-muted); } +.graph-view.color-fill-3 { color: var(--text-muted); } +.graph-view.color-fill-4 { color: var(--text-muted); } +.graph-view.color-fill-5 { color: var(--text-muted); } +.graph-view.color-fill-6 { color: var(--text-muted); } +.graph-view.color-arrow { color: var(--text-normal); opacity: 0.5; } +.graph-view.color-circle { color: var(--graph-node-focused); } +.graph-view.color-line { color: var(--graph-line); } +.graph-view.color-text { color: var(--graph-text); } +.graph-view.color-fill-highlight { color: var(--interactive-accent); } +.graph-view.color-line-highlight { color: var(--interactive-accent); } +.graph-controls { border-radius: var(--radius-m); position: absolute; right: var(--size-4-3); top: var(--size-4-3); padding: 0px; background-color: var(--background-primary); width: var(--graph-controls-width); overflow: auto; } +.graph-controls:not(.is-close) { max-height: calc(100% - var(--size-4-4)); border: 1px solid var(--background-modifier-border); box-shadow: var(--shadow-s); } +.graph-controls.is-close { min-width: inherit; width: auto; background-color: var(--background-primary); border: 1px solid transparent; padding: var(--size-2-3); } +.graph-controls.is-close > .graph-control-section { display: none; } +.workspace-split:not(.mod-root) .graph-controls.is-close { background-color: var(--background-secondary); } +.graph-controls input[type="text"], .graph-controls input[type="range"] { width: 100%; font-size: var(--font-ui-small); } +.graph-controls .mod-cta { margin-top: var(--size-2-3); width: 100%; } +.graph-controls .setting-item { padding: var(--size-2-3) 0; border: none; } +.graph-controls .setting-item .setting-item-info { display: flex; align-items: center; } +.graph-controls .setting-item:first-of-type { border-top: none; } +.graph-controls .setting-item.mod-slider { flex-direction: column; } +.graph-controls .setting-item.mod-slider > * { width: 100%; } +.graph-controls .setting-item.mod-slider .setting-item-info { margin-right: 0px; } +.graph-controls .setting-item.mod-slider .setting-item-control { padding-top: var(--size-4-3); } +.graph-controls .setting-item.mod-toggle .setting-item-control { padding-top: 0px; } +.graph-controls .setting-item.mod-search-setting .setting-item-info { margin-right: 0px; } +.graph-controls .setting-item-name { font-size: var(--font-ui-small); } +.graph-controls::-webkit-scrollbar, .graph-controls::-webkit-scrollbar-thumb { display: none; } +.graph-color-group { --swatch-height: 18px; --swatch-width: 18px; position: relative; display: flex; align-items: center; padding: 0px 0px 6px; transition: top 200ms ease-in-out 0s; } +.graph-color-group input[type="color"] { margin: 0px 2px 0px 6px; } +.graph-color-group .clickable-icon { padding: var(--size-2-2); } +.graph-color-button-container { text-align: center; margin-bottom: 10px; } +.graph-color-button-container button { margin: 0px; width: 100%; } +.graph-color-group.drag-ghost { position: fixed; display: flex; max-width: unset; border: none; box-shadow: none; background-color: var(--background-primary-alt); padding: 0px; transition: none 0s ease 0s; pointer-events: none; } +.graph-color-group.drag-ghost input[type="text"] { width: 100%; } +.graph-color-group.drag-ghost input[type="color"] { margin-left: 6px; } +.graph-control-section.mod-color-groups .tree-item-children.is-grabbing .graph-color-groups-container { padding-bottom: 40px; } +.graph-controls-button { display: none; z-index: 1; } +.graph-controls-button.mod-close, .graph-controls-button.mod-reset { position: absolute; top: var(--size-4-2); right: var(--size-4-2); padding: var(--size-2-2); } +.graph-controls:not(.is-close) .graph-controls-button.mod-close, .graph-controls:not(.is-close) .graph-controls-button.mod-reset { display: flex; } +.graph-controls-button.mod-reset { right: 36px; } +.graph-controls.is-close .graph-controls-button.mod-open { display: flex; } +.graph-controls-button.mod-animate { margin-top: var(--size-4-2); } +.graph-controls.is-close .graph-controls-button.mod-animate { display: flex; } +.setting-item.mod-search-setting .setting-item-info { display: none; } +.setting-item.mod-search-setting .setting-item-control .search-input-container { position: relative; flex-grow: 1; margin: 0px; } +.setting-item.mod-search-setting.is-loading .setting-item-control::before { background-color: var(--interactive-accent); animation: 1000ms ease-in-out 300ms infinite normal none running progress-bar; } +.graph-control-section-header { font-weight: var(--font-semibold); font-size: var(--font-ui-small); color: var(--text-normal); } +.graph-control-section { padding: var(--size-2-3) var(--size-4-3); border-bottom: 1px solid var(--background-modifier-border); } +.graph-control-section:last-child { border-bottom: none; } +.graph-control-section:last-child .tree-item-children { padding-bottom: var(--size-4-4); } +.graph-control-section > .tree-item-self { padding-left: var(--size-4-4); } +.graph-control-section .tree-item-children { margin: 0px; padding: var(--size-4-1) 0; border-left: none; } +.graph-control-section.mod-display .setting-item:not(.mod-slider):last-child .setting-item-info { display: none; } +.workspace-leaf-content[data-type="outline"] .view-content { padding: 0px; } +.outline { padding: var(--size-4-3) var(--size-4-3) var(--size-4-8); } +.modal.mod-publish { height: var(--modal-height); width: var(--modal-width); max-width: var(--modal-max-width-narrow); padding: var(--size-4-4) 0 0 0; position: relative; overflow: hidden; } +.modal.mod-publish .modal-title { padding: 0 var(--size-4-4); } +.modal.mod-publish .modal-content { overflow: auto; padding: 0 var(--size-4-4) var(--size-4-4); margin-bottom: calc(var(--input-height) + var(--size-4-8)); border-top: var(--border-width) solid var(--background-modifier-border); } +.modal.mod-publish .modal-button-container { margin: 0 0 0 calc(var(--size-4-4) * -1); padding: var(--size-4-4); gap: var(--size-4-2); position: absolute; bottom: 0px; background-color: var(--background-primary); border-top: var(--border-width) solid var(--background-modifier-border); width: 100%; } +.publish-section { margin-bottom: var(--size-4-1); } +.publish-change-list { padding: var(--size-4-2) 0 var(--size-4-2) 0; } +.site-list-site-id-setting { margin-top: var(--size-4-4); } +.publish-section-header-text, .publish-section-header-toggle-collapsed-button, .publish-section-header-action { cursor: var(--cursor); } +@media (hover: hover) { + .publish-section-header-text:hover, .publish-section-header-toggle-collapsed-button:hover, .publish-section-header-action:hover { color: var(--text-accent-hover); } +} +.publish-section-header { border-bottom: 1px solid var(--background-modifier-border); font-size: var(--font-ui-small); line-height: 1.1; color: var(--text-muted); display: flex; padding: var(--size-4-2) 0; align-items: center; } +.publish-section-header-text { flex-grow: 1; font-size: var(--font-ui-medium); color: var(--text-normal); line-height: var(--line-height-tight); font-weight: var(--font-medium); } +.publish-changes-switch-site { margin-left: var(--size-4-2); display: flex; flex-direction: row; flex-grow: 1; font-size: var(--font-ui-small); position: relative; gap: var(--size-2-1); top: 2px; } +.publish-changes-switch-site .clickable-icon { --icon-size: var(--icon-s); --icon-stroke: var(--icon-s-stroke-width); padding: var(--size-2-2); } +.upload-progress-container { max-height: 60vh; overflow: auto; } +.upload-progress-container.is-finished { max-height: calc(60vh - 200px); } +.publish-changes-current-site-name { margin-left: var(--size-2-3); text-decoration: underline; } +.publish-changes-info { display: flex; align-items: center; margin-bottom: 20px; } +.publish-changes-info button { margin-right: 0px; margin-left: var(--size-4-2); } +.publish-changes-info .search-input-container { margin: 0px; width: 0px; flex: 1 0 auto; } +.publish-section-header-toggle-collapsed-button { margin-right: var(--size-4-1); color: var(--text-faint); width: 9px; height: 9px; } +.publish-section-header-action { color: var(--text-faint); margin-left: var(--size-4-3); } +.publish-upload-item-title { word-break: break-word; font-size: var(--nav-item-size); line-height: var(--line-height-tight); } +.publish-changes-buttons { text-align: right; padding-bottom: var(--size-4-4); } +.publish-upload-item { position: relative; padding: var(--size-4-1) var(--size-4-2); } +.publish-upload-item .flair { background-color: transparent; text-transform: unset; letter-spacing: normal; font-size: var(--font-ui-smaller); } +.publish-upload-item .list-item-part { --icon-size: var(--icon-s); --icon-stroke: var(--icon-s-stroke-width); display: flex; align-items: center; } +.publish-upload-item::before { content: " "; position: absolute; top: 0px; left: 0px; width: 0px; height: 100%; transition: width 150ms ease-in-out 0s; background-color: rgba(var(--background-modifier-success-rgb), 0.2); z-index: 0; border-radius: var(--radius-s); } +.publish-upload-item.mod-failed { color: var(--text-error); } +.publish-upload-item.mod-failed::before { background-color: rgba(var(--background-modifier-error-rgb), 0.2); } +.publish-upload-item.mod-completed { color: var(--text-success); } +.publish-upload-item.mod-completed > * { position: relative; } +.publish-upload-item.mod-completed::before { width: 100%; } +.site-list-container { border-top: 1px solid var(--background-modifier-border); margin-bottom: var(--size-4-4); } +.site-list-container .list-item:last-child { padding-top: var(--size-4-4); } +.site-list-item-name { flex-grow: 1; } +.slug-input { text-transform: lowercase; } +.passwords-container { margin-bottom: var(--size-4-4); } +.password-item { border-radius: var(--radius-s); padding: var(--size-4-2) var(--size-4-4); margin: var(--size-4-1) 0; } +@media (hover: hover) { + .password-item:hover { background-color: var(--background-primary); } +} +.tree-item.mod-custom-nav.hidden .tree-item-self { color: var(--text-faint); } +.tree-item.mod-custom-nav .tree-item-inner { display: flex; align-items: center; position: relative; } +.tree-list { padding: var(--size-4-4) 0; } +.tree-list-header { border-bottom: 1px solid var(--background-modifier-border); padding: var(--size-4-2) 0; line-height: 1.1; display: flex; align-items: center; justify-content: space-between; } +.tree-list-title { font-size: var(--font-ui-medium); font-weight: var(--font-semibold); } +.tree-list-action { align-items: center; display: flex; color: var(--text-muted); font-size: var(--font-ui-small); } +.search-input-container { position: relative; } +.search-input-container::before { top: calc((var(--input-height) - var(--search-icon-size)) / 2); left: 8px; position: absolute; content: ""; height: var(--search-icon-size); width: var(--search-icon-size); display: block; background-color: var(--search-icon-color); -webkit-mask-image: url("data:image/svg+xml,"); -webkit-mask-repeat: no-repeat; } +.search-input-container input { display: block; width: 100%; padding-right: 28px; padding-left: 36px; } +.global-search-input-container.search-input-container input { padding-right: 56px; } +.search-input-clear-button { position: absolute; background: transparent; border-radius: 50%; color: var(--search-clear-button-color); cursor: var(--cursor); top: 0px; right: 2px; bottom: 0px; line-height: 0; height: var(--input-height); width: 28px; margin: auto; padding: 0px; text-align: center; display: flex; justify-content: center; align-items: center; transition: color 0.15s ease-in-out 0s; } +.search-input-clear-button::after { content: ""; height: var(--search-clear-button-size); width: var(--search-clear-button-size); display: block; background-color: currentcolor; -webkit-mask-image: url("data:image/svg+xml,"); -webkit-mask-repeat: no-repeat; } +.search-input-clear-button:hover, .search-input-clear-button:active { color: var(--text-normal); transition: color 0.15s ease-in-out 0s; } +.search-input-suggest-button { position: absolute; left: 0px; top: 0px; color: var(--text-faint); cursor: var(--cursor); padding: var(--size-4-1) var(--size-4-2); opacity: 0; z-index: 10; } +@media (hover: hover) { + .search-input-suggest-button:hover { color: var(--text-muted); } +} +.backlink-pane, .outgoing-link-pane { overflow-y: auto; padding: var(--size-4-3) var(--size-4-3) var(--size-4-8); flex: 1 0 0px; } +.backlink-pane .search-result-container, .outgoing-link-pane .search-result-container { padding: var(--size-4-1) 1px var(--size-4-4); } +.backlink-pane > .tree-item-self, .outgoing-link-pane > .tree-item-self { color: var(--text-normal); padding-left: var(--size-4-2); } +.backlink-pane > .tree-item-self .tree-item-inner, .outgoing-link-pane > .tree-item-self .tree-item-inner { font-weight: var(--font-medium); } +.backlink-pane > .tree-item-self.is-collapsed, .outgoing-link-pane > .tree-item-self.is-collapsed { color: var(--text-faint); } +@media (hover: hover) { + .backlink-pane > .tree-item-self.is-collapsed:hover, .outgoing-link-pane > .tree-item-self.is-collapsed:hover { color: var(--text-muted); } +} +.backlink-pane > .tree-item-self .collapse-icon, .outgoing-link-pane > .tree-item-self .collapse-icon { display: none; } +.search-result-container { padding: var(--size-4-3) var(--size-4-3) var(--size-4-4); position: relative; flex: 1 0 0px; } +.search-result-container.mod-global-search { overflow-y: auto; } +.search-result-container::before { content: " "; position: absolute; top: 0px; width: 0px; height: 3px; } +.search-result-container.is-loading::before { background-color: var(--interactive-accent); animation: 1000ms ease-in-out 300ms infinite normal none running progress-bar; } +.search-suggest-info-text { color: var(--text-muted); margin-left: 4px; } +.search-suggest-icon { padding: 4px; border-radius: var(--radius-s); } +@media (hover: hover) { + .search-suggest-icon:hover { background-color: var(--background-modifier-hover); } +} +.suggestion-container.mod-search-suggestion { max-width: unset; background-color: var(--background-secondary); border-color: var(--prompt-border-color); } +.suggestion-container.mod-search-suggestion .suggestion { max-height: 600px; padding: var(--size-2-3); background-color: var(--background-secondary); border-radius: var(--radius-m); } +.search-suggest-icon { align-items: center; display: flex; } +.search-suggest-item { padding: var(--size-4-1) var(--size-4-2); border-radius: var(--radius-s); } +.search-suggest-item.suggestion-item { font-size: var(--font-ui-small); } +.search-suggest-item.mod-group { align-items: center; margin: 0px; color: var(--text-muted); padding: 0 0 0 var(--size-4-2); cursor: default; font-weight: var(--font-semibold); font-size: var(--font-ui-smaller); border-radius: 0px; } +.search-suggest-item.mod-group:not(:first-child) { border-top: 1px solid var(--background-modifier-border); margin-top: 6px; padding: 6px 6px 0px 14px; margin-left: -6px; margin-right: -6px; } +.search-suggest-item.mod-group:hover, .search-suggest-item.mod-group.is-selected { background-color: initial; } +@keyframes progress-bar { + 0% { width: 0px; left: 0px; } + 5% { width: 0px; left: 0px; } + 50% { width: 100%; right: 0px; } + 95% { width: 0px; right: 0px; } + 100% { width: 0px; right: 0px; } +} +.search-empty-state { color: var(--text-faint); font-size: var(--font-ui-small); margin: 0 0 var(--size-4-3); padding-left: var(--size-4-2); } +.search-result { word-break: break-word; } +.search-result:not(.is-collapsed) .search-result-file-title { color: var(--nav-item-color-active); } +.search-result-file-matches { font-size: var(--font-ui-smaller); line-height: var(--line-height-tight); background-color: var(--search-result-background); border-radius: var(--radius-s); overflow: hidden; margin: var(--size-4-1) 0 var(--size-4-2); color: var(--text-muted); box-shadow: 0 0 0 1px var(--background-modifier-border); } +.search-info-more-matches { color: var(--text-faint); } +.search-result-file-match { cursor: var(--cursor); position: relative; padding: var(--size-4-2) var(--size-4-5) var(--size-4-2) var(--size-4-3); white-space: pre-wrap; width: 100%; border-bottom: 1px solid var(--background-modifier-border); } +.search-result-file-match:last-child { border-bottom: none; } +@media (hover: hover) { + .search-result-file-match:hover { color: var(--text-normal); background-color: var(--text-selection); } +} +.search-result-file-match:hover .search-result-file-match-replace-button { display: block; } +.search-result-file-match-replace-button { display: none; position: absolute; height: auto; bottom: 5px; right: 24px; padding: var(--size-4-1) var(--size-4-2); color: var(--text-muted); font-size: var(--font-ui-smaller); } +@media (hover: hover) { + .search-result-file-match-replace-button:hover { color: var(--text-normal); } +} +.search-result-hover-button { position: absolute; display: flex; right: 2px; border-radius: var(--radius-s); color: var(--text-faint); padding: 1px 3px; } +@media (hover: hover) { + .search-result-hover-button:hover { opacity: 1; background-color: var(--background-modifier-hover); } +} +.search-result-hover-button.mod-top { top: 2px; } +.search-result-hover-button.mod-bottom { bottom: 2px; } +.search-result-file-matched-text { color: var(--text-normal); background-color: var(--text-highlight-bg); } +.search-info-container { color: var(--text-muted); padding: var(--size-4-1) var(--size-4-4) var(--size-4-1); font-size: var(--font-ui-smaller); } +.search-info-children { padding-left: 20px; border-left: 1px solid var(--background-modifier-border); margin: 1px 0px; } +.copy-search-result-container { display: flex; flex-direction: column; } +.copy-search-result-textarea { height: 300px; max-height: 20vh; resize: none; } +.copy-search-result-textarea + .setting-item { border-top: none; } +.search-result-file-match-destination-file-container { margin-top: var(--size-2-3); } +.search-result-file-match-destination-file { display: inline-flex; background-color: var(--interactive-normal); border-radius: var(--radius-s); box-shadow: var(--input-shadow); color: var(--text-muted); padding: var(--size-2-2) var(--size-2-3); margin-bottom: var(--size-2-1); } +@media (hover: hover) { + .search-result-file-match:hover .search-result-file-match-destination-file { background-color: var(--background-secondary); } + .search-result-file-match:hover .search-result-file-match-destination-file:hover { background-color: var(--interactive-hover); box-shadow: var(--input-shadow-hover); color: var(--text-normal); } +} +.search-result-file-match-destination-file-icon { --icon-size: var(--icon-xs); --icon-stroke: var(--icon-xs-stroke-width); margin-right: var(--size-4-1); display: flex; color: var(--text-faint); } +.search-result-file-match-destination-file-icon .svg-icon { align-self: center; } +.search-result-file-match-destination-file-name { white-space: pre-wrap; word-break: break-all; } +.workspace-leaf.mod-active .search-result.has-focus .tree-item-self, .workspace-leaf.mod-active .search-result-file-match.has-focus { border-radius: var(--radius-s); box-shadow: inset 0 0 0 2px var(--background-modifier-border-focus); } +.search-results-info { color: var(--text-muted); display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--background-modifier-border); margin: var(--size-4-1) var(--size-4-2) 0; padding-bottom: var(--size-4-1); white-space: nowrap; } +.search-results-info .dropdown { height: 24px; box-shadow: none; background-color: transparent; font-size: 12px; color: var(--text-muted); text-align-last: right; max-width: 60%; text-overflow: ellipsis; white-space: nowrap; } +@media (hover: hover) { + .search-results-info .dropdown:hover { color: var(--interactive-accent); } +} +.search-results-info .dropdown option { color: initial; text-align: left; } +.search-results-result-count { font-size: var(--font-ui-smaller); } +.search-row { display: flex; margin: var(--size-4-2); gap: var(--size-4-1); } +.search-params { margin: var(--size-4-1) var(--size-4-4); } +.search-params input[type="text"], .search-params input[type="range"] { width: 100%; font-size: var(--font-ui-small); } +.search-params .mod-cta { margin-top: var(--size-2-3); width: 100%; } +.search-params .setting-item { padding: var(--size-2-3) 0; border: none; } +.search-params .setting-item .setting-item-info { display: flex; align-items: center; } +.search-params .setting-item:first-of-type { border-top: none; } +.search-params .setting-item.mod-slider { flex-direction: column; } +.search-params .setting-item.mod-slider > * { width: 100%; } +.search-params .setting-item.mod-slider .setting-item-info { margin-right: 0px; } +.search-params .setting-item.mod-slider .setting-item-control { padding-top: var(--size-4-3); } +.search-params .setting-item.mod-toggle .setting-item-control { padding-top: 0px; } +.search-params .setting-item.mod-search-setting .setting-item-info { margin-right: 0px; } +.search-params .setting-item-name { font-size: var(--font-ui-small); } +.search-params::-webkit-scrollbar, .search-params::-webkit-scrollbar-thumb { display: none; } +.global-search-input-container { flex-grow: 1; } +.more-options-icon { --icon-size: 10px; background-color: var(--icon-color); border-radius: 50%; color: var(--background-secondary); display: flex; margin-left: var(--size-2-3); opacity: var(--icon-opacity); padding: 0.5px; } +.clickable-icon:hover .more-options-icon { background-color: var(--icon-color-hover); opacity: var(--icon-opacity-hover); } +.slides-container { position: fixed; top: 0px; left: 0px; height: 100vh; width: 100vw; transition: -webkit-transform 0.8s ease 0s; background-color: rgb(25, 25, 25); z-index: var(--layer-slides); border: none; } +.slides-container li .collapse-indicator { display: none; } +.slides-close-btn { display: inline-block; position: absolute; top: var(--size-4-2); right: var(--size-4-2); color: var(--text-faint); cursor: var(--cursor); z-index: 1; } +@media (hover: hover) { + .slides-close-btn:hover { color: var(--text-muted); } +} +.reveal input[type="checkbox"] { width: 24px; height: 24px; } +.reveal .task-list-item, .reveal .footnote-item { list-style: none; } +.reveal .task-list-item { margin-left: -1.5em; } +.mod-sync-history .modal-content { height: 100%; } +.vault-list-item { margin: 6px 0px; display: flex; } +.vault-list-item.is-connected .vault-list-item-title { color: var(--text-normal); } +.vault-list-item-icon { color: var(--text-muted); position: relative; top: 1px; } +.vault-list-item-title { color: var(--text-muted); user-select: none; } +.vault-list-item-creation-time { color: var(--text-faint); font-size: var(--font-ui-small); } +.sync-status-icon { display: flex; align-items: center; cursor: var(--cursor); } +.sync-status-icon.mod-success { color: var(--text-success); } +.sync-status-icon.mod-working { color: var(--interactive-accent); } +.sync-status-icon.mod-error { color: var(--text-error); } +.sync-history-list-container { display: flex; flex-direction: column; flex-basis: 250px; flex-shrink: 0; border-right: 1px solid var(--background-modifier-border); } +.sync-history-list { overflow: auto; padding: var(--size-4-3); flex-grow: 1; display: flex; flex-direction: column; } +.sync-history-list .search-input-container { width: 100%; } +.sync-history-list-item-container { overflow: auto; flex: 1 1 0px; } +.sync-history-list-item { padding: var(--size-4-2) var(--size-4-3); margin-bottom: var(--size-4-2); cursor: var(--cursor); font-size: var(--font-ui-small); border-radius: var(--radius-s); transition: background-color 200ms ease-in-out 0s, color 200ms ease-in-out 0s; } +.sync-history-list-item:last-child { margin-bottom: 0px; } +.sync-history-list-item.is-active, .sync-history-list-item.is-active:hover { background-color: var(--interactive-accent); color: var(--text-on-accent); } +.sync-history-list-item.is-active .u-muted, .sync-history-list-item.is-active:hover .u-muted { color: var(--text-on-accent); opacity: 0.8; } +@media (hover: hover) { + .sync-history-list-item:hover { background-color: var(--background-modifier-hover); } +} +.sync-history-content-container { background-color: var(--background-primary); padding: 0px; height: auto; display: flex; flex-direction: column; width: 0px; flex: 1 1 auto; } +.sync-history-content-container .modal-button-container { border-top: 1px solid var(--background-modifier-border); margin: 0px; padding: 12px; justify-content: center; } +.sync-history-content-container textarea { resize: none; border: none; box-shadow: none; } +.sync-history-content-container textarea:hover, .sync-history-content-container textarea:active, .sync-history-content-container textarea:focus { border: none; box-shadow: none; } +.sync-history-content-empty { display: none; } +.sync-history-content-container.mod-empty .sync-history-content-empty { display: block; text-align: center; padding: 24px; } +.sync-history-content { display: flex; flex-direction: column; flex-grow: 1; overflow: hidden; padding: 0px; } +.sync-history-content .setting-item:first-child { padding: var(--size-4-4) var(--size-4-6) var(--size-4-4); border-bottom: 1px solid var(--background-modifier-border); } +.sync-history-content .setting-item-info { flex-grow: 0; font-weight: var(--bold-weight); } +.sync-history-content .setting-item-control { justify-content: flex-start; } +.sync-history-text, .sync-history-diff { flex: 1 0 auto; padding: var(--size-4-6); } +.sync-history-content-other { flex-grow: 1; padding: var(--size-4-6); text-align: center; } +.sync-history-content-other img { max-width: 100%; } +.sync-history-content-container.mod-empty .sync-history-content, .sync-history-content-container.mod-empty .sync-history-content-buttons { display: none; } +.sync-history-content-buttons { border-top: 1px solid var(--background-modifier-border); margin: 0px; padding: var(--size-4-3); } +.mod-selectable { cursor: var(--cursor); padding: var(--size-4-2) var(--size-4-4); border-radius: var(--radius-m); } +@media (hover: hover) { + .mod-selectable:hover { background-color: var(--background-modifier-hover); } +} +.sync-history-load-more-button { height: 38px; text-align: center; line-height: 38px; cursor: var(--cursor); color: var(--text-muted); } +@media (hover: hover) { + .sync-history-load-more-button:hover { color: var(--text-normal); } +} +.modal.mod-sync-log { height: var(--modal-height); width: var(--modal-width); max-width: var(--modal-max-width-narrow); padding: var(--size-4-4) 0 0 0; } +.modal.mod-sync-log .modal-title { padding: 0 var(--size-4-4); } +.modal.mod-sync-log .modal-content { display: flex; flex-direction: column; overflow: hidden; } +.modal.mod-sync-log .modal-button-container { margin: 0px; padding: var(--size-4-4); } +.modal.mod-sync-log .setting-item.mod-toggle { padding: 0 var(--size-4-4) var(--size-4-4); } +.modal.mod-sync-log .sync-log-container { overflow: auto; flex-grow: 1; font-family: var(--font-monospace); font-size: var(--font-ui-smaller); color: var(--text-muted); border-top: 1px solid var(--background-modifier-border); border-bottom: 1px solid var(--background-modifier-border); padding: var(--size-4-4); background-color: var(--background-secondary); } +.modal.mod-sync-log .sync-log-container .list-item { line-height: var(--line-height-normal); margin: 0px; } +.modal.mod-sync-log .sync-log-container .list-item.mod-error { color: var(--text-error); } +.sync-file-tree-container { max-height: calc(90vh - 250px); overflow: auto; } +.sync-exclude-folder { display: flex; margin: var(--size-4-3) 0; } +.sync-exclude-folder > * { align-self: center; display: flex; } +.sync-exclude-folder-name { flex-grow: 1; } +.sync-exclude-folder-remove { visibility: hidden; margin-right: 6px; } +.sync-exclude-folder:hover .sync-exclude-folder-remove { visibility: visible; } +.tag-pane-tag.is-active { background-color: var(--interactive-accent); color: var(--text-on-accent); } +.tag-pane-tag.is-active .tag-pane-tag-count { background-color: var(--background-modifier-hover); color: var(--text-normal); } +@media (hover: hover) { + .tag-pane-tag.is-active:hover { background-color: var(--interactive-accent); color: var(--text-on-accent); } +} +.tag-container { font-size: var(--font-ui-small); padding: var(--size-4-3) var(--size-4-3) var(--size-4-8); overflow: auto; } +.tree-item-children .tag-pane-tag .tag-pane-tag-parent { display: none; } +.workspace-leaf.mod-active .tree-item.has-focus > .tag-pane-tag { border-radius: var(--radius-s); box-shadow: 0 0 0 2px var(--background-modifier-border-focus); } +.mod-canvas-color-1 { --canvas-color: var(--canvas-color-1); } +.mod-canvas-color-2 { --canvas-color: var(--canvas-color-2); } +.mod-canvas-color-3 { --canvas-color: var(--canvas-color-3); } +.mod-canvas-color-4 { --canvas-color: var(--canvas-color-4); } +.mod-canvas-color-5 { --canvas-color: var(--canvas-color-5); } +.mod-canvas-color-6 { --canvas-color: var(--canvas-color-6); } +.workspace-leaf-content[data-type="canvas"] .view-content { padding: 0px; position: relative; } +body { --canvas-color: 192, 192, 192; } +body.theme-dark { --canvas-color: 126, 126, 126; } +.canvas-wrapper { position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; --resizer-size: 20px; --shadow-stationary: 0px 0.5px 1px 0.5px rgba(0, 0, 0, 0.1); --shadow-drag: 0px 2px 10px rgba(0, 0, 0, 0.1); --shadow-border-accent: 0 0 0 2px var(--color-accent); --zoom-multiplier: 1; background-color: var(--canvas-background); overflow: hidden; contain: strict; touch-action: none; user-select: none; } +.canvas-wrapper.is-dragging { cursor: grabbing; } +.canvas-wrapper.is-dragging iframe:not(.is-controlled), .canvas-wrapper.is-dragging webview { pointer-events: none; } +.canvas-wrapper.is-screenshotting { z-index: 999999; } +.canvas-wrapper.is-screenshotting .canvas-card-menu, .canvas-wrapper.is-screenshotting .canvas-controls { display: none !important; } +.canvas-wrapper.is-screenshotting * { pointer-events: none !important; } +.canvas-mover { position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; cursor: grab; } +.canvas-mover:active { cursor: grabbing; } +.canvas-background { position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; pointer-events: none; } +.canvas-background circle { fill: var(--canvas-dot-pattern); } +.canvas { position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; transform-origin: 0px 0px; pointer-events: none; } +.canvas > * { pointer-events: initial; } +.canvas-selection { pointer-events: none; position: absolute; background-color: hsla(var(--color-accent-hsl), 0.1); border: 2px solid var(--color-accent); z-index: -1; } +.canvas-selection.mod-group-selection { border-width: 3px; border-radius: 3px; background-color: hsla(var(--color-accent-hsl), 0.03); border-color: hsla(var(--color-accent-hsl), 0.3); pointer-events: initial; } +.canvas-wrapper:not(.mod-readonly) .canvas-selection.mod-group-selection { cursor: grab; } +.canvas-wrapper:not(.mod-readonly) .canvas-selection.mod-group-selection:active { cursor: grabbing; } +.canvas-selection.mod-node-highlight { border-radius: var(--radius-m); } +.canvas-controls, .canvas-card-menu { display: flex; position: absolute; z-index: var(--layer-cover); font-size: var(--font-ui-medium); } +.canvas-card-menu { background-color: var(--background-primary); border-radius: var(--radius-s); box-shadow: var(--input-shadow); bottom: var(--size-4-4); left: 50%; transform: translateX(-50%); align-items: stretch; } +.is-phone .canvas-card-menu, .mod-toolbar-open .canvas-card-menu { display: none; } +.theme-dark .canvas-card-menu { background-color: var(--background-secondary); } +.canvas-card-menu .canvas-card-menu-divider { width: 1px; background-color: var(--background-modifier-border); } +.canvas-card-menu .canvas-card-menu-button { color: var(--text-muted); height: auto; display: flex; line-height: 1; align-items: center; justify-content: center; padding: var(--size-4-2); --icon-size: var(--icon-xl); --icon-stroke: var(--icon-xl-stroke-width); } +@media (hover: hover) { + .canvas-card-menu .canvas-card-menu-button:hover { color: var(--color-accent); } +} +.canvas-card-menu .canvas-card-menu-button svg { fill: var(--background-primary); } +.theme-dark .canvas-card-menu .canvas-card-menu-button svg { fill: var(--background-secondary); } +.canvas-card-menu .canvas-card-menu-button.mod-draggable { cursor: grab; } +.canvas-card-menu .canvas-card-menu-button.mod-draggable:active { cursor: grabbing; } +.canvas-card-menu .canvas-card-menu-button.mod-draggable svg { transition: transform 90ms ease-out 0s; } +@media (hover: hover) { + .canvas-card-menu .canvas-card-menu-button.mod-draggable:hover svg { transform: translateY(-6px); filter: drop-shadow(rgba(0, 0, 0, 0.1) 0px 6px 2px); } +} +.canvas-controls { right: var(--size-4-2); top: var(--size-4-2); gap: var(--size-4-2); display: flex; flex-direction: column; } +.canvas-control-group { border-radius: var(--radius-s); background-color: var(--background-primary); border: 1px solid var(--background-modifier-border); box-shadow: var(--input-shadow); display: flex; flex-direction: column; overflow: hidden; } +.canvas-control-item { border-radius: 0px; box-shadow: none; height: auto; display: flex; line-height: 1; font-size: inherit; align-items: center; justify-content: center; cursor: var(--cursor); padding: var(--size-4-2); border-bottom: 1px solid var(--background-modifier-border); color: var(--text-muted); background-color: var(--interactive-normal); --icon-size: var(--icon-s); --icon-stroke: var(--icon-s-stroke-width); } +.canvas-control-item:last-child { border-bottom: none; } +@media (hover: hover) { + .canvas-control-item:hover { color: var(--text-normal); background-color: var(--interactive-hover); } +} +.canvas-control-item.is-active { color: var(--color-accent); } +.canvas-control-item.is-disabled svg { color: var(--text-faint); } +.canvas-control-item svg { pointer-events: none; } +.canvas-node-container { background-color: var(--background-primary); border-radius: var(--radius-m); border: 2px solid rgb(var(--canvas-color)); contain: strict; display: flex; flex-direction: column; overflow: hidden; position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; box-shadow: var(--shadow-stationary); } +.canvas-wrapper:not(.mod-readonly) .canvas-node:not(.is-editing) .canvas-node-container { cursor: grab; } +.canvas-wrapper:not(.mod-readonly) .canvas-node:not(.is-editing) .canvas-node-container:active { cursor: grabbing; } +.canvas-node-label { position: absolute; left: 0px; top: calc(-1 * var(--size-4-1) * var(--zoom-multiplier)); transform: translate(0, -100%) scale(var(--zoom-multiplier)); transform-origin: left bottom; max-width: calc(100% / var(--zoom-multiplier)); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--canvas-card-label-color); --icon-size: 1em; } +body:not(.is-ios) .canvas-wrapper.mod-animating .canvas-node-label { transition: transform 500ms cubic-bezier(0.16, 1, 0.3, 1) 0s; } +.canvas-node-label svg { position: relative; top: 2px; margin-right: var(--size-4-1); } +.canvas-node-label.mod-hover-label { opacity: 0; } +@media (hover: hover) { + .canvas-node-label:hover { color: var(--text-muted); } + .canvas-node:hover .canvas-node-label.mod-hover-label { opacity: 1; } +} +@media (hover: none) { + .canvas-node.is-focused .canvas-node-label.mod-hover-label { opacity: 1; } +} +.canvas-wrapper.mod-zoomed-out .canvas-node-label { display: none; } +.canvas-node-placeholder { display: flex; align-items: center; justify-content: center; text-align: center; width: 100%; height: 100%; overflow: hidden; overflow-wrap: anywhere; padding: var(--size-4-6); font-size: 32px; font-weight: var(--font-semibold); } +.canvas-node-placeholder::after { border-radius: var(--radius-s); content: " "; display: block; position: absolute; top: var(--size-4-4); right: var(--size-4-4); bottom: var(--size-4-4); left: var(--size-4-4); background-color: rgba(var(--canvas-color), 0.1); } +.canvas-icon-placeholder { display: flex; width: 40%; height: 40%; } +.canvas-icon-placeholder svg { opacity: 0.3; color: rgb(var(--canvas-color)); width: 100%; height: 100%; } +.canvas-node-interaction-layer { position: absolute; width: 0px; height: 0px; pointer-events: none; } +.canvas-node-interaction-layer > * { pointer-events: initial; } +.canvas-node { --shadow-border-themed-inset: inset 0 0 0 1px rgb(var(--canvas-color)); --shadow-border-themed: 0 0 0 2px rgb(var(--canvas-color)); position: absolute; width: 0px; height: 0px; } +.canvas-node.is-dragging { pointer-events: none; } +.canvas-node.is-dragging .canvas-node-container { box-shadow: var(--shadow-drag); } +.canvas-node.is-selected, .canvas-node.is-focused { touch-action: initial; } +.canvas-node.is-selected .canvas-node-label, .canvas-node.is-focused .canvas-node-label { color: var(--text-muted); } +.canvas-node.is-selected .canvas-node-container, .canvas-node.is-focused .canvas-node-container { border-color: var(--color-accent); box-shadow: var(--shadow-stationary), var(--shadow-border-accent); } +.canvas-node.is-selected.is-dragging .canvas-node-container, .canvas-node.is-focused.is-dragging .canvas-node-container { box-shadow: var(--shadow-drag), var(--shadow-border-accent); } +.canvas-node.is-themed .canvas-node-container { border-color: rgba(var(--canvas-color), 0.7); box-shadow: inset 0 0 0 1px rgba(var(--canvas-color), 0.7), var(--shadow-stationary); } +.canvas-node.is-selected.is-themed .canvas-node-container, .canvas-node.is-focused.is-themed .canvas-node-container { border-color: rgb(var(--canvas-color)); box-shadow: var(--shadow-border-themed-inset), var(--shadow-border-themed); } +.canvas-node.is-selected.is-themed.is-dragging .canvas-node-container, .canvas-node.is-focused.is-themed.is-dragging .canvas-node-container { box-shadow: var(--shadow-border-themed-inset), var(--shadow-border-themed); } +.canvas-node.is-dummy { cursor: grabbing; } +.canvas-node.is-dummy .canvas-node-container { border: 4px solid var(--color-accent); box-shadow: rgba(0, 0, 0, 0.15) 0px 2px 10px; background-color: hsla(var(--color-accent-hsl), 0.2); } +.canvas-node.is-focused:not(.is-dragging) .canvas-node-content-blocker { display: none; } +.canvas-node-content-blocker { position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; z-index: var(--layer-cover); } +.canvas-node-group:not(.is-focused):not(.is-selected) { pointer-events: none; } +.canvas-node-group .canvas-node-resizer { pointer-events: initial; } +.canvas-node-group .canvas-node-container { background-color: transparent; } +.canvas-node-group .canvas-node-content { background-color: rgba(var(--canvas-color), 0.07); } +.canvas-group-label { position: absolute; left: 0px; top: calc(-1 * var(--size-4-1) * var(--zoom-multiplier)); transform: translate(0, -100%) scale(var(--zoom-multiplier)); transform-origin: left bottom; max-width: calc(100% / var(--zoom-multiplier)); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; pointer-events: initial; font-size: 1.5em; padding: var(--size-4-1) var(--size-4-2); border-radius: var(--radius-s); color: var(--text-muted); background-color: rgba(var(--canvas-color), 0.1); line-height: 1; } +body:not(.is-ios) .canvas-wrapper.mod-animating .canvas-group-label { transition: transform 500ms cubic-bezier(0.16, 1, 0.3, 1) 0s; } +.canvas-wrapper:not(.mod-readonly) .canvas-group-label { cursor: grab; } +.canvas-wrapper:not(.mod-readonly) .canvas-group-label:active { cursor: grabbing; } +.canvas-group-label[contenteditable="true"] { cursor: text; background-color: var(--background-primary); box-shadow: 0 0 0 2px rgb(var(--canvas-color)); color: var(--text-normal); text-overflow: initial; } +.canvas-node-group.is-themed .canvas-group-label:not([contenteditable="true"]) { background-color: rgb(var(--canvas-color)); } +.canvas-node-group.is-themed .canvas-group-label:not([contenteditable="true"]).mod-foreground-light { color: var(--text-on-accent); } +.canvas-node-group.is-themed .canvas-group-label:not([contenteditable="true"]).mod-foreground-dark { color: var(--text-on-accent-inverted); } +.canvas-node-content { backface-visibility: hidden; width: 100%; height: 100%; overflow: hidden; position: relative; } +.canvas-node-content.markdown-embed { border: none; padding: 0px; } +.canvas-node-content.markdown-embed .inline-title { cursor: text; } +.canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view { padding: 0 var(--size-4-6); display: flex; flex-direction: column; } +.canvas-wrapper:not(.mod-readonly) .canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view { user-select: none; } +.canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view::before, .canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view::after { content: " "; display: block; min-height: min(calc(var(--canvas-node-height) * 0.1 - 3px), var(--size-4-6)); max-height: var(--size-4-4); flex: 1 1 0px; } +.canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view > .markdown-preview-sizer { flex: 1 0 0px; } +.canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view .callout { mix-blend-mode: normal; } +.canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view .markdown-preview-pusher + div > :first-child { margin-top: 0px; } +.canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view .mod-header + div > :first-child { margin-top: 0px; } +.canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view .markdown-preview-sizer > div:last-child > :last-child { margin-bottom: 0px; } +.is-focused .canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view { transform: translateZ(0px); } +.canvas-node.is-themed .canvas-node-content { background-color: rgba(var(--canvas-color), 0.07); } +.canvas-node-content.media-embed { justify-content: center; align-items: center; display: flex; } +.canvas-node-content.media-embed img, .canvas-node-content.media-embed video, .canvas-node-content.media-embed audio { flex-shrink: 0; flex-grow: 1; } +.canvas-node-content.media-embed img:not([width]), .canvas-node-content.media-embed video, .canvas-node-content.media-embed audio { max-width: 100%; } +.canvas-node-resizer { position: absolute; height: calc(var(--resizer-size) * var(--zoom-multiplier)); width: calc(var(--resizer-size) * var(--zoom-multiplier)); } +.is-selected .canvas-node-resizer { pointer-events: none; } +body.is-mobile .canvas-node-resizer { --zoom-multiplier: 1; } +.canvas-wrapper.mod-readonly .canvas-node-resizer { display: none; } +.canvas-node-resizer[data-resize="top"] { left: 0px; right: 0px; width: auto; top: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); cursor: ns-resize; } +.canvas-node-resizer[data-resize="bottom"] { left: 0px; right: 0px; width: auto; bottom: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); cursor: ns-resize; } +.canvas-node-resizer[data-resize="left"] { top: 0px; bottom: 0px; height: auto; left: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); cursor: ew-resize; } +.canvas-node-resizer[data-resize="right"] { top: 0px; bottom: 0px; height: auto; right: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); cursor: ew-resize; } +.canvas-node-resizer[data-resize="topright"] { right: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); top: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); cursor: nesw-resize; } +.canvas-node-resizer[data-resize="bottomright"] { right: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); bottom: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); cursor: nwse-resize; } +.canvas-node-resizer[data-resize="topleft"] { left: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); top: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); cursor: nwse-resize; } +.canvas-node-resizer[data-resize="bottomleft"] { left: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); bottom: calc(var(--resizer-size) * var(--zoom-multiplier) * -0.5); cursor: nesw-resize; } +.is-mobile .canvas-node-resizer { pointer-events: none; } +.is-mobile .canvas-wrapper:not(.mod-readonly) .canvas-node-interaction-layer .canvas-node-resizer[data-resize="topright"], .is-mobile .canvas-wrapper:not(.mod-readonly) .canvas-node-interaction-layer .canvas-node-resizer[data-resize="bottomright"], .is-mobile .canvas-wrapper:not(.mod-readonly) .canvas-node-interaction-layer .canvas-node-resizer[data-resize="topleft"], .is-mobile .canvas-wrapper:not(.mod-readonly) .canvas-node-interaction-layer .canvas-node-resizer[data-resize="bottomleft"] { pointer-events: all; width: 20px; height: 20px; display: block; background-color: var(--background-primary); border: 2px solid var(--color-accent); border-radius: 3px; } +.canvas-node-connection-point { width: calc(var(--resizer-size) * var(--zoom-multiplier)); height: calc(var(--resizer-size) * var(--zoom-multiplier)); position: absolute; pointer-events: all; cursor: pointer; } +.canvas-node-connection-point[data-side="top"] { top: 1px; left: calc(50% - var(--resizer-size) * var(--zoom-multiplier) / 2); } +.canvas-node-connection-point[data-side="right"] { right: 1px; top: calc(50% - var(--resizer-size) * var(--zoom-multiplier) / 2); } +.canvas-node-connection-point[data-side="bottom"] { bottom: 1px; left: calc(50% - var(--resizer-size) * var(--zoom-multiplier) / 2); } +.canvas-node-connection-point[data-side="left"] { left: 1px; top: calc(50% - var(--resizer-size) * var(--zoom-multiplier) / 2); } +.canvas-node-connection-point::after { content: " "; background-color: var(--color-accent); border-radius: 50%; border: 3px solid var(--background-modifier-border); box-sizing: border-box; display: block; height: calc(var(--resizer-size) * var(--zoom-multiplier)); opacity: 0; position: relative; width: calc(var(--resizer-size) * var(--zoom-multiplier)); left: 0px; top: 0px; } +.is-mobile .canvas-node-interaction-layer .canvas-node-connection-point::after, .canvas-node-resizer:hover .canvas-node-connection-point::after { opacity: 1; } +.canvas-snaps { position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; overflow: visible; pointer-events: none; opacity: 0.6; } +.canvas-snaps line { stroke-width: 1px; stroke: var(--color-accent); } +.canvas-snaps circle { fill: var(--color-accent); } +.canvas-edges { position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; overflow: visible; pointer-events: none; } +.canvas-edges > * { pointer-events: initial; } +.canvas-edges path.canvas-display-path { pointer-events: none; stroke-width: calc(3px * var(--zoom-multiplier)); stroke: rgb(var(--canvas-color)); fill: none; transition: stroke-width 100ms ease-out 0s; } +.canvas-edges path.canvas-interaction-path { pointer-events: stroke; stroke-width: calc(24px * var(--zoom-multiplier)); stroke-linecap: round; stroke: transparent; fill: none; transition: stroke 100ms ease-out 0s; } +.canvas-wrapper:not(.mod-readonly) .canvas-edges path.canvas-interaction-path { cursor: grab; } +.canvas-wrapper:not(.mod-readonly) .canvas-edges path.canvas-interaction-path:active { cursor: grabbing; } +.canvas-edges polygon.canvas-path-end { pointer-events: none; stroke: rgb(var(--canvas-color)); fill: rgb(var(--canvas-color)); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1px; transform-box: fill-box; transform: scale(var(--zoom-multiplier)); transform-origin: center top; } +.canvas-edges g.is-focused path.canvas-display-path, .canvas:not(.is-connecting) .canvas-edges g:hover path.canvas-display-path { stroke-width: calc(5.5px * var(--zoom-multiplier)); } +.canvas-edges g.is-focused path.canvas-interaction-path, .canvas:not(.is-connecting) .canvas-edges g:hover path.canvas-interaction-path { stroke: rgba(var(--canvas-color), 0.1); } +.canvas-path-label-wrapper { position: absolute; width: fit-content; height: fit-content; } +.canvas-path-label { font-size: calc(var(--font-ui-large) * var(--zoom-multiplier)); background-color: var(--background-primary); border-radius: var(--radius-s); padding: calc(var(--size-2-3) * var(--zoom-multiplier)); line-height: var(--line-height-tight); white-space: pre-wrap; transform: translate(-50%, -50%); text-align: center; max-width: calc(17em * var(--zoom-multiplier)); } +.canvas-path-label.is-editing { border-color: rgb(var(--canvas-color)); box-shadow: var(--shadow-stationary), 0 0 0 calc(3px * var(--zoom-multiplier)) rgb(var(--canvas-color)); } +.canvas-menu-container { position: absolute; width: 0px; height: 0px; top: 0px; left: 0px; } +.canvas-menu { position: relative; width: fit-content; height: fit-content; line-height: 1; background-color: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); box-shadow: rgba(0, 0, 0, 0.07) 0px 2px 10px; display: flex; padding: var(--size-2-1); gap: 1px; } +.canvas-menu .clickable-icon { padding: var(--size-2-3) var(--size-4-2); } +.canvas-submenu { display: flex; position: absolute; top: calc(100% + 5px); left: 50%; transform: translateX(-50%); padding: var(--size-4-2); border: 1px solid var(--background-modifier-border); background-color: var(--background-primary); border-radius: var(--radius-s); box-shadow: rgba(0, 0, 0, 0.07) 0px 2px 10px; overflow: hidden; gap: 1px; } +.canvas-submenu .clickable-icon { padding: var(--size-2-2) var(--size-2-3); } +.canvas-color-picker-item { cursor: var(--cursor); width: 24px; height: 24px; margin: 2px; border-radius: 12px; border: 2px solid var(--background-primary); background-color: rgb(var(--canvas-color)); } +.canvas-color-picker-item.is-active { box-shadow: 0 0 0 2px rgb(var(--canvas-color)); } +@media (hover: hover) { + .canvas-color-picker-item:hover { box-shadow: 0 0 0 2px rgb(var(--canvas-color)); } +} +.canvas-color-picker-item input[type="color"] { margin: -4px 0px 0px -2px; --swatch-width: 20px; --swatch-height: 20px; opacity: 0; } +.canvas-color-picker-item.canvas-color-picker-custom:not(.is-active) { background: conic-gradient(var(--color-red), var(--color-yellow), var(--color-green), var(--color-blue), var(--color-purple), var(--color-red)); } +@media (hover: hover) { + .canvas-color-picker-item.canvas-color-picker-custom:not(.is-active):hover { box-shadow: 0 0 0 2px var(--background-modifier-border-hover); } +} +.canvas-empty-embed-container { align-items: center; display: flex; flex-direction: column; gap: var(--size-4-6); justify-content: center; height: 100%; padding: var(--size-4-3); text-align: center; } +.canvas-empty-embed-action-list { display: flex; flex-direction: column; gap: var(--size-4-3); } +.canvas-empty-embed-action-list button { font-size: var(--font-text-size); padding: var(--size-4-5) var(--size-4-9); } +.canvas-help { display: flex; flex-direction: column; gap: var(--size-4-3); } +.canvas-instruction { display: flex; justify-content: space-between; } +.canvas-instruction-desc { display: flex; gap: var(--size-4-1); } +.canvas-instruction-desc .setting-hotkey { display: inline; align-self: unset; padding: var(--size-4-1); margin: 0px; line-height: 1; } +.canvas-placeholder-message { max-width: 70vw; background: hsla(var(--color-accent-hsl), 0.1); border-radius: var(--radius-m); color: var(--color-accent); font-size: var(--font-ui-large); line-height: var(--line-height-normal); padding: var(--size-4-4) var(--size-4-6); pointer-events: none; position: absolute; text-align: center; transform: translate(-50%, -50%); } +.canvas-minimap { width: 100%; height: 100%; padding: var(--size-4-1); } +.inline-embed > .canvas-minimap { max-height: var(--embed-canvas-max-height); } +.canvas-minimap rect { stroke-width: 5px; stroke: var(--background-modifier-border); fill: var(--background-modifier-border); fill-opacity: 0.65; } +.canvas-minimap rect.is-themed { stroke: rgb(var(--canvas-color)); fill: rgb(var(--canvas-color)); fill-opacity: 0.5; } +.canvas-minimap path { stroke: rgb(192, 192, 192); fill: none; } +.canvas-minimap path.is-themed { stroke: rgb(var(--canvas-color)); } +.canvas-cursor { position: absolute; width: 1px; height: 1px; border: 5px solid var(--color-accent); border-radius: 5px; pointer-events: none; } +.canvas-watermark * { font-family: var(--font-default) !important; } +.starter.is-hidden-frameless .titlebar { display: block; } +.starter { user-select: none; padding-top: 0px !important; } +.starter .titlebar { background-color: transparent; border: none; } +.starter .titlebar-inner .titlebar-text { display: none; } +.starter-screen { display: flex; flex-direction: column; background-color: var(--background-primary); width: 100%; height: 100%; } +.starter-screen-inner { flex-grow: 1; display: flex; height: calc(100% - 24px); } +.splash { align-items: center; background-color: var(--background-primary); display: flex; flex-direction: column; justify-content: center; flex: 1 1 auto; text-align: center; padding: 36px 0px 0px; } +.splash-brand { flex: 0 0 content; padding: 20px 0px; } +.splash-brand-logo-text { margin-top: 20px; color: white; } +.splash-brand-version { color: var(--text-muted); margin-top: 8px; font-size: var(--font-ui-small); } +.help-options-container { flex: 1 0 0px; overflow: auto; width: 100%; max-width: 82%; text-align: left; padding: var(--size-4-6) 0; } +.help-options-container::-webkit-scrollbar { display: none; } +.help-options-container .setting-item-description { max-width: 30em; padding-right: 12px; } +.help-options-container .setting-icon .svg-icon { stroke-width: 1px; --icon-size: 48px; color: var(--text-faint); } +.open-vault-options-container { flex: 1 0 0px; overflow: auto; width: 100%; position: relative; } +.open-vault-options-container::-webkit-scrollbar { display: none; } +.open-vault-options { position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; padding: 12px 36px; text-align: left; overflow-y: auto; display: flex; flex-direction: column; } +.open-vault-options input[type="text"] { width: 150px; } +.open-vault-options .setting-item-control button { width: 100px; } +.open-vault-options .back-button { display: flex; align-items: center; app-region: no-drag; color: var(--text-muted); user-select: none; cursor: var(--cursor); } +@media (hover: hover) { + .open-vault-options .back-button:hover { color: var(--text-normal); } +} +.open-vault-options .setting-item-description { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } +.open-vault-options.mod-login { justify-content: flex-start; } +.open-vault-options.mod-login input[type="text"] { width: 250px; } +.quick-start-container { margin-bottom: 10px; } +.quick-start-container button { font-size: var(--font-ui-medium); padding: 8px 60px; } +.quick-start-container + .setting-item { border-top: none; } +.open-folder-input[type="text"] { font-size: var(--font-ui-small); width: 200px; height: 28px; } +.browse-folder-button { margin-left: 10px; } +.open-folder-button { margin-top: 14px; padding: 6px 36px; } +.starter .notice { top: 38px; } +.setting-item.mod-change-language { app-region: no-drag; } +.setting-item.mod-change-language .setting-item-info { flex-grow: 0; } +.setting-item.mod-change-language .setting-item-control { flex-grow: 1; justify-content: flex-start; } +.setting-item.mod-change-language select { width: 100%; max-width: 100%; } +.setting-item.mod-change-language .setting-item-name { color: var(--text-faint); position: relative; top: 3px; cursor: var(--cursor); } +@media (hover: hover) { + .setting-item.mod-change-language .setting-item-name:hover { color: var(--text-muted); } +} +.setting-icon { display: flex; color: var(--text-muted); margin-right: 24px; } +.choose-vault-clickable-area { text-align: center; padding: 40px 60px; border: 5px dashed var(--interactive-accent); border-radius: 10px; cursor: var(--cursor); } +@media (hover: hover) { + .choose-vault-clickable-area:hover { background-color: hsla(var(--interactive-accent-hsl), 0.4); border: 5px solid hsla(var(--interactive-accent-hsl), 0.4); } +} +.choose-vault-label-welcome { line-height: 46px; color: var(--text-muted); } +.choose-vault-label-choose { font-weight: var(--font-extrabold); font-size: 32px; } +.recent-vaults { background-color: var(--background-secondary); border-right: 1px solid var(--background-modifier-border); padding: var(--size-4-8) 0 0 0; flex-shrink: 0; width: 280px; overflow-y: hidden; height: 100%; } +.recent-vaults-header { height: 30px; line-height: 30px; font-size: 18px; color: var(--text-muted); } +.recent-vaults-list { overflow-y: auto; height: 100%; padding: var(--size-4-2); display: flex; flex-direction: column; } +.recent-vaults-list::after { app-region: drag; display: block; content: " "; width: 100%; height: 100px; flex-grow: 1; } +.recent-vaults-list-item { app-region: no-drag; border-radius: var(--radius-s); margin-bottom: var(--size-4-1); padding: var(--size-4-2) var(--size-4-6) var(--size-4-2) var(--size-4-3); cursor: var(--cursor); position: relative; } +@media (hover: hover) { + .recent-vaults-list-item:hover { background-color: var(--background-modifier-hover); color: var(--text-on-accent); } +} +.recent-vaults-list-item-name, .recent-vaults-list-item-path { word-break: break-all; } +.recent-vaults-list-item-name { border-radius: 2px; border: 1px solid transparent; } +.recent-vaults-list-item-name[contenteditable] { cursor: text; border-color: var(--interactive-accent); background-color: var(--background-modifier-hover); font-size: 0.9em; padding: 0 var(--size-4-1); } +.recent-vaults-list-item-path { font-size: var(--font-ui-smaller); color: var(--text-muted); line-height: 16px; } +.recent-vaults-list-item-option-button { position: absolute; top: var(--size-4-3); right: var(--size-4-1); color: var(--text-faint); width: 30px; height: 30px; line-height: 36px; text-align: center; transition: background-color 200ms ease-in-out 0s; } +.recent-vaults-list-item-option-button:hover { color: var(--text-normal); } +:root { --safe-area-inset-top: env(safe-area-inset-top); --safe-area-inset-bottom: env(safe-area-inset-bottom); --safe-area-inset-left: env(safe-area-inset-left); --safe-area-inset-right: env(safe-area-inset-right); } +.is-mobile { --ribbon-width: 58px; --view-header-height: 50px; --mobile-toolbar-height: 40px; --caret-color: var(--text-accent); --font-ui-smaller: calc(var(--font-text-size) * 0.8); --font-ui-small: calc(var(--font-text-size) * 0.937); --font-ui-medium: var(--font-text-size); --font-ui-large: calc(var(--font-text-size) * 1.2); --icon-s: 18px; --icon-m: 20px; --icon-l: 24px; --icon-l-stroke-width: 1.8px; --icon-opacity: 1; --input-height: 40px; --input-shadow: none; --input-shadow-hover: none; --input-font-weight: var(--font-medium); --input-border-width: 0px; --interactive-normal: var(--background-secondary); --mobile-sidebar-width: 340px; --mobile-sidebar-max-width: 500px; --nav-item-padding: var(--size-2-3) var(--size-4-2) var(--size-2-3) var(--size-4-6); --nav-item-color: var(--text-normal); --search-clear-button-size: 16px; --search-icon-size: 20px; --settings-home-background: var(--background-secondary); --slider-thumb-border-width: 0px; --slider-thumb-height: 24px; --slider-thumb-width: 24px; --slider-thumb-y: -9px; --slider-track-height: 6px; --swatch-shadow: none; --swatch-height: 40px; --swatch-width: 40px; --swatch-radius: 40px; --toggle-width: 48px; --toggle-radius: 26px; --toggle-thumb-radius: 26px; --toggle-thumb-height: 26px; --toggle-thumb-width: 26px; --file-margins: var(--size-4-2) var(--size-4-5); --background-modifier-cover: rgba(0, 0, 0, 0.25); --background-modifier-form-field: var(--background-secondary); --keyboard-background: var(--background-primary); --checkbox-size: 17px; } +.is-mobile.theme-dark { --color-base-00: #000; --color-base-10: #111; --color-base-20: #1e1e1e; --tag-background: hsla(var(--interactive-accent-hsl), 0.2); --modal-background: var(--background-secondary); --search-result-background: var(--background-secondary); --background-modifier-form-field: var(--background-modifier-border); --background-modifier-cover: rgba(0, 0, 0, 0.5); --background-modifier-hover: rgba(var(--mono-rgb-100), 0.15); --settings-home-background: var(--background-primary); } +.is-tablet { --nav-item-padding: var(--size-2-3) var(--size-4-2) var(--size-2-3) var(--size-4-6); --tab-font-size: var(--font-ui-smaller); } +.is-tablet.theme-dark { --titlebar-background: var(--background-primary); --titlebar-background-focused: var(--background-primary); --interactive-normal: var(--background-modifier-border); } +.is-phone { --border-width: 0.5pt; --divider-width: 0.5pt; --tab-outline-width: 0.5pt; --modal-header-height: 44px; --modal-community-sidebar-width: 100%; --nav-item-size: var(--font-ui-medium); } +body.is-mobile { height: 100vh; width: 100vw; caret-color: var(--caret-color); padding-bottom: 50px; } +.is-mobile .markdown-source-view.mod-cm6 .cm-content, .is-mobile .mod-cm6 .cm-line { caret-color: var(--caret-color); } +.is-mobile .markdown-source-view.mod-cm6 .cm-gutters { margin-left: -18px; } +.is-mobile .workspace > .mod-root { padding-left: var(--safe-area-inset-left); } +body.is-mobile { padding: var(--safe-area-inset-top) 0 0 0; text-size-adjust: 100%; } +.is-mobile .workspace-split.mod-left-split, .is-mobile .workspace-split.mod-right-split { display: none; } +.is-mobile .tree-item .tree-item-self { padding-right: var(--size-4-2); } +.is-mobile .input-label { display: block; text-align: left; color: var(--text-muted); margin-bottom: 8px; } +.is-mobile input[type="text"] { display: block; width: 100%; padding: 8px 12px; height: auto; } +.is-mobile .markdown-rendered pre:not(:hover) > button.copy-code-button { display: block; } +.is-mobile .markdown-rendered button.copy-code-button { width: auto; } +.is-mobile .empty-state-action-list { margin-top: 40px; } +.is-mobile .empty-state-action { background-color: var(--background-primary-alt); margin: 12px 0px; padding: 6px 30px; border-radius: var(--button-radius); text-align: center; } +.is-mobile .login-field { width: 100%; margin: 0.5em 0px; } +.is-mobile .login-field input { width: 100%; } +.is-mobile .markdown-rendered .frontmatter-container { margin-top: 20px; } +.is-mobile .markdown-rendered .heading-collapse-indicator { margin-left: -20px; } +.is-mobile .markdown-rendered ul, .is-mobile .markdown-rendered ol { padding-inline-start: 25px; } +.is-mobile .message-container { text-align: center; margin: 8px 0px; } +.is-mobile .search-result-file-match-replace-button { display: block; position: relative; padding: 6px 10px; right: 0px; margin-top: var(--size-4-3); background-color: var(--settings-home-background); } +.is-mobile .suggestion-flair { position: relative; margin-right: 6px; left: 0px; top: 0px; } +.is-mobile .document-search-container { height: auto; margin-left: 0px; margin-right: 0px; padding: 0 var(--size-4-4) var(--size-4-2); border-bottom: var(--border-width) solid var(--background-modifier-border); } +.is-mobile .document-search-container.mod-replace-mode { height: auto; } +.is-mobile .document-search, .is-mobile .document-replace { height: auto; padding: 0px; } +.is-mobile .document-search .document-search-button, .is-mobile .document-replace .document-search-button { height: auto; padding: 6px 0px; background-color: transparent; color: var(--text-accent); } +.is-mobile .document-search input, .is-mobile .document-replace input, .is-mobile .document-search button, .is-mobile .document-replace button { width: auto; flex-grow: 1; } +.is-mobile .document-search .document-search-buttons, .is-mobile .document-replace .document-search-buttons, .is-mobile .document-search .document-replace-buttons, .is-mobile .document-replace .document-replace-buttons { display: flex; flex-grow: 1; } +.is-mobile .document-search .document-search-close-button, .is-mobile .document-replace .document-search-close-button { height: 34px; line-height: 34px; top: 0px; } +.is-tablet .mod-left-split-toggle { display: none; } +.is-tablet button:not(.clickable-icon) { padding: var(--size-4-1) var(--size-4-5); } +.is-phone button { width: 100%; } +.is-phone .vault-list-item-creation-time { display: none; } +.is-phone .vault-list-item { padding: 5px 0px; } +.is-phone .vault-list-item .flair { display: none; } +.is-phone .vault-list-item-title { flex: 1 0 auto; } +.is-phone .vault-list-item-button { margin-right: 0px; } +.suggestion-bg { display: none; } +body.is-phone .suggestion-bg { display: block; } +@keyframes fadeIn { + 0% { opacity: 0; } + 100% { opacity: 1; } +} +@keyframes fadeOut { + 0% { opacity: 1; } + 100% { opacity: 0; } +} +.mobile-image-viewer { position: absolute; height: 100%; width: 100%; top: 0px; left: 0px; background-color: var(--background-modifier-cover); display: flex; justify-content: center; overflow: hidden; z-index: var(--layer-modal); } +.mobile-image-viewer img { align-self: center; max-height: 100%; max-width: 100%; } +.mod-tappable { transition: opacity 0.15s ease-in-out 0s; } +.mod-tappable.mod-tap { opacity: 0.5; } +.is-mobile .document-search-container { height: auto; margin-left: 0px; margin-right: 0px; padding: 0 var(--size-4-4) var(--size-4-2); border-bottom: var(--border-width) solid var(--background-modifier-border); } +.is-mobile .document-search-container.mod-replace-mode { height: auto; } +.is-mobile .document-search, .is-mobile .document-replace { height: auto; padding: 0px; } +.is-mobile .document-search .document-search-button, .is-mobile .document-replace .document-search-button { height: auto; padding: 6px 0px; background-color: transparent; color: var(--text-accent); } +.is-mobile .document-search input, .is-mobile .document-replace input, .is-mobile .document-search button, .is-mobile .document-replace button { width: auto; flex-grow: 1; } +.is-mobile .document-search .document-search-buttons, .is-mobile .document-replace .document-search-buttons, .is-mobile .document-search .document-replace-buttons, .is-mobile .document-replace .document-replace-buttons { display: flex; flex-grow: 1; } +.is-mobile .document-search .document-search-close-button, .is-mobile .document-replace .document-search-close-button { height: 34px; line-height: 34px; top: 0px; } +.is-mobile .view-header { border-top: none; height: var(--view-header-height); } +.is-mobile .workspace-split.mod-root > .workspace-leaf:first-of-type .workspace-leaf-content, .is-mobile .workspace-split.mod-root > .workspace-leaf:last-of-type .workspace-leaf-content { border-radius: 0px; } +.is-mobile .view-header-title { padding-right: 0px; } +.is-mobile .view-header-title-container { padding-left: 24px; } +.is-mobile .view-header-title-container::after { display: none; } +.is-mobile .view-header-icon { padding: 10px; } +.is-mobile .inline-title { padding-top: 0.25em; } +.is-mobile .horizontal-main-container { position: relative; } +.is-mobile .view-header-title-container { height: 50px; } +.is-mobile .view-actions { padding: var(--size-4-2) 0; gap: var(--size-2-1); } +.is-mobile .view-header-nav-buttons, .is-mobile .view-header .view-action { --icon-color: var(--interactive-accent); --icon-color-hover: var(--interactive-accent); --icon-color-active: var(--interactive-accent-hover); --icon-color-focus: var(--interactive-accent-hover); --icon-size: var(--icon-l); --icon-stroke: var(--icon-l-stroke-width); } +.is-mobile .view-action { margin: auto 0px; width: auto; } +.is-phone .view-header-title-parent, .is-phone .view-header-title { display: block; text-overflow: ellipsis; opacity: 0.7; } +.is-phone .view-header-title-parent:focus-within, .is-phone .view-header-title:focus-within { text-overflow: unset; opacity: 1; } +.is-mobile .hotkey-list-container .setting-item { flex-direction: column; align-items: stretch; } +.is-mobile .hotkey-list-container .setting-item-control { margin-top: 10px; align-items: flex-start; } +.is-mobile .hotkey-list-container .setting-command-hotkeys { flex: 1 0 auto; } +.is-mobile .hotkey-list-container .setting-hotkey { align-self: flex-start; } +.is-tablet .horizontal-tab-nav-item, .is-tablet .vertical-tab-nav-item { padding: var(--size-4-2) var(--size-4-3); } +.is-tablet .modal.mod-settings .vertical-tab-header { max-width: none; } +.is-tablet.theme-dark .community-item, .is-tablet.theme-dark .vertical-tab-content { background-color: var(--background-secondary); } +.is-phone.theme-dark .modal.mod-settings { background-color: var(--background-primary); } +.is-phone.theme-dark .modal.mod-settings .vertical-tab-header { background-color: var(--background-primary); } +.is-phone.theme-dark .modal.mod-settings .vertical-tab-nav-item { background-color: var(--background-secondary); } +.is-phone.theme-dark .modal.mod-settings .vertical-tab-header-title { background-color: var(--background-primary); } +.is-phone .setting-item-heading { margin-top: 1.5em; } +.is-phone .vertical-tab-header-group { margin: 0px auto; width: calc(100% - var(--size-4-8)); } +.is-phone .vertical-tab-header-group-title { padding-bottom: 1em; } +.is-phone .vertical-tab-header-group-title, .is-phone .setting-item-heading .setting-item-name { color: var(--text-normal); font-weight: var(--font-bold); font-size: var(--font-ui-large); } +.is-phone .setting-item { padding: 1em 0px; border-width: var(--border-width) 0 0 0; gap: var(--size-4-1); } +.is-phone .setting-item-name { font-weight: var(--font-medium); } +.is-phone .setting-item-info { min-width: 0px; } +.is-phone .setting-item:not(.mod-toggle):not(.setting-item-heading) { flex-direction: column; align-items: flex-start; } +.is-phone .setting-item:not(.mod-toggle):not(.setting-item-heading) .setting-item-control { margin-top: 12px; width: 100%; } +.is-phone .setting-icon { margin-right: 10px; display: inline-flex; vertical-align: middle; } +.is-phone .setting-item-control select, .is-phone .setting-item-control input, .is-phone .setting-item-control button { width: 100%; margin: 0px; } +.is-phone .setting-item-control button { padding: 10px; } +.is-phone .setting-item-control select { max-width: 100%; } +.is-phone .modal.mod-settings { background-color: var(--background-secondary); } +.is-phone .modal.mod-settings .modal-title { border-bottom: var(--border-width) solid var(--background-modifier-border); } +.is-phone .modal.mod-settings .vertical-tabs-container { display: block; overflow-y: auto; } +.is-phone .modal.mod-settings .vertical-tab-header { background-color: var(--background-secondary); border-right: none; flex-grow: 1; height: 100%; min-width: 100%; padding: var(--size-4-4); width: 100%; } +.is-phone .modal.mod-settings .vertical-tab-content { background-color: var(--background-primary); padding: var(--size-4-5) max(var(--size-4-5), var(--safe-area-inset-right)) 100px max(var(--size-4-5), var(--safe-area-inset-left)); } +.is-phone .modal.mod-settings .vertical-tab-header-group-items { border-radius: var(--radius-m); overflow: hidden; } +.is-phone .modal.mod-settings .vertical-tab-nav-item { display: flex; align-items: center; height: 44px; background-color: var(--background-primary); padding: 0 var(--size-4-2) 0 var(--size-4-3); margin: 0px; border-radius: 0px; border-bottom: var(--border-width) solid var(--background-modifier-border); transition: background-color 200ms ease-in-out 0s, color 200ms ease-in-out 0s; } +.is-phone .modal.mod-settings .vertical-tab-nav-item.is-active { background-color: var(--interactive-accent); } +.is-phone .modal.mod-settings .vertical-tab-nav-item:last-child { border-bottom: none; } +.is-phone .modal.mod-settings .vertical-tab-nav-item-chevron { display: flex; margin-left: auto; color: var(--text-faint); } +.is-phone .vertical-tab-header-title { font-weight: var(--font-semibold); } +.is-phone .community-modal { width: 100%; margin-bottom: 10px; } +.is-phone .modal.mod-community-theme { min-height: unset; } +.is-phone .community-modal-sidebar { background-color: var(--background-primary); } +.is-phone .community-modal-controls { background-color: transparent; } +.is-phone .community-modal-controls .setting-item { flex: 0 0 auto; padding: 0.25em 0px; } +.is-phone .community-modal-controls .setting-item-control { flex-direction: column; align-items: flex-end; } +.is-phone .community-modal-controls .search-input-container { width: 100%; } +.is-phone .community-modal-search-results { gap: 0px; padding: 0px; } +.is-phone .community-modal-info { padding: var(--size-4-4); } +.is-phone .community-item { border-width: 0 0 var(--border-width) 0; border-radius: 0px; padding: var(--size-4-4); } +.is-phone .community-item-info { padding: 20px; } +.is-phone .community-modal-details { background-color: var(--background-primary); border: none; } +.is-phone .community-modal-readme { padding: 20px 0px; } +.is-phone .community-modal-controls { padding: 0 var(--size-4-4); } +.is-phone .community-modal-search-summary { padding: var(--size-4-1) var(--size-4-1) var(--size-4-4); } +.is-phone .mod-community-theme .community-item { display: grid; grid-template-columns: 1fr 160px; grid-auto-flow: column dense; } +.is-phone .mod-community-theme .community-item .community-item-name { grid-column: 1 / 2; } +.is-phone .mod-community-theme .community-item .community-item-author { grid-column: 1 / 2; } +.is-phone .mod-community-theme .community-item .community-item-badge.mod-update { position: static; grid-row: 4 / auto; } +.is-phone .mod-community-theme .community-item .community-item-downloads { grid-column: 1 / 2; } +.is-phone .mod-community-theme .community-item .community-item-screenshot { grid-row: 1 / span 4; height: 90px; } +.is-phone .mod-community-plugin .community-item { display: grid; grid-template-columns: 3fr 1fr; grid-auto-flow: column dense; } +.is-phone .mod-community-plugin .community-item .community-item-name { grid-column: 1 / 2; } +.is-phone .mod-community-plugin .community-item .community-item-author { grid-column: 1 / 2; } +.is-phone .mod-community-plugin .community-item .community-item-badge.mod-update { position: static; grid-row: 4 / auto; } +.is-phone .mod-community-plugin .community-item .community-item-downloads { grid-column: 2 / 2; text-align: right; color: var(--text-faint); } +.is-phone .mod-community-plugin .community-item .community-item-desc { grid-column: 1 / span 2; } +.is-phone .community-modal-button-container { flex-direction: column; } +.mobile-option-setting-item { font-size: var(--font-ui-medium); display: flex; align-items: center; margin: 8px 0px; gap: var(--size-4-1); transition: transform 1000ms ease-in-out 0s; color: var(--text-muted); } +.mobile-option-setting-item:first-of-type:last-of-type .mobile-option-setting-drag-icon { display: none; } +.mobile-option-setting-item-name { flex: 1 0 0px; color: var(--text-normal); } +.mobile-option-setting-item-option-icon { display: flex; align-items: center; justify-content: center; padding: 4px; cursor: var(--cursor); border-radius: var(--radius-s); } +:not(.is-mobile) .mobile-option-setting-item-option-icon:hover, :not(.is-mobile) .mobile-option-setting-item-option-icon:active { background-color: var(--background-modifier-hover); } +.mobile-option-setting-item-option-icon.mobile-option-setting-drag-icon { cursor: grab; } +.mobile-option-setting-item-option-icon.mobile-option-setting-drag-icon:active { cursor: grabbing; } +.mobile-option-setting-item-remove-icon { color: var(--text-error); display: flex; } +.mobile-option-setting-item-add-icon { color: var(--text-success); display: flex; } +.is-mobile .status-bar { display: none; } +.workspace-drawer { position: fixed; top: 0px; bottom: 0px; display: flex; overflow: hidden; font-size: var(--font-ui-small); min-width: var(--mobile-sidebar-width); max-width: var(--mobile-sidebar-max-width); width: 85vw; z-index: var(--layer-popover); margin: 0px; border-radius: 0px; padding-top: var(--safe-area-inset-top); background-color: var(--background-primary); } +.workspace-drawer .nav-folder.mod-root > .nav-folder-title { display: none; } +.workspace-drawer .nav-header { margin-top: auto; padding-bottom: max(var(--size-4-2), var(--safe-area-inset-bottom)); order: 10; } +.workspace-drawer .nav-header ~ .search-input-container { width: calc(100% - var(--size-4-9)); } +.workspace-drawer .workspace-leaf { background-color: transparent; } +.theme-dark .workspace-drawer { background-color: var(--background-secondary); } +.workspace-drawer.is-pinned { height: 100%; position: relative; max-width: var(--mobile-sidebar-width); z-index: var(--layer-cover); border-radius: 0px; margin: 0px; box-shadow: none; } +.workspace-drawer.mod-left { left: 0px; padding-left: var(--safe-area-inset-left); border-top-right-radius: var(--radius-xl); border-bottom-right-radius: var(--radius-xl); } +.workspace-drawer.mod-left.is-pinned { border-right: var(--divider-width) solid var(--divider-color); border-radius: 0px; } +body.is-tablet .workspace-drawer.mod-left .workspace-drawer-inner { padding-left: var(--ribbon-width); } +.workspace-drawer.mod-right { right: 0px; padding-right: var(--safe-area-inset-right); border-top-left-radius: var(--radius-xl); border-bottom-left-radius: var(--radius-xl); } +.workspace-drawer.mod-right.is-pinned { border-left: var(--divider-width) solid var(--divider-color); border-radius: 0px; } +.workspace-drawer.is-collapsed { overflow: hidden; } +.workspace-drawer .nav-buttons-container { padding-left: var(--size-4-3); padding-right: var(--size-4-3); --icon-size: var(--icon-l); --icon-stroke: var(--icon-l-stroke-width); --icon-color: var(--interactive-accent); --icon-color-hover: var(--interactive-accent); --icon-color-active: var(--interactive-accent); --icon-color-focus: var(--interactive-accent-hover); } +.workspace-drawer .nav-buttons-container .nav-action-button { flex-grow: 1; } +.workspace-drawer .workspace-drawer-actions, .workspace-drawer .nav-buttons-container { overflow: auto; flex-wrap: nowrap; } +.workspace-drawer .workspace-drawer-actions::-webkit-scrollbar, .workspace-drawer .nav-buttons-container::-webkit-scrollbar, .workspace-drawer .workspace-drawer-actions::-webkit-scrollbar-thumb, .workspace-drawer .nav-buttons-container::-webkit-scrollbar-thumb { visibility: hidden; } +.workspace-drawer .side-dock-settings { margin-bottom: 0px; } +.workspace-drawer-inner { flex: 1 1 auto; overflow: hidden; display: flex; flex-direction: column; background-color: var(--background-primary); position: relative; transition: width 150ms ease-out 0s; } +.theme-dark .workspace-drawer-inner { background-color: var(--background-secondary); } +.workspace-drawer.is-collapsed .workspace-drawer-inner { padding: 0px; width: 0px; } +.workspace-drawer-backdrop { display: block; position: fixed; z-index: var(--layer-cover); width: 100%; height: 100%; background-color: var(--background-modifier-cover); top: 0px; left: 0px; opacity: 1; transition: opacity 150ms ease-out 0s; } +.workspace-drawer.is-collapsed .workspace-drawer-backdrop { display: none; opacity: 0; } +.workspace-drawer-ribbon { position: absolute; left: 0px; top: 0px; height: 100%; overflow: auto; width: var(--ribbon-width); padding: var(--size-4-1) 0 var(--safe-area-inset-bottom); } +.workspace-drawer-ribbon::-webkit-scrollbar, .workspace-drawer-ribbon::-webkit-scrollbar-thumb { visibility: hidden; width: 0px; } +.workspace-drawer-ribbon .side-dock-actions { padding: var(--size-4-2) 0; } +.workspace-drawer-ribbon .side-dock-actions, .workspace-drawer-ribbon .side-dock-settings { gap: var(--size-4-2); } +.workspace-drawer-ribbon .side-dock-ribbon-action { padding: var(--size-4-2); } +.workspace-drawer-header { padding: var(--size-4-2) var(--size-4-5) 0 var(--size-4-5); display: flex; align-items: flex-start; } +.workspace-drawer.is-pinned .workspace-drawer-header { padding-top: 0px; } +.workspace-drawer-header-left { display: flex; flex-direction: column; flex: 1 1 auto; overflow: hidden; } +.workspace-drawer-header-name { display: flex; } +.workspace-drawer-header-switcher { display: flex; flex: 0 1 auto; position: relative; } +.workspace-drawer-header-switcher select { opacity: 0; position: absolute; } +.workspace-drawer-header-name-text { text-overflow: ellipsis; overflow: hidden; font-size: var(--font-ui-large); font-weight: var(--font-semibold); } +.workspace-drawer-header-name-chevron { --icon-size: var(--icon-m); --icon-stroke: 2.25px; color: var(--text-faint); display: flex; align-items: center; margin-left: var(--size-2-1); } +.workspace-drawer-header-name-action-icon { color: var(--text-muted); margin-left: var(--size-4-2); display: flex; align-items: center; } +.workspace-drawer-header-info { color: var(--text-muted); margin: var(--size-4-1) 0 var(--size-4-4) 0; font-size: var(--font-ui-small); } +.workspace-drawer-header-icon { --icon-size: var(--icon-l); --icon-stroke: var(--icon-l-stroke-width); padding-top: var(--size-2-2); color: var(--interactive-accent); margin-left: var(--size-4-3); } +.workspace-drawer-actions { margin: var(--size-4-4) 0 var(--size-4-3) 0; display: flex; color: var(--text-muted); } +.workspace-drawer-action-item { flex: 0 0 70px; display: flex; flex-direction: column; align-items: center; overflow: hidden; } +.workspace-drawer-action-icon { color: var(--text-faint); } +.workspace-drawer-action-short-name { font-size: var(--font-ui-small); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 80px; } +.workspace-drawer-separator { margin: 0px 0px 12px; } +.workspace-drawer-tab-option-item { display: flex; align-items: center; margin: var(--size-4-5); gap: var(--size-4-2); } +.workspace-drawer-active-tab-icon, .workspace-drawer-tab-option-item-icon { --icon-size: var(--icon-l); --icon-stroke: var(--icon-l-stroke-width); color: var(--text-normal); display: flex; } +.workspace-drawer-active-tab-icon:last-child { color: var(--interactive-accent); order: 2; } +.workspace-drawer-active-tab-back-icon { --icon-size: var(--icon-l); --icon-stroke: var(--icon-l-stroke-width); display: flex; color: var(--interactive-accent); order: 1; margin-right: var(--size-4-1); } +.workspace-drawer-tab-option-item-title, .workspace-drawer-active-tab-title { color: var(--text-normal); font-weight: var(--font-medium); font-size: var(--font-ui-medium); flex: 1 0 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } +.workspace-drawer-active-tab-header { display: flex; align-items: center; padding: var(--size-4-3) var(--size-4-5) var(--size-4-4); margin: 0px; gap: var(--size-4-2); } +.workspace-drawer-tab-container { overflow: hidden; position: relative; flex: 1 0 0px; } +.workspace-drawer-tab-container > * { position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; } +.workspace-drawer-active-tab-icon.mod-exit-fullscreen { display: none; } +.workspace-drawer-active-tab-container { display: flex; flex-direction: column; } +.theme-dark .workspace-drawer-active-tab-container.is-fullscreen { background-color: var(--background-secondary); } +.workspace-drawer-active-tab-container .workspace-drawer-active-tab-content .nav-files-container { padding-top: var(--size-4-3); } +.workspace-drawer-active-tab-container.is-fullscreen { position: fixed; width: 100%; top: 0px; left: 0px; background-color: var(--background-primary); margin: 0 env(safe-area-inset-right, 20px) 0 env(safe-area-inset-left, 20px); padding: env(safe-area-inset-top, 20px) 0 0; } +.workspace-drawer-active-tab-container.is-fullscreen .workspace-drawer-active-tab-back-icon { display: none; } +.workspace-drawer-active-tab-container.is-fullscreen .workspace-leaf { width: 100%; } +.workspace-drawer-active-tab-container.is-fullscreen .workspace-drawer-active-tab-header { margin: 0 env(safe-area-inset-right, 20px) 0 env(safe-area-inset-left, 20px); padding: var(--size-4-4) var(--size-4-6); } +.workspace-drawer-active-tab-content { flex: 1 0 0px; overflow: auto; display: flex; } +.workspace-drawer-active-tab-content > * { flex: 1 0 0px; width: 100%; height: 100%; } +.workspace-drawer-active-tab-content .view-header { display: none !important; } +.workspace-drawer-active-tab-content .view-content { padding-top: 4px; height: 100%; } +.workspace-drawer-active-tab-content .graph-controls { display: none; } +.workspace-drawer-active-tab-content .outline { font-size: var(--font-ui-medium); } +.is-phone .side-dock-ribbon { display: none; } +.is-phone .workspace-drawer .workspace-drawer-header-icon.mod-pin { display: none; } +.is-phone .mod-root .workspace-split:not(.mod-visible), .is-phone .mod-root .workspace-tabs:not(.mod-visible) { display: none; } +.is-tablet .workspace-drawer .workspace-drawer-header-icon.mod-settings { display: none; } +body.is-tablet .sidebar-toggle-button { padding-left: var(--size-4-2); --icon-color: var(--interactive-accent); --icon-color-hover: var(--interactive-accent); --icon-color-active: var(--interactive-accent-hover); --icon-color-focus: var(--interactive-accent-hover); --icon-size: var(--icon-l); --icon-stroke: var(--icon-l-stroke-width); } +.is-mobile .menu { border: none; max-width: 100%; } +.is-phone .menu { background-color: var(--background-secondary); max-height: 60vh; width: calc(100% - var(--safe-area-inset-left) - var(--safe-area-inset-right)); min-width: unset; position: absolute; padding-bottom: var(--safe-area-inset-bottom); border-radius: var(--radius-l) var(--radius-l) 0 0; bottom: 0px; left: 0px; right: 0px; margin: 0px auto; overflow-y: auto; top: unset !important; } +.is-phone .menu-item { padding: var(--size-4-3) var(--size-4-3); height: unset; line-height: unset; } +.is-mobile .modal { border: none; } +.is-mobile .modal-button-container { display: flex; flex-direction: column; } +.is-mobile .community-modal { width: 100%; margin-bottom: 10px; } +.is-mobile .modal.mod-community-theme { min-height: unset; } +.is-mobile .mod-confirmation .modal-close-button { display: none; } +.is-phone .modal, .is-phone .prompt, .is-phone .suggestion-container { border-radius: 0px; border: none; max-height: 100vh; width: 100vw; max-width: 100vw; min-width: unset; position: absolute; bottom: unset; padding: 0px; left: 0px; right: 0px; } +.is-phone .modal { --modal-top: calc(var(--safe-area-inset-top) + var(--size-4-2)); --modal-bottom: var(--safe-area-inset-bottom); border-radius: var(--radius-m) var(--radius-m) 0 0; margin-top: var(--modal-top); padding: 0 var(--safe-area-inset-right) 0 var(--safe-area-inset-left); top: 0px; bottom: 0px; height: 100%; max-height: calc(100vh - var(--modal-top)); width: 100vw; } +.is-phone .modal .modal-close-button { top: var(--size-4-3); } +.is-phone .modal .modal-title { display: block; font-size: var(--font-ui-medium); margin-bottom: 0px; padding-top: var(--size-4-4); text-align: center; } +.is-phone .modal-sidebar { background-color: var(--background-primary); } +.is-phone .modal-content { display: flex; position: relative; flex-direction: column; margin-top: 0px; overflow: auto; padding: var(--size-4-3); } +.is-phone .modal-button-container { width: 100%; padding: var(--size-4-3); margin-top: 0px; margin-bottom: var(--safe-area-inset-bottom); } +.is-phone .modal.mod-lg { max-height: 100%; } +.is-phone .modal.mod-lg .modal-title { padding-top: calc(env(safe-area-inset-top) + var(--size-4-3)); padding-bottom: var(--size-4-3); } +.is-phone .modal.mod-lg .modal-close-button, .is-phone .modal.mod-sidebar-layout .modal-close-button { top: calc(var(--safe-area-inset-top) + 10px); right: var(--size-4-5); } +.is-phone .modal.mod-sidebar-layout { bottom: 0px; top: 0px; border-radius: 0px; height: 100%; max-height: 100%; margin: 0px; padding: 0 var(--safe-area-inset-right) 0 var(--safe-area-inset-left); width: 100vw; } +.is-phone .modal.mod-sidebar-layout .search-input-container { flex-grow: 1; } +.is-phone .modal.mod-sidebar-layout .modal-title { display: block; padding-top: calc(env(safe-area-inset-top) + var(--size-4-3)); padding-bottom: var(--size-4-3); margin-bottom: 0px; } +.is-phone .modal.mod-sidebar-layout .modal-content > * { width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; right: 0px; padding: 0 var(--safe-area-inset-right) 0 var(--safe-area-inset-left); } +.mobile-navbar { background-color: var(--background-primary); padding: 0 max(var(--safe-area-inset-right), var(--size-4-4)) 0 max(var(--safe-area-inset-left), var(--size-4-4)); position: absolute; left: 0px; right: 0px; bottom: 0px; } +body.is-tablet .mobile-navbar { display: none; } +.mobile-navbar-text { font-size: var(--font-ui-small); padding: var(--size-4-1) 0; white-space: nowrap; text-overflow: clip; width: 100%; -webkit-mask-image: linear-gradient(to left, rgba(0, 0, 0, 0) var(--size-4-4), #000000 var(--size-4-8)); } +.mobile-navbar-actions { --icon-size: var(--icon-l); --icon-stroke: var(--icon-l-stroke-width); --icon-color: var(--interactive-accent); --icon-color-hover: var(--interactive-accent); --icon-color-active: var(--interactive-accent-hover); --icon-color-focus: var(--interactive-accent-hover); display: flex; align-items: center; justify-content: space-between; padding: var(--size-4-2) 0 max(var(--size-4-2), var(--safe-area-inset-bottom)) 0; } +.mobile-navbar-tabs-action { align-items: center; border-radius: var(--clickable-icon-radius); border: 2px solid var(--icon-color); display: flex; font-size: calc(var(--icon-size) * 0.6); font-weight: var(--bold-weight); justify-content: center; height: 20px; width: var(--icon-size); } +.mobile-navbar-action.has-longpress-menu { position: relative; } +.mobile-navbar-action.has-longpress-menu .navbar-action-flair { --icon-size: 12px; --icon-stroke: 3px; color: var(--interactive-accent); position: absolute; left: -6px; top: 0px; height: 100%; align-items: center; display: flex; } +.is-phone .notice-container { padding: 0px; top: max(var(--size-4-1), var(--safe-area-inset-top)); left: 0px; right: 0px; max-width: 96%; margin: 0px auto; } +.is-phone .notice { background-color: var(--interactive-accent); color: var(--text-on-accent); margin: 0 auto var(--size-4-1); text-align: center; border-radius: 30px; max-width: none; box-shadow: none; } +.is-mobile .prompt { border: none; } +.theme-dark.is-mobile .prompt { background-color: var(--background-secondary); } +.theme-dark.is-mobile .prompt input.prompt-input { background-color: var(--background-secondary); } +.is-mobile .prompt-input[type="text"] { padding: var(--size-4-4); } +.is-phone .prompt { position: relative; margin: 0px auto; width: calc(100% - var(--safe-area-inset-left) - var(--safe-area-inset-right)); } +.is-phone .prompt .suggestion-hotkey { display: none; } +.is-phone .prompt { --mobile-height: 100vh; --prompt-bottom: 0px; --prompt-top: calc(var(--safe-area-inset-top) + var(--header-height) + var(--size-4-2)); border-radius: var(--radius-l) var(--radius-l) 0 0; min-width: unset; margin-bottom: var(--prompt-bottom); margin-top: var(--prompt-top); box-shadow: none; top: 0px; height: calc(var(--mobile-height) - var(--prompt-top) - var(--prompt-bottom)); } +.is-phone .prompt-input-container { border-bottom: var(--border-width) solid var(--background-modifier-border); } +.is-phone .prompt-input[type="text"] { border: none; } +.is-phone .prompt-input-cta { --icon-color: var(--interactive-accent); display: flex; align-items: center; padding: 0 var(--size-4-3); flex: 0 1 auto; } +.is-phone .prompt-instructions { display: none; } +.pull-action { position: absolute; background-color: var(--background-secondary); z-index: var(--layer-popover); color: var(--text-muted); font-size: 90%; transition: background-color 150ms ease-in-out 0s; } +.pull-action.mod-activated { background-color: var(--interactive-accent); color: var(--text-on-accent); } +.pull-down-action { top: 0px; left: 0px; right: 0px; width: 96%; max-width: 500px; margin: var(--safe-area-inset-top) auto 0 auto; padding: var(--size-4-3) var(--size-4-4); text-align: center; border-radius: 40px; } +.pull-out-action { top: 50%; padding: var(--size-4-3) var(--size-4-4); border-radius: 40px; margin: 0 var(--size-4-4); } +.mobile-toolbar { app-region: drag; flex: 0 0 auto; width: 100%; overflow-y: hidden; background-color: var(--background-primary); bottom: 0px; z-index: var(--layer-menu); } +.mobile-toolbar-options-container { height: var(--mobile-toolbar-height); display: flex; overflow: auto hidden; width: 100%; padding: 0px 10px; } +.mobile-toolbar-options-container::-webkit-scrollbar { width: 0px !important; height: 0px !important; } +.mobile-toolbar-option { display: flex; font-size: var(--font-ui-medium); color: var(--text-muted); font-family: var(--font-monospace); justify-content: center; align-items: center; min-width: 50px; position: relative; left: 0px; transition: left 200ms ease-in-out 0s; } +.mobile-toolbar-option.mod-ghost { position: absolute; transition: left 250ms ease-in-out 0s; } +.mobile-toolbar-option.mod-ghost::before { content: " "; position: absolute; width: 100%; height: 100%; top: 0px; left: 0px; border-radius: 6px; background-color: var(--interactive-accent); } +.mobile-toolbar-done-button { position: fixed; margin-top: var(--size-4-2); margin-right: var(--size-4-3); top: env(safe-area-inset-top, 20px); right: env(safe-area-inset-right, 20px); z-index: var(--layer-status-bar); } +.is-mobile .suggestion-item { padding: var(--size-4-2) var(--size-4-3); } +.is-tablet.theme-dark .suggestion-container { background-color: var(--background-secondary); } +.is-phone .suggestion-container { margin: 0px auto; padding-bottom: calc(var(--safe-area-inset-bottom) + var(--mobile-toolbar-height)); width: calc(100% - var(--safe-area-inset-left) - var(--safe-area-inset-right)); border-top: 1px solid var(--background-modifier-border); background-color: var(--background-primary); box-shadow: none; border-radius: 0px; bottom: 0px; overflow: auto; max-height: 35vh; } +.is-phone .suggestion { position: relative; } +.is-phone .suggestion-item.mod-group { border-radius: 0px; } +.is-mobile .modal.mod-publish { background-color: var(--modal-background); border-radius: 0px; height: 100%; margin: 0px; padding-top: var(--safe-area-inset-top); width: 100vw; } +.is-mobile .publish-changes-info-publishing-to { display: none; } +.is-mobile .publish-changes-add-linked-btn { width: auto; } +.is-phone .modal.mod-publish .modal-button-container { background-color: var(--modal-background); position: fixed; } +.is-phone .modal.mod-publish .modal-content { display: unset; } +.is-mobile .sync-history-list { padding: 0px; } +.is-mobile .sync-history-list-item { padding: 12px 16px; } +.is-mobile .sync-history-content-container { display: flex; flex-direction: column; max-width: unset; } +.is-mobile .sync-history-content { flex: 1 1 auto; padding: 10px; border-radius: 0px; border: none; } +.is-phone .sync-log-container { flex: 1 1 auto; } +.is-phone .modal.mod-sync-history .search-input-container { width: 100%; margin-bottom: 0px; } +.mobile-vault-chooser { width: 100%; height: 100%; background-color: var(--background-primary); position: relative; } +.mobile-vault-chooser hr { margin: 12px 0px; border-width: var(--border-width); } +.mobile-vault-chooser-screen { display: flex; flex-direction: column; position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; } +.mobile-vault-chooser-header { display: flex; background-color: var(--background-primary); border-bottom: var(--border-width) solid var(--background-modifier-border); color: var(--text-muted); flex: 0 0 50px; font-size: 18px; align-items: center; } +.mobile-vault-chooser-header-icon { display: flex; margin: 0px 6px 0px 10px; } +.mobile-vault-chooser-content { flex: 1 0 0px; padding: 20px; height: 100%; overflow-y: auto; max-width: 800px; width: 100%; margin: 0px auto; } +.mobile-vault-chooser-logo-container { margin: 40px 0px; text-align: center; color: var(--text-muted); } +.mobile-vault-logo-text { margin-top: 10px; margin-bottom: 10px; color: white; } +.mobile-vault-chooser-version { font-size: var(--font-ui-small); color: var(--text-faint); } +.mobile-vault-chooser-empty-state { margin: 20px 0px; font-size: 17px; color: var(--text-muted); } +.mobile-vault-chooser-actions { padding-bottom: 40px; } +.mobile-vault-chooser-action-icon { color: var(--text-muted); display: flex; padding: 10px; margin: -10px 0px; } +.mobile-vault-chooser-action { display: flex; padding: 14px 0px; align-items: center; font-size: 18px; } +.mobile-vault-chooser-action-name { flex: 1 0 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.mobile-vault-chooser-action-description { color: var(--text-muted); font-size: 17px; overflow: hidden; text-overflow: ellipsis; max-width: calc(100vw - 110px); white-space: nowrap; } +.mobile-vault-chooser-field-name { color: var(--text-muted); margin: 20px 0px 10px; font-size: 18px; } +input.mobile-vault-chooser-field-input { width: 100%; font-size: var(--font-ui-medium); padding: 8px 12px; height: auto; } +.mobile-vault-chooser-button-container { margin: 20px 0px; } +.mobile-vault-chooser-button-container button { padding: 10px 20px; font-size: var(--font-ui-medium); width: 100%; } diff --git a/docs/lib/styles/plugin-styles.css b/docs/lib/styles/plugin-styles.css new file mode 100644 index 000000000..2bf05299a --- /dev/null +++ b/docs/lib/styles/plugin-styles.css @@ -0,0 +1,733 @@ +/*#region Code Copy */ + +/* Make code block copy button fade in and out */ +.markdown-rendered pre:not(:hover) > button.copy-code-button +{ + display: unset; + opacity: 0; +} + +.markdown-rendered pre:hover > button.copy-code-button +{ + opacity: 1; +} + +.markdown-rendered pre button.copy-code-button +{ + transition: opacity 0.2s ease-in-out, width 0.3s ease-in-out, background-color 0.2s ease-in-out; + text-overflow: clip; +} + +.markdown-rendered pre > button.copy-code-button:hover +{ + background-color: var(--interactive-normal); +} + +.markdown-rendered pre > button.copy-code-button:active +{ + background-color: var(--interactive-hover); + box-shadow: var(--input-shadow); + transition: none; +} + +/*#endregion */ + +/*#region Canvas */ +.canvas-card-menu { + display: none; + cursor: default !important; + +} + +.canvas-controls { + display: none; + cursor: default !important; + +} + +.canvas-node-connection-point +{ + display: none; + cursor: default !important; + +} + +.canvas-menu-container { + display: none; +} + +.canvas-node-content-blocker +{ + display: none; + cursor: pointer !important; +} + +.canvas-wrapper +{ + position: relative; + cursor: default !important; +} + +.canvas-node-resizer +{ + cursor: default !important; +} + +.canvas-node-container +{ + cursor: default !important; +} + +/*#endregion */ + +/*#region Sidebars */ + +.sidebar { + background-color: var(--background-secondary); + flex: 1 0 min-content; + display: flex; + align-items: flex-start; + font-size: 14px; +} + +.sidebar-section-header +{ + margin: 0em 0 0em var(--sidebar-margin); + text-transform: uppercase; + letter-spacing: 0.06em; + font-weight: 600; +} + +.sidebar-content { + width: var(--sidebar-width); + line-height: var(--line-height-tight); + display: flex; + flex-direction: column; + padding: 10px; + padding-bottom: 0; + height: 100%; +} + +.sidebar-scroll-area +{ + width: 100%; + height: 100%; + line-height: var(--line-height-tight); + display: flex; + flex-direction: column; + overflow-y: scroll; +} + +.sidebar-left +{ + border-right: 1px dashed var(--divider-color); + z-index: 1000; + align-items: flex-end; + flex-direction: row-reverse; +} + +.sidebar-right +{ + border-left: 1px dashed var(--divider-color); + z-index: 1000; + align-items: flex-start; + flex-direction: row; +} + +@media print +{ + .sidebar, .outline-container, .theme-toggle-container, .theme-toggle-container-inline, .toggle-background, .theme-toggle-input + { + display: none !important; + } +} + +/*#endregion */ + +/*#region Content / Markdown Preview View */ + +.webpage-container { + background-color: var(--background-primary); + display: flex; + flex-direction: row; + height: 100%; + width: 100%; + align-items: stretch; + position: fixed; +} + +.document-container +{ + flex-basis: var(--content-width); +} + +.markdown-reading-view +{ + align-self: center; + -ms-flex-align: center; + width: 100%; +} + +.markdown-preview-view +{ + display: flex; + width: 100%; + max-width: 100%; + padding-bottom: 30em; + align-items: flex-start; + justify-content: center; +} + +.document-container > .markdown-preview-view > .markdown-preview-sizer +{ + padding: unset; + width: unset; + height: unset; + margin: unset; + max-width: unset; + min-height: unset; + max-width: var(--line-width); + flex-basis: var(--line-width); +} + +/*#endregion */ + +/*#region Kanban */ + +.markdown-preview-view.kanban-plugin__markdown-preview-view { + font-family: var(--font-text, var(--default-font)); + font-size: .875rem; + line-height: var(--line-height-tight); + padding: unset; + width: unset; + height: unset; + position: unset; + overflow-y: unset; + overflow-wrap: unset; + color: unset; + user-select: unset; + -webkit-user-select: unset; +} + +.kanban-plugin__item-button-wrapper, .kanban-plugin__lane-grip, .kanban-plugin__lane-settings-button.clickable-icon, .kanban-plugin__item-postfix-button.clickable-icon +{ + display: none; +} + +/*#endregion */ + +/*#region Tree */ + +/* Base tree */ +.tree-container +{ + /* padding-bottom: 12px; */ + /* margin: 12px; */ + /* height: 100%; */ + /* position: relative; */ + /* display: contents; */ + position: relative; + height: 100%; + width: auto; + margin: var(--sidebar-margin); + margin-top: 3em; + margin-bottom: 0; +} + +.tree-container .tree-header +{ + display: flex; + flex-direction: row; + align-items: center; + position: absolute; + top: -3em; +} + +.tree-container .tree-header .sidebar-section-header +{ + margin: 1em; + margin-left: 0; +} + +.tree-container:has(.tree-scroll-area:empty) +{ + display: none; +} + +.tree-container .tree-scroll-area +{ + width: 100%; + height: 100%; + max-height: 100%; + overflow-y: scroll; + padding: 1em; + padding-right: calc(1em + var(--sidebar-margin)); + padding-bottom: 3em; + border-radius: var(--radius-m); + position: absolute; +} + +.tree-container .tree-item +{ + display: flex; + flex-direction: column; + align-items: flex-start; + padding: 0; +} + +.tree-container .tree-item-children +{ + padding: 0; + margin-left: 0; + border-left: none; + width: 100%; +} + +.tree-container .tree-item.mod-active > .tree-item-contents > .tree-item-link +{ + color: var(--color-accent); +} + +.tree-container .tree-item-contents { + position: relative; + display: flex; + flex-direction: row; + align-items: center; + border-radius: 0.4em; + color: var(--nav-item-color); + width: 100%; + margin-left: var(--tree-horizontal-spacing); +} + +.tree-container .tree-item-contents:active +{ + color: var(--nav-item-color-active); +} + +.tree-container a.tree-item-link +{ + width: 100%; + height: 100%; + transition: background-color 0.1s; + border-radius: var(--radius-s); + padding-left: calc(var(--tree-horizontal-spacing) + var(--collapse-arrow-size)/2 + 1px); + padding-bottom: calc(var(--tree-vertical-spacing) / 2); + padding-top: calc(var(--tree-vertical-spacing) / 2); + color: var(--nav-item-color); + text-decoration: none; +} + +.tree-container .tree-item-icon.collapse-icon { + display: flex; + justify-content: flex-start; + align-items: center; + border-radius: var(--radius-s); + transition: background-color 0.1s; + position: absolute; + height: 100%; +} + +.tree-container .tree-item.mod-tree-folder > .tree-item-contents > .tree-item-icon.collapse-icon +{ + width: 100%; +} + +.collapse-icon > svg { + color: unset !important; +} + +.collapse-icon:hover +{ + color: var(--nav-item-color-hover); +} + +.tree-container a.tree-item-link:hover +{ + cursor: pointer; + color: var(--nav-item-color-hover); + text-decoration: underline; +} + +/* Indentation guide */ + +.tree-container > .tree-scroll-area > * .tree-item +{ + margin-left: calc(var(--tree-horizontal-spacing) + var(--collapse-arrow-size) / 2 + 1px); + border-left: var(--nav-indentation-guide-width) solid var(--nav-indentation-guide-color); +} + +.tree-container .tree-scroll-area > * > * > .tree-item +{ + margin-left: calc(var(--collapse-arrow-size) / 2 + 1px); +} + +.tree-container .tree-item.mod-active +{ + border-left: var(--nav-indentation-guide-width) solid var(--color-accent); +} + + +.tree-container .tree-item:hover:not(.mod-active):not(.mod-collapsible):not(:has(.tree-item:hover)) /* Hover */ +{ + border-left: var(--nav-indentation-guide-width) solid var(--nav-item-color-hover); +} + +.webpage-container .tree-container .tree-item:not(.mod-collapsible) > .tree-item-children > .tree-item, +.webpage-container .tree-container > .tree-scroll-area > .tree-item, +.webpage-container .tree-container:not(.mod-nav-indicator) .tree-item +{ + border-left: none !important; +} + +.webpage-container .tree-container .tree-item:not(.mod-collapsible) > .tree-item-children > .tree-item > .tree-item-contents, +.webpage-container .tree-container:not(.mod-nav-indicator) .tree-item .tree-item-contents, +.webpage-container .tree-container > .tree-scroll-area > .tree-item > .tree-item-contents +{ + margin-left: 0 !important; +} + +/* Special */ + +.tree-container.outline-tree .tree-item[data-depth='1'] > .tree-item-contents > .tree-item-link +{ + font-weight: 900; + font-size: 1.1em; + margin-left: 0; +} + +.tree-container .tree-item.is-collapsed > .tree-item-contents > .tree-item-icon.collapse-icon > svg +{ + transition: transform 0.1s ease-in-out; + transform: rotate(-90deg); +} + + + +/*#endregion */ + +/*#region Headers */ + +.collapse-icon svg.svg-icon { + color: var(--nav-collapse-icon-color); + stroke-width: 4px; + width: var(--collapse-arrow-size); + height: var(--collapse-arrow-size); + transition: transform 100ms ease-in-out 0s; + min-width: 10px; + min-height: 10px; +} + +div.is-collapsed > * > .heading-collapse-indicator.collapse-icon > svg +{ + transition: transform 0.1s ease-in-out; + transform: rotate(-90deg); +} + +/*#endregion */ + +/*#region Text Wrapping */ +a { + overflow-wrap: anywhere; +} + +* +{ + overflow-wrap: break-word; +} + +/*#endregion */ + +/*#region Obsidian Columns Plugin */ +.columnParent { + display: flex; + padding: 15px 20px; + flex-wrap: wrap; + gap: 20px; +} + +.columnParent { + white-space: normal; +} + +.columnChild { + flex-grow: 1; + flex-basis: 0px; +} +/*#endregion */ + +/*#region Theme Toggle */ + +.theme-toggle-container { + --toggle-width: 50px; + --toggle-height: 23px; + --border-radius: calc(var(--toggle-height) / 2); + --handle-width: calc(var(--toggle-height) * 0.65); + --handle-radius: calc(var(--handle-width) / 2); + --handle-margin: calc((var(--toggle-height) / 2.0) - var(--handle-radius)); + --handle-translation: calc(var(--toggle-width) - var(--handle-width) - (var(--handle-margin) * 2)); + + display: inline-block; + cursor: pointer; + margin: 10px; +} + +/* animation to expand width, move handle, then contract width */ +@keyframes toggle-slide-right +{ + 0% + { + width: var(--handle-width); + transform: translateX(0); + } + 50% + { + width: calc(var(--toggle-width) * 0.5); + } + 90% + { + width: var(--handle-width); + } + 100% + { + transform: translateX(var(--handle-translation)); + } +} + +@keyframes toggle-slide-left +{ + 0% + { + width: var(--handle-width); + transform: translateX(calc(var(--handle-translation) - ((var(--toggle-width) * 0.33) - var(--handle-width)))); + } + 70% + { + width: calc(var(--toggle-width) * 0.5); + } + 100% + { + width: var(--handle-width); + transform: translateX(0); + } +} + +/* just exapnd and contract */ +@keyframes toggle-expand-right +{ + 0% + { + width: var(--handle-width); + } + 100% + { + width: calc(var(--toggle-width) * 0.33); + } +} + +@keyframes toggle-expand-left +{ + 0% + { + width: var(--handle-width); + transform: translateX(var(--handle-translation)); + } + 100% + { + width: calc(var(--toggle-width) * 0.33); + transform: translateX(calc(var(--handle-translation) - ((var(--toggle-width) * 0.33) - var(--handle-width)))); + } +} + +@keyframes toggle-contract +{ + 0% + { + width: calc(var(--toggle-width) * 0.33); + } + 100% + { + width: var(--handle-width); + } +} + +.theme-toggle-input { + display: none; + z-index: 1000; +} + +/* Fill in dark mode / default */ +.toggle-background { + position: relative; + width: var(--toggle-width); + height: var(--toggle-height); + border-radius: var(--border-radius); + background-color: var(--background-modifier-border); + + transition: background-color 0.2s; + z-index: 1000; + + /* box-shadow: inset 0px 0px 100px -70px var(--color-accent); */ +} + +/* Handle default */ +.toggle-background::before +{ + content: ""; + position: absolute; + left: var(--handle-margin); + top: var(--handle-margin); + height: var(--handle-width); + width: var(--handle-width); + + border-radius: var(--handle-radius); + background-color: var(--text-normal); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + animation: toggle-slide-left 0.2s ease-in-out normal both; + + z-index: 1000; +} + +/* handle light*/ +.theme-toggle-input:checked ~ .toggle-background::before +{ + animation: toggle-slide-right 0.2s ease-in-out normal both; +} + +.theme-toggle-input:active ~ .toggle-background::before +{ + animation: toggle-expand-right 0.2s ease-in-out normal both; +} + +.theme-toggle-input:active:checked ~ .toggle-background::before +{ + animation: toggle-expand-left 0.2s ease-in-out normal both; +} + +/* sun moon icon icon default */ +.toggle-background::after +{ + content: ""; + position: absolute; + right: var(--handle-margin); + top: calc(var(--handle-margin)); + height: var(--handle-width); + width: var(--handle-width); + transition: transform 0.3s; + background: url('https://api.iconify.design/lucide/moon.svg?color=white') no-repeat center center; + transform: scale(0.9); +} + +/* sun moon icon icon light */ +.theme-toggle-input:checked ~ .toggle-background::after +{ + transform: translateX(calc(var(--handle-translation) * -1)) scale(0.9); + background: url('https://api.iconify.design/lucide/sun.svg') no-repeat center center; +} + +/*#endregion */ + +/*#region Graph View */ +#graph-canvas +{ + width: 100%; + height: 100%; + border: 1px solid var(--modal-border-color); + border-radius: var(--modal-radius); + aspect-ratio: 1/1; +} + +.graph-view-container.expanded +{ + position: fixed; + width: 60%; + height: 90%; + right: 20%; + top: 5%; + background-color: var(--background-secondary); + z-index: 1000; +} + +.graph-view-container +{ + position: relative; + width: 100%; + aspect-ratio: 1/1; + display: flex; +} + +.graph-icon +{ + cursor: pointer; + color: var(--text-muted); +} + +.graph-view-container .graph-icon > svg +{ + width: 24px; + height: 24px; + + background-color: var(--color-base-00); + outline-width: 6px; + outline-color: var(--color-base-00); + outline-offset: -1px; + outline-style: solid; + border-radius: 100px; + margin: 10px; +} + +.graph-view-placeholder +{ + padding: 0; + width: auto; + aspect-ratio: 1/1; + position: relative; + flex: none; + margin: var(--sidebar-margin); +} + +.graph-view-placeholder:has(.expanded) +{ + border-radius: var(--modal-radius); + border: 1px solid var(--modal-border-color); +} + +.scale-down +{ + transition: transform 0.2s ease-in-out; + transform: scale(0.9); +} + +.scale-up +{ + transition: transform 0.2s ease-in-out; + transform: scale(1); +} + +.graph-expand +{ + position: absolute; + top: 5px; + right: 5px; +} + + + +/*#endregion */ + +/*#region Tweaks */ + +hr +{ + border: none; + border-top: var(--hr-thickness) solid; + border-color: var(--hr-color); +} + +.markdown-embed-link +{ + display: none; +} + +/*#endregion */ + + diff --git a/docs/lib/styles/snippets.css b/docs/lib/styles/snippets.css new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/docs/lib/styles/snippets.css @@ -0,0 +1 @@ + diff --git a/docs/lib/styles/theme.css b/docs/lib/styles/theme.css new file mode 100644 index 000000000..0a5480389 --- /dev/null +++ b/docs/lib/styles/theme.css @@ -0,0 +1 @@ +/* Using default theme. */ \ No newline at end of file diff --git a/docs/management.html b/docs/management.html new file mode 100644 index 000000000..14a924b10 --- /dev/null +++ b/docs/management.html @@ -0,0 +1,65 @@ + + + + Management + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/metrics.html b/docs/metrics.html new file mode 100644 index 000000000..ffed3343d --- /dev/null +++ b/docs/metrics.html @@ -0,0 +1,59 @@ + + + + Metrics + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/microsoft-application-inspector.html b/docs/microsoft-application-inspector.html new file mode 100644 index 000000000..3556b3780 --- /dev/null +++ b/docs/microsoft-application-inspector.html @@ -0,0 +1,54 @@ + + + + Microsoft Application Inspector + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
  • Microsoft Application Inspector is a software source code characterization tool that helps identify coding features of first or third party software components based on well-known library/API calls and is helpful in Security and non-security use cases
  • +
  • "../assets/image_1667865747494_0.png" is not created yet. Click to create.
  • +
  • Additionally, it includes a confidence indicator (and filter) as well as the ability to drill down to the code file area where the match was found.
    +
    "../assets/image_1667865786921_0.png" is not created yet. Click to create.
  • +

References

\ No newline at end of file diff --git a/docs/minimalapi.html b/docs/minimalapi.html new file mode 100644 index 000000000..954bfaa9b --- /dev/null +++ b/docs/minimalapi.html @@ -0,0 +1,49 @@ + + + + MinimalAPI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/nodejs.html b/docs/nodejs.html new file mode 100644 index 000000000..011b26d79 --- /dev/null +++ b/docs/nodejs.html @@ -0,0 +1,55 @@ + + + + NodeJS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/nukebuild.html b/docs/nukebuild.html new file mode 100644 index 000000000..7d78670f3 --- /dev/null +++ b/docs/nukebuild.html @@ -0,0 +1,72 @@ + + + + NukeBuild + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Nuke Build Setup

Installation

    +
  1. Run dotnet tool install Nuke.GlobalTool --global
  2. +
  3. Run nuke :setup
  4. +

image

    +
  • +

    Documentation

    +
  • +
  • +

    Cli-tools Support

    +
  • +
  • +

    See Example

    +
  • +
  • +

    Run dotnet run --plan from build folder to see Execution Plan

    +
  • +
  • +

    Run dotnet run --Param1 "value" --Param2 "value" --Param3 "value"

    +
  • +

Notes:

    +
  1. Install nbgv .NET Core CLI tool
  2. +
  3. Add nuget.config file next to your sln file (requires VS restart)
  4. +
  5. Create build folder under your application and copy the files from PipelineTemplate
  6. +
  7. Update Solution Name in the .nuke/parameters.json file
  8. +
  9. Create the version.json file under each component that must be versioned (required for GitVersioning to calculate the semantic version number)
  10. +
  11. Create deployment_list.json file (required for the pipeline to know which components should be packed for deployment)
  12. +
\ No newline at end of file diff --git a/docs/observability.html b/docs/observability.html new file mode 100644 index 000000000..66eff0cfa --- /dev/null +++ b/docs/observability.html @@ -0,0 +1,49 @@ + + + + Observability + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/onboarding.html b/docs/onboarding.html new file mode 100644 index 000000000..533af0f9f --- /dev/null +++ b/docs/onboarding.html @@ -0,0 +1,61 @@ + + + + Onboarding + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/owasp-top-10.html b/docs/owasp-top-10.html new file mode 100644 index 000000000..1c9a71085 --- /dev/null +++ b/docs/owasp-top-10.html @@ -0,0 +1,49 @@ + + + + OWASP TOP 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/playwright.html b/docs/playwright.html new file mode 100644 index 000000000..ec398c7de --- /dev/null +++ b/docs/playwright.html @@ -0,0 +1,55 @@ + + + + Playwright + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/powershell.html b/docs/powershell.html new file mode 100644 index 000000000..99bd504de --- /dev/null +++ b/docs/powershell.html @@ -0,0 +1,53 @@ + + + + Powershell + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/psychological-safety.html b/docs/psychological-safety.html new file mode 100644 index 000000000..eae61dd5c --- /dev/null +++ b/docs/psychological-safety.html @@ -0,0 +1,46 @@ + + + + Psychological Safety + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/quality.html b/docs/quality.html new file mode 100644 index 000000000..eab8cd7a5 --- /dev/null +++ b/docs/quality.html @@ -0,0 +1,108 @@ + + + + Quality + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Quality

Goal-Oriented Ideas

\ No newline at end of file diff --git a/docs/redis.html b/docs/redis.html new file mode 100644 index 000000000..a88841157 --- /dev/null +++ b/docs/redis.html @@ -0,0 +1,57 @@ + + + + Redis + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Redis

Server

    +
  • docker run --name redisserver -p 6379:6379 -v hfredisdata:/var/opt/redis -d redis:latest
  • +
  • docker run --name redisserver -p 6379:6379 -v hfredisdata:/var/opt/redis -d redis:latest --requirepass test
  • +
  • docker run -d --cap-add sys_resource --name rp -p 8443:8443 -p 9443:9443 -p 12000:12000 redislabs/redis
  • +

Client

    +
  • docker run -it --rm redis redis-cli --verbose -h host.docker.internal
  • +
  • docker run -it --rm redis redis-cli --verbose -h host.docker.internal --tls --insecure
  • +

Reference

\ No newline at end of file diff --git a/docs/reports.html b/docs/reports.html new file mode 100644 index 000000000..51a14bed7 --- /dev/null +++ b/docs/reports.html @@ -0,0 +1,81 @@ + + + + reports + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/secure-code-warriors.html b/docs/secure-code-warriors.html new file mode 100644 index 000000000..6b785e619 --- /dev/null +++ b/docs/secure-code-warriors.html @@ -0,0 +1,49 @@ + + + + Secure Code Warriors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/security.html b/docs/security.html new file mode 100644 index 000000000..ea055fe17 --- /dev/null +++ b/docs/security.html @@ -0,0 +1,51 @@ + + + + Security + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/shareknowledgecampaign.html b/docs/shareknowledgecampaign.html new file mode 100644 index 000000000..e332f73c6 --- /dev/null +++ b/docs/shareknowledgecampaign.html @@ -0,0 +1,69 @@ + + + + ShareKnowledgeCampaign + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Email 1 (2 weeks prior to launch)

Hi team,

I’m excited to share that we’re giving each of you access to Stack Overflow for Teams, a secure and private place for you to share and find knowledge related to our technology and company. Instead of getting pinged through chat or email for information causing distractions, we’ll be able to work more asynchronously by storing our team knowledge in one central location for any of us to access at any time.

To help you get familiar, you can watch the following short videos:

How to ask and answer a question

How to write an Article

How to create a Collection

You can also check out this user guide on how to use Stack Overflow for Teams.

We’ll be releasing this company-wide on ___ so be on the lookout for an invite!

In the meantime, start thinking about the most common questions you get asked - we’ll be asking you to transfer that knowledge into our brand new Stack Overflow for Team when we launch. More to come about this exciting addition to our tools tech stack!

Please let me know if you have any questions.

Email 2 (1 week prior to launch)

Hi there,

As I’ve mentioned, we’re counting down the days to launch for Stack Overflow for Teams, and I’m asking you to take 30 minutes between now and then to gather some of the most frequently asked questions that you hear on chat or in email and jot them down. These questions might sound like:

How do I find...?

What is the process for…?

Who is responsible for... ?

Does anyone know about…?

Does anyone know where…?

When we launch next week, I’ll be asking you to share those questions - and the answers in our Team to get us started.

Thanks!

Email 3 (Launch Day)

Hi there,

Each of you should have just received an invite to Stack Overflow for Teams / Each of you now has access to our own Stack Overflow for Teams.

As requested, please take some time today to ask and answer a question. Here’s how to do that:

Start a new question draft
+
+Use the question as the title
+
+Draft the question in total in the body
+
+Click “Answer my own question” at the bottom of the page
+
+Include your answer
+
+Hit save
+

What if my question has already been asked/answered?

When you type your question in the title bar, you will see if any other related questions have been asked. If you notice this, click on the question that is populated and check to see if it has been answered. If not, please do so! Notice that you could add more context? Go ahead and add that!

What if I don’t know of any common questions?

There are bound to be at least a few questions that our chat channels or you personally get asked on a somewhat regular basis. Check back through your chat and email messages if you’re struggling to come up with something.

What else can I do within Teams?

Have a question that you don’t know the answer to? Write it up, and let’s get you some answers!
+
+Upvote good questions and answers and use emojis to show your enthusiasm. 
+
+Create an Article. Longer-form content like project documentation, how-to guides, etc. can live in our Team, too - just copy and paste something that you already know exists, and everyone else will be able to access it.
+

Email 4 (2 days post-launch)

Hi team,

Congrats! We’ve managed to ask _ questions, provide ___ answers, and write ____ Articles. This is just the beginning - and we’re already off to a great start!

What can you do next to make sure that our knowledge community thrives?

Make sure that you are asking questions in our Team.
+
+Follow and create tags to stay on top of new information.
+
+When you see someone asking questions in Slack/Microsoft Teams, use the integration to suggest that they ask the question in our Team instead.
+
+Continue to transport documents into Articles.
+

I’ll continue to keep you all updated on how our Team is growing on a regular basis, and in the meantime, if you have any questions, please feel free to contact me.

Thank you!

\ No newline at end of file diff --git a/docs/software-development-strategy.html b/docs/software-development-strategy.html new file mode 100644 index 000000000..f3c76ce29 --- /dev/null +++ b/docs/software-development-strategy.html @@ -0,0 +1,244 @@ + + + + Software Development Strategy + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Software Development Strategy

Table of contents

Introduction

This document is a set of upfront decisions that allows the team to come up with an effective set of dos, don’ts and hows regarding
+the future application design, development and deployment, and move consistently through each step of a development project.

General

    +
  • Use GitHub folder structure (src, doc, test, build, tool)
  • +
  • Use sqlproj project file for SQL databases
  • +
  • Use the latest .NET LTS version. See .NET Roadmap
  • +

Guidelines

Tools, Frameworks and Libraries

Code Reviews

Tools

Logging

Always use Structured Logging, which makes it easier to store and query log-events.
+https://datatracker.ietf.org/doc/html/rfc7807

Health Checks

A health check API is a separate REST service that is implemented within a microservice component that quickly returns the operational status of the service and an indication of its ability to connect to downstream dependent services.
+Example: myservice.com/health

Caching

A distributed cache is a cache shared by multiple app servers, typically maintained as an external service to the app servers that access it. A distributed cache can improve the performance and scalability of an application, especially when the application is hosted by a cloud service or a server farm.

When cached data is distributed, the data:

- Is coherent (consistent) across requests to multiple servers.
+- Survives server restarts and app deployments.
+- Doesn't use local memory.
+

API Versioning

Versioning is an important aspect of any mature web service. Microsoft has published REST API guidelines that require that all compliant services must support explicit versioning. This ensures that clients can rely on services to be stable over time, while still enabling service changes and new features. Detailed information about the recommended guidance can be found in the Microsoft REST Guidelines for versioning.

Example

Code

// Define a 'version set' that applies to an API group
+var versionSet = app.NewApiVersionSet()
+                    .HasApiVersion(1.0)
+                    .HasApiVersion(2.0)
+                    .ReportApiVersions()
+                    .Build();
+
+app.MapGet("{instanceId}/endpoint", [Authorize] async (IMediator mediator, [FromHeader] string authorization, Guid instanceId, CancellationToken cancellationToken) => await mediator.Send(new RequestV1() { InstanceId = instanceId }, cancellationToken))
+   .WithApiVersionSet(versionSet)
+   .MapToApiVersion(1.0);
+
+app.MapGet("{instanceId}/endpoint", [Authorize] async (IMediator mediator, [FromHeader] string authorization, Guid instanceId, CancellationToken cancellationToken) => await mediator.Send(new RequestV2() { InstanceId = instanceId }, cancellationToken))
+   .WithApiVersionSet(versionSet)
+   .MapToApiVersion(2.0);
+

Rate Limiting

Output Caching

Paging

Coding Standards

Clean Code

✅ Detect and address Code Smells with Sonarlint

✅ Follow Clean Code Programming Principles

✅ Follow Clean Code Best Practices: .NET | Typescrypt

✅ Follow Unit Testing Best Practices: .NET

✅ Follow Coding Style Guidelines: C# | TypeScript | Angular | SQL

APIs

Security

✅ Follow Security Guidelines:

Guidelines

Style Guides

Linting

Linting is essentially a form of static code analysis. It analyzes the code you wrote against some rules for stylistic or programmatic errors. Think of it as a tool that flags suspicious usage in software.

A linter can help you save a lot of time by:

    +
  • +

    Preventing broken code from being pushed

    +
  • +
  • +

    Helping establish coding best practices

    +
  • +
  • +

    Building guidelines for code layout and format

    +
  • +
  • +

    Helping code reviews be a lot smoother

    +
  • +
  • +

    Flagging bugs in your code from syntax errors

    +

    Given the useful nature of linting tools, you would ideally want to run a linter before any code reviews happen on every single piece of code that is pushed to your repository. This definitely helps you write better, more readable, and more stable code.

    +
  • +

Super Linter

You first want to pull the latest Docker container down from DockerHub with this command:

docker pull github/super-linter:latest

To run this container you then run the following:

docker run -e RUN_LOCAL=true -e USE_FIND_ALGORITHM=true -v /project/directory:/tmp/lint github/super-linter

Notice a couple of things here:

    +
  • We run it with the RUN_LOCAL flag to bypass some of the GitHub Actions checks. This automatically sets VALIDATE_ALL_CODEBASE to true.
  • +
  • We map our local codebase to /tmp/lint so that the linter can pick up the code.
  • +
  • The way we set environment variables is of course different, but the overall process of running the GitHub Super Linter remains the same.
  • +

Pre-Commit Hooks

Rules Catalog

Code Quality Rules

<PropertyGroup>
+<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
+</PropertyGroup>
+

Best Practices

Reference Material

\ No newline at end of file diff --git a/docs/sql-server.html b/docs/sql-server.html new file mode 100644 index 000000000..4abf2d021 --- /dev/null +++ b/docs/sql-server.html @@ -0,0 +1,234 @@ + + + + Sql Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Sql Server

Installation

Local Server Instance

winget install -e --id Microsoft.SQLServer.2019.Express
+winget install -e --id Microsoft.SQLServer.2019.Developer --override '/QUIET /IACCEPTSQLSERVERLICENSETERMS /CONFIGURATIONFILE="C:\Dev\SQLConfigurationFile.ini"'
+

SQLConfigurationFile.ini

; Microsoft SQL Server Configuration file  
+[OPTIONS]  
+; Specifies a Setup work flow, like INSTALL, UNINSTALL, or UPGRADE.  
+; This is a required parameter.  
+ACTION="Install"  
+; Specifies features to install, uninstall, or upgrade.  
+; The list of top-level features include SQL, AS, RS, IS, and Tools.  
+; The SQL feature will install the database engine, replication, and full-text.  
+; The Tools feature will install Management Tools, Books online,   
+; SQL Server Data Tools, and other shared components.  
+FEATURES=SQL,Tools
+INSTANCENAME=SQL2019Dev
+SQLSYSADMINACCOUNTS="[Domain]\[Username]"
+SECURITYMODE=SQL
+SAPWD="S4P4ssw0rd"
+

Docker Image

docker pull mcr.microsoft.com/mssql/server:2019-latest
+docker pull mcr.microsoft.com/mssql/server:2022-latest
+

SQL Server Management Studio

winget install -e --id Microsoft.SQLServerManagementStudio
+winget upgrade -e --id Microsoft.SQLServerManagementStudio
+

Sqlcmd Tools

winget install -e --id Microsoft.Sqlcmd
+winget upgrade -e --id Microsoft.Sqlcmd
+

Documentation

EF vs. Stored Procedures

SQL Performance

Resources

Retries

Enable transient error resiliency by adding EnableRetryOnFailure to the UseSqlServer call on ASP.NET

Useful Queries

Backup


+--Windows
+BACKUP DATABASE [DbName] TO
+DISK = N'C:\Dev\Database\DbName.bak'
+WITH COMPRESSION, STATS = 10
+GO
+
+--Linux
+BACKUP DATABASE [DbName] TO
+DISK = N'/var/opt/mssql/data/DbName.bak'
+WITH COMPRESSION, STATS = 10
+GO
+

Paging

--https://learn.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql
+SELECT *
+FROM Employee
+ORDER BY EmployeeId
+OFFSET 20 ROWS
+FETCH NEXT 5 ROWS ONLY 
+

Restore

USE master;
+GO
+
+ALTER DATABASE [DbName]
+SET SINGLE_USER
+WITH ROLLBACK IMMEDIATE;
+GO
+
+RESTORE DATABASE [DbName]
+FROM DISK = N'C:\Dev\Database\DbName.bak'
+WITH RECOVERY
+GO
+
+RESTORE DATABASE [DbName]
+FROM DISK = N'C:\Dev\Database\DbName.bak'
+WITH MOVE 'DbName' TO 'C:\Dev\Database\DbName.mdf',
+   MOVE 'DbName_log' TO 'C:\Dev\Database\DbName_log.ldf',
+RECOVERY, REPLACE
+GO
+
+RESTORE DATABASE Local
+FROM DISK = N'/var/opt/mssql/data/Local.bak'
+WITH MOVE 'Database' TO '/var/opt/mssql/data/Local.mdf',
+     MOVE 'Database_Log' TO '/var/opt/mssql/log/Local.ldf',
+RECOVERY, REPLACE
+GO
+

Get all linked tables by FK

SELECT
+OBJECT_NAME(fkeys.constraint_object_id) foreign_key_name,
+OBJECT_NAME(fkeys.parent_object_id) referencing_table_name,
+COL_NAME(fkeys.parent_object_id, fkeys.parent_column_id) referencing_column_name,
+OBJECT_SCHEMA_NAME(fkeys.parent_object_id) referencing_schema_name,
+OBJECT_NAME (fkeys.referenced_object_id) referenced_table_name,
+COL_NAME(
+fkeys.referenced_object_id,
+fkeys.referenced_column_id
+) referenced_column_name,
+OBJECT_SCHEMA_NAME(fkeys.referenced_object_id) referenced_schema_name
+FROM
+sys.foreign_key_columns AS fkeys
+ORDER BY referenced_table_name
+

View the compatibility level of a database

USE AdventureWorks2019;  
+GO  
+SELECT compatibility_level  
+FROM sys.databases WHERE name = 'AdventureWorks2019';  
+GO
+

List table and columns with their foreign keys

SELECT
+schema_name(tab.schema_id) + '.' + tab.name AS [Table],
+col.name AS 'Column Name',
+t.name AS 'Data Type',
+col.max_length AS 'Max Length',
+col.precision AS 'Precision',
+schema_name(pk_tab.schema_id) + '.' + pk_tab.name AS 'Primary Table',
+pk_col.name AS 'PK Column Name',
+fk.name AS 'FK Constraint Name'
+FROM
+sys.tables tab
+INNER JOIN sys.columns col ON col.object_id = tab.object_id
+LEFT OUTER JOIN sys.foreign_key_columns fk_cols ON fk_cols.parent_object_id = tab.object_id
+AND fk_cols.parent_column_id = col.column_id
+LEFT OUTER JOIN sys.types AS t ON col.user_type_id = t.user_type_id
+LEFT OUTER JOIN sys.foreign_keys fk ON fk.object_id = fk_cols.constraint_object_id
+LEFT OUTER JOIN sys.tables pk_tab ON pk_tab.object_id = fk_cols.referenced_object_id
+LEFT OUTER JOIN sys.columns pk_col ON pk_col.column_id = fk_cols.referenced_column_id
+AND pk_col.object_id = fk_cols.referenced_object_id
+ORDER BY
+schema_name(tab.schema_id) + '.' + tab.name,
+col.column_id
+

List tables with no records

SELECT
+  t.NAME AS TableName,
+  p.rows AS RowCounts
+FROM
+  sys.tables t
+  INNER JOIN sys.partitions p ON t.object_id = p.OBJECT_ID
+WHERE
+  t.NAME NOT LIKE 'dt%'
+  AND t.is_ms_shipped = 0
+  AND p.rows = 0
+GROUP BY
+  t.Name,
+  p.Rows
+ORDER BY
+  t.Name
+

Encryption by Certificate

Encryption by Password

1 - Create Symmetric Key (one-off)

Encryption keys are generated by running the CREATE SYMMETRIC KEY command.

CREATE SYMMETRIC KEY [SymKey_SomeID] WITH ALGORITHM = AES_256,
+KEY_SOURCE = 'KEY_SOURCE_STRING',
+IDENTITY_VALUE = 'IDENTITY_VALUE_STRING' ENCRYPTION BY PASSWORD = 'eLtGc5woM&S$n5'
+
+-- View the newly created encryption
+SELECT * 
+FROM sys.symmetric_keys
+
+-- View the actual key data. At its lowest level, a 256 bit AES key is comprised of 256 bits (32 bytes) of data.
+SELECT * 
+FROM sys.key_encryptions
+

2 - Open Symmetric Key

A symmetric encryption key must be opened using the OPEN SYMMETRIC KEY command before it can be used.

OPEN SYMMETRIC KEY [SymKey_SomeID] 
+DECRYPTION BY PASSWORD = 'eLtGc5woM&S$n5'
+

3 - Encrypt Data

Data can be encrypted using the SQL function ENCRYPTBYKEY.

The authenticator value is used as an additional piece of data against which the encryption will be validated. If the same context (including authenticator) is not provided again when decrypting, then decryption will fail.

The following SQL statement demonstrates encrypting a string using a GUID value as an authenticator:

DECLARE @keyId UNIQUEIDENTIFIER = (SELECT key_guid FROM sys.symmetric_keys WHERE name='SymKey_SomeID')
+DECLARE @auth VARCHAR(40) = '7AECFD07-4643-41FC-B17C-472AD71699E7'
+DECLARE @str VARCHAR(50) = 'Super secret string data'
+SELECT ENCRYPTBYKEY(@keyId, @str, 1, @auth)
+

4 - Decrypt Data

DECLARE @encryptedData VARBINARY(200) = 0x00983DD06D6B6AC67A112F2A8866927A020000005A05FE279810FC3A75B27979324C9C81EBCE0D65AD8E2312ACBC5E23A49F135FFE44453511432DDF7C68D764865DE75C12F692E50B0B6EC5F3FD2C0E4C2C68DE5EEB8F773DA407DA32D6C79C5EF6F0BA
+DECLARE @auth VARCHAR(40) = '7AECFD07-4643-41FC-B17C-472AD71699E7'
+SELECT CONVERT(VARCHAR(100), DECRYPTBYKEY(@encryptedData, 1, @auth))
+

Troubleshooting

    +
  • Error: 'Agent XPs' component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Agent XPs' by using sp_configure. For more information about enabling 'Agent XPs', see "Surface Area Configuration" in SQL Server Books Online. (Microsoft.SqlServer.Management.MaintenancePlanWizard)
  • +
  • Solution: +
    sp_configure 'show advanced options', 1;  
    +GO  
    +RECONFIGURE;  
    +GO  
    +sp_configure 'Agent XPs', 1;  
    +GO  
    +RECONFIGURE  
    +GO
    +
    +
  • +
  • Error: SQLServerAgent is not currently running so it cannot be notified of this action. (Microsoft SQL Server, Error: 22022)
  • +
  • Solution: Open SQL Server Configuration Manager and enable SQL Server Agent Service
  • +
  • Error: Cannot execute as the database principal because the principal ‘dbo’ does not exist, this type of principal cannot be impersonated, or you do not have permission. (Microsoft SQL Server, Error: 15517)
  • +
  • Solution: +
    USE [AdventureWorks]
    +GO
    +ALTER AUTHORIZATION ON DATABASE::[AdventureWorks] TO [sa]
    +GO
    +
    +
  • +

Performance

\ No newline at end of file diff --git a/docs/ssl-certificate.html b/docs/ssl-certificate.html new file mode 100644 index 000000000..ff16c78f1 --- /dev/null +++ b/docs/ssl-certificate.html @@ -0,0 +1,134 @@ + + + + SSL Certificate + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SSL Certificate

Create Self-Signed Certificate

+

Note
+This process requires WSL2 and Ubuntu. Read here for installation steps.

+
    +
  1. Open a command prompt window
  2. +
  3. Run ubuntu
  4. +
  5. Create certificate.cnf
  6. +
[req]
+default_bits= 2048
+default_keyfile= keyfile.pem
+distinguished_name= req_distinguished_name
+attributes= req_attributes
+prompt= no
+output_password= mypass
+req_extensions= v3_req
+
+[v3_req]
+basicConstraints= CA:FALSE
+keyUsage= nonRepudiation, digitalSignature, keyEncipherment
+subjectAltName = @alt_names
+
+[alt_names]
+DNS.1   = local.company.dev
+DNS.2   = support.company.dev
+DNS.3   = test.company.dev
+DNS.4   = automation.company.dev
+
+[req_distinguished_name ]
+C= AU
+ST= QLD
+L= Brisbane
+O= company Local
+OU= Technology
+CN= *.company.dev
+emailAddress=leandro@company.com
+
+[req_attributes]
+challengePassword= C0mp4ny
+
    +
  1. openssl req -new -newkey rsa:2048 -nodes -keyout ca.key -out ca.csr -config certificate.cnf
  2. +
  3. openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr -config certificate.cnf
  4. +
  5. openssl req -x509 -new -key ca.key -out ca.crt -days 36500 -config certificate.cnf
  6. +
  7. openssl x509 -req -days 36500 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -extensions v3_req -extfile certificate.cnf
  8. +
  9. openssl verify -CAfile ca.crt -verify_hostname local.company.dev server.crt
  10. +

PFX Export

Required to be visible on IIS, which needs a private key associated to the certificate.

    +
  1. openssl pkcs12 -export -out ca.pfx -inkey ca.key -in ca.crt -passout pass:C0mp4ny
  2. +
  3. openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -passout pass:C0mp4ny
  4. +

Import into Windows Certificate Store

    +
  1. Import-PfxCertificate -FilePath C:\Dev\SSL\ca.pfx -Password (ConvertTo-SecureString -String 'C0mp4ny' -AsPlainText -Force) -CertStoreLocation Cert:\LocalMachine\Root
  2. +
  3. Import-PfxCertificate -FilePath C:\Dev\SSL\server.pfx -Password (ConvertTo-SecureString -String 'C0mp4ny' -AsPlainText -Force) -CertStoreLocation Cert:\LocalMachine\My
  4. +

Firefox

Trust the Certificate Authority: Settings -> Privacy & Security -> View Certificates -> Authorities -> import ca.crt

Configure Certificate in ASP.NET

Configure Certificate in Angular

Manage Certificate Private keys

    +
  1. Go to Windows -> type "run" -> mmc
  2. +
  3. Once the mmc window is up -> Add Snap-in -> Add certificate -> Local Computer
  4. +
  5. Go to Personal -> Certificate -> Select the certificate
  6. +
  7. Right Click Certificate -> All tasks -> Manage Private keys
  8. +

Notes:

    +
  • Private key must be exportable when installing the certificate
  • +
  • In Windows 10 1809, it seems that the Manage Private Keys option is available only to certificates in the Personal store. The workaround is to drag and drop the certificate there, add permissions as needed and drag it back to where you need it.
  • +

Documentation

Difference between CRT and PFX files

A .crt (or .cer or .cert) file usually contains a single X.509 encoded digital certificate, which is what is typically used for SSL/TLS encryption on websites. A .pfx (personal exchange format) file, on the other hand, is a password-protected data file that contains a private key, public key, and typically a chain of digital certificates. The main difference between the two is that a .pfx file contains both the private key and the public key, while a .crt file contains only the public key. Additionally, a .pfx file can include multiple certificates, while a .crt file typically only contains one.

Notes

    +
  • CRT file does not contain the private key
  • +
  • KEY file contains the private key
  • +
  • PFX file contains the private key, but it's protected by a password (eg. C0mp4ny)
  • +

Using CloudFlare as CA

    +
  1. Go to https://dash.cloudflare.com
  2. +
  3. Create a Website
  4. +
  5. Run Ubuntu
  6. +
  7. Run openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
  8. +
  9. When prompted Common Name, make sure you use a wildcard address *.mydomain.dev
  10. +
  11. Run ls and check if server.csr is listed
  12. +
  13. Run cat server.csr
  14. +
  15. Copy the CSR content
  16. +
  17. Go to CloudFare -> Website -> SSL/TLS -> Origin Server -> Create Certificate
  18. +
  19. Select "Use my private key and CSR"
  20. +
  21. Copy content from step 8
  22. +
  23. Click Create
  24. +
  25. Select PEM Format
  26. +
  27. Copy content into a notepad and save as newsslcertificate.crt
  28. +
  29. Generate PFX openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -passout pass:P4ssW0rd
  30. +
\ No newline at end of file diff --git a/docs/support.html b/docs/support.html new file mode 100644 index 000000000..3f7c1ca5b --- /dev/null +++ b/docs/support.html @@ -0,0 +1,61 @@ + + + + support + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Share Secrets

Quick Assist

Give the security code to the person you’re helping and tell them to follow these steps:

    +
  1. Open the Start menu go to Windows Accessories -> Quick Assist or type Quick Assist in the search bar and select the Quick Assist app to launch it.
  2. +
  3. Accept the privacy policy, if prompted.
  4. +
  5. Enter the code provided in Code from assistant and click Share screen.
  6. +
  7. Verify that the person trying to help you is who you expected and accept the request.
  8. +
  9. Wait for your devices to connect.
  10. +

Problem Step Recorder (PSR)

    +
  1. Click on your Windows Start search menu
  2. +
  3. Type “PSR” and then click on psr.exe in the search results.
  4. +
  5. Open the application
  6. +
  7. Start the recording from the login page until you reach the page where you can see the error message/problem occured.
  8. +
  9. Once you reach the last page, ensure your home page before you stop the recording to ensure that you have captured the last page where we encountered the error message.
  10. +
  11. In the Save As dialog box, type a name for the file, and then click Save. Then it will be created as a zip file. Please send the zip file attached to this email
    +You may look online for more suitable steps for your computer if the above steps will not work.
    +Please let me know if you need any further assistance, I would be happy to help and assist further.
  12. +
\ No newline at end of file diff --git a/docs/team-building.html b/docs/team-building.html new file mode 100644 index 000000000..71d2269a2 --- /dev/null +++ b/docs/team-building.html @@ -0,0 +1,55 @@ + + + + Team Building + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/training.html b/docs/training.html new file mode 100644 index 000000000..54add7be3 --- /dev/null +++ b/docs/training.html @@ -0,0 +1,65 @@ + + + + Training + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/troubleshooting.html b/docs/troubleshooting.html new file mode 100644 index 000000000..bde24488b --- /dev/null +++ b/docs/troubleshooting.html @@ -0,0 +1,88 @@ + + + + Troubleshooting + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

My Tools

\ No newline at end of file diff --git a/docs/tye.html b/docs/tye.html new file mode 100644 index 000000000..3d01ac1b0 --- /dev/null +++ b/docs/tye.html @@ -0,0 +1,214 @@ + + + + Tye + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

References

Installation

dotnet tool uninstall -g Microsoft.Tye
+dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
+tye --version
+
    +
  • +

Create tye.yaml

    +
  • +

    Tye Schema File

    +
      +
    1. Go to the solution folder
    2. +
    3. Run tye init to generate tye.yaml
    4. +
    +
  • +

tye.yaml Example

extensions:

    +
  • name: seq
    +logPath: ./.logs
  • +

name: servicetemplate
+network: tye-network
+ingress:
+- name: Ingress
+bindings:
+- port: 50000
+protocol: https
+ip: '127.0.0.1'
+rules:
+- host: authentication-api.domain.com
+service: authentication-api
+services:

- name: authentication-api
+  project: src/Authentication.API/Authentication.API.csproj
+  bindings:
+  - port: 51001
+    protocol: https
+  #replicas: 2
+
+- name: servicename-api
+  project: src/ServiceName.API/ServiceName.API.csproj
+  bindings:
+  - port: 51005
+    protocol: https
+  #replicas: 2
+
+- name: mock-api
+  project: src/Mock.API/Mock.API.csproj
+  bindings:
+  - port: 51003
+    protocol: https
+  #replicas: 2
+
+- name: featuremanagement-api
+  project: src/FeatureManagement.API/FeatureManagement.API.csproj
+  bindings:
+  - port: 51004
+    protocol: https
+  #replicas: 2
+
+- name: analytics-api
+  project: src/Analytics.API/Analytics.API.csproj
+  bindings:
+  - port: 51006
+    protocol: https
+  #replicas: 2
+
+- name: SqlServer
+  image: mcr.microsoft.com/mssql/server:2019-latest
+  bindings:
+  - connectionString: Data Source=localhost,1433;Initial Catalog=ServiceDB;Persist Security Info=True;User ID=sa;Password=${env:SA_PASSWORD}
+    port: 1433
+  env:
+  - name: SA_PASSWORD
+    value: secret
+  - name: ACCEPT_EULA
+    value: "Y"
+
+- name: Redis
+  image: redis
+  bindings:
+  - port: 6379
+    connectionString: "${host}:${port}"
+  args: "--requirepass secret"
+
+- name: DynamoDB
+  image: "amazon/dynamodb-local:latest"
+  args: -jar DynamoDBLocal.jar -inMemory -sharedDb
+  bindings:
+  - port: 8000
+  env:
+  - name: AWS_ACCESS_KEY_ID
+    value: test
+  - name: AWS_SECRET_ACCESS_KEY
+    value: test
+  - name: REGION
+    value: ap-southeast-2
+    
+- name: KMS
+  image: nsmithuk/local-kms
+  volumes:
+     - source: "C:/"
+       target: "/mnt/c"
+  bindings:
+  - port: 52002
+  env:
+  - name: KMS_REGION
+    value: "ap-southeast-2"
+  - name: KMS_SEED_PATH
+    value: "/mnt/c/Dev/local-kms-seed.yaml"
+
+- name: Cognito
+  image: jagregory/cognito-local:latest
+  volumes:
+     - source: "C:/Dev/.cognito"
+       target: "/app/.cognito"
+  bindings:
+  - port: 9229
+  env:
+  - name: NODE_TLS_REJECT_UNAUTHORIZED
+    value: "0"
+
+- name: LocalStack
+  image: "localstack/localstack:latest"
+  bindings:
+  - port: 4566
+  env:
+  - name: DEBUG
+    value: "1"
+  - name: SERVICES
+    value: "logs"
+
+- name: Zipkin
+  image: "openzipkin/zipkin"
+  bindings:
+  - port: 9411
+    protocol: http
+
-
+- https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html ([[Docker]] Tab)
+- https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/DynamoDBLocal.UsageNotes.html
+-
+- **DynamoDB Container Note**
+- ``-inMemory`` and ``-dbPath`` cannot be set at the same time
+- Local [[DynamoDB]] has serious performance issues when not using ``-inMemory`` parameter
+# Run Tye
+- 1. Run ``tye run --port 10000 --dashboard`` (where the ``tye.yaml`` file is located)
+  2. Add ``--watch`` to watch file changes in all projects.
+  3. Add ``--debug *`` to debug (and attach the debugger to the application process)
+-
+- ```
+  aws --endpoint-url=http://localhost:8000 dynamodb list-tables  
+  aws --endpoint-url=http://localhost:8000 dynamodb create-table --table-name ServiceName_Setting --attribute-definitions AttributeName=TenantId,AttributeType=S --key-schema AttributeName=TenantId,KeyType=HASH --billing-mode PAY_PER_REQUEST  
+
    +
  • +

Troubleshooting

    +
  • An attempt was made to access a socket in a way forbidden by its access permissions
    +Run net stop hns and net start hns
  • +
  • +
  • Could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network +
      +
    1. Stop running containers docker kill $(docker ps -q)
    2. +
    3. Remove all containers docker rm $(docker ps -a -q)
    4. +
    5. Remove unused networks docker network prune
    6. +
    +
  • +
\ No newline at end of file diff --git a/docs/visual-studio.html b/docs/visual-studio.html new file mode 100644 index 000000000..c6c8a573d --- /dev/null +++ b/docs/visual-studio.html @@ -0,0 +1,127 @@ + + + + Visual Studio + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Visual Studio

<<<<<<< HEAD

Installation

>>>>>>> e89b33083bcb8beb793b776dec7c4eab0dce39bd
+ winget install -e --id Microsoft.VisualStudio.2019.Professional
+ winget install -e --id Microsoft.VisualStudio.2022.Enterprise
+ winget install -e --id Microsoft.VisualStudio.2022.TestController
+ winget install -e --id Microsoft.VisualStudio.2022.TestAgent
+ winget install -e --id Microsoft.VisualStudio.2022.TeamExplorer
+ winget install -e --id Microsoft.VisualStudio.2022.Professional
+ winget install -e --id Microsoft.VisualStudio.2022.Enterprise
+ winget install -e --id Microsoft.VisualStudio.2022.Community
+ winget install -e --id Microsoft.VisualStudio.2022.BuildTools
+

Configuration

Extensions


+#Credits: https://gist.github.com/ScottHutchinson/b22339c3d3688da5c9b477281e258400
+#$PackageName = "AmazonWebServices.AWSToolkitforVisualStudio2022"
+#$PackageName = "GitHub.copilotvs"
+#$PackageName = "SteveCadwallader.CodeMaid"
+#$PackageName = "SteveCadwallader.CodeMaidVS2022"
+#$PackageName = "ironcev.sharpen"
+#$PackageName = "SonarSource.SonarLintforVisualStudio2022"
+#$PackageName = "DevExpress.CodeRushforVS2022"
+#$PackageName = "MLNET.notebook"
+#$PackageName = "VisualStudioProductTeam.ProjectSystemTools2022"
+$PackageName = "snyk-security.snyk-vulnerability-scanner-vs-2022"
+
+$ErrorActionPreference = "Stop"
+
+$baseProtocol = "https:"
+$baseHostName = "marketplace.visualstudio.com"
+
+$Uri = "$($baseProtocol)//$($baseHostName)/items?itemName=$($PackageName)"
+$VsixLocation = "$($env:Temp)\$([guid]::NewGuid()).vsix"
+
+$VSInstallDir = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service"
+
+if (-Not $VSInstallDir) {
+Write-Error "Visual Studio InstallDir registry key missing"
+Exit 1
+}
+
+Write-Host "Grabbing VSIX extension at $($Uri)"
+$HTML = Invoke-WebRequest -Uri $Uri -UseBasicParsing -SessionVariable session
+
+Write-Host "Attempting to download $($PackageName)..."
+$anchor = $HTML.Links |
+Where-Object { $_.class -eq 'install-button-container' } |
+Select-Object -ExpandProperty href
+
+if (-Not $anchor) {
+Write-Error "Could not find download anchor tag on the Visual Studio Extensions page"
+Exit 1
+}
+Write-Host "Anchor is $($anchor)"
+$href = "$($baseProtocol)//$($baseHostName)$($anchor)"
+Write-Host "Href is $($href)"
+Invoke-WebRequest $href -OutFile $VsixLocation -WebSession $session
+
+if (-Not (Test-Path $VsixLocation)) {
+Write-Error "Downloaded VSIX file could not be located"
+Exit 1
+}
+Write-Host "VSInstallDir is $($VSInstallDir)"
+Write-Host "VsixLocation is $($VsixLocation)"
+Write-Host "Installing $($PackageName)..."
+Start-Process -Filepath "$($VSInstallDir)\VSIXInstaller" -ArgumentList "/q /a $($VsixLocation)" -Wait
+
+Write-Host "Cleanup..."
+rm $VsixLocation
+
+Write-Host "Installation of $($PackageName) complete!"
+

Features

\ No newline at end of file diff --git a/docs/vscode.html b/docs/vscode.html new file mode 100644 index 000000000..55de623f9 --- /dev/null +++ b/docs/vscode.html @@ -0,0 +1,86 @@ + + + + VSCode + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VSCode

Installation

    +
  • Run winget install -e --id Microsoft.VisualStudioCode
  • +

Extensions

code --install-extension ms-dotnettools.csdevkit
+code --install-extension ms-vscode-remote.remote-containers
+code --install-extension amazonwebservices.aws-toolkit-vscode
+code --install-extension angular.ng-template
+code --install-extension johnpapa.angular-essentials
+code --install-extension johnpapa.angular2
+code --install-extension kendoui.kendotemplatewizard
+code --install-extension dbaeumer.vscode-eslint
+code --install-extension ms-vscode.vscode-typescript-next
+code --install-extension ms-vscode.powershell
+code --install-extension ms-dotnettools.csharp
+code --install-extension ms-azuretools.vscode-docker
+code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools
+code --install-extension ms-vsliveshare.vsliveshare
+code --install-extension esbenp.prettier-vscode
+code --install-extension ms-edgedevtools.vscode-edge-devtools	
+code --install-extension GitHub.codespaces
+code --install-extension GitHub.remotehub
+code --install-extension GitHub.vscode-codeql
+code --install-extension GitHub.classroom
+code --install-extension Atlassian.atlascode
+code --install-extension ms-playwright.playwright
+code --install-extension vsblox.blox
+code --install-extension bierner.markdown-mermaid
+code --install-extension pflannery.vscode-versionlens
+code --install-extension wix.vscode-import-cost
+code --install-extension eamodio.gitlens
+code --install-extension pranaygp.vscode-css-peek
+code --install-extension usernamehw.errorlens
+code --install-extension ms-azuretools.vscode-tye
+code --install-extension SonarSource.sonarlint-vscode
+code --install-extension quicktype.quicktype
+code --install-extension ms-dotnettools.dotnet-interactive-vscode
+code --install-extension ms-vscode-remote.vscode-remote-extensionpack
+
    +
  • +

Documentation

\ No newline at end of file diff --git a/docs/ways-of-working.html b/docs/ways-of-working.html new file mode 100644 index 000000000..d4fa48de4 --- /dev/null +++ b/docs/ways-of-working.html @@ -0,0 +1,67 @@ + + + + Ways of Working + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ways of Working

Project Planning

Capacity Planning

A great resource to help with Public Holidays is Google Calendar API

Definition of Ready (DOR)

    +
  • Independent (of all others).
  • +
  • Negotiable (not a specific contract for features).
  • +
  • Valuable (or vertical).
  • +
  • Estimable (to a good approximation).
  • +
  • Small (so as to fit within an iteration).
  • +
  • Testable (in principle, even if there isn’t a test for it yet).
  • +

Definition of Done (DOD)

The Definition of Done creates transparency by providing everyone a shared understanding of what work was completed.

    +
  • Unit tests are passing.
  • +
  • Automation tests are passing.
  • +
  • Documentation is updated.
  • +
  • The change is code reviewed via a pull request.
  • +
  • Code is merged into the main branch.
  • +
  • Testing is done by Testers.
  • +

Managing Risks, Assumptions, Impediments, and Dependencies

Strategy

\ No newline at end of file diff --git a/docs/wellbeing.html b/docs/wellbeing.html new file mode 100644 index 000000000..4881ad012 --- /dev/null +++ b/docs/wellbeing.html @@ -0,0 +1,75 @@ + + + + Wellbeing + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Wellbeing

Mental Health

Happiness

\ No newline at end of file diff --git a/docs/windows-terminal.html b/docs/windows-terminal.html new file mode 100644 index 000000000..3c3bc07e7 --- /dev/null +++ b/docs/windows-terminal.html @@ -0,0 +1,68 @@ + + + + Windows Terminal + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Windows Terminal

Installation

    +
  1. Install Caskaydia Cove Nerd Font Complete Regular.otf
  2. +
  3. Run winget install --id Microsoft.WindowsTerminal
  4. +
  5. Run winget install --id Microsoft.PowerShell
  6. +
  7. Run winget install --id JanDeDobbeleer.OhMyPosh
  8. +
  9. Run Install-Module PSReadLine -AllowPrerelease -Force
  10. +
  11. Run notepad $PROFILE
  12. +
  13. Add these lines
  14. +
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression
+Import-Module PSReadLine
+Set-PSReadLineOption -PredictionSource History  
+Set-PSReadLineOption -PredictionViewStyle ListView  
+Set-PSReadLineOption -EditMode Windows
+
    +
  1. Restart command prompt window
  2. +
  3. Go to Settings -> Profile -> Appearance
  4. +
  5. Check "Show all fonts"
  6. +
  7. Choose the CaskaydiaCove Nerd Font
  8. +

Documentation

\ No newline at end of file diff --git a/docs/windows.html b/docs/windows.html new file mode 100644 index 000000000..c13bd421e --- /dev/null +++ b/docs/windows.html @@ -0,0 +1,98 @@ + + + + Windows + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Windows

DISM Commands

    +
  • List All Features: DISM /online /get-features /Format:Table
  • +
  • See Feature Info: DISM /online /get-featureinfo /featurename:[feature name]
  • +
  • Disable Feature: DISM /online /disable-feature /featurename:[feature name]
  • +
  • Enable Feature: DISM /online /enable-feature /featurename:[feature name]
  • +

Enable Windows Features (Windows 10)

DISM /online /enable-feature /featurename:IIS-WebServerRole
+DISM /online /enable-feature /featurename:IIS-WebServerManagementTools
+DISM /online /enable-feature /featurename:IIS-ManagementConsole
+DISM /online /enable-feature /featurename:IIS-NetFxExtensibility45
+DISM /online /enable-feature /featurename:IIS-ISAPIExtensions
+DISM /online /enable-feature /featurename:IIS-ISAPIFilter
+DISM /online /enable-feature /featurename:IIS-ASPNET45
+DISM /online /enable-feature /featurename:IIS-CGI
+DISM /online /enable-feature /featurename:IIS-DefaultDocument
+DISM /online /enable-feature /featurename:IIS-DirectoryBrowsing
+DISM /online /enable-feature /featurename:IIS-HttpErrors
+DISM /online /enable-feature /featurename:IIS-StaticContent
+DISM /online /enable-feature /featurename:IIS-HttpLogging
+DISM /online /enable-feature /featurename:IIS-HttpCompressionStatic
+DISM /online /enable-feature /featurename:IIS-Security
+DISM /online /enable-feature /featurename:IIS-IPSecurity
+DISM /online /enable-feature /featurename:IIS-BasicAuthentication
+DISM /online /enable-feature /featurename:IIS-WindowsAuthentication                 
+DISM /online /enable-feature /featurename:IIS-DigestAuthentication      
+DISM /online /enable-feature /featurename:IIS-URLAuthorization            
+DISM /online /enable-feature /featurename:IIS-ClientCertificateMappingAuthentication
+DISM /online /enable-feature /featurename:IIS-IISCertificateMappingAuthentication   
+DISM /online /enable-feature /featurename:IIS-CertProvider
+
    +
  • +

Configure IP/Port Mapping

Overview

image

Actions

    +
  1. Started my server on localhost:8081
  2. +
  3. Added my "local DNS" in the hosts file as a new line (127.65.43.21 example.app). Any free address in the network 127.0.0.0/8 (127.x.x.x) can be used. You can check with netstat -a -n -p TCP | grep "LISTENING"
  4. +
  5. Added the following network configuration with netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  6. +
  7. I can now access the server at http://example.app
  8. +

Notes

    +
  • +

    These commands/file modifications need to be executed with Admin rights

    +
  • +
  • +

    netsh portproxy needs ipv6 libraries even only to use v4tov4, typically they will also be included by default, otherwise install them using the following command: netsh interface ipv6 install

    +

    You can see the entry you have added with the command:

    +

    netsh interface portproxy show v4tov4

    +

    You can remove the entry with the following command:

    +

    netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21

    +
  • +

Documentation

\ No newline at end of file diff --git a/docs/winget.html b/docs/winget.html new file mode 100644 index 000000000..cdd22d7c4 --- /dev/null +++ b/docs/winget.html @@ -0,0 +1,57 @@ + + + + WinGet + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
WinGet

Installation

This step is not required from Windows 11 onwards

WindowsTerminal_KmYQFR6mEb

winget search dapr

Packages:

Upgrade

winget upgrade --all --silent

Documentation

\ No newline at end of file diff --git a/docs/wiremocknet.html b/docs/wiremocknet.html new file mode 100644 index 000000000..e234ef5bc --- /dev/null +++ b/docs/wiremocknet.html @@ -0,0 +1,53 @@ + + + + WireMockNet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mkdocs-overrides/assets/javascripts/bundle.39654835.min.js b/mkdocs-overrides/assets/javascripts/bundle.39654835.min.js deleted file mode 100644 index 7c8844695..000000000 --- a/mkdocs-overrides/assets/javascripts/bundle.39654835.min.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict";(()=>{var Zn=Object.create;var Fr=Object.defineProperty;var eo=Object.getOwnPropertyDescriptor;var ro=Object.getOwnPropertyNames,ot=Object.getOwnPropertySymbols,to=Object.getPrototypeOf,at=Object.prototype.hasOwnProperty,no=Object.prototype.propertyIsEnumerable;var it=(e,r,t)=>r in e?Fr(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,Qe=(e,r)=>{for(var t in r||(r={}))at.call(r,t)&&it(e,t,r[t]);if(ot)for(var t of ot(r))no.call(r,t)&&it(e,t,r[t]);return e};var ve=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var oo=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of ro(r))!at.call(e,o)&&o!==t&&Fr(e,o,{get:()=>r[o],enumerable:!(n=eo(r,o))||n.enumerable});return e};var kr=(e,r,t)=>(t=e!=null?Zn(to(e)):{},oo(r||!e||!e.__esModule?Fr(t,"default",{value:e,enumerable:!0}):t,e));var At=ve((ui,Je)=>{/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var st,ut,ft,ct,lt,pt,mt,ht,dt,Ke,Hr,vt,bt,yt,Oe,xt,gt,wt,_t,St,Et,Ot,Tt,Ye;(function(e){var r=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(t(r,t(n)))}):typeof Je=="object"&&typeof Je.exports=="object"?e(t(r,t(Je.exports))):e(t(r));function t(n,o){return n!==r&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(i,s){return n[i]=o?o(i,s):s}}})(function(e){var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])};st=function(n,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");r(n,o);function i(){this.constructor=n}n.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)},ut=Object.assign||function(n){for(var o,i=1,s=arguments.length;i=0;c--)(f=n[c])&&(a=(u<3?f(a):u>3?f(o,i,a):f(o,i))||a);return u>3&&a&&Object.defineProperty(o,i,a),a},lt=function(n,o){return function(i,s){o(i,s,n)}},pt=function(n,o){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,o)},mt=function(n,o,i,s){function u(a){return a instanceof i?a:new i(function(f){f(a)})}return new(i||(i=Promise))(function(a,f){function c(h){try{l(s.next(h))}catch(d){f(d)}}function p(h){try{l(s.throw(h))}catch(d){f(d)}}function l(h){h.done?a(h.value):u(h.value).then(c,p)}l((s=s.apply(n,o||[])).next())})},ht=function(n,o){var i={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},s,u,a,f;return f={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function c(l){return function(h){return p([l,h])}}function p(l){if(s)throw new TypeError("Generator is already executing.");for(;i;)try{if(s=1,u&&(a=l[0]&2?u.return:l[0]?u.throw||((a=u.return)&&a.call(u),0):u.next)&&!(a=a.call(u,l[1])).done)return a;switch(u=0,a&&(l=[l[0]&2,a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,u=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(a=i.trys,!(a=a.length>0&&a[a.length-1])&&(l[0]===6||l[0]===2)){i=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},Hr=function(n,o){var i=typeof Symbol=="function"&&n[Symbol.iterator];if(!i)return n;var s=i.call(n),u,a=[],f;try{for(;(o===void 0||o-- >0)&&!(u=s.next()).done;)a.push(u.value)}catch(c){f={error:c}}finally{try{u&&!u.done&&(i=s.return)&&i.call(s)}finally{if(f)throw f.error}}return a},vt=function(){for(var n=[],o=0;o1||c(m,b)})})}function c(m,b){try{p(s[m](b))}catch(w){d(a[0][3],w)}}function p(m){m.value instanceof Oe?Promise.resolve(m.value.v).then(l,h):d(a[0][2],m)}function l(m){c("next",m)}function h(m){c("throw",m)}function d(m,b){m(b),a.shift(),a.length&&c(a[0][0],a[0][1])}},gt=function(n){var o,i;return o={},s("next"),s("throw",function(u){throw u}),s("return"),o[Symbol.iterator]=function(){return this},o;function s(u,a){o[u]=n[u]?function(f){return(i=!i)?{value:Oe(n[u](f)),done:u==="return"}:a?a(f):f}:a}},wt=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n[Symbol.asyncIterator],i;return o?o.call(n):(n=typeof Ke=="function"?Ke(n):n[Symbol.iterator](),i={},s("next"),s("throw"),s("return"),i[Symbol.asyncIterator]=function(){return this},i);function s(a){i[a]=n[a]&&function(f){return new Promise(function(c,p){f=n[a](f),u(c,p,f.done,f.value)})}}function u(a,f,c,p){Promise.resolve(p).then(function(l){a({value:l,done:c})},f)}},_t=function(n,o){return Object.defineProperty?Object.defineProperty(n,"raw",{value:o}):n.raw=o,n};var t=Object.create?function(n,o){Object.defineProperty(n,"default",{enumerable:!0,value:o})}:function(n,o){n.default=o};St=function(n){if(n&&n.__esModule)return n;var o={};if(n!=null)for(var i in n)i!=="default"&&Object.prototype.hasOwnProperty.call(n,i)&&Ye(o,n,i);return t(o,n),o},Et=function(n){return n&&n.__esModule?n:{default:n}},Ot=function(n,o,i,s){if(i==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof o=="function"?n!==o||!s:!o.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?s:i==="a"?s.call(n):s?s.value:o.get(n)},Tt=function(n,o,i,s,u){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!u)throw new TypeError("Private accessor was defined without a setter");if(typeof o=="function"?n!==o||!u:!o.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?u.call(n,i):u?u.value=i:o.set(n,i),i},e("__extends",st),e("__assign",ut),e("__rest",ft),e("__decorate",ct),e("__param",lt),e("__metadata",pt),e("__awaiter",mt),e("__generator",ht),e("__exportStar",dt),e("__createBinding",Ye),e("__values",Ke),e("__read",Hr),e("__spread",vt),e("__spreadArrays",bt),e("__spreadArray",yt),e("__await",Oe),e("__asyncGenerator",xt),e("__asyncDelegator",gt),e("__asyncValues",wt),e("__makeTemplateObject",_t),e("__importStar",St),e("__importDefault",Et),e("__classPrivateFieldGet",Ot),e("__classPrivateFieldSet",Tt)})});var $e=ve(Y=>{(function(){var e,r,t,n,o,i,s,u,a,f,c,p,l,h,d,m,b,w,S,P;P=150,f=20,S=150,a=.75,Y.score=function(v,y,_){var O,x,g,T;return x=_.preparedQuery,O=_.allowErrors,O||o(v,x.core_lw,x.core_up)?(T=v.toLowerCase(),g=r(v,T,x),Math.ceil(g)):0},Y.isMatch=o=function(v,y,_){var O,x,g,T,R,z,C;if(g=v.length,T=y.length,!g||T>g)return!1;for(O=-1,x=-1;++x-1)return d(v,y,me,oe,se,D,q);for(Ee=new Array(D),R=new Array(D),Rr=w(D,q),j=Math.ceil(a*D)+5,ne=j,C=!0,I=-1;++Iue&&(ue=Ge),z=0,oe[I]===Lr)if(Pr=u(H,v,y),z=T>0?T:l(v,y,me,oe,H,I,Pr),g=Cr+p(H,I,Pr,x,z),g>ue)ue=g,ne=j;else{if(de&&--ne<=0)return Math.max(ue,Ee[D-1])*Rr;de=!1}Cr=Ge,T=R[I],R[I]=z,Ee[I]=ue}}return ue=Ee[D-1],ue*Rr},Y.isWordStart=u=function(v,y,_){var O,x;return v===0?!0:(O=y[v],x=y[v-1],i(x)||O!==_[v]&&x===_[v-1])},Y.isWordEnd=s=function(v,y,_,O){var x,g;return v===O-1?!0:(x=y[v],g=y[v+1],i(g)||x===_[v]&&g!==_[v+1])},i=function(v){return v===" "||v==="."||v==="-"||v==="_"||v==="/"||v==="\\"},b=function(v){var y;return vx?O:x)+10):g+P*x},Y.scoreConsecutives=l=function(v,y,_,O,x,g,T){var R,z,C,H,I,q,j;for(z=v.length,H=_.length,C=z-x,I=H-g,R=C-1&&(I=u(C,v,y),I&&(x=C))),z=-1,H=0;++z1&&C>1))return t;for(x=0,j=0,ne=0,I=0,T=-1,R=-1;++R-1){j++;continue}else break;for(;++T12*R)return!1;for(g=-1;++gO)return!1;return!0}}).call(Y)});var Mr=ve(Ne=>{(function(){var e,r,t,n,o,i,s,u,a,f;f=$e(),i=f.isMatch,e=f.computeScore,u=f.scoreSize,a=20,t=2.5,Ne.score=function(c,p,l){var h,d,m,b;return d=l.preparedQuery,h=l.allowErrors,h||i(c,d.core_lw,d.core_up)?(b=c.toLowerCase(),m=e(c,b,d),m=s(c,b,m,l),Math.ceil(m)):0},s=function(c,p,l,h){var d,m,b,w,S,P,v,y,_,O;if(l===0)return 0;for(_=h.preparedQuery,O=h.useExtensionBonus,y=h.pathSeparator,S=c.length-1;c[S]===y;)S--;if(b=c.lastIndexOf(y,S),v=S-b,P=1,O&&(P+=o(p,_.ext,b,S,2),l*=P),b===-1)return l;for(w=_.depth;b>-1&&w-- >0;)b=c.lastIndexOf(y,b-1);return m=b===-1?l:P*e(c.slice(b+1,S+1),p.slice(b+1,S+1),_),d=.5*a/(a+r(c,S+1,y)),d*m+(1-d)*l*u(0,t*v)},Ne.countDir=r=function(c,p,l){var h,d;if(p<1)return 0;for(h=0,d=-1;++dl)))return 0;for(w=p.length,m=h-S,m0?.9*o(c,p,l,S-2,d-1):b/m}}).call(Ne)});var rt=ve((Hn,Wn)=>{(function(){var e,r,t,n,o,i,s,u;u=Mr(),t=u.countDir,o=u.getExtension,Wn.exports=e=function(){function a(f,c){var p,l,h;if(h=c!=null?c:{},p=h.optCharRegEx,l=h.pathSeparator,!(f&&f.length))return null;this.query=f,this.query_lw=f.toLowerCase(),this.core=r(f,p),this.core_lw=this.core.toLowerCase(),this.core_up=s(this.core),this.depth=t(f,f.length,l),this.ext=o(this.query_lw),this.charCodes=n(this.query_lw)}return a}(),i=/[ _\-:\/\\]/g,r=function(a,f){return f==null&&(f=i),a.replace(f,"")},s=function(a){var f,c,p,l;for(c="",p=0,l=a.length;p{(function(){var e,r,t,n,o;n=$e(),r=Mr(),e=rt(),t=function(i){return i.candidate},o=function(i,s){return s.score-i.score},Un.exports=function(i,s,u){var a,f,c,p,l,h,d,m,b,w,S,P,v;for(m=[],c=u.key,l=u.maxResults,p=u.maxInners,S=u.usePathScoring,b=p!=null&&p>0?p:i.length+1,a=c!=null,d=S?r:n,P=0,v=i.length;P0&&(m.push({candidate:f,score:h}),!--b))));P++);return m.sort(o),i=m.map(t),l!=null&&(i=i.slice(0,l)),i}}).call(zn)});var Vn=ve(Ir=>{(function(){var e,r,t,n,o,i,s,u,a,f;f=$e(),t=f.isMatch,n=f.isWordStart,a=f.scoreConsecutives,u=f.scoreCharacter,s=f.scoreAcronyms,Ir.match=o=function(c,p,l){var h,d,m,b,w,S;return h=l.allowErrors,w=l.preparedQuery,b=l.pathSeparator,h||t(c,w.core_lw,w.core_up)?(S=c.toLowerCase(),m=r(c,S,w),m.length===0||c.indexOf(b)>-1&&(d=e(c,S,w,b),m=i(m,d)),m):[]},Ir.wrap=function(c,p,l){var h,d,m,b,w,S,P,v,y;if(l.wrap!=null&&(y=l.wrap,S=y.tagClass,v=y.tagOpen,P=y.tagClose),S==null&&(S="highlight"),v==null&&(v=''),P==null&&(P=""),c===p)return v+c+P;if(m=o(c,p,l),m.length===0)return c;for(b="",h=-1,w=0;++hw&&(b+=c.substring(w,d),w=d);++hw&&(b+=v,b+=c.substring(w,d),b+=P,w=d)}return w<=c.length-1&&(b+=c.substring(w)),b},e=function(c,p,l,h){var d,m,b;for(b=c.length-1;c[b]===h;)b--;if(d=c.lastIndexOf(h,b),d===-1)return[];for(m=l.depth;m-- >0;)if(d=c.lastIndexOf(h,d-1),d===-1)return[];return d++,b++,r(c.slice(d,b),p.slice(d,b),l,d)},i=function(c,p){var l,h,d,m,b,w,S;if(b=c.length,w=p.length,w===0)return c.slice();if(b===0)return p.slice();for(d=-1,m=0,h=p[m],S=[];++d0?y:a(c,p,I,q,x,g,oe),P=ne+u(x,g,oe,S,O)),se=D[g],y=_[g],j>se?z=m:(j=se,z=w),P>j?(j=P,z=d):O=0,D[g]=j,_[g]=O,de[++H]=j>0?z:b;for(x=T-1,g=C-1,H=x*C+g,v=!0,R=[];v&&x>=0&&g>=0;)switch(de[H]){case w:x--,H-=C;break;case m:g--,H--;break;case d:R.push(x+h),g--,x--,H-=C+1;break;default:v=!1}return R.reverse(),R}}).call(Ir)});var tt=ve((qn,Dn)=>{(function(){var e,r,t,n,o,i,s,u;t=jn(),n=Vn(),u=$e(),i=Mr(),e=rt(),s=null,r=(typeof process!="undefined"&&process!==null?process.platform:void 0)==="win32"?"\\":"/",Dn.exports={filter:function(a,f,c){return c==null&&(c={}),(f!=null?f.length:void 0)&&(a!=null?a.length:void 0)?(c=o(c,f),t(a,f,c)):[]},score:function(a,f,c){return c==null&&(c={}),(a!=null?a.length:void 0)&&(f!=null?f.length:void 0)?(c=o(c,f),c.usePathScoring?i.score(a,f,c):u.score(a,f,c)):0},match:function(a,f,c){var p,l,h;return c==null&&(c={}),a?f?a===f?function(){h=[];for(var d=0,m=a.length;0<=m?dm;0<=m?d++:d--)h.push(d);return h}.apply(this):(c=o(c,f),n.match(a,f,c)):[]:[]},wrap:function(a,f,c){return c==null&&(c={}),a?f?(c=o(c,f),n.wrap(a,f,c)):[]:[]},prepareQuery:function(a,f){return f==null&&(f={}),f=o(f,a),f.preparedQuery}},o=function(a,f){return a.allowErrors==null&&(a.allowErrors=!1),a.usePathScoring==null&&(a.usePathScoring=!0),a.useExtensionBonus==null&&(a.useExtensionBonus=!1),a.pathSeparator==null&&(a.pathSeparator=r),a.optCharRegEx==null&&(a.optCharRegEx=null),a.wrap==null&&(a.wrap=null),a.preparedQuery==null&&(a.preparedQuery=s&&s.query===f?s:s=new e(f,a)),a}}).call(qn)});var Mt=kr(At(),1),{__extends:V,__assign:fi,__rest:ci,__decorate:li,__param:pi,__metadata:mi,__awaiter:It,__generator:Be,__exportStar:hi,__createBinding:di,__values:re,__read:W,__spread:vi,__spreadArrays:bi,__spreadArray:U,__await:Xe,__asyncGenerator:Ct,__asyncDelegator:yi,__asyncValues:Lt,__makeTemplateObject:xi,__importStar:gi,__importDefault:wi,__classPrivateFieldGet:_i,__classPrivateFieldSet:Si}=Mt.default;function E(e){return typeof e=="function"}function Ze(e){var r=function(n){Error.call(n),n.stack=new Error().stack},t=e(r);return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var er=Ze(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription: -`+t.map(function(n,o){return o+1+") "+n.toString()}).join(` - `):"",this.name="UnsubscriptionError",this.errors=t}});function fe(e,r){if(e){var t=e.indexOf(r);0<=t&&e.splice(t,1)}}var ie=function(){function e(r){this.initialTeardown=r,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var r,t,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var u=re(s),a=u.next();!a.done;a=u.next()){var f=a.value;f.remove(this)}}catch(m){r={error:m}}finally{try{a&&!a.done&&(t=u.return)&&t.call(u)}finally{if(r)throw r.error}}else s.remove(this);var c=this.initialTeardown;if(E(c))try{c()}catch(m){i=m instanceof er?m.errors:[m]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var l=re(p),h=l.next();!h.done;h=l.next()){var d=h.value;try{Pt(d)}catch(m){i=i!=null?i:[],m instanceof er?i=U(U([],W(i)),W(m.errors)):i.push(m)}}}catch(m){n={error:m}}finally{try{h&&!h.done&&(o=l.return)&&o.call(l)}finally{if(n)throw n.error}}}if(i)throw new er(i)}},e.prototype.add=function(r){var t;if(r&&r!==this)if(this.closed)Pt(r);else{if(r instanceof e){if(r.closed||r._hasParent(this))return;r._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(r)}},e.prototype._hasParent=function(r){var t=this._parentage;return t===r||Array.isArray(t)&&t.includes(r)},e.prototype._addParent=function(r){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(r),t):t?[t,r]:r},e.prototype._removeParent=function(r){var t=this._parentage;t===r?this._parentage=null:Array.isArray(t)&&fe(t,r)},e.prototype.remove=function(r){var t=this._finalizers;t&&fe(t,r),r instanceof e&&r._removeParent(this)},e.EMPTY=function(){var r=new e;return r.closed=!0,r}(),e}();var Wr=ie.EMPTY;function rr(e){return e instanceof ie||e&&"closed"in e&&E(e.remove)&&E(e.add)&&E(e.unsubscribe)}function Pt(e){E(e)?e():e.unsubscribe()}var te={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Te={setTimeout:function(e,r){for(var t=[],n=2;n0},enumerable:!1,configurable:!0}),r.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},r.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},r.prototype._innerSubscribe=function(t){var n=this,o=this,i=o.hasError,s=o.isStopped,u=o.observers;return i||s?Wr:(this.currentObservers=null,u.push(t),new ie(function(){n.currentObservers=null,fe(u,t)}))},r.prototype._checkFinalizedStatuses=function(t){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?t.error(i):s&&t.complete()},r.prototype.asObservable=function(){var t=new L;return t.source=this,t},r.create=function(t,n){return new jt(t,n)},r}(L);var jt=function(e){V(r,e);function r(t,n){var o=e.call(this)||this;return o.destination=t,o.source=n,o}return r.prototype.next=function(t){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,t)},r.prototype.error=function(t){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,t)},r.prototype.complete=function(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||n===void 0||n.call(t)},r.prototype._subscribe=function(t){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(t))!==null&&o!==void 0?o:Wr},r}(J);var ze={now:function(){return(ze.delegate||Date).now()},delegate:void 0};var Vt=function(e){V(r,e);function r(t,n,o){t===void 0&&(t=1/0),n===void 0&&(n=1/0),o===void 0&&(o=ze);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,n),i}return r.prototype.next=function(t){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,u=n._timestampProvider,a=n._windowTime;o||(i.push(t),!s&&i.push(u.now()+a)),this._trimBuffer(),e.prototype.next.call(this,t)},r.prototype._subscribe=function(t){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(t),o=this,i=o._infiniteTimeWindow,s=o._buffer,u=s.slice(),a=0;a0?e.prototype.requestAsyncId.call(this,t,n,o):(t.actions.push(this),t._scheduled||(t._scheduled=Ie.requestAnimationFrame(function(){return t.flush(void 0)})))},r.prototype.recycleAsyncId=function(t,n,o){if(o===void 0&&(o=0),o!=null&&o>0||o==null&&this.delay>0)return e.prototype.recycleAsyncId.call(this,t,n,o);t.actions.some(function(i){return i.id===n})||(Ie.cancelAnimationFrame(n),t._scheduled=void 0)},r}(or);var Nt=function(e){V(r,e);function r(){return e!==null&&e.apply(this,arguments)||this}return r.prototype.flush=function(t){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;t=t||o.shift();do if(i=t.execute(t.state,t.delay))break;while((t=o[0])&&t.id===n&&o.shift());if(this._active=!1,i){for(;(t=o[0])&&t.id===n&&o.shift();)t.unsubscribe();throw i}},r}(ir);var qr=new Nt($t);var le=new L(function(e){return e.complete()});function ar(e){return e&&E(e.schedule)}function Dr(e){return e[e.length-1]}function Ce(e){return E(Dr(e))?e.pop():void 0}function ae(e){return ar(Dr(e))?e.pop():void 0}function Gt(e,r){return typeof Dr(e)=="number"?e.pop():r}var Le=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function sr(e){return E(e==null?void 0:e.then)}function ur(e){return E(e[Me])}function fr(e){return Symbol.asyncIterator&&E(e==null?void 0:e[Symbol.asyncIterator])}function cr(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function mo(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var lr=mo();function pr(e){return E(e==null?void 0:e[lr])}function mr(e){return Ct(this,arguments,function(){var t,n,o,i;return Be(this,function(s){switch(s.label){case 0:t=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,Xe(t.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,Xe(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,Xe(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function hr(e){return E(e==null?void 0:e.getReader)}function F(e){if(e instanceof L)return e;if(e!=null){if(ur(e))return ho(e);if(Le(e))return vo(e);if(sr(e))return bo(e);if(fr(e))return Qt(e);if(pr(e))return yo(e);if(hr(e))return xo(e)}throw cr(e)}function ho(e){return new L(function(r){var t=e[Me]();if(E(t.subscribe))return t.subscribe(r);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function vo(e){return new L(function(r){for(var t=0;t0&&(c=new ye({next:function(_){return y.next(_)},error:function(_){m=!0,b(),p=Br(w,o,_),y.error(_)},complete:function(){d=!0,b(),p=Br(w,s),y.complete()}}),F(P).subscribe(c))})(f)}}function Br(e,r){for(var t=[],n=2;n{let r=Sr();return typeof r!="undefined"?e.contains(r):!1}),he(e===Sr()),pe())}function yn(e){return{x:e.scrollLeft,y:e.scrollTop}}function xn(e){return $(Q(e,"scroll"),Q(window,"resize")).pipe(Nr(0,qr),k(()=>yn(e)),he(yn(e)))}var wn=function(){if(typeof Map!="undefined")return Map;function e(r,t){var n=-1;return r.some(function(o,i){return o[0]===t?(n=i,!0):!1}),n}return function(){function r(){this.__entries__=[]}return Object.defineProperty(r.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),r.prototype.get=function(t){var n=e(this.__entries__,t),o=this.__entries__[n];return o&&o[1]},r.prototype.set=function(t,n){var o=e(this.__entries__,t);~o?this.__entries__[o][1]=n:this.__entries__.push([t,n])},r.prototype.delete=function(t){var n=this.__entries__,o=e(n,t);~o&&n.splice(o,1)},r.prototype.has=function(t){return!!~e(this.__entries__,t)},r.prototype.clear=function(){this.__entries__.splice(0)},r.prototype.forEach=function(t,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),qo?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(r){var t=r.propertyName,n=t===void 0?"":t,o=Vo.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),_n=function(e,r){for(var t=0,n=Object.keys(r);t0},e}(),En=typeof WeakMap!="undefined"?new WeakMap:new wn,On=function(){function e(r){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var t=Do.getInstance(),n=new Zo(r,t,this);En.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){On.prototype[e]=function(){var r;return(r=En.get(this))[e].apply(r,arguments)}});var ei=function(){return typeof Er.ResizeObserver!="undefined"?Er.ResizeObserver:On}(),Tn=ei;var ri=new J,Hp=Ve(()=>X(new Tn(e=>{for(let r of e)ri.next(r)}))).pipe(N(e=>$(qe,X(e)).pipe(_e(()=>e.disconnect()))),Se(1));function An(e){return{width:e.offsetWidth,height:e.offsetHeight}}function Mn(e){return{width:e.scrollWidth,height:e.scrollHeight}}var ti=new J,Np=Ve(()=>X(new IntersectionObserver(e=>{for(let r of e)ti.next(r)},{threshold:0}))).pipe(N(e=>$(qe,X(e)).pipe(_e(()=>e.disconnect()))),Se(1));function In(e,r=16){return xn(e).pipe(k(({y:t})=>{let n=An(e),o=Mn(e);return t>=o.height-n.height-r}),pe())}var em={drawer:Z("[data-md-toggle=drawer]"),search:Z("[data-md-toggle=search]")};function Cn(){return new URL(location.href)}function Ln(e,r){if(typeof r=="string"||typeof r=="number")e.innerHTML+=r.toString();else if(r instanceof Node)e.appendChild(r);else if(Array.isArray(r))for(let t of r)Ln(e,t)}function ee(e,r,...t){let n=document.createElement(e);if(r)for(let o of Object.keys(r))typeof r[o]!="undefined"&&(typeof r[o]!="boolean"?n.setAttribute(o,r[o]):n.setAttribute(o,""));for(let o of t)Ln(n,o);return n}function Pn(e){if(e>999){let r=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(r)}k`}else return e.toString()}function ni(e,r={credentials:"same-origin"}){return B(fetch(`${e}`,r)).pipe(wr(()=>le),N(t=>t.status!==200?$r(()=>new Error(t.statusText)):X(t)))}function Ar(e,r){return ni(e,r).pipe(N(t=>t.json()),Se(1))}function He(e,r=document){return Z(`[data-mdx-component=${e}]`,r)}function et(e,r=document){return dn(`[data-mdx-component=${e}]`,r)}var oi=Z("#__config"),De=JSON.parse(oi.textContent);De.base=`${new URL(De.base,Cn())}`;function Rn(){return De}function Fn(e,r){return typeof r!="undefined"?De.translations[e].replace("#",r.toString()):De.translations[e]}function kn(e){let r=bn(e),t=$(Q(e,"keyup"),Q(e,"focus").pipe(Jr(1))).pipe(k(()=>e.value),he(e.value),pe());return r.pipe(we(n=>!n),Fe(t)).subscribe(([,n])=>{let o=document.location.pathname;typeof ga=="function"&&n.length&&ga("send","pageview",`${o}?q=[icon]+${n}`)}),Pe([t,r]).pipe(k(([n,o])=>({ref:e,value:n,focus:o})))}var nt=kr(tt());var Nn=kr(tt());function $n(e,r){return(0,Nn.wrap)(e.shortcode,r,{wrap:{tagOpen:"",tagClose:""}})}function Gn(e,r,t){return ee("li",{class:"mdx-iconsearch-result__item"},ee("span",{class:"twemoji"},ee("img",{src:e.url})),ee("button",{class:"md-clipboard--inline",title:Fn("clipboard.copy"),"data-clipboard-text":t?e.shortcode:`:${e.shortcode}:`},ee("code",null,t?$n(e,r):`:${$n(e,r)}:`)))}function Qn(e){let r=`@${e.name}`;return ee("a",{href:e.url,title:r,class:"mdx-sponsorship__item"},ee("img",{src:e.image}))}function Kn(e){return ee("a",{href:"https://github.com/sponsors/squidfunk",class:"mdx-sponsorship__item mdx-sponsorship__item--private"},"+",e)}function ii(e,{index$:r,query$:t}){switch(e.getAttribute("data-mdx-mode")){case"file":return Pe([t.pipe(_r("value")),r.pipe(k(({icons:n})=>Object.values(n.data).map(o=>o.replace(/\.svg$/,""))))]).pipe(k(([{value:n},o])=>(0,nt.filter)(o,n)),N(n=>r.pipe(k(({icons:o})=>({data:n.map(i=>({shortcode:i,url:[o.base,i,".svg"].join("")}))})))));default:return Pe([t.pipe(_r("value")),r.pipe(k(({icons:n,emojis:o})=>[...Object.keys(n.data),...Object.keys(o.data)]))]).pipe(k(([{value:n},o])=>(0,nt.filter)(o,n)),N(n=>r.pipe(k(({icons:o,emojis:i})=>({data:n.map(s=>{let u=s in o.data?o:i;return{shortcode:s,url:[u.base,u.data[s]].join("")}})})))))}}function Yn(e,{index$:r,query$:t}){let n=new J,o=In(e).pipe(we(Boolean)),i=Z(":scope > :first-child",e);n.pipe(Fe(t)).subscribe(([{data:a},{value:f}])=>{if(f)switch(a.length){case 0:i.textContent="No matches";break;case 1:i.textContent="1 match";break;default:i.textContent=`${Pn(a.length)} matches`}else i.textContent="Type to start searching"});let s=e.getAttribute("data-mdx-mode")==="file",u=Z(":scope > :last-child",e);return n.pipe(Re(()=>u.innerHTML=""),N(({data:a})=>$(X(...a.slice(0,10)),X(...a.slice(10)).pipe(Gr(10),Xr(o),N(([f])=>f)))),Fe(t)).subscribe(([a,{value:f}])=>u.appendChild(Gn(a,f,s))),ii(e,{query$:t,index$:r}).pipe(Re(a=>n.next(a)),_e(()=>n.complete()),k(a=>Qe({ref:e},a)))}function Jn(e){let r=Rn(),t=Ar(new URL("overrides/assets/javascripts/iconsearch_index.json",r.base)),n=He("iconsearch-query",e),o=He("iconsearch-result",e),i=kn(n),s=Yn(o,{index$:t,query$:i});return $(i,s)}function Bn(e){let r=Ar("https://3if8u9o552.execute-api.us-east-1.amazonaws.com/_/"),t=He("sponsorship-count"),n=He("sponsorship-total");return r.subscribe(o=>{e.removeAttribute("hidden");let i=Z(":scope > :first-child",e);for(let s of o.sponsors)s.type==="public"&&i.appendChild(Qn(s.user));i.appendChild(Kn(o.sponsors.filter(({type:s})=>s==="private").length)),t.innerText=`${o.sponsors.length}`,n.innerText=`$ ${o.total.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")} a month`}),r.pipe(k(o=>Qe({ref:e},o)))}function Xn(){let{origin:e}=new URL(location.href);Q(document.body,"click").subscribe(r=>{if(r.target instanceof HTMLElement){let t=r.target.closest("a");t&&t.origin!==e&&ga("send","event","outbound","click",t.href)}})}Xn();var ai=document$.pipe(N(()=>$(...et("iconsearch").map(e=>Jn(e)),...et("sponsorship").map(e=>Bn(e)))));ai.subscribe();})(); -//# sourceMappingURL=bundle.39654835.min.js.map - diff --git a/mkdocs-overrides/assets/javascripts/bundle.39654835.min.js.map b/mkdocs-overrides/assets/javascripts/bundle.39654835.min.js.map deleted file mode 100644 index 48265c7fe..000000000 --- a/mkdocs-overrides/assets/javascripts/bundle.39654835.min.js.map +++ /dev/null @@ -1,8 +0,0 @@ -{ - "version": 3, - "sources": ["node_modules/rxjs/node_modules/tslib/tslib.js", "node_modules/fuzzaldrin-plus/lib/scorer.js", "node_modules/fuzzaldrin-plus/lib/pathScorer.js", "node_modules/fuzzaldrin-plus/lib/query.js", "node_modules/fuzzaldrin-plus/lib/filter.js", "node_modules/fuzzaldrin-plus/lib/matcher.js", "node_modules/fuzzaldrin-plus/lib/fuzzaldrin.js", "node_modules/rxjs/node_modules/tslib/modules/index.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/offset/content/index.ts", "node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js", "src/assets/javascripts/browser/element/size/_/index.ts", "src/assets/javascripts/browser/element/size/content/index.ts", "src/assets/javascripts/browser/element/visibility/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/string/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/overrides/assets/javascripts/components/_/index.ts", "src/assets/javascripts/_/index.ts", "src/overrides/assets/javascripts/components/iconsearch/query/index.ts", "src/overrides/assets/javascripts/components/iconsearch/result/index.ts", "src/overrides/assets/javascripts/templates/iconsearch/index.tsx", "src/overrides/assets/javascripts/templates/sponsorship/index.tsx", "src/overrides/assets/javascripts/components/iconsearch/_/index.ts", "src/overrides/assets/javascripts/components/sponsorship/index.ts", "src/overrides/assets/javascripts/integrations/analytics/index.ts", "src/overrides/assets/javascripts/bundle.ts"], - "sourceRoot": "../../../..", - "sourcesContent": ["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n", "(function() {\n var AcronymResult, computeScore, emptyAcronymResult, isAcronymFullWord, isMatch, isSeparator, isWordEnd, isWordStart, miss_coeff, pos_bonus, scoreAcronyms, scoreCharacter, scoreConsecutives, scoreExact, scoreExactMatch, scorePattern, scorePosition, scoreSize, tau_size, wm;\n\n wm = 150;\n\n pos_bonus = 20;\n\n tau_size = 150;\n\n miss_coeff = 0.75;\n\n exports.score = function(string, query, options) {\n var allowErrors, preparedQuery, score, string_lw;\n preparedQuery = options.preparedQuery, allowErrors = options.allowErrors;\n if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n return 0;\n }\n string_lw = string.toLowerCase();\n score = computeScore(string, string_lw, preparedQuery);\n return Math.ceil(score);\n };\n\n exports.isMatch = isMatch = function(subject, query_lw, query_up) {\n var i, j, m, n, qj_lw, qj_up, si;\n m = subject.length;\n n = query_lw.length;\n if (!m || n > m) {\n return false;\n }\n i = -1;\n j = -1;\n while (++j < n) {\n qj_lw = query_lw.charCodeAt(j);\n qj_up = query_up.charCodeAt(j);\n while (++i < m) {\n si = subject.charCodeAt(i);\n if (si === qj_lw || si === qj_up) {\n break;\n }\n }\n if (i === m) {\n return false;\n }\n }\n return true;\n };\n\n exports.computeScore = computeScore = function(subject, subject_lw, preparedQuery) {\n var acro, acro_score, align, csc_diag, csc_row, csc_score, csc_should_rebuild, i, j, m, miss_budget, miss_left, n, pos, query, query_lw, record_miss, score, score_diag, score_row, score_up, si_lw, start, sz;\n query = preparedQuery.query;\n query_lw = preparedQuery.query_lw;\n m = subject.length;\n n = query.length;\n acro = scoreAcronyms(subject, subject_lw, query, query_lw);\n acro_score = acro.score;\n if (acro.count === n) {\n return scoreExact(n, m, acro_score, acro.pos);\n }\n pos = subject_lw.indexOf(query_lw);\n if (pos > -1) {\n return scoreExactMatch(subject, subject_lw, query, query_lw, pos, n, m);\n }\n score_row = new Array(n);\n csc_row = new Array(n);\n sz = scoreSize(n, m);\n miss_budget = Math.ceil(miss_coeff * n) + 5;\n miss_left = miss_budget;\n csc_should_rebuild = true;\n j = -1;\n while (++j < n) {\n score_row[j] = 0;\n csc_row[j] = 0;\n }\n i = -1;\n while (++i < m) {\n si_lw = subject_lw[i];\n if (!si_lw.charCodeAt(0) in preparedQuery.charCodes) {\n if (csc_should_rebuild) {\n j = -1;\n while (++j < n) {\n csc_row[j] = 0;\n }\n csc_should_rebuild = false;\n }\n continue;\n }\n score = 0;\n score_diag = 0;\n csc_diag = 0;\n record_miss = true;\n csc_should_rebuild = true;\n j = -1;\n while (++j < n) {\n score_up = score_row[j];\n if (score_up > score) {\n score = score_up;\n }\n csc_score = 0;\n if (query_lw[j] === si_lw) {\n start = isWordStart(i, subject, subject_lw);\n csc_score = csc_diag > 0 ? csc_diag : scoreConsecutives(subject, subject_lw, query, query_lw, i, j, start);\n align = score_diag + scoreCharacter(i, j, start, acro_score, csc_score);\n if (align > score) {\n score = align;\n miss_left = miss_budget;\n } else {\n if (record_miss && --miss_left <= 0) {\n return Math.max(score, score_row[n - 1]) * sz;\n }\n record_miss = false;\n }\n }\n score_diag = score_up;\n csc_diag = csc_row[j];\n csc_row[j] = csc_score;\n score_row[j] = score;\n }\n }\n score = score_row[n - 1];\n return score * sz;\n };\n\n exports.isWordStart = isWordStart = function(pos, subject, subject_lw) {\n var curr_s, prev_s;\n if (pos === 0) {\n return true;\n }\n curr_s = subject[pos];\n prev_s = subject[pos - 1];\n return isSeparator(prev_s) || (curr_s !== subject_lw[pos] && prev_s === subject_lw[pos - 1]);\n };\n\n exports.isWordEnd = isWordEnd = function(pos, subject, subject_lw, len) {\n var curr_s, next_s;\n if (pos === len - 1) {\n return true;\n }\n curr_s = subject[pos];\n next_s = subject[pos + 1];\n return isSeparator(next_s) || (curr_s === subject_lw[pos] && next_s !== subject_lw[pos + 1]);\n };\n\n isSeparator = function(c) {\n return c === ' ' || c === '.' || c === '-' || c === '_' || c === '/' || c === '\\\\';\n };\n\n scorePosition = function(pos) {\n var sc;\n if (pos < pos_bonus) {\n sc = pos_bonus - pos;\n return 100 + sc * sc;\n } else {\n return Math.max(100 + pos_bonus - pos, 0);\n }\n };\n\n exports.scoreSize = scoreSize = function(n, m) {\n return tau_size / (tau_size + Math.abs(m - n));\n };\n\n scoreExact = function(n, m, quality, pos) {\n return 2 * n * (wm * quality + scorePosition(pos)) * scoreSize(n, m);\n };\n\n exports.scorePattern = scorePattern = function(count, len, sameCase, start, end) {\n var bonus, sz;\n sz = count;\n bonus = 6;\n if (sameCase === count) {\n bonus += 2;\n }\n if (start) {\n bonus += 3;\n }\n if (end) {\n bonus += 1;\n }\n if (count === len) {\n if (start) {\n if (sameCase === len) {\n sz += 2;\n } else {\n sz += 1;\n }\n }\n if (end) {\n bonus += 1;\n }\n }\n return sameCase + sz * (sz + bonus);\n };\n\n exports.scoreCharacter = scoreCharacter = function(i, j, start, acro_score, csc_score) {\n var posBonus;\n posBonus = scorePosition(i);\n if (start) {\n return posBonus + wm * ((acro_score > csc_score ? acro_score : csc_score) + 10);\n }\n return posBonus + wm * csc_score;\n };\n\n exports.scoreConsecutives = scoreConsecutives = function(subject, subject_lw, query, query_lw, i, j, startOfWord) {\n var k, m, mi, n, nj, sameCase, sz;\n m = subject.length;\n n = query.length;\n mi = m - i;\n nj = n - j;\n k = mi < nj ? mi : nj;\n sameCase = 0;\n sz = 0;\n if (query[j] === subject[i]) {\n sameCase++;\n }\n while (++sz < k && query_lw[++j] === subject_lw[++i]) {\n if (query[j] === subject[i]) {\n sameCase++;\n }\n }\n if (sz < k) {\n i--;\n }\n if (sz === 1) {\n return 1 + 2 * sameCase;\n }\n return scorePattern(sz, n, sameCase, startOfWord, isWordEnd(i, subject, subject_lw, m));\n };\n\n exports.scoreExactMatch = scoreExactMatch = function(subject, subject_lw, query, query_lw, pos, n, m) {\n var end, i, pos2, sameCase, start;\n start = isWordStart(pos, subject, subject_lw);\n if (!start) {\n pos2 = subject_lw.indexOf(query_lw, pos + 1);\n if (pos2 > -1) {\n start = isWordStart(pos2, subject, subject_lw);\n if (start) {\n pos = pos2;\n }\n }\n }\n i = -1;\n sameCase = 0;\n while (++i < n) {\n if (query[pos + i] === subject[i]) {\n sameCase++;\n }\n }\n end = isWordEnd(pos + n - 1, subject, subject_lw, m);\n return scoreExact(n, m, scorePattern(n, n, sameCase, start, end), pos);\n };\n\n AcronymResult = (function() {\n function AcronymResult(score, pos, count) {\n this.score = score;\n this.pos = pos;\n this.count = count;\n }\n\n return AcronymResult;\n\n })();\n\n emptyAcronymResult = new AcronymResult(0, 0.1, 0);\n\n exports.scoreAcronyms = scoreAcronyms = function(subject, subject_lw, query, query_lw) {\n var count, fullWord, i, j, m, n, qj_lw, sameCase, score, sepCount, sumPos;\n m = subject.length;\n n = query.length;\n if (!(m > 1 && n > 1)) {\n return emptyAcronymResult;\n }\n count = 0;\n sepCount = 0;\n sumPos = 0;\n sameCase = 0;\n i = -1;\n j = -1;\n while (++j < n) {\n qj_lw = query_lw[j];\n if (isSeparator(qj_lw)) {\n i = subject_lw.indexOf(qj_lw, i + 1);\n if (i > -1) {\n sepCount++;\n continue;\n } else {\n break;\n }\n }\n while (++i < m) {\n if (qj_lw === subject_lw[i] && isWordStart(i, subject, subject_lw)) {\n if (query[j] === subject[i]) {\n sameCase++;\n }\n sumPos += i;\n count++;\n break;\n }\n }\n if (i === m) {\n break;\n }\n }\n if (count < 2) {\n return emptyAcronymResult;\n }\n fullWord = count === n ? isAcronymFullWord(subject, subject_lw, query, count) : false;\n score = scorePattern(count, n, sameCase, true, fullWord);\n return new AcronymResult(score, sumPos / count, count + sepCount);\n };\n\n isAcronymFullWord = function(subject, subject_lw, query, nbAcronymInQuery) {\n var count, i, m, n;\n m = subject.length;\n n = query.length;\n count = 0;\n if (m > 12 * n) {\n return false;\n }\n i = -1;\n while (++i < m) {\n if (isWordStart(i, subject, subject_lw) && ++count > nbAcronymInQuery) {\n return false;\n }\n }\n return true;\n };\n\n}).call(this);\n", "(function() {\n var computeScore, countDir, file_coeff, getExtension, getExtensionScore, isMatch, scorePath, scoreSize, tau_depth, _ref;\n\n _ref = require('./scorer'), isMatch = _ref.isMatch, computeScore = _ref.computeScore, scoreSize = _ref.scoreSize;\n\n tau_depth = 20;\n\n file_coeff = 2.5;\n\n exports.score = function(string, query, options) {\n var allowErrors, preparedQuery, score, string_lw;\n preparedQuery = options.preparedQuery, allowErrors = options.allowErrors;\n if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n return 0;\n }\n string_lw = string.toLowerCase();\n score = computeScore(string, string_lw, preparedQuery);\n score = scorePath(string, string_lw, score, options);\n return Math.ceil(score);\n };\n\n scorePath = function(subject, subject_lw, fullPathScore, options) {\n var alpha, basePathScore, basePos, depth, end, extAdjust, fileLength, pathSeparator, preparedQuery, useExtensionBonus;\n if (fullPathScore === 0) {\n return 0;\n }\n preparedQuery = options.preparedQuery, useExtensionBonus = options.useExtensionBonus, pathSeparator = options.pathSeparator;\n end = subject.length - 1;\n while (subject[end] === pathSeparator) {\n end--;\n }\n basePos = subject.lastIndexOf(pathSeparator, end);\n fileLength = end - basePos;\n extAdjust = 1.0;\n if (useExtensionBonus) {\n extAdjust += getExtensionScore(subject_lw, preparedQuery.ext, basePos, end, 2);\n fullPathScore *= extAdjust;\n }\n if (basePos === -1) {\n return fullPathScore;\n }\n depth = preparedQuery.depth;\n while (basePos > -1 && depth-- > 0) {\n basePos = subject.lastIndexOf(pathSeparator, basePos - 1);\n }\n basePathScore = basePos === -1 ? fullPathScore : extAdjust * computeScore(subject.slice(basePos + 1, end + 1), subject_lw.slice(basePos + 1, end + 1), preparedQuery);\n alpha = 0.5 * tau_depth / (tau_depth + countDir(subject, end + 1, pathSeparator));\n return alpha * basePathScore + (1 - alpha) * fullPathScore * scoreSize(0, file_coeff * fileLength);\n };\n\n exports.countDir = countDir = function(path, end, pathSeparator) {\n var count, i;\n if (end < 1) {\n return 0;\n }\n count = 0;\n i = -1;\n while (++i < end && path[i] === pathSeparator) {\n continue;\n }\n while (++i < end) {\n if (path[i] === pathSeparator) {\n count++;\n while (++i < end && path[i] === pathSeparator) {\n continue;\n }\n }\n }\n return count;\n };\n\n exports.getExtension = getExtension = function(str) {\n var pos;\n pos = str.lastIndexOf(\".\");\n if (pos < 0) {\n return \"\";\n } else {\n return str.substr(pos + 1);\n }\n };\n\n getExtensionScore = function(candidate, ext, startPos, endPos, maxDepth) {\n var m, matched, n, pos;\n if (!ext.length) {\n return 0;\n }\n pos = candidate.lastIndexOf(\".\", endPos);\n if (!(pos > startPos)) {\n return 0;\n }\n n = ext.length;\n m = endPos - pos;\n if (m < n) {\n n = m;\n m = ext.length;\n }\n pos++;\n matched = -1;\n while (++matched < n) {\n if (candidate[pos + matched] !== ext[matched]) {\n break;\n }\n }\n if (matched === 0 && maxDepth > 0) {\n return 0.9 * getExtensionScore(candidate, ext, startPos, pos - 2, maxDepth - 1);\n }\n return matched / m;\n };\n\n}).call(this);\n", "(function() {\n var Query, coreChars, countDir, getCharCodes, getExtension, opt_char_re, truncatedUpperCase, _ref;\n\n _ref = require(\"./pathScorer\"), countDir = _ref.countDir, getExtension = _ref.getExtension;\n\n module.exports = Query = (function() {\n function Query(query, _arg) {\n var optCharRegEx, pathSeparator, _ref1;\n _ref1 = _arg != null ? _arg : {}, optCharRegEx = _ref1.optCharRegEx, pathSeparator = _ref1.pathSeparator;\n if (!(query && query.length)) {\n return null;\n }\n this.query = query;\n this.query_lw = query.toLowerCase();\n this.core = coreChars(query, optCharRegEx);\n this.core_lw = this.core.toLowerCase();\n this.core_up = truncatedUpperCase(this.core);\n this.depth = countDir(query, query.length, pathSeparator);\n this.ext = getExtension(this.query_lw);\n this.charCodes = getCharCodes(this.query_lw);\n }\n\n return Query;\n\n })();\n\n opt_char_re = /[ _\\-:\\/\\\\]/g;\n\n coreChars = function(query, optCharRegEx) {\n if (optCharRegEx == null) {\n optCharRegEx = opt_char_re;\n }\n return query.replace(optCharRegEx, '');\n };\n\n truncatedUpperCase = function(str) {\n var char, upper, _i, _len;\n upper = \"\";\n for (_i = 0, _len = str.length; _i < _len; _i++) {\n char = str[_i];\n upper += char.toUpperCase()[0];\n }\n return upper;\n };\n\n getCharCodes = function(str) {\n var charCodes, i, len;\n len = str.length;\n i = -1;\n charCodes = [];\n while (++i < len) {\n charCodes[str.charCodeAt(i)] = true;\n }\n return charCodes;\n };\n\n}).call(this);\n", "(function() {\n var Query, pathScorer, pluckCandidates, scorer, sortCandidates;\n\n scorer = require('./scorer');\n\n pathScorer = require('./pathScorer');\n\n Query = require('./query');\n\n pluckCandidates = function(a) {\n return a.candidate;\n };\n\n sortCandidates = function(a, b) {\n return b.score - a.score;\n };\n\n module.exports = function(candidates, query, options) {\n var bKey, candidate, key, maxInners, maxResults, score, scoreProvider, scoredCandidates, spotLeft, string, usePathScoring, _i, _len;\n scoredCandidates = [];\n key = options.key, maxResults = options.maxResults, maxInners = options.maxInners, usePathScoring = options.usePathScoring;\n spotLeft = (maxInners != null) && maxInners > 0 ? maxInners : candidates.length + 1;\n bKey = key != null;\n scoreProvider = usePathScoring ? pathScorer : scorer;\n for (_i = 0, _len = candidates.length; _i < _len; _i++) {\n candidate = candidates[_i];\n string = bKey ? candidate[key] : candidate;\n if (!string) {\n continue;\n }\n score = scoreProvider.score(string, query, options);\n if (score > 0) {\n scoredCandidates.push({\n candidate: candidate,\n score: score\n });\n if (!--spotLeft) {\n break;\n }\n }\n }\n scoredCandidates.sort(sortCandidates);\n candidates = scoredCandidates.map(pluckCandidates);\n if (maxResults != null) {\n candidates = candidates.slice(0, maxResults);\n }\n return candidates;\n };\n\n}).call(this);\n", "(function() {\n var basenameMatch, computeMatch, isMatch, isWordStart, match, mergeMatches, scoreAcronyms, scoreCharacter, scoreConsecutives, _ref;\n\n _ref = require('./scorer'), isMatch = _ref.isMatch, isWordStart = _ref.isWordStart, scoreConsecutives = _ref.scoreConsecutives, scoreCharacter = _ref.scoreCharacter, scoreAcronyms = _ref.scoreAcronyms;\n\n exports.match = match = function(string, query, options) {\n var allowErrors, baseMatches, matches, pathSeparator, preparedQuery, string_lw;\n allowErrors = options.allowErrors, preparedQuery = options.preparedQuery, pathSeparator = options.pathSeparator;\n if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n return [];\n }\n string_lw = string.toLowerCase();\n matches = computeMatch(string, string_lw, preparedQuery);\n if (matches.length === 0) {\n return matches;\n }\n if (string.indexOf(pathSeparator) > -1) {\n baseMatches = basenameMatch(string, string_lw, preparedQuery, pathSeparator);\n matches = mergeMatches(matches, baseMatches);\n }\n return matches;\n };\n\n exports.wrap = function(string, query, options) {\n var matchIndex, matchPos, matchPositions, output, strPos, tagClass, tagClose, tagOpen, _ref1;\n if ((options.wrap != null)) {\n _ref1 = options.wrap, tagClass = _ref1.tagClass, tagOpen = _ref1.tagOpen, tagClose = _ref1.tagClose;\n }\n if (tagClass == null) {\n tagClass = 'highlight';\n }\n if (tagOpen == null) {\n tagOpen = '';\n }\n if (tagClose == null) {\n tagClose = '';\n }\n if (string === query) {\n return tagOpen + string + tagClose;\n }\n matchPositions = match(string, query, options);\n if (matchPositions.length === 0) {\n return string;\n }\n output = '';\n matchIndex = -1;\n strPos = 0;\n while (++matchIndex < matchPositions.length) {\n matchPos = matchPositions[matchIndex];\n if (matchPos > strPos) {\n output += string.substring(strPos, matchPos);\n strPos = matchPos;\n }\n while (++matchIndex < matchPositions.length) {\n if (matchPositions[matchIndex] === matchPos + 1) {\n matchPos++;\n } else {\n matchIndex--;\n break;\n }\n }\n matchPos++;\n if (matchPos > strPos) {\n output += tagOpen;\n output += string.substring(strPos, matchPos);\n output += tagClose;\n strPos = matchPos;\n }\n }\n if (strPos <= string.length - 1) {\n output += string.substring(strPos);\n }\n return output;\n };\n\n basenameMatch = function(subject, subject_lw, preparedQuery, pathSeparator) {\n var basePos, depth, end;\n end = subject.length - 1;\n while (subject[end] === pathSeparator) {\n end--;\n }\n basePos = subject.lastIndexOf(pathSeparator, end);\n if (basePos === -1) {\n return [];\n }\n depth = preparedQuery.depth;\n while (depth-- > 0) {\n basePos = subject.lastIndexOf(pathSeparator, basePos - 1);\n if (basePos === -1) {\n return [];\n }\n }\n basePos++;\n end++;\n return computeMatch(subject.slice(basePos, end), subject_lw.slice(basePos, end), preparedQuery, basePos);\n };\n\n mergeMatches = function(a, b) {\n var ai, bj, i, j, m, n, out;\n m = a.length;\n n = b.length;\n if (n === 0) {\n return a.slice();\n }\n if (m === 0) {\n return b.slice();\n }\n i = -1;\n j = 0;\n bj = b[j];\n out = [];\n while (++i < m) {\n ai = a[i];\n while (bj <= ai && ++j < n) {\n if (bj < ai) {\n out.push(bj);\n }\n bj = b[j];\n }\n out.push(ai);\n }\n while (j < n) {\n out.push(b[j++]);\n }\n return out;\n };\n\n computeMatch = function(subject, subject_lw, preparedQuery, offset) {\n var DIAGONAL, LEFT, STOP, UP, acro_score, align, backtrack, csc_diag, csc_row, csc_score, i, j, m, matches, move, n, pos, query, query_lw, score, score_diag, score_row, score_up, si_lw, start, trace;\n if (offset == null) {\n offset = 0;\n }\n query = preparedQuery.query;\n query_lw = preparedQuery.query_lw;\n m = subject.length;\n n = query.length;\n acro_score = scoreAcronyms(subject, subject_lw, query, query_lw).score;\n score_row = new Array(n);\n csc_row = new Array(n);\n STOP = 0;\n UP = 1;\n LEFT = 2;\n DIAGONAL = 3;\n trace = new Array(m * n);\n pos = -1;\n j = -1;\n while (++j < n) {\n score_row[j] = 0;\n csc_row[j] = 0;\n }\n i = -1;\n while (++i < m) {\n score = 0;\n score_up = 0;\n csc_diag = 0;\n si_lw = subject_lw[i];\n j = -1;\n while (++j < n) {\n csc_score = 0;\n align = 0;\n score_diag = score_up;\n if (query_lw[j] === si_lw) {\n start = isWordStart(i, subject, subject_lw);\n csc_score = csc_diag > 0 ? csc_diag : scoreConsecutives(subject, subject_lw, query, query_lw, i, j, start);\n align = score_diag + scoreCharacter(i, j, start, acro_score, csc_score);\n }\n score_up = score_row[j];\n csc_diag = csc_row[j];\n if (score > score_up) {\n move = LEFT;\n } else {\n score = score_up;\n move = UP;\n }\n if (align > score) {\n score = align;\n move = DIAGONAL;\n } else {\n csc_score = 0;\n }\n score_row[j] = score;\n csc_row[j] = csc_score;\n trace[++pos] = score > 0 ? move : STOP;\n }\n }\n i = m - 1;\n j = n - 1;\n pos = i * n + j;\n backtrack = true;\n matches = [];\n while (backtrack && i >= 0 && j >= 0) {\n switch (trace[pos]) {\n case UP:\n i--;\n pos -= n;\n break;\n case LEFT:\n j--;\n pos--;\n break;\n case DIAGONAL:\n matches.push(i + offset);\n j--;\n i--;\n pos -= n + 1;\n break;\n default:\n backtrack = false;\n }\n }\n matches.reverse();\n return matches;\n };\n\n}).call(this);\n", "(function() {\n var Query, defaultPathSeparator, filter, matcher, parseOptions, pathScorer, preparedQueryCache, scorer;\n\n filter = require('./filter');\n\n matcher = require('./matcher');\n\n scorer = require('./scorer');\n\n pathScorer = require('./pathScorer');\n\n Query = require('./query');\n\n preparedQueryCache = null;\n\n defaultPathSeparator = (typeof process !== \"undefined\" && process !== null ? process.platform : void 0) === \"win32\" ? '\\\\' : '/';\n\n module.exports = {\n filter: function(candidates, query, options) {\n if (options == null) {\n options = {};\n }\n if (!((query != null ? query.length : void 0) && (candidates != null ? candidates.length : void 0))) {\n return [];\n }\n options = parseOptions(options, query);\n return filter(candidates, query, options);\n },\n score: function(string, query, options) {\n if (options == null) {\n options = {};\n }\n if (!((string != null ? string.length : void 0) && (query != null ? query.length : void 0))) {\n return 0;\n }\n options = parseOptions(options, query);\n if (options.usePathScoring) {\n return pathScorer.score(string, query, options);\n } else {\n return scorer.score(string, query, options);\n }\n },\n match: function(string, query, options) {\n var _i, _ref, _results;\n if (options == null) {\n options = {};\n }\n if (!string) {\n return [];\n }\n if (!query) {\n return [];\n }\n if (string === query) {\n return (function() {\n _results = [];\n for (var _i = 0, _ref = string.length; 0 <= _ref ? _i < _ref : _i > _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); }\n return _results;\n }).apply(this);\n }\n options = parseOptions(options, query);\n return matcher.match(string, query, options);\n },\n wrap: function(string, query, options) {\n if (options == null) {\n options = {};\n }\n if (!string) {\n return [];\n }\n if (!query) {\n return [];\n }\n options = parseOptions(options, query);\n return matcher.wrap(string, query, options);\n },\n prepareQuery: function(query, options) {\n if (options == null) {\n options = {};\n }\n options = parseOptions(options, query);\n return options.preparedQuery;\n }\n };\n\n parseOptions = function(options, query) {\n if (options.allowErrors == null) {\n options.allowErrors = false;\n }\n if (options.usePathScoring == null) {\n options.usePathScoring = true;\n }\n if (options.useExtensionBonus == null) {\n options.useExtensionBonus = false;\n }\n if (options.pathSeparator == null) {\n options.pathSeparator = defaultPathSeparator;\n }\n if (options.optCharRegEx == null) {\n options.optCharRegEx = null;\n }\n if (options.wrap == null) {\n options.wrap = null;\n }\n if (options.preparedQuery == null) {\n options.preparedQuery = preparedQueryCache && preparedQueryCache.query === query ? preparedQueryCache : (preparedQueryCache = new Query(query, options));\n }\n return options;\n };\n\n}).call(this);\n", "import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n};\r\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements(\n selector: string, node?: ParentNode\n): T[]\n\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * Note that this function assumes that the element is present. If unsure if an\n * element is existent, use the `getOptionalElement` function instead.\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement(\n selector: string, node?: ParentNode\n): T\n\nexport function getElement(\n selector: string, node: ParentNode = document\n): T {\n const el = getOptionalElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n\n /* Return element */\n return el\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an optional element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getOptionalElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T] | undefined\n\nexport function getOptionalElement(\n selector: string, node?: ParentNode\n): T | undefined\n\nexport function getOptionalElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement || undefined\n : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * Previously, this function used `focus` and `blur` events to determine whether\n * an element is focused, but this doesn't work if there are focusable elements\n * within the elements itself. A better solutions are `focusin` and `focusout`\n * events, which bubble up the tree and allow for more fine-grained control.\n *\n * `debounceTime` is necessary, because when a focus change happens inside an\n * element, the observable would first emit `false` and then `true` again.\n *\n * @param el - Element\n *\n * @returns Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(document.body, \"focusin\"),\n fromEvent(document.body, \"focusout\")\n )\n .pipe(\n debounceTime(1),\n map(() => {\n const active = getActiveElement()\n return typeof active !== \"undefined\"\n ? el.contains(active)\n : false\n }),\n startWith(el === getActiveElement()),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { ElementOffset } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content offset (= scroll offset)\n *\n * @param el - Element\n *\n * @returns Element content offset\n */\nexport function getElementContentOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element content offset\n *\n * @param el - Element\n *\n * @returns Element content offset observable\n */\nexport function watchElementContentOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementContentOffset(el)),\n startWith(getElementContentOffset(el))\n )\n}\n", "/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ResizeObserver from \"resize-observer-polyfill\"\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementSize {\n width: number /* Element width */\n height: number /* Element height */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Resize observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Resize observer observable\n *\n * This observable will create a `ResizeObserver` on the first subscription\n * and will automatically terminate it when there are no more subscribers.\n * It's quite important to centralize observation in a single `ResizeObserver`,\n * as the performance difference can be quite dramatic, as the link shows.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new ResizeObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element size\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element size\n *\n * This function returns an observable that subscribes to a single internal\n * instance of `ResizeObserver` upon subscription, and emit resize events until\n * termination. Note that this function should not be called with the same\n * element twice, as the first unsubscription will terminate observation.\n *\n * Sadly, we can't use the `DOMRect` objects returned by the observer, because\n * we need the emitted values to be consistent with `getElementSize`, which will\n * return the used values (rounded) and not actual values (unrounded). Thus, we\n * use the `offset*` properties. See the linked GitHub issue.\n *\n * @see https://bit.ly/3m0k3he - GitHub issue\n *\n * @param el - Element\n *\n * @returns Element size observable\n */\nexport function watchElementSize(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(() => getElementSize(el))\n )\n ),\n startWith(getElementSize(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ElementSize } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content size (= scroll width and height)\n *\n * @param el - Element\n *\n * @returns Element content size\n */\nexport function getElementContentSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.scrollWidth,\n height: el.scrollHeight\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport {\n getElementContentSize,\n getElementSize,\n watchElementContentOffset\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Intersection observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Intersection observer observable\n *\n * This observable will create an `IntersectionObserver` on first subscription\n * and will automatically terminate it when there are no more subscribers.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new IntersectionObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n }, {\n threshold: 0\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element visibility\n *\n * @param el - Element\n *\n * @returns Element visibility observable\n */\nexport function watchElementVisibility(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(({ isIntersecting }) => isIntersecting)\n )\n )\n )\n}\n\n/**\n * Watch element boundary\n *\n * This function returns an observable which emits whether the bottom content\n * boundary (= scroll offset) of an element is within a certain threshold.\n *\n * @param el - Element\n * @param threshold - Threshold\n *\n * @returns Element boundary observable\n */\nexport function watchElementBoundary(\n el: HTMLElement, threshold = 16\n): Observable {\n return watchElementContentOffset(el)\n .pipe(\n map(({ y }) => {\n const visible = getElementSize(el)\n const content = getElementContentSize(el)\n return y >= (\n content.height - visible.height - threshold\n )\n }),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getElement } from \"../element\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map\n */\nconst toggles: Record = {\n drawer: getElement(\"[data-md-toggle=drawer]\"),\n search: getElement(\"[data-md-toggle=search]\")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the value of a toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value\n */\nexport function getToggle(name: Toggle): boolean {\n return toggles[name].checked\n}\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param name - Toggle\n * @param value - Toggle value\n */\nexport function setToggle(name: Toggle, value: boolean): void {\n if (toggles[name].checked !== value)\n toggles[name].click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value observable\n */\nexport function watchToggle(name: Toggle): Observable {\n const el = toggles[name]\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function returns a `URL` object (and not `Location`) to normalize the\n * typings across the application. Furthermore, locations need to be tracked\n * without setting them and `Location` is a singleton which represents the\n * current location.\n *\n * @returns URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @returns Location subject\n */\nexport function watchLocation(): Subject {\n return new Subject()\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { JSX as JSXInternal } from \"preact\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(el: HTMLElement, child: Child | Child[]): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @template T - Element type\n *\n * @param tag - HTML tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @returns Element\n */\nexport function h(\n tag: T, attributes?: Attributes | null, ...children: Child[]\n): HTMLElementTagNameMap[T]\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T {\n const el = document.createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of Object.keys(attributes)) {\n if (typeof attributes[attr] === \"undefined\")\n continue\n\n /* Set default attribute or boolean */\n if (typeof attributes[attr] !== \"boolean\")\n el.setAttribute(attr, attributes[attr])\n else\n el.setAttribute(attr, \"\")\n }\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el as T\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @returns Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0) { /* keep eating */ }\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with repository facts\n *\n * This is a reverse-engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @returns Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 0.000001) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n from,\n map,\n of,\n shareReplay,\n switchMap,\n throwError\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the given URL\n *\n * If the request fails (e.g. when dispatched from `file://` locations), the\n * observable will complete without emitting a value.\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Response observable\n */\nexport function request(\n url: URL | string, options: RequestInit = { credentials: \"same-origin\" }\n): Observable {\n return from(fetch(`${url}`, options))\n .pipe(\n catchError(() => EMPTY),\n switchMap(res => res.status !== 200\n ? throwError(() => new Error(res.statusText))\n : of(res)\n )\n )\n}\n\n/**\n * Fetch JSON from the given URL\n *\n * @template T - Data type\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestJSON(\n url: URL | string, options?: RequestInit\n): Observable {\n return request(url, options)\n .pipe(\n switchMap(res => res.json()),\n shareReplay(1)\n )\n}\n\n/**\n * Fetch XML from the given URL\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestXML(\n url: URL | string, options?: RequestInit\n): Observable {\n const dom = new DOMParser()\n return request(url, options)\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/xml\")),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type\n */\nexport type ComponentType =\n | \"iconsearch\" /* Icon search */\n | \"iconsearch-query\" /* Icon search input */\n | \"iconsearch-result\" /* Icon search results */\n | \"sponsorship\" /* Sponsorship */\n | \"sponsorship-count\" /* Sponsorship count */\n | \"sponsorship-total\" /* Sponsorship total */\n\n/**\n * Component\n *\n * @template T - Component type\n * @template U - Reference type\n */\nexport type Component<\n T extends {} = {},\n U extends HTMLElement = HTMLElement\n> =\n T & {\n ref: U /* Component reference */\n }\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type map\n */\ninterface ComponentTypeMap {\n \"iconsearch\": HTMLElement /* Icon search */\n \"iconsearch-query\": HTMLInputElement /* Icon search input */\n \"iconsearch-result\": HTMLElement /* Icon search results */\n \"sponsorship\": HTMLElement /* Sponsorship */\n \"sponsorship-count\": HTMLElement /* Sponsorship count */\n \"sponsorship-total\": HTMLElement /* Sponsorship total */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the element for a given component or throw a reference error\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getComponentElement(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T] {\n return getElement(`[data-mdx-component=${type}]`, node)\n}\n\n/**\n * Retrieve all elements for a given component\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getComponentElements(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T][] {\n return getElements(`[data-mdx-component=${type}]`, node)\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getLocation } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Feature flag\n */\nexport type Flag =\n | \"content.code.annotate\" /* Code annotations */\n | \"content.tabs.link\" /* Link content tabs */\n | \"header.autohide\" /* Hide header */\n | \"navigation.expand\" /* Automatic expansion */\n | \"navigation.indexes\" /* Section pages */\n | \"navigation.instant\" /* Instant loading */\n | \"navigation.sections\" /* Section navigation */\n | \"navigation.tabs\" /* Tabs navigation */\n | \"navigation.tabs.sticky\" /* Tabs navigation (sticky) */\n | \"navigation.top\" /* Back-to-top button */\n | \"navigation.tracking\" /* Anchor tracking */\n | \"search.highlight\" /* Search highlighting */\n | \"search.share\" /* Search sharing */\n | \"search.suggest\" /* Search suggestions */\n | \"toc.integrate\" /* Integrated table of contents */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Translation\n */\nexport type Translation =\n | \"clipboard.copy\" /* Copy to clipboard */\n | \"clipboard.copied\" /* Copied to clipboard */\n | \"search.config.lang\" /* Search language */\n | \"search.config.pipeline\" /* Search pipeline */\n | \"search.config.separator\" /* Search separator */\n | \"search.placeholder\" /* Search */\n | \"search.result.placeholder\" /* Type to start searching */\n | \"search.result.none\" /* No matching documents */\n | \"search.result.one\" /* 1 matching document */\n | \"search.result.other\" /* # matching documents */\n | \"search.result.more.one\" /* 1 more on this page */\n | \"search.result.more.other\" /* # more on this page */\n | \"search.result.term.missing\" /* Missing */\n | \"select.version.title\" /* Version selector */\n\n/**\n * Translations\n */\nexport type Translations = Record\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Versioning\n */\nexport interface Versioning {\n provider: \"mike\" /* Version provider */\n default?: string /* Default version */\n}\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n features: Flag[] /* Feature flags */\n translations: Translations /* Translations */\n search: string /* Search worker URL */\n version?: Versioning /* Versioning */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration and make base URL absolute\n */\nconst script = getElement(\"#__config\")\nconst config: Config = JSON.parse(script.textContent!)\nconfig.base = `${new URL(config.base, getLocation())}`\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration\n *\n * @returns Global configuration\n */\nexport function configuration(): Config {\n return config\n}\n\n/**\n * Check whether a feature flag is enabled\n *\n * @param flag - Feature flag\n *\n * @returns Test result\n */\nexport function feature(flag: Flag): boolean {\n return config.features.includes(flag)\n}\n\n/**\n * Retrieve the translation for the given key\n *\n * @param key - Key to be translated\n * @param value - Positional value, if any\n *\n * @returns Translation\n */\nexport function translation(\n key: Translation, value?: string | number\n): string {\n return typeof value !== \"undefined\"\n ? config.translations[key].replace(\"#\", value.toString())\n : config.translations[key]\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n delay,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n startWith,\n withLatestFrom\n} from \"rxjs\"\n\nimport { watchElementFocus } from \"~/browser\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Icon search query\n */\nexport interface IconSearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount icon search query\n *\n * @param el - Icon search query element\n *\n * @returns Icon search query component observable\n */\nexport function mountIconSearchQuery(\n el: HTMLInputElement\n): Observable> {\n\n /* Intercept focus and input events */\n const focus$ = watchElementFocus(el)\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1))\n )\n .pipe(\n map(() => el.value),\n startWith(el.value),\n distinctUntilChanged(),\n )\n\n /* Log search on blur */\n focus$\n .pipe(\n filter(active => !active),\n withLatestFrom(value$)\n )\n .subscribe(([, value]) => {\n const path = document.location.pathname\n if (typeof ga === \"function\" && value.length)\n ga(\"send\", \"pageview\", `${path}?q=[icon]+${value}`)\n })\n\n /* Combine into single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ ref: el, value, focus })),\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { filter as search } from \"fuzzaldrin-plus\"\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n switchMap,\n tap,\n withLatestFrom,\n zipWith\n} from \"rxjs\"\n\nimport {\n getElement,\n watchElementBoundary\n} from \"~/browser\"\nimport { round } from \"~/utilities\"\n\nimport { Icon, renderIconSearchResult } from \"_/templates\"\n\nimport { Component } from \"../../_\"\nimport { IconSearchIndex } from \"../_\"\nimport { IconSearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Icon search result\n */\nexport interface IconSearchResult {\n data: Icon[] /* Search result data */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n index$: Observable /* Search index observable */\n query$: Observable /* Search query observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: Observable /* Search index observable */\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch icon search result\n *\n * @param el - Icon search result element\n * @param options - Options\n *\n * @returns Icon search result observable\n */\nexport function watchIconSearchResult(\n el: HTMLElement, { index$, query$ }: WatchOptions\n): Observable {\n switch (el.getAttribute(\"data-mdx-mode\")) {\n\n case \"file\":\n return combineLatest([\n query$.pipe(distinctUntilKeyChanged(\"value\")),\n index$\n .pipe(\n map(({ icons }) => Object.values(icons.data)\n .map(icon => icon.replace(/\\.svg$/, \"\"))\n )\n )\n ])\n .pipe(\n map(([{ value }, data]) => search(data, value)),\n switchMap(files => index$.pipe(\n map(({ icons }) => ({\n data: files.map(shortcode => {\n return {\n shortcode,\n url: [\n icons.base,\n shortcode,\n \".svg\"\n ].join(\"\")\n }\n })\n }))\n ))\n )\n\n default:\n return combineLatest([\n query$.pipe(distinctUntilKeyChanged(\"value\")),\n index$\n .pipe(\n map(({ icons, emojis }) => [\n ...Object.keys(icons.data),\n ...Object.keys(emojis.data)\n ])\n )\n ])\n .pipe(\n map(([{ value }, data]) => search(data, value)),\n switchMap(shortcodes => index$.pipe(\n map(({ icons, emojis }) => ({\n data: shortcodes.map(shortcode => {\n const category =\n shortcode in icons.data\n ? icons\n : emojis\n return {\n shortcode,\n url: [\n category.base,\n category.data[shortcode]\n ].join(\"\")\n }\n })\n }))\n ))\n )\n }\n}\n\n/**\n * Mount icon search result\n *\n * @param el - Icon search result element\n * @param options - Options\n *\n * @returns Icon search result component observable\n */\nexport function mountIconSearchResult(\n el: HTMLElement, { index$, query$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const boundary$ = watchElementBoundary(el)\n .pipe(\n filter(Boolean)\n )\n\n /* Update search result metadata */\n const meta = getElement(\":scope > :first-child\", el)\n push$\n .pipe(\n withLatestFrom(query$)\n )\n .subscribe(([{ data }, { value }]) => {\n if (value) {\n switch (data.length) {\n\n /* No results */\n case 0:\n meta.textContent = \"No matches\"\n break\n\n /* One result */\n case 1:\n meta.textContent = \"1 match\"\n break\n\n /* Multiple result */\n default:\n meta.textContent = `${round(data.length)} matches`\n }\n } else {\n meta.textContent = \"Type to start searching\"\n }\n })\n\n /* Update icon search result list */\n const file = el.getAttribute(\"data-mdx-mode\") === \"file\"\n const list = getElement(\":scope > :last-child\", el)\n push$\n .pipe(\n tap(() => list.innerHTML = \"\"),\n switchMap(({ data }) => merge(\n of(...data.slice(0, 10)),\n of(...data.slice(10))\n .pipe(\n bufferCount(10),\n zipWith(boundary$),\n switchMap(([chunk]) => chunk)\n )\n )),\n withLatestFrom(query$)\n )\n .subscribe(([result, { value }]) => list.appendChild(\n renderIconSearchResult(result, value, file)\n ))\n\n /* Create and return component */\n return watchIconSearchResult(el, { query$, index$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { wrap } from \"fuzzaldrin-plus\"\n\nimport { translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Icon\n */\nexport interface Icon {\n shortcode: string /* Icon shortcode */\n url: string /* Icon URL */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Highlight an icon search result\n *\n * @param icon - Icon\n * @param query - Search query\n *\n * @returns Highlighted result\n */\nfunction highlight(icon: Icon, query: string): string {\n return wrap(icon.shortcode, query, {\n wrap: {\n tagOpen: \"\",\n tagClose: \"\"\n }\n })\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render an icon search result\n *\n * @param icon - Icon\n * @param query - Search query\n * @param file - Render as file\n *\n * @returns Element\n */\nexport function renderIconSearchResult(\n icon: Icon, query: string, file?: boolean\n): HTMLElement {\n return (\n
  • \n \n \n \n \n {\n file\n ? highlight(icon, query)\n : `:${highlight(icon, query)}:`\n }\n \n
  • \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\nimport { SponsorUser } from \"_/components\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render public sponsor\n *\n * @param user - Sponsor user\n *\n * @returns Element\n */\nexport function renderPublicSponsor(\n user: SponsorUser\n): HTMLElement {\n const title = `@${user.name}`\n return (\n \n \n \n )\n}\n\n/**\n * Render private sponsor\n *\n * @param count - Number of private sponsors\n *\n * @returns Element\n */\nexport function renderPrivateSponsor(\n count: number\n): HTMLElement {\n return (\n \n +{count}\n \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, merge } from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport { requestJSON } from \"~/browser\"\n\nimport { Component, getComponentElement } from \"../../_\"\nimport {\n IconSearchQuery,\n mountIconSearchQuery\n} from \"../query\"\nimport {\n IconSearchResult,\n mountIconSearchResult\n} from \"../result\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Icon category\n */\nexport interface IconCategory {\n base: string /* Category base URL */\n data: Record /* Category data */\n}\n\n/**\n * Icon search index\n */\nexport interface IconSearchIndex {\n icons: IconCategory /* Icons */\n emojis: IconCategory /* Emojis */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Icon search\n */\nexport type IconSearch =\n | IconSearchQuery\n | IconSearchResult\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount icon search\n *\n * @param el - Icon search element\n *\n * @returns Icon search component observable\n */\nexport function mountIconSearch(\n el: HTMLElement\n): Observable> {\n const config = configuration()\n const index$ = requestJSON(\n new URL(\"overrides/assets/javascripts/iconsearch_index.json\", config.base)\n )\n\n /* Retrieve query and result components */\n const query = getComponentElement(\"iconsearch-query\", el)\n const result = getComponentElement(\"iconsearch-result\", el)\n\n /* Create and return component */\n const query$ = mountIconSearchQuery(query)\n const result$ = mountIconSearchResult(result, { index$, query$ })\n return merge(query$, result$)\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, map } from \"rxjs\"\n\nimport { getElement, requestJSON } from \"~/browser\"\n\nimport { renderPrivateSponsor, renderPublicSponsor } from \"_/templates\"\n\nimport { Component, getComponentElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sponsor type\n */\nexport type SponsorType =\n | \"user\" /* Sponsor is a user */\n | \"organization\" /* Sponsor is an organization */\n\n/**\n * Sponsor visibility\n */\nexport type SponsorVisibility =\n | \"public\" /* Sponsor is a user */\n | \"private\" /* Sponsor is an organization */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Sponsor user\n */\nexport interface SponsorUser {\n type: SponsorType /* Sponsor type */\n name: string /* Sponsor login name */\n image: string /* Sponsor image URL */\n url: string /* Sponsor URL */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Public sponsor\n */\nexport interface PublicSponsor {\n type: \"public\" /* Sponsor visibility */\n user: SponsorUser /* Sponsor user */\n}\n\n/**\n * Private sponsor\n */\nexport interface PrivateSponsor {\n type: \"private\" /* Sponsor visibility */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Sponsor\n */\nexport type Sponsor =\n | PublicSponsor\n | PrivateSponsor\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Sponsorship\n */\nexport interface Sponsorship {\n sponsors: Sponsor[] /* Sponsors */\n total: number /* Total amount */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount sponsorship\n *\n * @param el - Sponsorship element\n *\n * @returns Sponsorship component observable\n */\nexport function mountSponsorship(\n el: HTMLElement\n): Observable> {\n const sponsorship$ = requestJSON(\n \"https://3if8u9o552.execute-api.us-east-1.amazonaws.com/_/\"\n )\n\n /* Retrieve adjacent components */\n const count = getComponentElement(\"sponsorship-count\")\n const total = getComponentElement(\"sponsorship-total\")\n\n /* Render sponsorship */\n sponsorship$.subscribe(sponsorship => {\n el.removeAttribute(\"hidden\")\n\n /* Render public sponsors with avatar and links */\n const list = getElement(\":scope > :first-child\", el)\n for (const sponsor of sponsorship.sponsors)\n if (sponsor.type === \"public\")\n list.appendChild(renderPublicSponsor(sponsor.user))\n\n /* Render combined private sponsors */\n list.appendChild(renderPrivateSponsor(\n sponsorship.sponsors.filter(({ type }) => (\n type === \"private\"\n )).length\n ))\n\n /* Render sponsorship count and total */\n count.innerText = `${sponsorship.sponsors.length}`\n total.innerText = `$ ${sponsorship.total\n .toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\n } a month`\n })\n\n // /* Create and return component */\n return sponsorship$\n .pipe(\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { fromEvent } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up extra analytics events\n */\nexport function setupAnalytics(): void {\n const { origin } = new URL(location.href)\n fromEvent(document.body, \"click\")\n .subscribe(ev => {\n if (ev.target instanceof HTMLElement) {\n const el = ev.target.closest(\"a\")\n if (el && el.origin !== origin)\n ga(\"send\", \"event\", \"outbound\", \"click\", el.href)\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { merge, switchMap } from \"rxjs\"\n\nimport {\n getComponentElements,\n mountIconSearch,\n mountSponsorship\n} from \"./components\"\nimport { setupAnalytics } from \"./integrations\"\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Set up extra analytics events */\nsetupAnalytics()\n\n/* Set up extra component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => merge(\n\n /* Icon search */\n ...getComponentElements(\"iconsearch\")\n .map(el => mountIconSearch(el)),\n\n /* Sponsorship */\n ...getComponentElements(\"sponsorship\")\n .map(el => mountSponsorship(el))\n ))\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n"], - "mappings": "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", - "names": [] -} diff --git a/mkdocs-overrides/assets/javascripts/iconsearch_index.json b/mkdocs-overrides/assets/javascripts/iconsearch_index.json deleted file mode 100644 index 1b638039f..000000000 --- a/mkdocs-overrides/assets/javascripts/iconsearch_index.json +++ /dev/null @@ -1 +0,0 @@ -{"icons":{"base":"https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/material/.icons/","data":{"fontawesome-brands-42-group":"fontawesome/brands/42-group.svg","fontawesome-brands-500px":"fontawesome/brands/500px.svg","fontawesome-brands-accessible-icon":"fontawesome/brands/accessible-icon.svg","fontawesome-brands-accusoft":"fontawesome/brands/accusoft.svg","fontawesome-brands-adn":"fontawesome/brands/adn.svg","fontawesome-brands-adversal":"fontawesome/brands/adversal.svg","fontawesome-brands-affiliatetheme":"fontawesome/brands/affiliatetheme.svg","fontawesome-brands-airbnb":"fontawesome/brands/airbnb.svg","fontawesome-brands-algolia":"fontawesome/brands/algolia.svg","fontawesome-brands-alipay":"fontawesome/brands/alipay.svg","fontawesome-brands-amazon-pay":"fontawesome/brands/amazon-pay.svg","fontawesome-brands-amazon":"fontawesome/brands/amazon.svg","fontawesome-brands-amilia":"fontawesome/brands/amilia.svg","fontawesome-brands-android":"fontawesome/brands/android.svg","fontawesome-brands-angellist":"fontawesome/brands/angellist.svg","fontawesome-brands-angrycreative":"fontawesome/brands/angrycreative.svg","fontawesome-brands-angular":"fontawesome/brands/angular.svg","fontawesome-brands-app-store-ios":"fontawesome/brands/app-store-ios.svg","fontawesome-brands-app-store":"fontawesome/brands/app-store.svg","fontawesome-brands-apper":"fontawesome/brands/apper.svg","fontawesome-brands-apple-pay":"fontawesome/brands/apple-pay.svg","fontawesome-brands-apple":"fontawesome/brands/apple.svg","fontawesome-brands-artstation":"fontawesome/brands/artstation.svg","fontawesome-brands-asymmetrik":"fontawesome/brands/asymmetrik.svg","fontawesome-brands-atlassian":"fontawesome/brands/atlassian.svg","fontawesome-brands-audible":"fontawesome/brands/audible.svg","fontawesome-brands-autoprefixer":"fontawesome/brands/autoprefixer.svg","fontawesome-brands-avianex":"fontawesome/brands/avianex.svg","fontawesome-brands-aviato":"fontawesome/brands/aviato.svg","fontawesome-brands-aws":"fontawesome/brands/aws.svg","fontawesome-brands-bandcamp":"fontawesome/brands/bandcamp.svg","fontawesome-brands-battle-net":"fontawesome/brands/battle-net.svg","fontawesome-brands-behance-square":"fontawesome/brands/behance-square.svg","fontawesome-brands-behance":"fontawesome/brands/behance.svg","fontawesome-brands-bilibili":"fontawesome/brands/bilibili.svg","fontawesome-brands-bimobject":"fontawesome/brands/bimobject.svg","fontawesome-brands-bitbucket":"fontawesome/brands/bitbucket.svg","fontawesome-brands-bitcoin":"fontawesome/brands/bitcoin.svg","fontawesome-brands-bity":"fontawesome/brands/bity.svg","fontawesome-brands-black-tie":"fontawesome/brands/black-tie.svg","fontawesome-brands-blackberry":"fontawesome/brands/blackberry.svg","fontawesome-brands-blogger-b":"fontawesome/brands/blogger-b.svg","fontawesome-brands-blogger":"fontawesome/brands/blogger.svg","fontawesome-brands-bluetooth-b":"fontawesome/brands/bluetooth-b.svg","fontawesome-brands-bluetooth":"fontawesome/brands/bluetooth.svg","fontawesome-brands-bootstrap":"fontawesome/brands/bootstrap.svg","fontawesome-brands-bots":"fontawesome/brands/bots.svg","fontawesome-brands-btc":"fontawesome/brands/btc.svg","fontawesome-brands-buffer":"fontawesome/brands/buffer.svg","fontawesome-brands-buromobelexperte":"fontawesome/brands/buromobelexperte.svg","fontawesome-brands-buy-n-large":"fontawesome/brands/buy-n-large.svg","fontawesome-brands-buysellads":"fontawesome/brands/buysellads.svg","fontawesome-brands-canadian-maple-leaf":"fontawesome/brands/canadian-maple-leaf.svg","fontawesome-brands-cc-amazon-pay":"fontawesome/brands/cc-amazon-pay.svg","fontawesome-brands-cc-amex":"fontawesome/brands/cc-amex.svg","fontawesome-brands-cc-apple-pay":"fontawesome/brands/cc-apple-pay.svg","fontawesome-brands-cc-diners-club":"fontawesome/brands/cc-diners-club.svg","fontawesome-brands-cc-discover":"fontawesome/brands/cc-discover.svg","fontawesome-brands-cc-jcb":"fontawesome/brands/cc-jcb.svg","fontawesome-brands-cc-mastercard":"fontawesome/brands/cc-mastercard.svg","fontawesome-brands-cc-paypal":"fontawesome/brands/cc-paypal.svg","fontawesome-brands-cc-stripe":"fontawesome/brands/cc-stripe.svg","fontawesome-brands-cc-visa":"fontawesome/brands/cc-visa.svg","fontawesome-brands-centercode":"fontawesome/brands/centercode.svg","fontawesome-brands-centos":"fontawesome/brands/centos.svg","fontawesome-brands-chrome":"fontawesome/brands/chrome.svg","fontawesome-brands-chromecast":"fontawesome/brands/chromecast.svg","fontawesome-brands-cloudflare":"fontawesome/brands/cloudflare.svg","fontawesome-brands-cloudscale":"fontawesome/brands/cloudscale.svg","fontawesome-brands-cloudsmith":"fontawesome/brands/cloudsmith.svg","fontawesome-brands-cloudversify":"fontawesome/brands/cloudversify.svg","fontawesome-brands-cmplid":"fontawesome/brands/cmplid.svg","fontawesome-brands-codepen":"fontawesome/brands/codepen.svg","fontawesome-brands-codiepie":"fontawesome/brands/codiepie.svg","fontawesome-brands-confluence":"fontawesome/brands/confluence.svg","fontawesome-brands-connectdevelop":"fontawesome/brands/connectdevelop.svg","fontawesome-brands-contao":"fontawesome/brands/contao.svg","fontawesome-brands-cotton-bureau":"fontawesome/brands/cotton-bureau.svg","fontawesome-brands-cpanel":"fontawesome/brands/cpanel.svg","fontawesome-brands-creative-commons-by":"fontawesome/brands/creative-commons-by.svg","fontawesome-brands-creative-commons-nc-eu":"fontawesome/brands/creative-commons-nc-eu.svg","fontawesome-brands-creative-commons-nc-jp":"fontawesome/brands/creative-commons-nc-jp.svg","fontawesome-brands-creative-commons-nc":"fontawesome/brands/creative-commons-nc.svg","fontawesome-brands-creative-commons-nd":"fontawesome/brands/creative-commons-nd.svg","fontawesome-brands-creative-commons-pd-alt":"fontawesome/brands/creative-commons-pd-alt.svg","fontawesome-brands-creative-commons-pd":"fontawesome/brands/creative-commons-pd.svg","fontawesome-brands-creative-commons-remix":"fontawesome/brands/creative-commons-remix.svg","fontawesome-brands-creative-commons-sa":"fontawesome/brands/creative-commons-sa.svg","fontawesome-brands-creative-commons-sampling-plus":"fontawesome/brands/creative-commons-sampling-plus.svg","fontawesome-brands-creative-commons-sampling":"fontawesome/brands/creative-commons-sampling.svg","fontawesome-brands-creative-commons-share":"fontawesome/brands/creative-commons-share.svg","fontawesome-brands-creative-commons-zero":"fontawesome/brands/creative-commons-zero.svg","fontawesome-brands-creative-commons":"fontawesome/brands/creative-commons.svg","fontawesome-brands-critical-role":"fontawesome/brands/critical-role.svg","fontawesome-brands-css3-alt":"fontawesome/brands/css3-alt.svg","fontawesome-brands-css3":"fontawesome/brands/css3.svg","fontawesome-brands-cuttlefish":"fontawesome/brands/cuttlefish.svg","fontawesome-brands-d-and-d-beyond":"fontawesome/brands/d-and-d-beyond.svg","fontawesome-brands-d-and-d":"fontawesome/brands/d-and-d.svg","fontawesome-brands-dailymotion":"fontawesome/brands/dailymotion.svg","fontawesome-brands-dashcube":"fontawesome/brands/dashcube.svg","fontawesome-brands-deezer":"fontawesome/brands/deezer.svg","fontawesome-brands-delicious":"fontawesome/brands/delicious.svg","fontawesome-brands-deploydog":"fontawesome/brands/deploydog.svg","fontawesome-brands-deskpro":"fontawesome/brands/deskpro.svg","fontawesome-brands-dev":"fontawesome/brands/dev.svg","fontawesome-brands-deviantart":"fontawesome/brands/deviantart.svg","fontawesome-brands-dhl":"fontawesome/brands/dhl.svg","fontawesome-brands-diaspora":"fontawesome/brands/diaspora.svg","fontawesome-brands-digg":"fontawesome/brands/digg.svg","fontawesome-brands-digital-ocean":"fontawesome/brands/digital-ocean.svg","fontawesome-brands-discord":"fontawesome/brands/discord.svg","fontawesome-brands-discourse":"fontawesome/brands/discourse.svg","fontawesome-brands-dochub":"fontawesome/brands/dochub.svg","fontawesome-brands-docker":"fontawesome/brands/docker.svg","fontawesome-brands-draft2digital":"fontawesome/brands/draft2digital.svg","fontawesome-brands-dribbble-square":"fontawesome/brands/dribbble-square.svg","fontawesome-brands-dribbble":"fontawesome/brands/dribbble.svg","fontawesome-brands-dropbox":"fontawesome/brands/dropbox.svg","fontawesome-brands-drupal":"fontawesome/brands/drupal.svg","fontawesome-brands-dyalog":"fontawesome/brands/dyalog.svg","fontawesome-brands-earlybirds":"fontawesome/brands/earlybirds.svg","fontawesome-brands-ebay":"fontawesome/brands/ebay.svg","fontawesome-brands-edge-legacy":"fontawesome/brands/edge-legacy.svg","fontawesome-brands-edge":"fontawesome/brands/edge.svg","fontawesome-brands-elementor":"fontawesome/brands/elementor.svg","fontawesome-brands-ello":"fontawesome/brands/ello.svg","fontawesome-brands-ember":"fontawesome/brands/ember.svg","fontawesome-brands-empire":"fontawesome/brands/empire.svg","fontawesome-brands-envira":"fontawesome/brands/envira.svg","fontawesome-brands-erlang":"fontawesome/brands/erlang.svg","fontawesome-brands-ethereum":"fontawesome/brands/ethereum.svg","fontawesome-brands-etsy":"fontawesome/brands/etsy.svg","fontawesome-brands-evernote":"fontawesome/brands/evernote.svg","fontawesome-brands-expeditedssl":"fontawesome/brands/expeditedssl.svg","fontawesome-brands-facebook-f":"fontawesome/brands/facebook-f.svg","fontawesome-brands-facebook-messenger":"fontawesome/brands/facebook-messenger.svg","fontawesome-brands-facebook-square":"fontawesome/brands/facebook-square.svg","fontawesome-brands-facebook":"fontawesome/brands/facebook.svg","fontawesome-brands-fantasy-flight-games":"fontawesome/brands/fantasy-flight-games.svg","fontawesome-brands-fedex":"fontawesome/brands/fedex.svg","fontawesome-brands-fedora":"fontawesome/brands/fedora.svg","fontawesome-brands-figma":"fontawesome/brands/figma.svg","fontawesome-brands-firefox-browser":"fontawesome/brands/firefox-browser.svg","fontawesome-brands-firefox":"fontawesome/brands/firefox.svg","fontawesome-brands-first-order-alt":"fontawesome/brands/first-order-alt.svg","fontawesome-brands-first-order":"fontawesome/brands/first-order.svg","fontawesome-brands-firstdraft":"fontawesome/brands/firstdraft.svg","fontawesome-brands-flickr":"fontawesome/brands/flickr.svg","fontawesome-brands-flipboard":"fontawesome/brands/flipboard.svg","fontawesome-brands-fly":"fontawesome/brands/fly.svg","fontawesome-brands-font-awesome":"fontawesome/brands/font-awesome.svg","fontawesome-brands-fonticons-fi":"fontawesome/brands/fonticons-fi.svg","fontawesome-brands-fonticons":"fontawesome/brands/fonticons.svg","fontawesome-brands-fort-awesome-alt":"fontawesome/brands/fort-awesome-alt.svg","fontawesome-brands-fort-awesome":"fontawesome/brands/fort-awesome.svg","fontawesome-brands-forumbee":"fontawesome/brands/forumbee.svg","fontawesome-brands-foursquare":"fontawesome/brands/foursquare.svg","fontawesome-brands-free-code-camp":"fontawesome/brands/free-code-camp.svg","fontawesome-brands-freebsd":"fontawesome/brands/freebsd.svg","fontawesome-brands-fulcrum":"fontawesome/brands/fulcrum.svg","fontawesome-brands-galactic-republic":"fontawesome/brands/galactic-republic.svg","fontawesome-brands-galactic-senate":"fontawesome/brands/galactic-senate.svg","fontawesome-brands-get-pocket":"fontawesome/brands/get-pocket.svg","fontawesome-brands-gg-circle":"fontawesome/brands/gg-circle.svg","fontawesome-brands-gg":"fontawesome/brands/gg.svg","fontawesome-brands-git-alt":"fontawesome/brands/git-alt.svg","fontawesome-brands-git-square":"fontawesome/brands/git-square.svg","fontawesome-brands-git":"fontawesome/brands/git.svg","fontawesome-brands-github-alt":"fontawesome/brands/github-alt.svg","fontawesome-brands-github-square":"fontawesome/brands/github-square.svg","fontawesome-brands-github":"fontawesome/brands/github.svg","fontawesome-brands-gitkraken":"fontawesome/brands/gitkraken.svg","fontawesome-brands-gitlab":"fontawesome/brands/gitlab.svg","fontawesome-brands-gitter":"fontawesome/brands/gitter.svg","fontawesome-brands-glide-g":"fontawesome/brands/glide-g.svg","fontawesome-brands-glide":"fontawesome/brands/glide.svg","fontawesome-brands-gofore":"fontawesome/brands/gofore.svg","fontawesome-brands-golang":"fontawesome/brands/golang.svg","fontawesome-brands-goodreads-g":"fontawesome/brands/goodreads-g.svg","fontawesome-brands-goodreads":"fontawesome/brands/goodreads.svg","fontawesome-brands-google-drive":"fontawesome/brands/google-drive.svg","fontawesome-brands-google-pay":"fontawesome/brands/google-pay.svg","fontawesome-brands-google-play":"fontawesome/brands/google-play.svg","fontawesome-brands-google-plus-g":"fontawesome/brands/google-plus-g.svg","fontawesome-brands-google-plus-square":"fontawesome/brands/google-plus-square.svg","fontawesome-brands-google-plus":"fontawesome/brands/google-plus.svg","fontawesome-brands-google-wallet":"fontawesome/brands/google-wallet.svg","fontawesome-brands-google":"fontawesome/brands/google.svg","fontawesome-brands-gratipay":"fontawesome/brands/gratipay.svg","fontawesome-brands-grav":"fontawesome/brands/grav.svg","fontawesome-brands-gripfire":"fontawesome/brands/gripfire.svg","fontawesome-brands-grunt":"fontawesome/brands/grunt.svg","fontawesome-brands-guilded":"fontawesome/brands/guilded.svg","fontawesome-brands-gulp":"fontawesome/brands/gulp.svg","fontawesome-brands-hacker-news-square":"fontawesome/brands/hacker-news-square.svg","fontawesome-brands-hacker-news":"fontawesome/brands/hacker-news.svg","fontawesome-brands-hackerrank":"fontawesome/brands/hackerrank.svg","fontawesome-brands-hashnode":"fontawesome/brands/hashnode.svg","fontawesome-brands-hips":"fontawesome/brands/hips.svg","fontawesome-brands-hire-a-helper":"fontawesome/brands/hire-a-helper.svg","fontawesome-brands-hive":"fontawesome/brands/hive.svg","fontawesome-brands-hooli":"fontawesome/brands/hooli.svg","fontawesome-brands-hornbill":"fontawesome/brands/hornbill.svg","fontawesome-brands-hotjar":"fontawesome/brands/hotjar.svg","fontawesome-brands-houzz":"fontawesome/brands/houzz.svg","fontawesome-brands-html5":"fontawesome/brands/html5.svg","fontawesome-brands-hubspot":"fontawesome/brands/hubspot.svg","fontawesome-brands-ideal":"fontawesome/brands/ideal.svg","fontawesome-brands-imdb":"fontawesome/brands/imdb.svg","fontawesome-brands-instagram-square":"fontawesome/brands/instagram-square.svg","fontawesome-brands-instagram":"fontawesome/brands/instagram.svg","fontawesome-brands-instalod":"fontawesome/brands/instalod.svg","fontawesome-brands-intercom":"fontawesome/brands/intercom.svg","fontawesome-brands-internet-explorer":"fontawesome/brands/internet-explorer.svg","fontawesome-brands-invision":"fontawesome/brands/invision.svg","fontawesome-brands-ioxhost":"fontawesome/brands/ioxhost.svg","fontawesome-brands-itch-io":"fontawesome/brands/itch-io.svg","fontawesome-brands-itunes-note":"fontawesome/brands/itunes-note.svg","fontawesome-brands-itunes":"fontawesome/brands/itunes.svg","fontawesome-brands-java":"fontawesome/brands/java.svg","fontawesome-brands-jedi-order":"fontawesome/brands/jedi-order.svg","fontawesome-brands-jenkins":"fontawesome/brands/jenkins.svg","fontawesome-brands-jira":"fontawesome/brands/jira.svg","fontawesome-brands-joget":"fontawesome/brands/joget.svg","fontawesome-brands-joomla":"fontawesome/brands/joomla.svg","fontawesome-brands-js-square":"fontawesome/brands/js-square.svg","fontawesome-brands-js":"fontawesome/brands/js.svg","fontawesome-brands-jsfiddle":"fontawesome/brands/jsfiddle.svg","fontawesome-brands-kaggle":"fontawesome/brands/kaggle.svg","fontawesome-brands-keybase":"fontawesome/brands/keybase.svg","fontawesome-brands-keycdn":"fontawesome/brands/keycdn.svg","fontawesome-brands-kickstarter-k":"fontawesome/brands/kickstarter-k.svg","fontawesome-brands-kickstarter":"fontawesome/brands/kickstarter.svg","fontawesome-brands-korvue":"fontawesome/brands/korvue.svg","fontawesome-brands-laravel":"fontawesome/brands/laravel.svg","fontawesome-brands-lastfm-square":"fontawesome/brands/lastfm-square.svg","fontawesome-brands-lastfm":"fontawesome/brands/lastfm.svg","fontawesome-brands-leanpub":"fontawesome/brands/leanpub.svg","fontawesome-brands-less":"fontawesome/brands/less.svg","fontawesome-brands-line":"fontawesome/brands/line.svg","fontawesome-brands-linkedin-in":"fontawesome/brands/linkedin-in.svg","fontawesome-brands-linkedin":"fontawesome/brands/linkedin.svg","fontawesome-brands-linode":"fontawesome/brands/linode.svg","fontawesome-brands-linux":"fontawesome/brands/linux.svg","fontawesome-brands-lyft":"fontawesome/brands/lyft.svg","fontawesome-brands-magento":"fontawesome/brands/magento.svg","fontawesome-brands-mailchimp":"fontawesome/brands/mailchimp.svg","fontawesome-brands-mandalorian":"fontawesome/brands/mandalorian.svg","fontawesome-brands-markdown":"fontawesome/brands/markdown.svg","fontawesome-brands-mastodon":"fontawesome/brands/mastodon.svg","fontawesome-brands-maxcdn":"fontawesome/brands/maxcdn.svg","fontawesome-brands-mdb":"fontawesome/brands/mdb.svg","fontawesome-brands-medapps":"fontawesome/brands/medapps.svg","fontawesome-brands-medium":"fontawesome/brands/medium.svg","fontawesome-brands-medrt":"fontawesome/brands/medrt.svg","fontawesome-brands-meetup":"fontawesome/brands/meetup.svg","fontawesome-brands-megaport":"fontawesome/brands/megaport.svg","fontawesome-brands-mendeley":"fontawesome/brands/mendeley.svg","fontawesome-brands-microblog":"fontawesome/brands/microblog.svg","fontawesome-brands-microsoft":"fontawesome/brands/microsoft.svg","fontawesome-brands-mix":"fontawesome/brands/mix.svg","fontawesome-brands-mixcloud":"fontawesome/brands/mixcloud.svg","fontawesome-brands-mixer":"fontawesome/brands/mixer.svg","fontawesome-brands-mizuni":"fontawesome/brands/mizuni.svg","fontawesome-brands-modx":"fontawesome/brands/modx.svg","fontawesome-brands-monero":"fontawesome/brands/monero.svg","fontawesome-brands-napster":"fontawesome/brands/napster.svg","fontawesome-brands-neos":"fontawesome/brands/neos.svg","fontawesome-brands-nfc-directional":"fontawesome/brands/nfc-directional.svg","fontawesome-brands-nfc-symbol":"fontawesome/brands/nfc-symbol.svg","fontawesome-brands-nimblr":"fontawesome/brands/nimblr.svg","fontawesome-brands-node-js":"fontawesome/brands/node-js.svg","fontawesome-brands-node":"fontawesome/brands/node.svg","fontawesome-brands-npm":"fontawesome/brands/npm.svg","fontawesome-brands-ns8":"fontawesome/brands/ns8.svg","fontawesome-brands-nutritionix":"fontawesome/brands/nutritionix.svg","fontawesome-brands-octopus-deploy":"fontawesome/brands/octopus-deploy.svg","fontawesome-brands-odnoklassniki-square":"fontawesome/brands/odnoklassniki-square.svg","fontawesome-brands-odnoklassniki":"fontawesome/brands/odnoklassniki.svg","fontawesome-brands-old-republic":"fontawesome/brands/old-republic.svg","fontawesome-brands-opencart":"fontawesome/brands/opencart.svg","fontawesome-brands-openid":"fontawesome/brands/openid.svg","fontawesome-brands-opera":"fontawesome/brands/opera.svg","fontawesome-brands-optin-monster":"fontawesome/brands/optin-monster.svg","fontawesome-brands-orcid":"fontawesome/brands/orcid.svg","fontawesome-brands-osi":"fontawesome/brands/osi.svg","fontawesome-brands-padlet":"fontawesome/brands/padlet.svg","fontawesome-brands-page4":"fontawesome/brands/page4.svg","fontawesome-brands-pagelines":"fontawesome/brands/pagelines.svg","fontawesome-brands-palfed":"fontawesome/brands/palfed.svg","fontawesome-brands-patreon":"fontawesome/brands/patreon.svg","fontawesome-brands-paypal":"fontawesome/brands/paypal.svg","fontawesome-brands-perbyte":"fontawesome/brands/perbyte.svg","fontawesome-brands-periscope":"fontawesome/brands/periscope.svg","fontawesome-brands-phabricator":"fontawesome/brands/phabricator.svg","fontawesome-brands-phoenix-framework":"fontawesome/brands/phoenix-framework.svg","fontawesome-brands-phoenix-squadron":"fontawesome/brands/phoenix-squadron.svg","fontawesome-brands-php":"fontawesome/brands/php.svg","fontawesome-brands-pied-piper-alt":"fontawesome/brands/pied-piper-alt.svg","fontawesome-brands-pied-piper-hat":"fontawesome/brands/pied-piper-hat.svg","fontawesome-brands-pied-piper-pp":"fontawesome/brands/pied-piper-pp.svg","fontawesome-brands-pied-piper-square":"fontawesome/brands/pied-piper-square.svg","fontawesome-brands-pied-piper":"fontawesome/brands/pied-piper.svg","fontawesome-brands-pinterest-p":"fontawesome/brands/pinterest-p.svg","fontawesome-brands-pinterest-square":"fontawesome/brands/pinterest-square.svg","fontawesome-brands-pinterest":"fontawesome/brands/pinterest.svg","fontawesome-brands-pix":"fontawesome/brands/pix.svg","fontawesome-brands-playstation":"fontawesome/brands/playstation.svg","fontawesome-brands-product-hunt":"fontawesome/brands/product-hunt.svg","fontawesome-brands-pushed":"fontawesome/brands/pushed.svg","fontawesome-brands-python":"fontawesome/brands/python.svg","fontawesome-brands-qq":"fontawesome/brands/qq.svg","fontawesome-brands-quinscape":"fontawesome/brands/quinscape.svg","fontawesome-brands-quora":"fontawesome/brands/quora.svg","fontawesome-brands-r-project":"fontawesome/brands/r-project.svg","fontawesome-brands-raspberry-pi":"fontawesome/brands/raspberry-pi.svg","fontawesome-brands-ravelry":"fontawesome/brands/ravelry.svg","fontawesome-brands-react":"fontawesome/brands/react.svg","fontawesome-brands-reacteurope":"fontawesome/brands/reacteurope.svg","fontawesome-brands-readme":"fontawesome/brands/readme.svg","fontawesome-brands-rebel":"fontawesome/brands/rebel.svg","fontawesome-brands-red-river":"fontawesome/brands/red-river.svg","fontawesome-brands-reddit-alien":"fontawesome/brands/reddit-alien.svg","fontawesome-brands-reddit-square":"fontawesome/brands/reddit-square.svg","fontawesome-brands-reddit":"fontawesome/brands/reddit.svg","fontawesome-brands-redhat":"fontawesome/brands/redhat.svg","fontawesome-brands-renren":"fontawesome/brands/renren.svg","fontawesome-brands-replyd":"fontawesome/brands/replyd.svg","fontawesome-brands-researchgate":"fontawesome/brands/researchgate.svg","fontawesome-brands-resolving":"fontawesome/brands/resolving.svg","fontawesome-brands-rev":"fontawesome/brands/rev.svg","fontawesome-brands-rocketchat":"fontawesome/brands/rocketchat.svg","fontawesome-brands-rockrms":"fontawesome/brands/rockrms.svg","fontawesome-brands-rust":"fontawesome/brands/rust.svg","fontawesome-brands-safari":"fontawesome/brands/safari.svg","fontawesome-brands-salesforce":"fontawesome/brands/salesforce.svg","fontawesome-brands-sass":"fontawesome/brands/sass.svg","fontawesome-brands-schlix":"fontawesome/brands/schlix.svg","fontawesome-brands-screenpal":"fontawesome/brands/screenpal.svg","fontawesome-brands-scribd":"fontawesome/brands/scribd.svg","fontawesome-brands-searchengin":"fontawesome/brands/searchengin.svg","fontawesome-brands-sellcast":"fontawesome/brands/sellcast.svg","fontawesome-brands-sellsy":"fontawesome/brands/sellsy.svg","fontawesome-brands-servicestack":"fontawesome/brands/servicestack.svg","fontawesome-brands-shirtsinbulk":"fontawesome/brands/shirtsinbulk.svg","fontawesome-brands-shopify":"fontawesome/brands/shopify.svg","fontawesome-brands-shopware":"fontawesome/brands/shopware.svg","fontawesome-brands-simplybuilt":"fontawesome/brands/simplybuilt.svg","fontawesome-brands-sistrix":"fontawesome/brands/sistrix.svg","fontawesome-brands-sith":"fontawesome/brands/sith.svg","fontawesome-brands-sitrox":"fontawesome/brands/sitrox.svg","fontawesome-brands-sketch":"fontawesome/brands/sketch.svg","fontawesome-brands-skyatlas":"fontawesome/brands/skyatlas.svg","fontawesome-brands-skype":"fontawesome/brands/skype.svg","fontawesome-brands-slack":"fontawesome/brands/slack.svg","fontawesome-brands-slideshare":"fontawesome/brands/slideshare.svg","fontawesome-brands-snapchat-square":"fontawesome/brands/snapchat-square.svg","fontawesome-brands-snapchat":"fontawesome/brands/snapchat.svg","fontawesome-brands-soundcloud":"fontawesome/brands/soundcloud.svg","fontawesome-brands-sourcetree":"fontawesome/brands/sourcetree.svg","fontawesome-brands-speakap":"fontawesome/brands/speakap.svg","fontawesome-brands-speaker-deck":"fontawesome/brands/speaker-deck.svg","fontawesome-brands-spotify":"fontawesome/brands/spotify.svg","fontawesome-brands-square-font-awesome-stroke":"fontawesome/brands/square-font-awesome-stroke.svg","fontawesome-brands-square-font-awesome":"fontawesome/brands/square-font-awesome.svg","fontawesome-brands-squarespace":"fontawesome/brands/squarespace.svg","fontawesome-brands-stack-exchange":"fontawesome/brands/stack-exchange.svg","fontawesome-brands-stack-overflow":"fontawesome/brands/stack-overflow.svg","fontawesome-brands-stackpath":"fontawesome/brands/stackpath.svg","fontawesome-brands-staylinked":"fontawesome/brands/staylinked.svg","fontawesome-brands-steam-square":"fontawesome/brands/steam-square.svg","fontawesome-brands-steam-symbol":"fontawesome/brands/steam-symbol.svg","fontawesome-brands-steam":"fontawesome/brands/steam.svg","fontawesome-brands-sticker-mule":"fontawesome/brands/sticker-mule.svg","fontawesome-brands-strava":"fontawesome/brands/strava.svg","fontawesome-brands-stripe-s":"fontawesome/brands/stripe-s.svg","fontawesome-brands-stripe":"fontawesome/brands/stripe.svg","fontawesome-brands-studiovinari":"fontawesome/brands/studiovinari.svg","fontawesome-brands-stumbleupon-circle":"fontawesome/brands/stumbleupon-circle.svg","fontawesome-brands-stumbleupon":"fontawesome/brands/stumbleupon.svg","fontawesome-brands-superpowers":"fontawesome/brands/superpowers.svg","fontawesome-brands-supple":"fontawesome/brands/supple.svg","fontawesome-brands-suse":"fontawesome/brands/suse.svg","fontawesome-brands-swift":"fontawesome/brands/swift.svg","fontawesome-brands-symfony":"fontawesome/brands/symfony.svg","fontawesome-brands-teamspeak":"fontawesome/brands/teamspeak.svg","fontawesome-brands-telegram":"fontawesome/brands/telegram.svg","fontawesome-brands-tencent-weibo":"fontawesome/brands/tencent-weibo.svg","fontawesome-brands-the-red-yeti":"fontawesome/brands/the-red-yeti.svg","fontawesome-brands-themeco":"fontawesome/brands/themeco.svg","fontawesome-brands-themeisle":"fontawesome/brands/themeisle.svg","fontawesome-brands-think-peaks":"fontawesome/brands/think-peaks.svg","fontawesome-brands-tiktok":"fontawesome/brands/tiktok.svg","fontawesome-brands-trade-federation":"fontawesome/brands/trade-federation.svg","fontawesome-brands-trello":"fontawesome/brands/trello.svg","fontawesome-brands-tumblr-square":"fontawesome/brands/tumblr-square.svg","fontawesome-brands-tumblr":"fontawesome/brands/tumblr.svg","fontawesome-brands-twitch":"fontawesome/brands/twitch.svg","fontawesome-brands-twitter-square":"fontawesome/brands/twitter-square.svg","fontawesome-brands-twitter":"fontawesome/brands/twitter.svg","fontawesome-brands-typo3":"fontawesome/brands/typo3.svg","fontawesome-brands-uber":"fontawesome/brands/uber.svg","fontawesome-brands-ubuntu":"fontawesome/brands/ubuntu.svg","fontawesome-brands-uikit":"fontawesome/brands/uikit.svg","fontawesome-brands-umbraco":"fontawesome/brands/umbraco.svg","fontawesome-brands-uncharted":"fontawesome/brands/uncharted.svg","fontawesome-brands-uniregistry":"fontawesome/brands/uniregistry.svg","fontawesome-brands-unity":"fontawesome/brands/unity.svg","fontawesome-brands-unsplash":"fontawesome/brands/unsplash.svg","fontawesome-brands-untappd":"fontawesome/brands/untappd.svg","fontawesome-brands-ups":"fontawesome/brands/ups.svg","fontawesome-brands-usb":"fontawesome/brands/usb.svg","fontawesome-brands-usps":"fontawesome/brands/usps.svg","fontawesome-brands-ussunnah":"fontawesome/brands/ussunnah.svg","fontawesome-brands-vaadin":"fontawesome/brands/vaadin.svg","fontawesome-brands-viacoin":"fontawesome/brands/viacoin.svg","fontawesome-brands-viadeo-square":"fontawesome/brands/viadeo-square.svg","fontawesome-brands-viadeo":"fontawesome/brands/viadeo.svg","fontawesome-brands-viber":"fontawesome/brands/viber.svg","fontawesome-brands-vimeo-square":"fontawesome/brands/vimeo-square.svg","fontawesome-brands-vimeo-v":"fontawesome/brands/vimeo-v.svg","fontawesome-brands-vimeo":"fontawesome/brands/vimeo.svg","fontawesome-brands-vine":"fontawesome/brands/vine.svg","fontawesome-brands-vk":"fontawesome/brands/vk.svg","fontawesome-brands-vnv":"fontawesome/brands/vnv.svg","fontawesome-brands-vuejs":"fontawesome/brands/vuejs.svg","fontawesome-brands-watchman-monitoring":"fontawesome/brands/watchman-monitoring.svg","fontawesome-brands-waze":"fontawesome/brands/waze.svg","fontawesome-brands-weebly":"fontawesome/brands/weebly.svg","fontawesome-brands-weibo":"fontawesome/brands/weibo.svg","fontawesome-brands-weixin":"fontawesome/brands/weixin.svg","fontawesome-brands-whatsapp-square":"fontawesome/brands/whatsapp-square.svg","fontawesome-brands-whatsapp":"fontawesome/brands/whatsapp.svg","fontawesome-brands-whmcs":"fontawesome/brands/whmcs.svg","fontawesome-brands-wikipedia-w":"fontawesome/brands/wikipedia-w.svg","fontawesome-brands-windows":"fontawesome/brands/windows.svg","fontawesome-brands-wirsindhandwerk":"fontawesome/brands/wirsindhandwerk.svg","fontawesome-brands-wix":"fontawesome/brands/wix.svg","fontawesome-brands-wizards-of-the-coast":"fontawesome/brands/wizards-of-the-coast.svg","fontawesome-brands-wodu":"fontawesome/brands/wodu.svg","fontawesome-brands-wolf-pack-battalion":"fontawesome/brands/wolf-pack-battalion.svg","fontawesome-brands-wordpress-simple":"fontawesome/brands/wordpress-simple.svg","fontawesome-brands-wordpress":"fontawesome/brands/wordpress.svg","fontawesome-brands-wpbeginner":"fontawesome/brands/wpbeginner.svg","fontawesome-brands-wpexplorer":"fontawesome/brands/wpexplorer.svg","fontawesome-brands-wpforms":"fontawesome/brands/wpforms.svg","fontawesome-brands-wpressr":"fontawesome/brands/wpressr.svg","fontawesome-brands-xbox":"fontawesome/brands/xbox.svg","fontawesome-brands-xing-square":"fontawesome/brands/xing-square.svg","fontawesome-brands-xing":"fontawesome/brands/xing.svg","fontawesome-brands-y-combinator":"fontawesome/brands/y-combinator.svg","fontawesome-brands-yahoo":"fontawesome/brands/yahoo.svg","fontawesome-brands-yammer":"fontawesome/brands/yammer.svg","fontawesome-brands-yandex-international":"fontawesome/brands/yandex-international.svg","fontawesome-brands-yandex":"fontawesome/brands/yandex.svg","fontawesome-brands-yarn":"fontawesome/brands/yarn.svg","fontawesome-brands-yelp":"fontawesome/brands/yelp.svg","fontawesome-brands-yoast":"fontawesome/brands/yoast.svg","fontawesome-brands-youtube-square":"fontawesome/brands/youtube-square.svg","fontawesome-brands-youtube":"fontawesome/brands/youtube.svg","fontawesome-brands-zhihu":"fontawesome/brands/zhihu.svg","fontawesome-regular-address-book":"fontawesome/regular/address-book.svg","fontawesome-regular-address-card":"fontawesome/regular/address-card.svg","fontawesome-regular-bell-slash":"fontawesome/regular/bell-slash.svg","fontawesome-regular-bell":"fontawesome/regular/bell.svg","fontawesome-regular-bookmark":"fontawesome/regular/bookmark.svg","fontawesome-regular-building":"fontawesome/regular/building.svg","fontawesome-regular-calendar-check":"fontawesome/regular/calendar-check.svg","fontawesome-regular-calendar-days":"fontawesome/regular/calendar-days.svg","fontawesome-regular-calendar-minus":"fontawesome/regular/calendar-minus.svg","fontawesome-regular-calendar-plus":"fontawesome/regular/calendar-plus.svg","fontawesome-regular-calendar-xmark":"fontawesome/regular/calendar-xmark.svg","fontawesome-regular-calendar":"fontawesome/regular/calendar.svg","fontawesome-regular-chart-bar":"fontawesome/regular/chart-bar.svg","fontawesome-regular-chess-bishop":"fontawesome/regular/chess-bishop.svg","fontawesome-regular-chess-king":"fontawesome/regular/chess-king.svg","fontawesome-regular-chess-knight":"fontawesome/regular/chess-knight.svg","fontawesome-regular-chess-pawn":"fontawesome/regular/chess-pawn.svg","fontawesome-regular-chess-queen":"fontawesome/regular/chess-queen.svg","fontawesome-regular-chess-rook":"fontawesome/regular/chess-rook.svg","fontawesome-regular-circle-check":"fontawesome/regular/circle-check.svg","fontawesome-regular-circle-dot":"fontawesome/regular/circle-dot.svg","fontawesome-regular-circle-down":"fontawesome/regular/circle-down.svg","fontawesome-regular-circle-left":"fontawesome/regular/circle-left.svg","fontawesome-regular-circle-pause":"fontawesome/regular/circle-pause.svg","fontawesome-regular-circle-play":"fontawesome/regular/circle-play.svg","fontawesome-regular-circle-question":"fontawesome/regular/circle-question.svg","fontawesome-regular-circle-right":"fontawesome/regular/circle-right.svg","fontawesome-regular-circle-stop":"fontawesome/regular/circle-stop.svg","fontawesome-regular-circle-up":"fontawesome/regular/circle-up.svg","fontawesome-regular-circle-user":"fontawesome/regular/circle-user.svg","fontawesome-regular-circle-xmark":"fontawesome/regular/circle-xmark.svg","fontawesome-regular-circle":"fontawesome/regular/circle.svg","fontawesome-regular-clipboard":"fontawesome/regular/clipboard.svg","fontawesome-regular-clock":"fontawesome/regular/clock.svg","fontawesome-regular-clone":"fontawesome/regular/clone.svg","fontawesome-regular-closed-captioning":"fontawesome/regular/closed-captioning.svg","fontawesome-regular-comment-dots":"fontawesome/regular/comment-dots.svg","fontawesome-regular-comment":"fontawesome/regular/comment.svg","fontawesome-regular-comments":"fontawesome/regular/comments.svg","fontawesome-regular-compass":"fontawesome/regular/compass.svg","fontawesome-regular-copy":"fontawesome/regular/copy.svg","fontawesome-regular-copyright":"fontawesome/regular/copyright.svg","fontawesome-regular-credit-card":"fontawesome/regular/credit-card.svg","fontawesome-regular-envelope-open":"fontawesome/regular/envelope-open.svg","fontawesome-regular-envelope":"fontawesome/regular/envelope.svg","fontawesome-regular-eye-slash":"fontawesome/regular/eye-slash.svg","fontawesome-regular-eye":"fontawesome/regular/eye.svg","fontawesome-regular-face-angry":"fontawesome/regular/face-angry.svg","fontawesome-regular-face-dizzy":"fontawesome/regular/face-dizzy.svg","fontawesome-regular-face-flushed":"fontawesome/regular/face-flushed.svg","fontawesome-regular-face-frown-open":"fontawesome/regular/face-frown-open.svg","fontawesome-regular-face-frown":"fontawesome/regular/face-frown.svg","fontawesome-regular-face-grimace":"fontawesome/regular/face-grimace.svg","fontawesome-regular-face-grin-beam-sweat":"fontawesome/regular/face-grin-beam-sweat.svg","fontawesome-regular-face-grin-beam":"fontawesome/regular/face-grin-beam.svg","fontawesome-regular-face-grin-hearts":"fontawesome/regular/face-grin-hearts.svg","fontawesome-regular-face-grin-squint-tears":"fontawesome/regular/face-grin-squint-tears.svg","fontawesome-regular-face-grin-squint":"fontawesome/regular/face-grin-squint.svg","fontawesome-regular-face-grin-stars":"fontawesome/regular/face-grin-stars.svg","fontawesome-regular-face-grin-tears":"fontawesome/regular/face-grin-tears.svg","fontawesome-regular-face-grin-tongue-squint":"fontawesome/regular/face-grin-tongue-squint.svg","fontawesome-regular-face-grin-tongue-wink":"fontawesome/regular/face-grin-tongue-wink.svg","fontawesome-regular-face-grin-tongue":"fontawesome/regular/face-grin-tongue.svg","fontawesome-regular-face-grin-wide":"fontawesome/regular/face-grin-wide.svg","fontawesome-regular-face-grin-wink":"fontawesome/regular/face-grin-wink.svg","fontawesome-regular-face-grin":"fontawesome/regular/face-grin.svg","fontawesome-regular-face-kiss-beam":"fontawesome/regular/face-kiss-beam.svg","fontawesome-regular-face-kiss-wink-heart":"fontawesome/regular/face-kiss-wink-heart.svg","fontawesome-regular-face-kiss":"fontawesome/regular/face-kiss.svg","fontawesome-regular-face-laugh-beam":"fontawesome/regular/face-laugh-beam.svg","fontawesome-regular-face-laugh-squint":"fontawesome/regular/face-laugh-squint.svg","fontawesome-regular-face-laugh-wink":"fontawesome/regular/face-laugh-wink.svg","fontawesome-regular-face-laugh":"fontawesome/regular/face-laugh.svg","fontawesome-regular-face-meh-blank":"fontawesome/regular/face-meh-blank.svg","fontawesome-regular-face-meh":"fontawesome/regular/face-meh.svg","fontawesome-regular-face-rolling-eyes":"fontawesome/regular/face-rolling-eyes.svg","fontawesome-regular-face-sad-cry":"fontawesome/regular/face-sad-cry.svg","fontawesome-regular-face-sad-tear":"fontawesome/regular/face-sad-tear.svg","fontawesome-regular-face-smile-beam":"fontawesome/regular/face-smile-beam.svg","fontawesome-regular-face-smile-wink":"fontawesome/regular/face-smile-wink.svg","fontawesome-regular-face-smile":"fontawesome/regular/face-smile.svg","fontawesome-regular-face-surprise":"fontawesome/regular/face-surprise.svg","fontawesome-regular-face-tired":"fontawesome/regular/face-tired.svg","fontawesome-regular-file-audio":"fontawesome/regular/file-audio.svg","fontawesome-regular-file-code":"fontawesome/regular/file-code.svg","fontawesome-regular-file-excel":"fontawesome/regular/file-excel.svg","fontawesome-regular-file-image":"fontawesome/regular/file-image.svg","fontawesome-regular-file-lines":"fontawesome/regular/file-lines.svg","fontawesome-regular-file-pdf":"fontawesome/regular/file-pdf.svg","fontawesome-regular-file-powerpoint":"fontawesome/regular/file-powerpoint.svg","fontawesome-regular-file-video":"fontawesome/regular/file-video.svg","fontawesome-regular-file-word":"fontawesome/regular/file-word.svg","fontawesome-regular-file-zipper":"fontawesome/regular/file-zipper.svg","fontawesome-regular-file":"fontawesome/regular/file.svg","fontawesome-regular-flag":"fontawesome/regular/flag.svg","fontawesome-regular-floppy-disk":"fontawesome/regular/floppy-disk.svg","fontawesome-regular-folder-closed":"fontawesome/regular/folder-closed.svg","fontawesome-regular-folder-open":"fontawesome/regular/folder-open.svg","fontawesome-regular-folder":"fontawesome/regular/folder.svg","fontawesome-regular-font-awesome":"fontawesome/regular/font-awesome.svg","fontawesome-regular-futbol":"fontawesome/regular/futbol.svg","fontawesome-regular-gem":"fontawesome/regular/gem.svg","fontawesome-regular-hand-back-fist":"fontawesome/regular/hand-back-fist.svg","fontawesome-regular-hand-lizard":"fontawesome/regular/hand-lizard.svg","fontawesome-regular-hand-peace":"fontawesome/regular/hand-peace.svg","fontawesome-regular-hand-point-down":"fontawesome/regular/hand-point-down.svg","fontawesome-regular-hand-point-left":"fontawesome/regular/hand-point-left.svg","fontawesome-regular-hand-point-right":"fontawesome/regular/hand-point-right.svg","fontawesome-regular-hand-point-up":"fontawesome/regular/hand-point-up.svg","fontawesome-regular-hand-pointer":"fontawesome/regular/hand-pointer.svg","fontawesome-regular-hand-scissors":"fontawesome/regular/hand-scissors.svg","fontawesome-regular-hand-spock":"fontawesome/regular/hand-spock.svg","fontawesome-regular-hand":"fontawesome/regular/hand.svg","fontawesome-regular-handshake":"fontawesome/regular/handshake.svg","fontawesome-regular-hard-drive":"fontawesome/regular/hard-drive.svg","fontawesome-regular-heart":"fontawesome/regular/heart.svg","fontawesome-regular-hospital":"fontawesome/regular/hospital.svg","fontawesome-regular-hourglass":"fontawesome/regular/hourglass.svg","fontawesome-regular-id-badge":"fontawesome/regular/id-badge.svg","fontawesome-regular-id-card":"fontawesome/regular/id-card.svg","fontawesome-regular-image":"fontawesome/regular/image.svg","fontawesome-regular-images":"fontawesome/regular/images.svg","fontawesome-regular-keyboard":"fontawesome/regular/keyboard.svg","fontawesome-regular-lemon":"fontawesome/regular/lemon.svg","fontawesome-regular-life-ring":"fontawesome/regular/life-ring.svg","fontawesome-regular-lightbulb":"fontawesome/regular/lightbulb.svg","fontawesome-regular-map":"fontawesome/regular/map.svg","fontawesome-regular-message":"fontawesome/regular/message.svg","fontawesome-regular-money-bill-1":"fontawesome/regular/money-bill-1.svg","fontawesome-regular-moon":"fontawesome/regular/moon.svg","fontawesome-regular-newspaper":"fontawesome/regular/newspaper.svg","fontawesome-regular-note-sticky":"fontawesome/regular/note-sticky.svg","fontawesome-regular-object-group":"fontawesome/regular/object-group.svg","fontawesome-regular-object-ungroup":"fontawesome/regular/object-ungroup.svg","fontawesome-regular-paper-plane":"fontawesome/regular/paper-plane.svg","fontawesome-regular-paste":"fontawesome/regular/paste.svg","fontawesome-regular-pen-to-square":"fontawesome/regular/pen-to-square.svg","fontawesome-regular-rectangle-list":"fontawesome/regular/rectangle-list.svg","fontawesome-regular-rectangle-xmark":"fontawesome/regular/rectangle-xmark.svg","fontawesome-regular-registered":"fontawesome/regular/registered.svg","fontawesome-regular-share-from-square":"fontawesome/regular/share-from-square.svg","fontawesome-regular-snowflake":"fontawesome/regular/snowflake.svg","fontawesome-regular-square-caret-down":"fontawesome/regular/square-caret-down.svg","fontawesome-regular-square-caret-left":"fontawesome/regular/square-caret-left.svg","fontawesome-regular-square-caret-right":"fontawesome/regular/square-caret-right.svg","fontawesome-regular-square-caret-up":"fontawesome/regular/square-caret-up.svg","fontawesome-regular-square-check":"fontawesome/regular/square-check.svg","fontawesome-regular-square-full":"fontawesome/regular/square-full.svg","fontawesome-regular-square-minus":"fontawesome/regular/square-minus.svg","fontawesome-regular-square-plus":"fontawesome/regular/square-plus.svg","fontawesome-regular-square":"fontawesome/regular/square.svg","fontawesome-regular-star-half-stroke":"fontawesome/regular/star-half-stroke.svg","fontawesome-regular-star-half":"fontawesome/regular/star-half.svg","fontawesome-regular-star":"fontawesome/regular/star.svg","fontawesome-regular-sun":"fontawesome/regular/sun.svg","fontawesome-regular-thumbs-down":"fontawesome/regular/thumbs-down.svg","fontawesome-regular-thumbs-up":"fontawesome/regular/thumbs-up.svg","fontawesome-regular-trash-can":"fontawesome/regular/trash-can.svg","fontawesome-regular-user":"fontawesome/regular/user.svg","fontawesome-regular-window-maximize":"fontawesome/regular/window-maximize.svg","fontawesome-regular-window-minimize":"fontawesome/regular/window-minimize.svg","fontawesome-regular-window-restore":"fontawesome/regular/window-restore.svg","fontawesome-solid-0":"fontawesome/solid/0.svg","fontawesome-solid-1":"fontawesome/solid/1.svg","fontawesome-solid-2":"fontawesome/solid/2.svg","fontawesome-solid-3":"fontawesome/solid/3.svg","fontawesome-solid-4":"fontawesome/solid/4.svg","fontawesome-solid-5":"fontawesome/solid/5.svg","fontawesome-solid-6":"fontawesome/solid/6.svg","fontawesome-solid-7":"fontawesome/solid/7.svg","fontawesome-solid-8":"fontawesome/solid/8.svg","fontawesome-solid-9":"fontawesome/solid/9.svg","fontawesome-solid-a":"fontawesome/solid/a.svg","fontawesome-solid-address-book":"fontawesome/solid/address-book.svg","fontawesome-solid-address-card":"fontawesome/solid/address-card.svg","fontawesome-solid-align-center":"fontawesome/solid/align-center.svg","fontawesome-solid-align-justify":"fontawesome/solid/align-justify.svg","fontawesome-solid-align-left":"fontawesome/solid/align-left.svg","fontawesome-solid-align-right":"fontawesome/solid/align-right.svg","fontawesome-solid-anchor-circle-check":"fontawesome/solid/anchor-circle-check.svg","fontawesome-solid-anchor-circle-exclamation":"fontawesome/solid/anchor-circle-exclamation.svg","fontawesome-solid-anchor-circle-xmark":"fontawesome/solid/anchor-circle-xmark.svg","fontawesome-solid-anchor-lock":"fontawesome/solid/anchor-lock.svg","fontawesome-solid-anchor":"fontawesome/solid/anchor.svg","fontawesome-solid-angle-down":"fontawesome/solid/angle-down.svg","fontawesome-solid-angle-left":"fontawesome/solid/angle-left.svg","fontawesome-solid-angle-right":"fontawesome/solid/angle-right.svg","fontawesome-solid-angle-up":"fontawesome/solid/angle-up.svg","fontawesome-solid-angles-down":"fontawesome/solid/angles-down.svg","fontawesome-solid-angles-left":"fontawesome/solid/angles-left.svg","fontawesome-solid-angles-right":"fontawesome/solid/angles-right.svg","fontawesome-solid-angles-up":"fontawesome/solid/angles-up.svg","fontawesome-solid-ankh":"fontawesome/solid/ankh.svg","fontawesome-solid-apple-whole":"fontawesome/solid/apple-whole.svg","fontawesome-solid-archway":"fontawesome/solid/archway.svg","fontawesome-solid-arrow-down-1-9":"fontawesome/solid/arrow-down-1-9.svg","fontawesome-solid-arrow-down-9-1":"fontawesome/solid/arrow-down-9-1.svg","fontawesome-solid-arrow-down-a-z":"fontawesome/solid/arrow-down-a-z.svg","fontawesome-solid-arrow-down-long":"fontawesome/solid/arrow-down-long.svg","fontawesome-solid-arrow-down-short-wide":"fontawesome/solid/arrow-down-short-wide.svg","fontawesome-solid-arrow-down-up-across-line":"fontawesome/solid/arrow-down-up-across-line.svg","fontawesome-solid-arrow-down-up-lock":"fontawesome/solid/arrow-down-up-lock.svg","fontawesome-solid-arrow-down-wide-short":"fontawesome/solid/arrow-down-wide-short.svg","fontawesome-solid-arrow-down-z-a":"fontawesome/solid/arrow-down-z-a.svg","fontawesome-solid-arrow-down":"fontawesome/solid/arrow-down.svg","fontawesome-solid-arrow-left-long":"fontawesome/solid/arrow-left-long.svg","fontawesome-solid-arrow-left":"fontawesome/solid/arrow-left.svg","fontawesome-solid-arrow-pointer":"fontawesome/solid/arrow-pointer.svg","fontawesome-solid-arrow-right-arrow-left":"fontawesome/solid/arrow-right-arrow-left.svg","fontawesome-solid-arrow-right-from-bracket":"fontawesome/solid/arrow-right-from-bracket.svg","fontawesome-solid-arrow-right-long":"fontawesome/solid/arrow-right-long.svg","fontawesome-solid-arrow-right-to-bracket":"fontawesome/solid/arrow-right-to-bracket.svg","fontawesome-solid-arrow-right-to-city":"fontawesome/solid/arrow-right-to-city.svg","fontawesome-solid-arrow-right":"fontawesome/solid/arrow-right.svg","fontawesome-solid-arrow-rotate-left":"fontawesome/solid/arrow-rotate-left.svg","fontawesome-solid-arrow-rotate-right":"fontawesome/solid/arrow-rotate-right.svg","fontawesome-solid-arrow-trend-down":"fontawesome/solid/arrow-trend-down.svg","fontawesome-solid-arrow-trend-up":"fontawesome/solid/arrow-trend-up.svg","fontawesome-solid-arrow-turn-down":"fontawesome/solid/arrow-turn-down.svg","fontawesome-solid-arrow-turn-up":"fontawesome/solid/arrow-turn-up.svg","fontawesome-solid-arrow-up-1-9":"fontawesome/solid/arrow-up-1-9.svg","fontawesome-solid-arrow-up-9-1":"fontawesome/solid/arrow-up-9-1.svg","fontawesome-solid-arrow-up-a-z":"fontawesome/solid/arrow-up-a-z.svg","fontawesome-solid-arrow-up-from-bracket":"fontawesome/solid/arrow-up-from-bracket.svg","fontawesome-solid-arrow-up-from-ground-water":"fontawesome/solid/arrow-up-from-ground-water.svg","fontawesome-solid-arrow-up-from-water-pump":"fontawesome/solid/arrow-up-from-water-pump.svg","fontawesome-solid-arrow-up-long":"fontawesome/solid/arrow-up-long.svg","fontawesome-solid-arrow-up-right-dots":"fontawesome/solid/arrow-up-right-dots.svg","fontawesome-solid-arrow-up-right-from-square":"fontawesome/solid/arrow-up-right-from-square.svg","fontawesome-solid-arrow-up-short-wide":"fontawesome/solid/arrow-up-short-wide.svg","fontawesome-solid-arrow-up-wide-short":"fontawesome/solid/arrow-up-wide-short.svg","fontawesome-solid-arrow-up-z-a":"fontawesome/solid/arrow-up-z-a.svg","fontawesome-solid-arrow-up":"fontawesome/solid/arrow-up.svg","fontawesome-solid-arrows-down-to-line":"fontawesome/solid/arrows-down-to-line.svg","fontawesome-solid-arrows-down-to-people":"fontawesome/solid/arrows-down-to-people.svg","fontawesome-solid-arrows-left-right-to-line":"fontawesome/solid/arrows-left-right-to-line.svg","fontawesome-solid-arrows-left-right":"fontawesome/solid/arrows-left-right.svg","fontawesome-solid-arrows-rotate":"fontawesome/solid/arrows-rotate.svg","fontawesome-solid-arrows-spin":"fontawesome/solid/arrows-spin.svg","fontawesome-solid-arrows-split-up-and-left":"fontawesome/solid/arrows-split-up-and-left.svg","fontawesome-solid-arrows-to-circle":"fontawesome/solid/arrows-to-circle.svg","fontawesome-solid-arrows-to-dot":"fontawesome/solid/arrows-to-dot.svg","fontawesome-solid-arrows-to-eye":"fontawesome/solid/arrows-to-eye.svg","fontawesome-solid-arrows-turn-right":"fontawesome/solid/arrows-turn-right.svg","fontawesome-solid-arrows-turn-to-dots":"fontawesome/solid/arrows-turn-to-dots.svg","fontawesome-solid-arrows-up-down-left-right":"fontawesome/solid/arrows-up-down-left-right.svg","fontawesome-solid-arrows-up-down":"fontawesome/solid/arrows-up-down.svg","fontawesome-solid-arrows-up-to-line":"fontawesome/solid/arrows-up-to-line.svg","fontawesome-solid-asterisk":"fontawesome/solid/asterisk.svg","fontawesome-solid-at":"fontawesome/solid/at.svg","fontawesome-solid-atom":"fontawesome/solid/atom.svg","fontawesome-solid-audio-description":"fontawesome/solid/audio-description.svg","fontawesome-solid-austral-sign":"fontawesome/solid/austral-sign.svg","fontawesome-solid-award":"fontawesome/solid/award.svg","fontawesome-solid-b":"fontawesome/solid/b.svg","fontawesome-solid-baby-carriage":"fontawesome/solid/baby-carriage.svg","fontawesome-solid-baby":"fontawesome/solid/baby.svg","fontawesome-solid-backward-fast":"fontawesome/solid/backward-fast.svg","fontawesome-solid-backward-step":"fontawesome/solid/backward-step.svg","fontawesome-solid-backward":"fontawesome/solid/backward.svg","fontawesome-solid-bacon":"fontawesome/solid/bacon.svg","fontawesome-solid-bacteria":"fontawesome/solid/bacteria.svg","fontawesome-solid-bacterium":"fontawesome/solid/bacterium.svg","fontawesome-solid-bag-shopping":"fontawesome/solid/bag-shopping.svg","fontawesome-solid-bahai":"fontawesome/solid/bahai.svg","fontawesome-solid-baht-sign":"fontawesome/solid/baht-sign.svg","fontawesome-solid-ban-smoking":"fontawesome/solid/ban-smoking.svg","fontawesome-solid-ban":"fontawesome/solid/ban.svg","fontawesome-solid-bandage":"fontawesome/solid/bandage.svg","fontawesome-solid-barcode":"fontawesome/solid/barcode.svg","fontawesome-solid-bars-progress":"fontawesome/solid/bars-progress.svg","fontawesome-solid-bars-staggered":"fontawesome/solid/bars-staggered.svg","fontawesome-solid-bars":"fontawesome/solid/bars.svg","fontawesome-solid-baseball-bat-ball":"fontawesome/solid/baseball-bat-ball.svg","fontawesome-solid-baseball":"fontawesome/solid/baseball.svg","fontawesome-solid-basket-shopping":"fontawesome/solid/basket-shopping.svg","fontawesome-solid-basketball":"fontawesome/solid/basketball.svg","fontawesome-solid-bath":"fontawesome/solid/bath.svg","fontawesome-solid-battery-empty":"fontawesome/solid/battery-empty.svg","fontawesome-solid-battery-full":"fontawesome/solid/battery-full.svg","fontawesome-solid-battery-half":"fontawesome/solid/battery-half.svg","fontawesome-solid-battery-quarter":"fontawesome/solid/battery-quarter.svg","fontawesome-solid-battery-three-quarters":"fontawesome/solid/battery-three-quarters.svg","fontawesome-solid-bed-pulse":"fontawesome/solid/bed-pulse.svg","fontawesome-solid-bed":"fontawesome/solid/bed.svg","fontawesome-solid-beer-mug-empty":"fontawesome/solid/beer-mug-empty.svg","fontawesome-solid-bell-concierge":"fontawesome/solid/bell-concierge.svg","fontawesome-solid-bell-slash":"fontawesome/solid/bell-slash.svg","fontawesome-solid-bell":"fontawesome/solid/bell.svg","fontawesome-solid-bezier-curve":"fontawesome/solid/bezier-curve.svg","fontawesome-solid-bicycle":"fontawesome/solid/bicycle.svg","fontawesome-solid-binoculars":"fontawesome/solid/binoculars.svg","fontawesome-solid-biohazard":"fontawesome/solid/biohazard.svg","fontawesome-solid-bitcoin-sign":"fontawesome/solid/bitcoin-sign.svg","fontawesome-solid-blender-phone":"fontawesome/solid/blender-phone.svg","fontawesome-solid-blender":"fontawesome/solid/blender.svg","fontawesome-solid-blog":"fontawesome/solid/blog.svg","fontawesome-solid-bold":"fontawesome/solid/bold.svg","fontawesome-solid-bolt-lightning":"fontawesome/solid/bolt-lightning.svg","fontawesome-solid-bolt":"fontawesome/solid/bolt.svg","fontawesome-solid-bomb":"fontawesome/solid/bomb.svg","fontawesome-solid-bone":"fontawesome/solid/bone.svg","fontawesome-solid-bong":"fontawesome/solid/bong.svg","fontawesome-solid-book-atlas":"fontawesome/solid/book-atlas.svg","fontawesome-solid-book-bible":"fontawesome/solid/book-bible.svg","fontawesome-solid-book-bookmark":"fontawesome/solid/book-bookmark.svg","fontawesome-solid-book-journal-whills":"fontawesome/solid/book-journal-whills.svg","fontawesome-solid-book-medical":"fontawesome/solid/book-medical.svg","fontawesome-solid-book-open-reader":"fontawesome/solid/book-open-reader.svg","fontawesome-solid-book-open":"fontawesome/solid/book-open.svg","fontawesome-solid-book-quran":"fontawesome/solid/book-quran.svg","fontawesome-solid-book-skull":"fontawesome/solid/book-skull.svg","fontawesome-solid-book":"fontawesome/solid/book.svg","fontawesome-solid-bookmark":"fontawesome/solid/bookmark.svg","fontawesome-solid-border-all":"fontawesome/solid/border-all.svg","fontawesome-solid-border-none":"fontawesome/solid/border-none.svg","fontawesome-solid-border-top-left":"fontawesome/solid/border-top-left.svg","fontawesome-solid-bore-hole":"fontawesome/solid/bore-hole.svg","fontawesome-solid-bottle-droplet":"fontawesome/solid/bottle-droplet.svg","fontawesome-solid-bottle-water":"fontawesome/solid/bottle-water.svg","fontawesome-solid-bowl-food":"fontawesome/solid/bowl-food.svg","fontawesome-solid-bowl-rice":"fontawesome/solid/bowl-rice.svg","fontawesome-solid-bowling-ball":"fontawesome/solid/bowling-ball.svg","fontawesome-solid-box-archive":"fontawesome/solid/box-archive.svg","fontawesome-solid-box-open":"fontawesome/solid/box-open.svg","fontawesome-solid-box-tissue":"fontawesome/solid/box-tissue.svg","fontawesome-solid-box":"fontawesome/solid/box.svg","fontawesome-solid-boxes-packing":"fontawesome/solid/boxes-packing.svg","fontawesome-solid-boxes-stacked":"fontawesome/solid/boxes-stacked.svg","fontawesome-solid-braille":"fontawesome/solid/braille.svg","fontawesome-solid-brain":"fontawesome/solid/brain.svg","fontawesome-solid-brazilian-real-sign":"fontawesome/solid/brazilian-real-sign.svg","fontawesome-solid-bread-slice":"fontawesome/solid/bread-slice.svg","fontawesome-solid-bridge-circle-check":"fontawesome/solid/bridge-circle-check.svg","fontawesome-solid-bridge-circle-exclamation":"fontawesome/solid/bridge-circle-exclamation.svg","fontawesome-solid-bridge-circle-xmark":"fontawesome/solid/bridge-circle-xmark.svg","fontawesome-solid-bridge-lock":"fontawesome/solid/bridge-lock.svg","fontawesome-solid-bridge-water":"fontawesome/solid/bridge-water.svg","fontawesome-solid-bridge":"fontawesome/solid/bridge.svg","fontawesome-solid-briefcase-medical":"fontawesome/solid/briefcase-medical.svg","fontawesome-solid-briefcase":"fontawesome/solid/briefcase.svg","fontawesome-solid-broom-ball":"fontawesome/solid/broom-ball.svg","fontawesome-solid-broom":"fontawesome/solid/broom.svg","fontawesome-solid-brush":"fontawesome/solid/brush.svg","fontawesome-solid-bucket":"fontawesome/solid/bucket.svg","fontawesome-solid-bug-slash":"fontawesome/solid/bug-slash.svg","fontawesome-solid-bug":"fontawesome/solid/bug.svg","fontawesome-solid-bugs":"fontawesome/solid/bugs.svg","fontawesome-solid-building-circle-arrow-right":"fontawesome/solid/building-circle-arrow-right.svg","fontawesome-solid-building-circle-check":"fontawesome/solid/building-circle-check.svg","fontawesome-solid-building-circle-exclamation":"fontawesome/solid/building-circle-exclamation.svg","fontawesome-solid-building-circle-xmark":"fontawesome/solid/building-circle-xmark.svg","fontawesome-solid-building-columns":"fontawesome/solid/building-columns.svg","fontawesome-solid-building-flag":"fontawesome/solid/building-flag.svg","fontawesome-solid-building-lock":"fontawesome/solid/building-lock.svg","fontawesome-solid-building-ngo":"fontawesome/solid/building-ngo.svg","fontawesome-solid-building-shield":"fontawesome/solid/building-shield.svg","fontawesome-solid-building-un":"fontawesome/solid/building-un.svg","fontawesome-solid-building-user":"fontawesome/solid/building-user.svg","fontawesome-solid-building-wheat":"fontawesome/solid/building-wheat.svg","fontawesome-solid-building":"fontawesome/solid/building.svg","fontawesome-solid-bullhorn":"fontawesome/solid/bullhorn.svg","fontawesome-solid-bullseye":"fontawesome/solid/bullseye.svg","fontawesome-solid-burger":"fontawesome/solid/burger.svg","fontawesome-solid-burst":"fontawesome/solid/burst.svg","fontawesome-solid-bus-simple":"fontawesome/solid/bus-simple.svg","fontawesome-solid-bus":"fontawesome/solid/bus.svg","fontawesome-solid-business-time":"fontawesome/solid/business-time.svg","fontawesome-solid-c":"fontawesome/solid/c.svg","fontawesome-solid-cake-candles":"fontawesome/solid/cake-candles.svg","fontawesome-solid-calculator":"fontawesome/solid/calculator.svg","fontawesome-solid-calendar-check":"fontawesome/solid/calendar-check.svg","fontawesome-solid-calendar-day":"fontawesome/solid/calendar-day.svg","fontawesome-solid-calendar-days":"fontawesome/solid/calendar-days.svg","fontawesome-solid-calendar-minus":"fontawesome/solid/calendar-minus.svg","fontawesome-solid-calendar-plus":"fontawesome/solid/calendar-plus.svg","fontawesome-solid-calendar-week":"fontawesome/solid/calendar-week.svg","fontawesome-solid-calendar-xmark":"fontawesome/solid/calendar-xmark.svg","fontawesome-solid-calendar":"fontawesome/solid/calendar.svg","fontawesome-solid-camera-retro":"fontawesome/solid/camera-retro.svg","fontawesome-solid-camera-rotate":"fontawesome/solid/camera-rotate.svg","fontawesome-solid-camera":"fontawesome/solid/camera.svg","fontawesome-solid-campground":"fontawesome/solid/campground.svg","fontawesome-solid-candy-cane":"fontawesome/solid/candy-cane.svg","fontawesome-solid-cannabis":"fontawesome/solid/cannabis.svg","fontawesome-solid-capsules":"fontawesome/solid/capsules.svg","fontawesome-solid-car-battery":"fontawesome/solid/car-battery.svg","fontawesome-solid-car-burst":"fontawesome/solid/car-burst.svg","fontawesome-solid-car-on":"fontawesome/solid/car-on.svg","fontawesome-solid-car-rear":"fontawesome/solid/car-rear.svg","fontawesome-solid-car-side":"fontawesome/solid/car-side.svg","fontawesome-solid-car-tunnel":"fontawesome/solid/car-tunnel.svg","fontawesome-solid-car":"fontawesome/solid/car.svg","fontawesome-solid-caravan":"fontawesome/solid/caravan.svg","fontawesome-solid-caret-down":"fontawesome/solid/caret-down.svg","fontawesome-solid-caret-left":"fontawesome/solid/caret-left.svg","fontawesome-solid-caret-right":"fontawesome/solid/caret-right.svg","fontawesome-solid-caret-up":"fontawesome/solid/caret-up.svg","fontawesome-solid-carrot":"fontawesome/solid/carrot.svg","fontawesome-solid-cart-arrow-down":"fontawesome/solid/cart-arrow-down.svg","fontawesome-solid-cart-flatbed-suitcase":"fontawesome/solid/cart-flatbed-suitcase.svg","fontawesome-solid-cart-flatbed":"fontawesome/solid/cart-flatbed.svg","fontawesome-solid-cart-plus":"fontawesome/solid/cart-plus.svg","fontawesome-solid-cart-shopping":"fontawesome/solid/cart-shopping.svg","fontawesome-solid-cash-register":"fontawesome/solid/cash-register.svg","fontawesome-solid-cat":"fontawesome/solid/cat.svg","fontawesome-solid-cedi-sign":"fontawesome/solid/cedi-sign.svg","fontawesome-solid-cent-sign":"fontawesome/solid/cent-sign.svg","fontawesome-solid-certificate":"fontawesome/solid/certificate.svg","fontawesome-solid-chair":"fontawesome/solid/chair.svg","fontawesome-solid-chalkboard-user":"fontawesome/solid/chalkboard-user.svg","fontawesome-solid-chalkboard":"fontawesome/solid/chalkboard.svg","fontawesome-solid-champagne-glasses":"fontawesome/solid/champagne-glasses.svg","fontawesome-solid-charging-station":"fontawesome/solid/charging-station.svg","fontawesome-solid-chart-area":"fontawesome/solid/chart-area.svg","fontawesome-solid-chart-bar":"fontawesome/solid/chart-bar.svg","fontawesome-solid-chart-column":"fontawesome/solid/chart-column.svg","fontawesome-solid-chart-gantt":"fontawesome/solid/chart-gantt.svg","fontawesome-solid-chart-line":"fontawesome/solid/chart-line.svg","fontawesome-solid-chart-pie":"fontawesome/solid/chart-pie.svg","fontawesome-solid-chart-simple":"fontawesome/solid/chart-simple.svg","fontawesome-solid-check-double":"fontawesome/solid/check-double.svg","fontawesome-solid-check-to-slot":"fontawesome/solid/check-to-slot.svg","fontawesome-solid-check":"fontawesome/solid/check.svg","fontawesome-solid-cheese":"fontawesome/solid/cheese.svg","fontawesome-solid-chess-bishop":"fontawesome/solid/chess-bishop.svg","fontawesome-solid-chess-board":"fontawesome/solid/chess-board.svg","fontawesome-solid-chess-king":"fontawesome/solid/chess-king.svg","fontawesome-solid-chess-knight":"fontawesome/solid/chess-knight.svg","fontawesome-solid-chess-pawn":"fontawesome/solid/chess-pawn.svg","fontawesome-solid-chess-queen":"fontawesome/solid/chess-queen.svg","fontawesome-solid-chess-rook":"fontawesome/solid/chess-rook.svg","fontawesome-solid-chess":"fontawesome/solid/chess.svg","fontawesome-solid-chevron-down":"fontawesome/solid/chevron-down.svg","fontawesome-solid-chevron-left":"fontawesome/solid/chevron-left.svg","fontawesome-solid-chevron-right":"fontawesome/solid/chevron-right.svg","fontawesome-solid-chevron-up":"fontawesome/solid/chevron-up.svg","fontawesome-solid-child-dress":"fontawesome/solid/child-dress.svg","fontawesome-solid-child-reaching":"fontawesome/solid/child-reaching.svg","fontawesome-solid-child-rifle":"fontawesome/solid/child-rifle.svg","fontawesome-solid-child":"fontawesome/solid/child.svg","fontawesome-solid-children":"fontawesome/solid/children.svg","fontawesome-solid-church":"fontawesome/solid/church.svg","fontawesome-solid-circle-arrow-down":"fontawesome/solid/circle-arrow-down.svg","fontawesome-solid-circle-arrow-left":"fontawesome/solid/circle-arrow-left.svg","fontawesome-solid-circle-arrow-right":"fontawesome/solid/circle-arrow-right.svg","fontawesome-solid-circle-arrow-up":"fontawesome/solid/circle-arrow-up.svg","fontawesome-solid-circle-check":"fontawesome/solid/circle-check.svg","fontawesome-solid-circle-chevron-down":"fontawesome/solid/circle-chevron-down.svg","fontawesome-solid-circle-chevron-left":"fontawesome/solid/circle-chevron-left.svg","fontawesome-solid-circle-chevron-right":"fontawesome/solid/circle-chevron-right.svg","fontawesome-solid-circle-chevron-up":"fontawesome/solid/circle-chevron-up.svg","fontawesome-solid-circle-dollar-to-slot":"fontawesome/solid/circle-dollar-to-slot.svg","fontawesome-solid-circle-dot":"fontawesome/solid/circle-dot.svg","fontawesome-solid-circle-down":"fontawesome/solid/circle-down.svg","fontawesome-solid-circle-exclamation":"fontawesome/solid/circle-exclamation.svg","fontawesome-solid-circle-h":"fontawesome/solid/circle-h.svg","fontawesome-solid-circle-half-stroke":"fontawesome/solid/circle-half-stroke.svg","fontawesome-solid-circle-info":"fontawesome/solid/circle-info.svg","fontawesome-solid-circle-left":"fontawesome/solid/circle-left.svg","fontawesome-solid-circle-minus":"fontawesome/solid/circle-minus.svg","fontawesome-solid-circle-nodes":"fontawesome/solid/circle-nodes.svg","fontawesome-solid-circle-notch":"fontawesome/solid/circle-notch.svg","fontawesome-solid-circle-pause":"fontawesome/solid/circle-pause.svg","fontawesome-solid-circle-play":"fontawesome/solid/circle-play.svg","fontawesome-solid-circle-plus":"fontawesome/solid/circle-plus.svg","fontawesome-solid-circle-question":"fontawesome/solid/circle-question.svg","fontawesome-solid-circle-radiation":"fontawesome/solid/circle-radiation.svg","fontawesome-solid-circle-right":"fontawesome/solid/circle-right.svg","fontawesome-solid-circle-stop":"fontawesome/solid/circle-stop.svg","fontawesome-solid-circle-up":"fontawesome/solid/circle-up.svg","fontawesome-solid-circle-user":"fontawesome/solid/circle-user.svg","fontawesome-solid-circle-xmark":"fontawesome/solid/circle-xmark.svg","fontawesome-solid-circle":"fontawesome/solid/circle.svg","fontawesome-solid-city":"fontawesome/solid/city.svg","fontawesome-solid-clapperboard":"fontawesome/solid/clapperboard.svg","fontawesome-solid-clipboard-check":"fontawesome/solid/clipboard-check.svg","fontawesome-solid-clipboard-list":"fontawesome/solid/clipboard-list.svg","fontawesome-solid-clipboard-question":"fontawesome/solid/clipboard-question.svg","fontawesome-solid-clipboard-user":"fontawesome/solid/clipboard-user.svg","fontawesome-solid-clipboard":"fontawesome/solid/clipboard.svg","fontawesome-solid-clock-rotate-left":"fontawesome/solid/clock-rotate-left.svg","fontawesome-solid-clock":"fontawesome/solid/clock.svg","fontawesome-solid-clone":"fontawesome/solid/clone.svg","fontawesome-solid-closed-captioning":"fontawesome/solid/closed-captioning.svg","fontawesome-solid-cloud-arrow-down":"fontawesome/solid/cloud-arrow-down.svg","fontawesome-solid-cloud-arrow-up":"fontawesome/solid/cloud-arrow-up.svg","fontawesome-solid-cloud-bolt":"fontawesome/solid/cloud-bolt.svg","fontawesome-solid-cloud-meatball":"fontawesome/solid/cloud-meatball.svg","fontawesome-solid-cloud-moon-rain":"fontawesome/solid/cloud-moon-rain.svg","fontawesome-solid-cloud-moon":"fontawesome/solid/cloud-moon.svg","fontawesome-solid-cloud-rain":"fontawesome/solid/cloud-rain.svg","fontawesome-solid-cloud-showers-heavy":"fontawesome/solid/cloud-showers-heavy.svg","fontawesome-solid-cloud-showers-water":"fontawesome/solid/cloud-showers-water.svg","fontawesome-solid-cloud-sun-rain":"fontawesome/solid/cloud-sun-rain.svg","fontawesome-solid-cloud-sun":"fontawesome/solid/cloud-sun.svg","fontawesome-solid-cloud":"fontawesome/solid/cloud.svg","fontawesome-solid-clover":"fontawesome/solid/clover.svg","fontawesome-solid-code-branch":"fontawesome/solid/code-branch.svg","fontawesome-solid-code-commit":"fontawesome/solid/code-commit.svg","fontawesome-solid-code-compare":"fontawesome/solid/code-compare.svg","fontawesome-solid-code-fork":"fontawesome/solid/code-fork.svg","fontawesome-solid-code-merge":"fontawesome/solid/code-merge.svg","fontawesome-solid-code-pull-request":"fontawesome/solid/code-pull-request.svg","fontawesome-solid-code":"fontawesome/solid/code.svg","fontawesome-solid-coins":"fontawesome/solid/coins.svg","fontawesome-solid-colon-sign":"fontawesome/solid/colon-sign.svg","fontawesome-solid-comment-dollar":"fontawesome/solid/comment-dollar.svg","fontawesome-solid-comment-dots":"fontawesome/solid/comment-dots.svg","fontawesome-solid-comment-medical":"fontawesome/solid/comment-medical.svg","fontawesome-solid-comment-slash":"fontawesome/solid/comment-slash.svg","fontawesome-solid-comment-sms":"fontawesome/solid/comment-sms.svg","fontawesome-solid-comment":"fontawesome/solid/comment.svg","fontawesome-solid-comments-dollar":"fontawesome/solid/comments-dollar.svg","fontawesome-solid-comments":"fontawesome/solid/comments.svg","fontawesome-solid-compact-disc":"fontawesome/solid/compact-disc.svg","fontawesome-solid-compass-drafting":"fontawesome/solid/compass-drafting.svg","fontawesome-solid-compass":"fontawesome/solid/compass.svg","fontawesome-solid-compress":"fontawesome/solid/compress.svg","fontawesome-solid-computer-mouse":"fontawesome/solid/computer-mouse.svg","fontawesome-solid-computer":"fontawesome/solid/computer.svg","fontawesome-solid-cookie-bite":"fontawesome/solid/cookie-bite.svg","fontawesome-solid-cookie":"fontawesome/solid/cookie.svg","fontawesome-solid-copy":"fontawesome/solid/copy.svg","fontawesome-solid-copyright":"fontawesome/solid/copyright.svg","fontawesome-solid-couch":"fontawesome/solid/couch.svg","fontawesome-solid-cow":"fontawesome/solid/cow.svg","fontawesome-solid-credit-card":"fontawesome/solid/credit-card.svg","fontawesome-solid-crop-simple":"fontawesome/solid/crop-simple.svg","fontawesome-solid-crop":"fontawesome/solid/crop.svg","fontawesome-solid-cross":"fontawesome/solid/cross.svg","fontawesome-solid-crosshairs":"fontawesome/solid/crosshairs.svg","fontawesome-solid-crow":"fontawesome/solid/crow.svg","fontawesome-solid-crown":"fontawesome/solid/crown.svg","fontawesome-solid-crutch":"fontawesome/solid/crutch.svg","fontawesome-solid-cruzeiro-sign":"fontawesome/solid/cruzeiro-sign.svg","fontawesome-solid-cube":"fontawesome/solid/cube.svg","fontawesome-solid-cubes-stacked":"fontawesome/solid/cubes-stacked.svg","fontawesome-solid-cubes":"fontawesome/solid/cubes.svg","fontawesome-solid-d":"fontawesome/solid/d.svg","fontawesome-solid-database":"fontawesome/solid/database.svg","fontawesome-solid-delete-left":"fontawesome/solid/delete-left.svg","fontawesome-solid-democrat":"fontawesome/solid/democrat.svg","fontawesome-solid-desktop":"fontawesome/solid/desktop.svg","fontawesome-solid-dharmachakra":"fontawesome/solid/dharmachakra.svg","fontawesome-solid-diagram-next":"fontawesome/solid/diagram-next.svg","fontawesome-solid-diagram-predecessor":"fontawesome/solid/diagram-predecessor.svg","fontawesome-solid-diagram-project":"fontawesome/solid/diagram-project.svg","fontawesome-solid-diagram-successor":"fontawesome/solid/diagram-successor.svg","fontawesome-solid-diamond-turn-right":"fontawesome/solid/diamond-turn-right.svg","fontawesome-solid-diamond":"fontawesome/solid/diamond.svg","fontawesome-solid-dice-d20":"fontawesome/solid/dice-d20.svg","fontawesome-solid-dice-d6":"fontawesome/solid/dice-d6.svg","fontawesome-solid-dice-five":"fontawesome/solid/dice-five.svg","fontawesome-solid-dice-four":"fontawesome/solid/dice-four.svg","fontawesome-solid-dice-one":"fontawesome/solid/dice-one.svg","fontawesome-solid-dice-six":"fontawesome/solid/dice-six.svg","fontawesome-solid-dice-three":"fontawesome/solid/dice-three.svg","fontawesome-solid-dice-two":"fontawesome/solid/dice-two.svg","fontawesome-solid-dice":"fontawesome/solid/dice.svg","fontawesome-solid-disease":"fontawesome/solid/disease.svg","fontawesome-solid-display":"fontawesome/solid/display.svg","fontawesome-solid-divide":"fontawesome/solid/divide.svg","fontawesome-solid-dna":"fontawesome/solid/dna.svg","fontawesome-solid-dog":"fontawesome/solid/dog.svg","fontawesome-solid-dollar-sign":"fontawesome/solid/dollar-sign.svg","fontawesome-solid-dolly":"fontawesome/solid/dolly.svg","fontawesome-solid-dong-sign":"fontawesome/solid/dong-sign.svg","fontawesome-solid-door-closed":"fontawesome/solid/door-closed.svg","fontawesome-solid-door-open":"fontawesome/solid/door-open.svg","fontawesome-solid-dove":"fontawesome/solid/dove.svg","fontawesome-solid-down-left-and-up-right-to-center":"fontawesome/solid/down-left-and-up-right-to-center.svg","fontawesome-solid-down-long":"fontawesome/solid/down-long.svg","fontawesome-solid-download":"fontawesome/solid/download.svg","fontawesome-solid-dragon":"fontawesome/solid/dragon.svg","fontawesome-solid-draw-polygon":"fontawesome/solid/draw-polygon.svg","fontawesome-solid-droplet-slash":"fontawesome/solid/droplet-slash.svg","fontawesome-solid-droplet":"fontawesome/solid/droplet.svg","fontawesome-solid-drum-steelpan":"fontawesome/solid/drum-steelpan.svg","fontawesome-solid-drum":"fontawesome/solid/drum.svg","fontawesome-solid-drumstick-bite":"fontawesome/solid/drumstick-bite.svg","fontawesome-solid-dumbbell":"fontawesome/solid/dumbbell.svg","fontawesome-solid-dumpster-fire":"fontawesome/solid/dumpster-fire.svg","fontawesome-solid-dumpster":"fontawesome/solid/dumpster.svg","fontawesome-solid-dungeon":"fontawesome/solid/dungeon.svg","fontawesome-solid-e":"fontawesome/solid/e.svg","fontawesome-solid-ear-deaf":"fontawesome/solid/ear-deaf.svg","fontawesome-solid-ear-listen":"fontawesome/solid/ear-listen.svg","fontawesome-solid-earth-africa":"fontawesome/solid/earth-africa.svg","fontawesome-solid-earth-americas":"fontawesome/solid/earth-americas.svg","fontawesome-solid-earth-asia":"fontawesome/solid/earth-asia.svg","fontawesome-solid-earth-europe":"fontawesome/solid/earth-europe.svg","fontawesome-solid-earth-oceania":"fontawesome/solid/earth-oceania.svg","fontawesome-solid-egg":"fontawesome/solid/egg.svg","fontawesome-solid-eject":"fontawesome/solid/eject.svg","fontawesome-solid-elevator":"fontawesome/solid/elevator.svg","fontawesome-solid-ellipsis-vertical":"fontawesome/solid/ellipsis-vertical.svg","fontawesome-solid-ellipsis":"fontawesome/solid/ellipsis.svg","fontawesome-solid-envelope-circle-check":"fontawesome/solid/envelope-circle-check.svg","fontawesome-solid-envelope-open-text":"fontawesome/solid/envelope-open-text.svg","fontawesome-solid-envelope-open":"fontawesome/solid/envelope-open.svg","fontawesome-solid-envelope":"fontawesome/solid/envelope.svg","fontawesome-solid-envelopes-bulk":"fontawesome/solid/envelopes-bulk.svg","fontawesome-solid-equals":"fontawesome/solid/equals.svg","fontawesome-solid-eraser":"fontawesome/solid/eraser.svg","fontawesome-solid-ethernet":"fontawesome/solid/ethernet.svg","fontawesome-solid-euro-sign":"fontawesome/solid/euro-sign.svg","fontawesome-solid-exclamation":"fontawesome/solid/exclamation.svg","fontawesome-solid-expand":"fontawesome/solid/expand.svg","fontawesome-solid-explosion":"fontawesome/solid/explosion.svg","fontawesome-solid-eye-dropper":"fontawesome/solid/eye-dropper.svg","fontawesome-solid-eye-low-vision":"fontawesome/solid/eye-low-vision.svg","fontawesome-solid-eye-slash":"fontawesome/solid/eye-slash.svg","fontawesome-solid-eye":"fontawesome/solid/eye.svg","fontawesome-solid-f":"fontawesome/solid/f.svg","fontawesome-solid-face-angry":"fontawesome/solid/face-angry.svg","fontawesome-solid-face-dizzy":"fontawesome/solid/face-dizzy.svg","fontawesome-solid-face-flushed":"fontawesome/solid/face-flushed.svg","fontawesome-solid-face-frown-open":"fontawesome/solid/face-frown-open.svg","fontawesome-solid-face-frown":"fontawesome/solid/face-frown.svg","fontawesome-solid-face-grimace":"fontawesome/solid/face-grimace.svg","fontawesome-solid-face-grin-beam-sweat":"fontawesome/solid/face-grin-beam-sweat.svg","fontawesome-solid-face-grin-beam":"fontawesome/solid/face-grin-beam.svg","fontawesome-solid-face-grin-hearts":"fontawesome/solid/face-grin-hearts.svg","fontawesome-solid-face-grin-squint-tears":"fontawesome/solid/face-grin-squint-tears.svg","fontawesome-solid-face-grin-squint":"fontawesome/solid/face-grin-squint.svg","fontawesome-solid-face-grin-stars":"fontawesome/solid/face-grin-stars.svg","fontawesome-solid-face-grin-tears":"fontawesome/solid/face-grin-tears.svg","fontawesome-solid-face-grin-tongue-squint":"fontawesome/solid/face-grin-tongue-squint.svg","fontawesome-solid-face-grin-tongue-wink":"fontawesome/solid/face-grin-tongue-wink.svg","fontawesome-solid-face-grin-tongue":"fontawesome/solid/face-grin-tongue.svg","fontawesome-solid-face-grin-wide":"fontawesome/solid/face-grin-wide.svg","fontawesome-solid-face-grin-wink":"fontawesome/solid/face-grin-wink.svg","fontawesome-solid-face-grin":"fontawesome/solid/face-grin.svg","fontawesome-solid-face-kiss-beam":"fontawesome/solid/face-kiss-beam.svg","fontawesome-solid-face-kiss-wink-heart":"fontawesome/solid/face-kiss-wink-heart.svg","fontawesome-solid-face-kiss":"fontawesome/solid/face-kiss.svg","fontawesome-solid-face-laugh-beam":"fontawesome/solid/face-laugh-beam.svg","fontawesome-solid-face-laugh-squint":"fontawesome/solid/face-laugh-squint.svg","fontawesome-solid-face-laugh-wink":"fontawesome/solid/face-laugh-wink.svg","fontawesome-solid-face-laugh":"fontawesome/solid/face-laugh.svg","fontawesome-solid-face-meh-blank":"fontawesome/solid/face-meh-blank.svg","fontawesome-solid-face-meh":"fontawesome/solid/face-meh.svg","fontawesome-solid-face-rolling-eyes":"fontawesome/solid/face-rolling-eyes.svg","fontawesome-solid-face-sad-cry":"fontawesome/solid/face-sad-cry.svg","fontawesome-solid-face-sad-tear":"fontawesome/solid/face-sad-tear.svg","fontawesome-solid-face-smile-beam":"fontawesome/solid/face-smile-beam.svg","fontawesome-solid-face-smile-wink":"fontawesome/solid/face-smile-wink.svg","fontawesome-solid-face-smile":"fontawesome/solid/face-smile.svg","fontawesome-solid-face-surprise":"fontawesome/solid/face-surprise.svg","fontawesome-solid-face-tired":"fontawesome/solid/face-tired.svg","fontawesome-solid-fan":"fontawesome/solid/fan.svg","fontawesome-solid-faucet-drip":"fontawesome/solid/faucet-drip.svg","fontawesome-solid-faucet":"fontawesome/solid/faucet.svg","fontawesome-solid-fax":"fontawesome/solid/fax.svg","fontawesome-solid-feather-pointed":"fontawesome/solid/feather-pointed.svg","fontawesome-solid-feather":"fontawesome/solid/feather.svg","fontawesome-solid-ferry":"fontawesome/solid/ferry.svg","fontawesome-solid-file-arrow-down":"fontawesome/solid/file-arrow-down.svg","fontawesome-solid-file-arrow-up":"fontawesome/solid/file-arrow-up.svg","fontawesome-solid-file-audio":"fontawesome/solid/file-audio.svg","fontawesome-solid-file-circle-check":"fontawesome/solid/file-circle-check.svg","fontawesome-solid-file-circle-exclamation":"fontawesome/solid/file-circle-exclamation.svg","fontawesome-solid-file-circle-minus":"fontawesome/solid/file-circle-minus.svg","fontawesome-solid-file-circle-plus":"fontawesome/solid/file-circle-plus.svg","fontawesome-solid-file-circle-question":"fontawesome/solid/file-circle-question.svg","fontawesome-solid-file-circle-xmark":"fontawesome/solid/file-circle-xmark.svg","fontawesome-solid-file-code":"fontawesome/solid/file-code.svg","fontawesome-solid-file-contract":"fontawesome/solid/file-contract.svg","fontawesome-solid-file-csv":"fontawesome/solid/file-csv.svg","fontawesome-solid-file-excel":"fontawesome/solid/file-excel.svg","fontawesome-solid-file-export":"fontawesome/solid/file-export.svg","fontawesome-solid-file-image":"fontawesome/solid/file-image.svg","fontawesome-solid-file-import":"fontawesome/solid/file-import.svg","fontawesome-solid-file-invoice-dollar":"fontawesome/solid/file-invoice-dollar.svg","fontawesome-solid-file-invoice":"fontawesome/solid/file-invoice.svg","fontawesome-solid-file-lines":"fontawesome/solid/file-lines.svg","fontawesome-solid-file-medical":"fontawesome/solid/file-medical.svg","fontawesome-solid-file-pdf":"fontawesome/solid/file-pdf.svg","fontawesome-solid-file-pen":"fontawesome/solid/file-pen.svg","fontawesome-solid-file-powerpoint":"fontawesome/solid/file-powerpoint.svg","fontawesome-solid-file-prescription":"fontawesome/solid/file-prescription.svg","fontawesome-solid-file-shield":"fontawesome/solid/file-shield.svg","fontawesome-solid-file-signature":"fontawesome/solid/file-signature.svg","fontawesome-solid-file-video":"fontawesome/solid/file-video.svg","fontawesome-solid-file-waveform":"fontawesome/solid/file-waveform.svg","fontawesome-solid-file-word":"fontawesome/solid/file-word.svg","fontawesome-solid-file-zipper":"fontawesome/solid/file-zipper.svg","fontawesome-solid-file":"fontawesome/solid/file.svg","fontawesome-solid-fill-drip":"fontawesome/solid/fill-drip.svg","fontawesome-solid-fill":"fontawesome/solid/fill.svg","fontawesome-solid-film":"fontawesome/solid/film.svg","fontawesome-solid-filter-circle-dollar":"fontawesome/solid/filter-circle-dollar.svg","fontawesome-solid-filter-circle-xmark":"fontawesome/solid/filter-circle-xmark.svg","fontawesome-solid-filter":"fontawesome/solid/filter.svg","fontawesome-solid-fingerprint":"fontawesome/solid/fingerprint.svg","fontawesome-solid-fire-burner":"fontawesome/solid/fire-burner.svg","fontawesome-solid-fire-extinguisher":"fontawesome/solid/fire-extinguisher.svg","fontawesome-solid-fire-flame-curved":"fontawesome/solid/fire-flame-curved.svg","fontawesome-solid-fire-flame-simple":"fontawesome/solid/fire-flame-simple.svg","fontawesome-solid-fire":"fontawesome/solid/fire.svg","fontawesome-solid-fish-fins":"fontawesome/solid/fish-fins.svg","fontawesome-solid-fish":"fontawesome/solid/fish.svg","fontawesome-solid-flag-checkered":"fontawesome/solid/flag-checkered.svg","fontawesome-solid-flag-usa":"fontawesome/solid/flag-usa.svg","fontawesome-solid-flag":"fontawesome/solid/flag.svg","fontawesome-solid-flask-vial":"fontawesome/solid/flask-vial.svg","fontawesome-solid-flask":"fontawesome/solid/flask.svg","fontawesome-solid-floppy-disk":"fontawesome/solid/floppy-disk.svg","fontawesome-solid-florin-sign":"fontawesome/solid/florin-sign.svg","fontawesome-solid-folder-closed":"fontawesome/solid/folder-closed.svg","fontawesome-solid-folder-minus":"fontawesome/solid/folder-minus.svg","fontawesome-solid-folder-open":"fontawesome/solid/folder-open.svg","fontawesome-solid-folder-plus":"fontawesome/solid/folder-plus.svg","fontawesome-solid-folder-tree":"fontawesome/solid/folder-tree.svg","fontawesome-solid-folder":"fontawesome/solid/folder.svg","fontawesome-solid-font-awesome":"fontawesome/solid/font-awesome.svg","fontawesome-solid-font":"fontawesome/solid/font.svg","fontawesome-solid-football":"fontawesome/solid/football.svg","fontawesome-solid-forward-fast":"fontawesome/solid/forward-fast.svg","fontawesome-solid-forward-step":"fontawesome/solid/forward-step.svg","fontawesome-solid-forward":"fontawesome/solid/forward.svg","fontawesome-solid-franc-sign":"fontawesome/solid/franc-sign.svg","fontawesome-solid-frog":"fontawesome/solid/frog.svg","fontawesome-solid-futbol":"fontawesome/solid/futbol.svg","fontawesome-solid-g":"fontawesome/solid/g.svg","fontawesome-solid-gamepad":"fontawesome/solid/gamepad.svg","fontawesome-solid-gas-pump":"fontawesome/solid/gas-pump.svg","fontawesome-solid-gauge-high":"fontawesome/solid/gauge-high.svg","fontawesome-solid-gauge-simple-high":"fontawesome/solid/gauge-simple-high.svg","fontawesome-solid-gauge-simple":"fontawesome/solid/gauge-simple.svg","fontawesome-solid-gauge":"fontawesome/solid/gauge.svg","fontawesome-solid-gavel":"fontawesome/solid/gavel.svg","fontawesome-solid-gear":"fontawesome/solid/gear.svg","fontawesome-solid-gears":"fontawesome/solid/gears.svg","fontawesome-solid-gem":"fontawesome/solid/gem.svg","fontawesome-solid-genderless":"fontawesome/solid/genderless.svg","fontawesome-solid-ghost":"fontawesome/solid/ghost.svg","fontawesome-solid-gift":"fontawesome/solid/gift.svg","fontawesome-solid-gifts":"fontawesome/solid/gifts.svg","fontawesome-solid-glass-water-droplet":"fontawesome/solid/glass-water-droplet.svg","fontawesome-solid-glass-water":"fontawesome/solid/glass-water.svg","fontawesome-solid-glasses":"fontawesome/solid/glasses.svg","fontawesome-solid-globe":"fontawesome/solid/globe.svg","fontawesome-solid-golf-ball-tee":"fontawesome/solid/golf-ball-tee.svg","fontawesome-solid-gopuram":"fontawesome/solid/gopuram.svg","fontawesome-solid-graduation-cap":"fontawesome/solid/graduation-cap.svg","fontawesome-solid-greater-than-equal":"fontawesome/solid/greater-than-equal.svg","fontawesome-solid-greater-than":"fontawesome/solid/greater-than.svg","fontawesome-solid-grip-lines-vertical":"fontawesome/solid/grip-lines-vertical.svg","fontawesome-solid-grip-lines":"fontawesome/solid/grip-lines.svg","fontawesome-solid-grip-vertical":"fontawesome/solid/grip-vertical.svg","fontawesome-solid-grip":"fontawesome/solid/grip.svg","fontawesome-solid-group-arrows-rotate":"fontawesome/solid/group-arrows-rotate.svg","fontawesome-solid-guarani-sign":"fontawesome/solid/guarani-sign.svg","fontawesome-solid-guitar":"fontawesome/solid/guitar.svg","fontawesome-solid-gun":"fontawesome/solid/gun.svg","fontawesome-solid-h":"fontawesome/solid/h.svg","fontawesome-solid-hammer":"fontawesome/solid/hammer.svg","fontawesome-solid-hamsa":"fontawesome/solid/hamsa.svg","fontawesome-solid-hand-back-fist":"fontawesome/solid/hand-back-fist.svg","fontawesome-solid-hand-dots":"fontawesome/solid/hand-dots.svg","fontawesome-solid-hand-fist":"fontawesome/solid/hand-fist.svg","fontawesome-solid-hand-holding-dollar":"fontawesome/solid/hand-holding-dollar.svg","fontawesome-solid-hand-holding-droplet":"fontawesome/solid/hand-holding-droplet.svg","fontawesome-solid-hand-holding-hand":"fontawesome/solid/hand-holding-hand.svg","fontawesome-solid-hand-holding-heart":"fontawesome/solid/hand-holding-heart.svg","fontawesome-solid-hand-holding-medical":"fontawesome/solid/hand-holding-medical.svg","fontawesome-solid-hand-holding":"fontawesome/solid/hand-holding.svg","fontawesome-solid-hand-lizard":"fontawesome/solid/hand-lizard.svg","fontawesome-solid-hand-middle-finger":"fontawesome/solid/hand-middle-finger.svg","fontawesome-solid-hand-peace":"fontawesome/solid/hand-peace.svg","fontawesome-solid-hand-point-down":"fontawesome/solid/hand-point-down.svg","fontawesome-solid-hand-point-left":"fontawesome/solid/hand-point-left.svg","fontawesome-solid-hand-point-right":"fontawesome/solid/hand-point-right.svg","fontawesome-solid-hand-point-up":"fontawesome/solid/hand-point-up.svg","fontawesome-solid-hand-pointer":"fontawesome/solid/hand-pointer.svg","fontawesome-solid-hand-scissors":"fontawesome/solid/hand-scissors.svg","fontawesome-solid-hand-sparkles":"fontawesome/solid/hand-sparkles.svg","fontawesome-solid-hand-spock":"fontawesome/solid/hand-spock.svg","fontawesome-solid-hand":"fontawesome/solid/hand.svg","fontawesome-solid-handcuffs":"fontawesome/solid/handcuffs.svg","fontawesome-solid-hands-asl-interpreting":"fontawesome/solid/hands-asl-interpreting.svg","fontawesome-solid-hands-bound":"fontawesome/solid/hands-bound.svg","fontawesome-solid-hands-bubbles":"fontawesome/solid/hands-bubbles.svg","fontawesome-solid-hands-clapping":"fontawesome/solid/hands-clapping.svg","fontawesome-solid-hands-holding-child":"fontawesome/solid/hands-holding-child.svg","fontawesome-solid-hands-holding-circle":"fontawesome/solid/hands-holding-circle.svg","fontawesome-solid-hands-holding":"fontawesome/solid/hands-holding.svg","fontawesome-solid-hands-praying":"fontawesome/solid/hands-praying.svg","fontawesome-solid-hands":"fontawesome/solid/hands.svg","fontawesome-solid-handshake-angle":"fontawesome/solid/handshake-angle.svg","fontawesome-solid-handshake-simple-slash":"fontawesome/solid/handshake-simple-slash.svg","fontawesome-solid-handshake-simple":"fontawesome/solid/handshake-simple.svg","fontawesome-solid-handshake-slash":"fontawesome/solid/handshake-slash.svg","fontawesome-solid-handshake":"fontawesome/solid/handshake.svg","fontawesome-solid-hanukiah":"fontawesome/solid/hanukiah.svg","fontawesome-solid-hard-drive":"fontawesome/solid/hard-drive.svg","fontawesome-solid-hashtag":"fontawesome/solid/hashtag.svg","fontawesome-solid-hat-cowboy-side":"fontawesome/solid/hat-cowboy-side.svg","fontawesome-solid-hat-cowboy":"fontawesome/solid/hat-cowboy.svg","fontawesome-solid-hat-wizard":"fontawesome/solid/hat-wizard.svg","fontawesome-solid-head-side-cough-slash":"fontawesome/solid/head-side-cough-slash.svg","fontawesome-solid-head-side-cough":"fontawesome/solid/head-side-cough.svg","fontawesome-solid-head-side-mask":"fontawesome/solid/head-side-mask.svg","fontawesome-solid-head-side-virus":"fontawesome/solid/head-side-virus.svg","fontawesome-solid-heading":"fontawesome/solid/heading.svg","fontawesome-solid-headphones-simple":"fontawesome/solid/headphones-simple.svg","fontawesome-solid-headphones":"fontawesome/solid/headphones.svg","fontawesome-solid-headset":"fontawesome/solid/headset.svg","fontawesome-solid-heart-circle-bolt":"fontawesome/solid/heart-circle-bolt.svg","fontawesome-solid-heart-circle-check":"fontawesome/solid/heart-circle-check.svg","fontawesome-solid-heart-circle-exclamation":"fontawesome/solid/heart-circle-exclamation.svg","fontawesome-solid-heart-circle-minus":"fontawesome/solid/heart-circle-minus.svg","fontawesome-solid-heart-circle-plus":"fontawesome/solid/heart-circle-plus.svg","fontawesome-solid-heart-circle-xmark":"fontawesome/solid/heart-circle-xmark.svg","fontawesome-solid-heart-crack":"fontawesome/solid/heart-crack.svg","fontawesome-solid-heart-pulse":"fontawesome/solid/heart-pulse.svg","fontawesome-solid-heart":"fontawesome/solid/heart.svg","fontawesome-solid-helicopter-symbol":"fontawesome/solid/helicopter-symbol.svg","fontawesome-solid-helicopter":"fontawesome/solid/helicopter.svg","fontawesome-solid-helmet-safety":"fontawesome/solid/helmet-safety.svg","fontawesome-solid-helmet-un":"fontawesome/solid/helmet-un.svg","fontawesome-solid-highlighter":"fontawesome/solid/highlighter.svg","fontawesome-solid-hill-avalanche":"fontawesome/solid/hill-avalanche.svg","fontawesome-solid-hill-rockslide":"fontawesome/solid/hill-rockslide.svg","fontawesome-solid-hippo":"fontawesome/solid/hippo.svg","fontawesome-solid-hockey-puck":"fontawesome/solid/hockey-puck.svg","fontawesome-solid-holly-berry":"fontawesome/solid/holly-berry.svg","fontawesome-solid-horse-head":"fontawesome/solid/horse-head.svg","fontawesome-solid-horse":"fontawesome/solid/horse.svg","fontawesome-solid-hospital-user":"fontawesome/solid/hospital-user.svg","fontawesome-solid-hospital":"fontawesome/solid/hospital.svg","fontawesome-solid-hot-tub-person":"fontawesome/solid/hot-tub-person.svg","fontawesome-solid-hotdog":"fontawesome/solid/hotdog.svg","fontawesome-solid-hotel":"fontawesome/solid/hotel.svg","fontawesome-solid-hourglass-empty":"fontawesome/solid/hourglass-empty.svg","fontawesome-solid-hourglass-end":"fontawesome/solid/hourglass-end.svg","fontawesome-solid-hourglass-start":"fontawesome/solid/hourglass-start.svg","fontawesome-solid-hourglass":"fontawesome/solid/hourglass.svg","fontawesome-solid-house-chimney-crack":"fontawesome/solid/house-chimney-crack.svg","fontawesome-solid-house-chimney-medical":"fontawesome/solid/house-chimney-medical.svg","fontawesome-solid-house-chimney-user":"fontawesome/solid/house-chimney-user.svg","fontawesome-solid-house-chimney-window":"fontawesome/solid/house-chimney-window.svg","fontawesome-solid-house-chimney":"fontawesome/solid/house-chimney.svg","fontawesome-solid-house-circle-check":"fontawesome/solid/house-circle-check.svg","fontawesome-solid-house-circle-exclamation":"fontawesome/solid/house-circle-exclamation.svg","fontawesome-solid-house-circle-xmark":"fontawesome/solid/house-circle-xmark.svg","fontawesome-solid-house-crack":"fontawesome/solid/house-crack.svg","fontawesome-solid-house-fire":"fontawesome/solid/house-fire.svg","fontawesome-solid-house-flag":"fontawesome/solid/house-flag.svg","fontawesome-solid-house-flood-water-circle-arrow-right":"fontawesome/solid/house-flood-water-circle-arrow-right.svg","fontawesome-solid-house-flood-water":"fontawesome/solid/house-flood-water.svg","fontawesome-solid-house-laptop":"fontawesome/solid/house-laptop.svg","fontawesome-solid-house-lock":"fontawesome/solid/house-lock.svg","fontawesome-solid-house-medical-circle-check":"fontawesome/solid/house-medical-circle-check.svg","fontawesome-solid-house-medical-circle-exclamation":"fontawesome/solid/house-medical-circle-exclamation.svg","fontawesome-solid-house-medical-circle-xmark":"fontawesome/solid/house-medical-circle-xmark.svg","fontawesome-solid-house-medical-flag":"fontawesome/solid/house-medical-flag.svg","fontawesome-solid-house-medical":"fontawesome/solid/house-medical.svg","fontawesome-solid-house-signal":"fontawesome/solid/house-signal.svg","fontawesome-solid-house-tsunami":"fontawesome/solid/house-tsunami.svg","fontawesome-solid-house-user":"fontawesome/solid/house-user.svg","fontawesome-solid-house":"fontawesome/solid/house.svg","fontawesome-solid-hryvnia-sign":"fontawesome/solid/hryvnia-sign.svg","fontawesome-solid-hurricane":"fontawesome/solid/hurricane.svg","fontawesome-solid-i-cursor":"fontawesome/solid/i-cursor.svg","fontawesome-solid-i":"fontawesome/solid/i.svg","fontawesome-solid-ice-cream":"fontawesome/solid/ice-cream.svg","fontawesome-solid-icicles":"fontawesome/solid/icicles.svg","fontawesome-solid-icons":"fontawesome/solid/icons.svg","fontawesome-solid-id-badge":"fontawesome/solid/id-badge.svg","fontawesome-solid-id-card-clip":"fontawesome/solid/id-card-clip.svg","fontawesome-solid-id-card":"fontawesome/solid/id-card.svg","fontawesome-solid-igloo":"fontawesome/solid/igloo.svg","fontawesome-solid-image-portrait":"fontawesome/solid/image-portrait.svg","fontawesome-solid-image":"fontawesome/solid/image.svg","fontawesome-solid-images":"fontawesome/solid/images.svg","fontawesome-solid-inbox":"fontawesome/solid/inbox.svg","fontawesome-solid-indent":"fontawesome/solid/indent.svg","fontawesome-solid-indian-rupee-sign":"fontawesome/solid/indian-rupee-sign.svg","fontawesome-solid-industry":"fontawesome/solid/industry.svg","fontawesome-solid-infinity":"fontawesome/solid/infinity.svg","fontawesome-solid-info":"fontawesome/solid/info.svg","fontawesome-solid-italic":"fontawesome/solid/italic.svg","fontawesome-solid-j":"fontawesome/solid/j.svg","fontawesome-solid-jar-wheat":"fontawesome/solid/jar-wheat.svg","fontawesome-solid-jar":"fontawesome/solid/jar.svg","fontawesome-solid-jedi":"fontawesome/solid/jedi.svg","fontawesome-solid-jet-fighter-up":"fontawesome/solid/jet-fighter-up.svg","fontawesome-solid-jet-fighter":"fontawesome/solid/jet-fighter.svg","fontawesome-solid-joint":"fontawesome/solid/joint.svg","fontawesome-solid-jug-detergent":"fontawesome/solid/jug-detergent.svg","fontawesome-solid-k":"fontawesome/solid/k.svg","fontawesome-solid-kaaba":"fontawesome/solid/kaaba.svg","fontawesome-solid-key":"fontawesome/solid/key.svg","fontawesome-solid-keyboard":"fontawesome/solid/keyboard.svg","fontawesome-solid-khanda":"fontawesome/solid/khanda.svg","fontawesome-solid-kip-sign":"fontawesome/solid/kip-sign.svg","fontawesome-solid-kit-medical":"fontawesome/solid/kit-medical.svg","fontawesome-solid-kitchen-set":"fontawesome/solid/kitchen-set.svg","fontawesome-solid-kiwi-bird":"fontawesome/solid/kiwi-bird.svg","fontawesome-solid-l":"fontawesome/solid/l.svg","fontawesome-solid-land-mine-on":"fontawesome/solid/land-mine-on.svg","fontawesome-solid-landmark-dome":"fontawesome/solid/landmark-dome.svg","fontawesome-solid-landmark-flag":"fontawesome/solid/landmark-flag.svg","fontawesome-solid-landmark":"fontawesome/solid/landmark.svg","fontawesome-solid-language":"fontawesome/solid/language.svg","fontawesome-solid-laptop-code":"fontawesome/solid/laptop-code.svg","fontawesome-solid-laptop-file":"fontawesome/solid/laptop-file.svg","fontawesome-solid-laptop-medical":"fontawesome/solid/laptop-medical.svg","fontawesome-solid-laptop":"fontawesome/solid/laptop.svg","fontawesome-solid-lari-sign":"fontawesome/solid/lari-sign.svg","fontawesome-solid-layer-group":"fontawesome/solid/layer-group.svg","fontawesome-solid-leaf":"fontawesome/solid/leaf.svg","fontawesome-solid-left-long":"fontawesome/solid/left-long.svg","fontawesome-solid-left-right":"fontawesome/solid/left-right.svg","fontawesome-solid-lemon":"fontawesome/solid/lemon.svg","fontawesome-solid-less-than-equal":"fontawesome/solid/less-than-equal.svg","fontawesome-solid-less-than":"fontawesome/solid/less-than.svg","fontawesome-solid-life-ring":"fontawesome/solid/life-ring.svg","fontawesome-solid-lightbulb":"fontawesome/solid/lightbulb.svg","fontawesome-solid-lines-leaning":"fontawesome/solid/lines-leaning.svg","fontawesome-solid-link-slash":"fontawesome/solid/link-slash.svg","fontawesome-solid-link":"fontawesome/solid/link.svg","fontawesome-solid-lira-sign":"fontawesome/solid/lira-sign.svg","fontawesome-solid-list-check":"fontawesome/solid/list-check.svg","fontawesome-solid-list-ol":"fontawesome/solid/list-ol.svg","fontawesome-solid-list-ul":"fontawesome/solid/list-ul.svg","fontawesome-solid-list":"fontawesome/solid/list.svg","fontawesome-solid-litecoin-sign":"fontawesome/solid/litecoin-sign.svg","fontawesome-solid-location-arrow":"fontawesome/solid/location-arrow.svg","fontawesome-solid-location-crosshairs":"fontawesome/solid/location-crosshairs.svg","fontawesome-solid-location-dot":"fontawesome/solid/location-dot.svg","fontawesome-solid-location-pin-lock":"fontawesome/solid/location-pin-lock.svg","fontawesome-solid-location-pin":"fontawesome/solid/location-pin.svg","fontawesome-solid-lock-open":"fontawesome/solid/lock-open.svg","fontawesome-solid-lock":"fontawesome/solid/lock.svg","fontawesome-solid-locust":"fontawesome/solid/locust.svg","fontawesome-solid-lungs-virus":"fontawesome/solid/lungs-virus.svg","fontawesome-solid-lungs":"fontawesome/solid/lungs.svg","fontawesome-solid-m":"fontawesome/solid/m.svg","fontawesome-solid-magnet":"fontawesome/solid/magnet.svg","fontawesome-solid-magnifying-glass-arrow-right":"fontawesome/solid/magnifying-glass-arrow-right.svg","fontawesome-solid-magnifying-glass-chart":"fontawesome/solid/magnifying-glass-chart.svg","fontawesome-solid-magnifying-glass-dollar":"fontawesome/solid/magnifying-glass-dollar.svg","fontawesome-solid-magnifying-glass-location":"fontawesome/solid/magnifying-glass-location.svg","fontawesome-solid-magnifying-glass-minus":"fontawesome/solid/magnifying-glass-minus.svg","fontawesome-solid-magnifying-glass-plus":"fontawesome/solid/magnifying-glass-plus.svg","fontawesome-solid-magnifying-glass":"fontawesome/solid/magnifying-glass.svg","fontawesome-solid-manat-sign":"fontawesome/solid/manat-sign.svg","fontawesome-solid-map-location-dot":"fontawesome/solid/map-location-dot.svg","fontawesome-solid-map-location":"fontawesome/solid/map-location.svg","fontawesome-solid-map-pin":"fontawesome/solid/map-pin.svg","fontawesome-solid-map":"fontawesome/solid/map.svg","fontawesome-solid-marker":"fontawesome/solid/marker.svg","fontawesome-solid-mars-and-venus-burst":"fontawesome/solid/mars-and-venus-burst.svg","fontawesome-solid-mars-and-venus":"fontawesome/solid/mars-and-venus.svg","fontawesome-solid-mars-double":"fontawesome/solid/mars-double.svg","fontawesome-solid-mars-stroke-right":"fontawesome/solid/mars-stroke-right.svg","fontawesome-solid-mars-stroke-up":"fontawesome/solid/mars-stroke-up.svg","fontawesome-solid-mars-stroke":"fontawesome/solid/mars-stroke.svg","fontawesome-solid-mars":"fontawesome/solid/mars.svg","fontawesome-solid-martini-glass-citrus":"fontawesome/solid/martini-glass-citrus.svg","fontawesome-solid-martini-glass-empty":"fontawesome/solid/martini-glass-empty.svg","fontawesome-solid-martini-glass":"fontawesome/solid/martini-glass.svg","fontawesome-solid-mask-face":"fontawesome/solid/mask-face.svg","fontawesome-solid-mask-ventilator":"fontawesome/solid/mask-ventilator.svg","fontawesome-solid-mask":"fontawesome/solid/mask.svg","fontawesome-solid-masks-theater":"fontawesome/solid/masks-theater.svg","fontawesome-solid-mattress-pillow":"fontawesome/solid/mattress-pillow.svg","fontawesome-solid-maximize":"fontawesome/solid/maximize.svg","fontawesome-solid-medal":"fontawesome/solid/medal.svg","fontawesome-solid-memory":"fontawesome/solid/memory.svg","fontawesome-solid-menorah":"fontawesome/solid/menorah.svg","fontawesome-solid-mercury":"fontawesome/solid/mercury.svg","fontawesome-solid-message":"fontawesome/solid/message.svg","fontawesome-solid-meteor":"fontawesome/solid/meteor.svg","fontawesome-solid-microchip":"fontawesome/solid/microchip.svg","fontawesome-solid-microphone-lines-slash":"fontawesome/solid/microphone-lines-slash.svg","fontawesome-solid-microphone-lines":"fontawesome/solid/microphone-lines.svg","fontawesome-solid-microphone-slash":"fontawesome/solid/microphone-slash.svg","fontawesome-solid-microphone":"fontawesome/solid/microphone.svg","fontawesome-solid-microscope":"fontawesome/solid/microscope.svg","fontawesome-solid-mill-sign":"fontawesome/solid/mill-sign.svg","fontawesome-solid-minimize":"fontawesome/solid/minimize.svg","fontawesome-solid-minus":"fontawesome/solid/minus.svg","fontawesome-solid-mitten":"fontawesome/solid/mitten.svg","fontawesome-solid-mobile-button":"fontawesome/solid/mobile-button.svg","fontawesome-solid-mobile-retro":"fontawesome/solid/mobile-retro.svg","fontawesome-solid-mobile-screen-button":"fontawesome/solid/mobile-screen-button.svg","fontawesome-solid-mobile-screen":"fontawesome/solid/mobile-screen.svg","fontawesome-solid-mobile":"fontawesome/solid/mobile.svg","fontawesome-solid-money-bill-1-wave":"fontawesome/solid/money-bill-1-wave.svg","fontawesome-solid-money-bill-1":"fontawesome/solid/money-bill-1.svg","fontawesome-solid-money-bill-transfer":"fontawesome/solid/money-bill-transfer.svg","fontawesome-solid-money-bill-trend-up":"fontawesome/solid/money-bill-trend-up.svg","fontawesome-solid-money-bill-wave":"fontawesome/solid/money-bill-wave.svg","fontawesome-solid-money-bill-wheat":"fontawesome/solid/money-bill-wheat.svg","fontawesome-solid-money-bill":"fontawesome/solid/money-bill.svg","fontawesome-solid-money-bills":"fontawesome/solid/money-bills.svg","fontawesome-solid-money-check-dollar":"fontawesome/solid/money-check-dollar.svg","fontawesome-solid-money-check":"fontawesome/solid/money-check.svg","fontawesome-solid-monument":"fontawesome/solid/monument.svg","fontawesome-solid-moon":"fontawesome/solid/moon.svg","fontawesome-solid-mortar-pestle":"fontawesome/solid/mortar-pestle.svg","fontawesome-solid-mosque":"fontawesome/solid/mosque.svg","fontawesome-solid-mosquito-net":"fontawesome/solid/mosquito-net.svg","fontawesome-solid-mosquito":"fontawesome/solid/mosquito.svg","fontawesome-solid-motorcycle":"fontawesome/solid/motorcycle.svg","fontawesome-solid-mound":"fontawesome/solid/mound.svg","fontawesome-solid-mountain-city":"fontawesome/solid/mountain-city.svg","fontawesome-solid-mountain-sun":"fontawesome/solid/mountain-sun.svg","fontawesome-solid-mountain":"fontawesome/solid/mountain.svg","fontawesome-solid-mug-hot":"fontawesome/solid/mug-hot.svg","fontawesome-solid-mug-saucer":"fontawesome/solid/mug-saucer.svg","fontawesome-solid-music":"fontawesome/solid/music.svg","fontawesome-solid-n":"fontawesome/solid/n.svg","fontawesome-solid-naira-sign":"fontawesome/solid/naira-sign.svg","fontawesome-solid-network-wired":"fontawesome/solid/network-wired.svg","fontawesome-solid-neuter":"fontawesome/solid/neuter.svg","fontawesome-solid-newspaper":"fontawesome/solid/newspaper.svg","fontawesome-solid-not-equal":"fontawesome/solid/not-equal.svg","fontawesome-solid-note-sticky":"fontawesome/solid/note-sticky.svg","fontawesome-solid-notes-medical":"fontawesome/solid/notes-medical.svg","fontawesome-solid-o":"fontawesome/solid/o.svg","fontawesome-solid-object-group":"fontawesome/solid/object-group.svg","fontawesome-solid-object-ungroup":"fontawesome/solid/object-ungroup.svg","fontawesome-solid-oil-can":"fontawesome/solid/oil-can.svg","fontawesome-solid-oil-well":"fontawesome/solid/oil-well.svg","fontawesome-solid-om":"fontawesome/solid/om.svg","fontawesome-solid-otter":"fontawesome/solid/otter.svg","fontawesome-solid-outdent":"fontawesome/solid/outdent.svg","fontawesome-solid-p":"fontawesome/solid/p.svg","fontawesome-solid-pager":"fontawesome/solid/pager.svg","fontawesome-solid-paint-roller":"fontawesome/solid/paint-roller.svg","fontawesome-solid-paintbrush":"fontawesome/solid/paintbrush.svg","fontawesome-solid-palette":"fontawesome/solid/palette.svg","fontawesome-solid-pallet":"fontawesome/solid/pallet.svg","fontawesome-solid-panorama":"fontawesome/solid/panorama.svg","fontawesome-solid-paper-plane":"fontawesome/solid/paper-plane.svg","fontawesome-solid-paperclip":"fontawesome/solid/paperclip.svg","fontawesome-solid-parachute-box":"fontawesome/solid/parachute-box.svg","fontawesome-solid-paragraph":"fontawesome/solid/paragraph.svg","fontawesome-solid-passport":"fontawesome/solid/passport.svg","fontawesome-solid-paste":"fontawesome/solid/paste.svg","fontawesome-solid-pause":"fontawesome/solid/pause.svg","fontawesome-solid-paw":"fontawesome/solid/paw.svg","fontawesome-solid-peace":"fontawesome/solid/peace.svg","fontawesome-solid-pen-clip":"fontawesome/solid/pen-clip.svg","fontawesome-solid-pen-fancy":"fontawesome/solid/pen-fancy.svg","fontawesome-solid-pen-nib":"fontawesome/solid/pen-nib.svg","fontawesome-solid-pen-ruler":"fontawesome/solid/pen-ruler.svg","fontawesome-solid-pen-to-square":"fontawesome/solid/pen-to-square.svg","fontawesome-solid-pen":"fontawesome/solid/pen.svg","fontawesome-solid-pencil":"fontawesome/solid/pencil.svg","fontawesome-solid-people-arrows-left-right":"fontawesome/solid/people-arrows-left-right.svg","fontawesome-solid-people-carry-box":"fontawesome/solid/people-carry-box.svg","fontawesome-solid-people-group":"fontawesome/solid/people-group.svg","fontawesome-solid-people-line":"fontawesome/solid/people-line.svg","fontawesome-solid-people-pulling":"fontawesome/solid/people-pulling.svg","fontawesome-solid-people-robbery":"fontawesome/solid/people-robbery.svg","fontawesome-solid-people-roof":"fontawesome/solid/people-roof.svg","fontawesome-solid-pepper-hot":"fontawesome/solid/pepper-hot.svg","fontawesome-solid-percent":"fontawesome/solid/percent.svg","fontawesome-solid-person-arrow-down-to-line":"fontawesome/solid/person-arrow-down-to-line.svg","fontawesome-solid-person-arrow-up-from-line":"fontawesome/solid/person-arrow-up-from-line.svg","fontawesome-solid-person-biking":"fontawesome/solid/person-biking.svg","fontawesome-solid-person-booth":"fontawesome/solid/person-booth.svg","fontawesome-solid-person-breastfeeding":"fontawesome/solid/person-breastfeeding.svg","fontawesome-solid-person-burst":"fontawesome/solid/person-burst.svg","fontawesome-solid-person-cane":"fontawesome/solid/person-cane.svg","fontawesome-solid-person-chalkboard":"fontawesome/solid/person-chalkboard.svg","fontawesome-solid-person-circle-check":"fontawesome/solid/person-circle-check.svg","fontawesome-solid-person-circle-exclamation":"fontawesome/solid/person-circle-exclamation.svg","fontawesome-solid-person-circle-minus":"fontawesome/solid/person-circle-minus.svg","fontawesome-solid-person-circle-plus":"fontawesome/solid/person-circle-plus.svg","fontawesome-solid-person-circle-question":"fontawesome/solid/person-circle-question.svg","fontawesome-solid-person-circle-xmark":"fontawesome/solid/person-circle-xmark.svg","fontawesome-solid-person-digging":"fontawesome/solid/person-digging.svg","fontawesome-solid-person-dots-from-line":"fontawesome/solid/person-dots-from-line.svg","fontawesome-solid-person-dress-burst":"fontawesome/solid/person-dress-burst.svg","fontawesome-solid-person-dress":"fontawesome/solid/person-dress.svg","fontawesome-solid-person-drowning":"fontawesome/solid/person-drowning.svg","fontawesome-solid-person-falling-burst":"fontawesome/solid/person-falling-burst.svg","fontawesome-solid-person-falling":"fontawesome/solid/person-falling.svg","fontawesome-solid-person-half-dress":"fontawesome/solid/person-half-dress.svg","fontawesome-solid-person-harassing":"fontawesome/solid/person-harassing.svg","fontawesome-solid-person-hiking":"fontawesome/solid/person-hiking.svg","fontawesome-solid-person-military-pointing":"fontawesome/solid/person-military-pointing.svg","fontawesome-solid-person-military-rifle":"fontawesome/solid/person-military-rifle.svg","fontawesome-solid-person-military-to-person":"fontawesome/solid/person-military-to-person.svg","fontawesome-solid-person-praying":"fontawesome/solid/person-praying.svg","fontawesome-solid-person-pregnant":"fontawesome/solid/person-pregnant.svg","fontawesome-solid-person-rays":"fontawesome/solid/person-rays.svg","fontawesome-solid-person-rifle":"fontawesome/solid/person-rifle.svg","fontawesome-solid-person-running":"fontawesome/solid/person-running.svg","fontawesome-solid-person-shelter":"fontawesome/solid/person-shelter.svg","fontawesome-solid-person-skating":"fontawesome/solid/person-skating.svg","fontawesome-solid-person-skiing-nordic":"fontawesome/solid/person-skiing-nordic.svg","fontawesome-solid-person-skiing":"fontawesome/solid/person-skiing.svg","fontawesome-solid-person-snowboarding":"fontawesome/solid/person-snowboarding.svg","fontawesome-solid-person-swimming":"fontawesome/solid/person-swimming.svg","fontawesome-solid-person-through-window":"fontawesome/solid/person-through-window.svg","fontawesome-solid-person-walking-arrow-loop-left":"fontawesome/solid/person-walking-arrow-loop-left.svg","fontawesome-solid-person-walking-arrow-right":"fontawesome/solid/person-walking-arrow-right.svg","fontawesome-solid-person-walking-dashed-line-arrow-right":"fontawesome/solid/person-walking-dashed-line-arrow-right.svg","fontawesome-solid-person-walking-luggage":"fontawesome/solid/person-walking-luggage.svg","fontawesome-solid-person-walking-with-cane":"fontawesome/solid/person-walking-with-cane.svg","fontawesome-solid-person-walking":"fontawesome/solid/person-walking.svg","fontawesome-solid-person":"fontawesome/solid/person.svg","fontawesome-solid-peseta-sign":"fontawesome/solid/peseta-sign.svg","fontawesome-solid-peso-sign":"fontawesome/solid/peso-sign.svg","fontawesome-solid-phone-flip":"fontawesome/solid/phone-flip.svg","fontawesome-solid-phone-slash":"fontawesome/solid/phone-slash.svg","fontawesome-solid-phone-volume":"fontawesome/solid/phone-volume.svg","fontawesome-solid-phone":"fontawesome/solid/phone.svg","fontawesome-solid-photo-film":"fontawesome/solid/photo-film.svg","fontawesome-solid-piggy-bank":"fontawesome/solid/piggy-bank.svg","fontawesome-solid-pills":"fontawesome/solid/pills.svg","fontawesome-solid-pizza-slice":"fontawesome/solid/pizza-slice.svg","fontawesome-solid-place-of-worship":"fontawesome/solid/place-of-worship.svg","fontawesome-solid-plane-arrival":"fontawesome/solid/plane-arrival.svg","fontawesome-solid-plane-circle-check":"fontawesome/solid/plane-circle-check.svg","fontawesome-solid-plane-circle-exclamation":"fontawesome/solid/plane-circle-exclamation.svg","fontawesome-solid-plane-circle-xmark":"fontawesome/solid/plane-circle-xmark.svg","fontawesome-solid-plane-departure":"fontawesome/solid/plane-departure.svg","fontawesome-solid-plane-lock":"fontawesome/solid/plane-lock.svg","fontawesome-solid-plane-slash":"fontawesome/solid/plane-slash.svg","fontawesome-solid-plane-up":"fontawesome/solid/plane-up.svg","fontawesome-solid-plane":"fontawesome/solid/plane.svg","fontawesome-solid-plant-wilt":"fontawesome/solid/plant-wilt.svg","fontawesome-solid-plate-wheat":"fontawesome/solid/plate-wheat.svg","fontawesome-solid-play":"fontawesome/solid/play.svg","fontawesome-solid-plug-circle-bolt":"fontawesome/solid/plug-circle-bolt.svg","fontawesome-solid-plug-circle-check":"fontawesome/solid/plug-circle-check.svg","fontawesome-solid-plug-circle-exclamation":"fontawesome/solid/plug-circle-exclamation.svg","fontawesome-solid-plug-circle-minus":"fontawesome/solid/plug-circle-minus.svg","fontawesome-solid-plug-circle-plus":"fontawesome/solid/plug-circle-plus.svg","fontawesome-solid-plug-circle-xmark":"fontawesome/solid/plug-circle-xmark.svg","fontawesome-solid-plug":"fontawesome/solid/plug.svg","fontawesome-solid-plus-minus":"fontawesome/solid/plus-minus.svg","fontawesome-solid-plus":"fontawesome/solid/plus.svg","fontawesome-solid-podcast":"fontawesome/solid/podcast.svg","fontawesome-solid-poo-storm":"fontawesome/solid/poo-storm.svg","fontawesome-solid-poo":"fontawesome/solid/poo.svg","fontawesome-solid-poop":"fontawesome/solid/poop.svg","fontawesome-solid-power-off":"fontawesome/solid/power-off.svg","fontawesome-solid-prescription-bottle-medical":"fontawesome/solid/prescription-bottle-medical.svg","fontawesome-solid-prescription-bottle":"fontawesome/solid/prescription-bottle.svg","fontawesome-solid-prescription":"fontawesome/solid/prescription.svg","fontawesome-solid-print":"fontawesome/solid/print.svg","fontawesome-solid-pump-medical":"fontawesome/solid/pump-medical.svg","fontawesome-solid-pump-soap":"fontawesome/solid/pump-soap.svg","fontawesome-solid-puzzle-piece":"fontawesome/solid/puzzle-piece.svg","fontawesome-solid-q":"fontawesome/solid/q.svg","fontawesome-solid-qrcode":"fontawesome/solid/qrcode.svg","fontawesome-solid-question":"fontawesome/solid/question.svg","fontawesome-solid-quote-left":"fontawesome/solid/quote-left.svg","fontawesome-solid-quote-right":"fontawesome/solid/quote-right.svg","fontawesome-solid-r":"fontawesome/solid/r.svg","fontawesome-solid-radiation":"fontawesome/solid/radiation.svg","fontawesome-solid-radio":"fontawesome/solid/radio.svg","fontawesome-solid-rainbow":"fontawesome/solid/rainbow.svg","fontawesome-solid-ranking-star":"fontawesome/solid/ranking-star.svg","fontawesome-solid-receipt":"fontawesome/solid/receipt.svg","fontawesome-solid-record-vinyl":"fontawesome/solid/record-vinyl.svg","fontawesome-solid-rectangle-ad":"fontawesome/solid/rectangle-ad.svg","fontawesome-solid-rectangle-list":"fontawesome/solid/rectangle-list.svg","fontawesome-solid-rectangle-xmark":"fontawesome/solid/rectangle-xmark.svg","fontawesome-solid-recycle":"fontawesome/solid/recycle.svg","fontawesome-solid-registered":"fontawesome/solid/registered.svg","fontawesome-solid-repeat":"fontawesome/solid/repeat.svg","fontawesome-solid-reply-all":"fontawesome/solid/reply-all.svg","fontawesome-solid-reply":"fontawesome/solid/reply.svg","fontawesome-solid-republican":"fontawesome/solid/republican.svg","fontawesome-solid-restroom":"fontawesome/solid/restroom.svg","fontawesome-solid-retweet":"fontawesome/solid/retweet.svg","fontawesome-solid-ribbon":"fontawesome/solid/ribbon.svg","fontawesome-solid-right-from-bracket":"fontawesome/solid/right-from-bracket.svg","fontawesome-solid-right-left":"fontawesome/solid/right-left.svg","fontawesome-solid-right-long":"fontawesome/solid/right-long.svg","fontawesome-solid-right-to-bracket":"fontawesome/solid/right-to-bracket.svg","fontawesome-solid-ring":"fontawesome/solid/ring.svg","fontawesome-solid-road-barrier":"fontawesome/solid/road-barrier.svg","fontawesome-solid-road-bridge":"fontawesome/solid/road-bridge.svg","fontawesome-solid-road-circle-check":"fontawesome/solid/road-circle-check.svg","fontawesome-solid-road-circle-exclamation":"fontawesome/solid/road-circle-exclamation.svg","fontawesome-solid-road-circle-xmark":"fontawesome/solid/road-circle-xmark.svg","fontawesome-solid-road-lock":"fontawesome/solid/road-lock.svg","fontawesome-solid-road-spikes":"fontawesome/solid/road-spikes.svg","fontawesome-solid-road":"fontawesome/solid/road.svg","fontawesome-solid-robot":"fontawesome/solid/robot.svg","fontawesome-solid-rocket":"fontawesome/solid/rocket.svg","fontawesome-solid-rotate-left":"fontawesome/solid/rotate-left.svg","fontawesome-solid-rotate-right":"fontawesome/solid/rotate-right.svg","fontawesome-solid-rotate":"fontawesome/solid/rotate.svg","fontawesome-solid-route":"fontawesome/solid/route.svg","fontawesome-solid-rss":"fontawesome/solid/rss.svg","fontawesome-solid-ruble-sign":"fontawesome/solid/ruble-sign.svg","fontawesome-solid-rug":"fontawesome/solid/rug.svg","fontawesome-solid-ruler-combined":"fontawesome/solid/ruler-combined.svg","fontawesome-solid-ruler-horizontal":"fontawesome/solid/ruler-horizontal.svg","fontawesome-solid-ruler-vertical":"fontawesome/solid/ruler-vertical.svg","fontawesome-solid-ruler":"fontawesome/solid/ruler.svg","fontawesome-solid-rupee-sign":"fontawesome/solid/rupee-sign.svg","fontawesome-solid-rupiah-sign":"fontawesome/solid/rupiah-sign.svg","fontawesome-solid-s":"fontawesome/solid/s.svg","fontawesome-solid-sack-dollar":"fontawesome/solid/sack-dollar.svg","fontawesome-solid-sack-xmark":"fontawesome/solid/sack-xmark.svg","fontawesome-solid-sailboat":"fontawesome/solid/sailboat.svg","fontawesome-solid-satellite-dish":"fontawesome/solid/satellite-dish.svg","fontawesome-solid-satellite":"fontawesome/solid/satellite.svg","fontawesome-solid-scale-balanced":"fontawesome/solid/scale-balanced.svg","fontawesome-solid-scale-unbalanced-flip":"fontawesome/solid/scale-unbalanced-flip.svg","fontawesome-solid-scale-unbalanced":"fontawesome/solid/scale-unbalanced.svg","fontawesome-solid-school-circle-check":"fontawesome/solid/school-circle-check.svg","fontawesome-solid-school-circle-exclamation":"fontawesome/solid/school-circle-exclamation.svg","fontawesome-solid-school-circle-xmark":"fontawesome/solid/school-circle-xmark.svg","fontawesome-solid-school-flag":"fontawesome/solid/school-flag.svg","fontawesome-solid-school-lock":"fontawesome/solid/school-lock.svg","fontawesome-solid-school":"fontawesome/solid/school.svg","fontawesome-solid-scissors":"fontawesome/solid/scissors.svg","fontawesome-solid-screwdriver-wrench":"fontawesome/solid/screwdriver-wrench.svg","fontawesome-solid-screwdriver":"fontawesome/solid/screwdriver.svg","fontawesome-solid-scroll-torah":"fontawesome/solid/scroll-torah.svg","fontawesome-solid-scroll":"fontawesome/solid/scroll.svg","fontawesome-solid-sd-card":"fontawesome/solid/sd-card.svg","fontawesome-solid-section":"fontawesome/solid/section.svg","fontawesome-solid-seedling":"fontawesome/solid/seedling.svg","fontawesome-solid-server":"fontawesome/solid/server.svg","fontawesome-solid-shapes":"fontawesome/solid/shapes.svg","fontawesome-solid-share-from-square":"fontawesome/solid/share-from-square.svg","fontawesome-solid-share-nodes":"fontawesome/solid/share-nodes.svg","fontawesome-solid-share":"fontawesome/solid/share.svg","fontawesome-solid-sheet-plastic":"fontawesome/solid/sheet-plastic.svg","fontawesome-solid-shekel-sign":"fontawesome/solid/shekel-sign.svg","fontawesome-solid-shield-cat":"fontawesome/solid/shield-cat.svg","fontawesome-solid-shield-dog":"fontawesome/solid/shield-dog.svg","fontawesome-solid-shield-halved":"fontawesome/solid/shield-halved.svg","fontawesome-solid-shield-heart":"fontawesome/solid/shield-heart.svg","fontawesome-solid-shield-virus":"fontawesome/solid/shield-virus.svg","fontawesome-solid-shield":"fontawesome/solid/shield.svg","fontawesome-solid-ship":"fontawesome/solid/ship.svg","fontawesome-solid-shirt":"fontawesome/solid/shirt.svg","fontawesome-solid-shoe-prints":"fontawesome/solid/shoe-prints.svg","fontawesome-solid-shop-lock":"fontawesome/solid/shop-lock.svg","fontawesome-solid-shop-slash":"fontawesome/solid/shop-slash.svg","fontawesome-solid-shop":"fontawesome/solid/shop.svg","fontawesome-solid-shower":"fontawesome/solid/shower.svg","fontawesome-solid-shrimp":"fontawesome/solid/shrimp.svg","fontawesome-solid-shuffle":"fontawesome/solid/shuffle.svg","fontawesome-solid-shuttle-space":"fontawesome/solid/shuttle-space.svg","fontawesome-solid-sign-hanging":"fontawesome/solid/sign-hanging.svg","fontawesome-solid-signal":"fontawesome/solid/signal.svg","fontawesome-solid-signature":"fontawesome/solid/signature.svg","fontawesome-solid-signs-post":"fontawesome/solid/signs-post.svg","fontawesome-solid-sim-card":"fontawesome/solid/sim-card.svg","fontawesome-solid-sink":"fontawesome/solid/sink.svg","fontawesome-solid-sitemap":"fontawesome/solid/sitemap.svg","fontawesome-solid-skull-crossbones":"fontawesome/solid/skull-crossbones.svg","fontawesome-solid-skull":"fontawesome/solid/skull.svg","fontawesome-solid-slash":"fontawesome/solid/slash.svg","fontawesome-solid-sleigh":"fontawesome/solid/sleigh.svg","fontawesome-solid-sliders":"fontawesome/solid/sliders.svg","fontawesome-solid-smog":"fontawesome/solid/smog.svg","fontawesome-solid-smoking":"fontawesome/solid/smoking.svg","fontawesome-solid-snowflake":"fontawesome/solid/snowflake.svg","fontawesome-solid-snowman":"fontawesome/solid/snowman.svg","fontawesome-solid-snowplow":"fontawesome/solid/snowplow.svg","fontawesome-solid-soap":"fontawesome/solid/soap.svg","fontawesome-solid-socks":"fontawesome/solid/socks.svg","fontawesome-solid-solar-panel":"fontawesome/solid/solar-panel.svg","fontawesome-solid-sort-down":"fontawesome/solid/sort-down.svg","fontawesome-solid-sort-up":"fontawesome/solid/sort-up.svg","fontawesome-solid-sort":"fontawesome/solid/sort.svg","fontawesome-solid-spa":"fontawesome/solid/spa.svg","fontawesome-solid-spaghetti-monster-flying":"fontawesome/solid/spaghetti-monster-flying.svg","fontawesome-solid-spell-check":"fontawesome/solid/spell-check.svg","fontawesome-solid-spider":"fontawesome/solid/spider.svg","fontawesome-solid-spinner":"fontawesome/solid/spinner.svg","fontawesome-solid-splotch":"fontawesome/solid/splotch.svg","fontawesome-solid-spoon":"fontawesome/solid/spoon.svg","fontawesome-solid-spray-can-sparkles":"fontawesome/solid/spray-can-sparkles.svg","fontawesome-solid-spray-can":"fontawesome/solid/spray-can.svg","fontawesome-solid-square-arrow-up-right":"fontawesome/solid/square-arrow-up-right.svg","fontawesome-solid-square-caret-down":"fontawesome/solid/square-caret-down.svg","fontawesome-solid-square-caret-left":"fontawesome/solid/square-caret-left.svg","fontawesome-solid-square-caret-right":"fontawesome/solid/square-caret-right.svg","fontawesome-solid-square-caret-up":"fontawesome/solid/square-caret-up.svg","fontawesome-solid-square-check":"fontawesome/solid/square-check.svg","fontawesome-solid-square-envelope":"fontawesome/solid/square-envelope.svg","fontawesome-solid-square-full":"fontawesome/solid/square-full.svg","fontawesome-solid-square-h":"fontawesome/solid/square-h.svg","fontawesome-solid-square-minus":"fontawesome/solid/square-minus.svg","fontawesome-solid-square-nfi":"fontawesome/solid/square-nfi.svg","fontawesome-solid-square-parking":"fontawesome/solid/square-parking.svg","fontawesome-solid-square-pen":"fontawesome/solid/square-pen.svg","fontawesome-solid-square-person-confined":"fontawesome/solid/square-person-confined.svg","fontawesome-solid-square-phone-flip":"fontawesome/solid/square-phone-flip.svg","fontawesome-solid-square-phone":"fontawesome/solid/square-phone.svg","fontawesome-solid-square-plus":"fontawesome/solid/square-plus.svg","fontawesome-solid-square-poll-horizontal":"fontawesome/solid/square-poll-horizontal.svg","fontawesome-solid-square-poll-vertical":"fontawesome/solid/square-poll-vertical.svg","fontawesome-solid-square-root-variable":"fontawesome/solid/square-root-variable.svg","fontawesome-solid-square-rss":"fontawesome/solid/square-rss.svg","fontawesome-solid-square-share-nodes":"fontawesome/solid/square-share-nodes.svg","fontawesome-solid-square-up-right":"fontawesome/solid/square-up-right.svg","fontawesome-solid-square-virus":"fontawesome/solid/square-virus.svg","fontawesome-solid-square-xmark":"fontawesome/solid/square-xmark.svg","fontawesome-solid-square":"fontawesome/solid/square.svg","fontawesome-solid-staff-aesculapius":"fontawesome/solid/staff-aesculapius.svg","fontawesome-solid-stairs":"fontawesome/solid/stairs.svg","fontawesome-solid-stamp":"fontawesome/solid/stamp.svg","fontawesome-solid-star-and-crescent":"fontawesome/solid/star-and-crescent.svg","fontawesome-solid-star-half-stroke":"fontawesome/solid/star-half-stroke.svg","fontawesome-solid-star-half":"fontawesome/solid/star-half.svg","fontawesome-solid-star-of-david":"fontawesome/solid/star-of-david.svg","fontawesome-solid-star-of-life":"fontawesome/solid/star-of-life.svg","fontawesome-solid-star":"fontawesome/solid/star.svg","fontawesome-solid-sterling-sign":"fontawesome/solid/sterling-sign.svg","fontawesome-solid-stethoscope":"fontawesome/solid/stethoscope.svg","fontawesome-solid-stop":"fontawesome/solid/stop.svg","fontawesome-solid-stopwatch-20":"fontawesome/solid/stopwatch-20.svg","fontawesome-solid-stopwatch":"fontawesome/solid/stopwatch.svg","fontawesome-solid-store-slash":"fontawesome/solid/store-slash.svg","fontawesome-solid-store":"fontawesome/solid/store.svg","fontawesome-solid-street-view":"fontawesome/solid/street-view.svg","fontawesome-solid-strikethrough":"fontawesome/solid/strikethrough.svg","fontawesome-solid-stroopwafel":"fontawesome/solid/stroopwafel.svg","fontawesome-solid-subscript":"fontawesome/solid/subscript.svg","fontawesome-solid-suitcase-medical":"fontawesome/solid/suitcase-medical.svg","fontawesome-solid-suitcase-rolling":"fontawesome/solid/suitcase-rolling.svg","fontawesome-solid-suitcase":"fontawesome/solid/suitcase.svg","fontawesome-solid-sun-plant-wilt":"fontawesome/solid/sun-plant-wilt.svg","fontawesome-solid-sun":"fontawesome/solid/sun.svg","fontawesome-solid-superscript":"fontawesome/solid/superscript.svg","fontawesome-solid-swatchbook":"fontawesome/solid/swatchbook.svg","fontawesome-solid-synagogue":"fontawesome/solid/synagogue.svg","fontawesome-solid-syringe":"fontawesome/solid/syringe.svg","fontawesome-solid-t":"fontawesome/solid/t.svg","fontawesome-solid-table-cells-large":"fontawesome/solid/table-cells-large.svg","fontawesome-solid-table-cells":"fontawesome/solid/table-cells.svg","fontawesome-solid-table-columns":"fontawesome/solid/table-columns.svg","fontawesome-solid-table-list":"fontawesome/solid/table-list.svg","fontawesome-solid-table-tennis-paddle-ball":"fontawesome/solid/table-tennis-paddle-ball.svg","fontawesome-solid-table":"fontawesome/solid/table.svg","fontawesome-solid-tablet-button":"fontawesome/solid/tablet-button.svg","fontawesome-solid-tablet-screen-button":"fontawesome/solid/tablet-screen-button.svg","fontawesome-solid-tablet":"fontawesome/solid/tablet.svg","fontawesome-solid-tablets":"fontawesome/solid/tablets.svg","fontawesome-solid-tachograph-digital":"fontawesome/solid/tachograph-digital.svg","fontawesome-solid-tag":"fontawesome/solid/tag.svg","fontawesome-solid-tags":"fontawesome/solid/tags.svg","fontawesome-solid-tape":"fontawesome/solid/tape.svg","fontawesome-solid-tarp-droplet":"fontawesome/solid/tarp-droplet.svg","fontawesome-solid-tarp":"fontawesome/solid/tarp.svg","fontawesome-solid-taxi":"fontawesome/solid/taxi.svg","fontawesome-solid-teeth-open":"fontawesome/solid/teeth-open.svg","fontawesome-solid-teeth":"fontawesome/solid/teeth.svg","fontawesome-solid-temperature-arrow-down":"fontawesome/solid/temperature-arrow-down.svg","fontawesome-solid-temperature-arrow-up":"fontawesome/solid/temperature-arrow-up.svg","fontawesome-solid-temperature-empty":"fontawesome/solid/temperature-empty.svg","fontawesome-solid-temperature-full":"fontawesome/solid/temperature-full.svg","fontawesome-solid-temperature-half":"fontawesome/solid/temperature-half.svg","fontawesome-solid-temperature-high":"fontawesome/solid/temperature-high.svg","fontawesome-solid-temperature-low":"fontawesome/solid/temperature-low.svg","fontawesome-solid-temperature-quarter":"fontawesome/solid/temperature-quarter.svg","fontawesome-solid-temperature-three-quarters":"fontawesome/solid/temperature-three-quarters.svg","fontawesome-solid-tenge-sign":"fontawesome/solid/tenge-sign.svg","fontawesome-solid-tent-arrow-down-to-line":"fontawesome/solid/tent-arrow-down-to-line.svg","fontawesome-solid-tent-arrow-left-right":"fontawesome/solid/tent-arrow-left-right.svg","fontawesome-solid-tent-arrow-turn-left":"fontawesome/solid/tent-arrow-turn-left.svg","fontawesome-solid-tent-arrows-down":"fontawesome/solid/tent-arrows-down.svg","fontawesome-solid-tent":"fontawesome/solid/tent.svg","fontawesome-solid-tents":"fontawesome/solid/tents.svg","fontawesome-solid-terminal":"fontawesome/solid/terminal.svg","fontawesome-solid-text-height":"fontawesome/solid/text-height.svg","fontawesome-solid-text-slash":"fontawesome/solid/text-slash.svg","fontawesome-solid-text-width":"fontawesome/solid/text-width.svg","fontawesome-solid-thermometer":"fontawesome/solid/thermometer.svg","fontawesome-solid-thumbs-down":"fontawesome/solid/thumbs-down.svg","fontawesome-solid-thumbs-up":"fontawesome/solid/thumbs-up.svg","fontawesome-solid-thumbtack":"fontawesome/solid/thumbtack.svg","fontawesome-solid-ticket-simple":"fontawesome/solid/ticket-simple.svg","fontawesome-solid-ticket":"fontawesome/solid/ticket.svg","fontawesome-solid-timeline":"fontawesome/solid/timeline.svg","fontawesome-solid-toggle-off":"fontawesome/solid/toggle-off.svg","fontawesome-solid-toggle-on":"fontawesome/solid/toggle-on.svg","fontawesome-solid-toilet-paper-slash":"fontawesome/solid/toilet-paper-slash.svg","fontawesome-solid-toilet-paper":"fontawesome/solid/toilet-paper.svg","fontawesome-solid-toilet-portable":"fontawesome/solid/toilet-portable.svg","fontawesome-solid-toilet":"fontawesome/solid/toilet.svg","fontawesome-solid-toilets-portable":"fontawesome/solid/toilets-portable.svg","fontawesome-solid-toolbox":"fontawesome/solid/toolbox.svg","fontawesome-solid-tooth":"fontawesome/solid/tooth.svg","fontawesome-solid-torii-gate":"fontawesome/solid/torii-gate.svg","fontawesome-solid-tornado":"fontawesome/solid/tornado.svg","fontawesome-solid-tower-broadcast":"fontawesome/solid/tower-broadcast.svg","fontawesome-solid-tower-cell":"fontawesome/solid/tower-cell.svg","fontawesome-solid-tower-observation":"fontawesome/solid/tower-observation.svg","fontawesome-solid-tractor":"fontawesome/solid/tractor.svg","fontawesome-solid-trademark":"fontawesome/solid/trademark.svg","fontawesome-solid-traffic-light":"fontawesome/solid/traffic-light.svg","fontawesome-solid-trailer":"fontawesome/solid/trailer.svg","fontawesome-solid-train-subway":"fontawesome/solid/train-subway.svg","fontawesome-solid-train-tram":"fontawesome/solid/train-tram.svg","fontawesome-solid-train":"fontawesome/solid/train.svg","fontawesome-solid-transgender":"fontawesome/solid/transgender.svg","fontawesome-solid-trash-arrow-up":"fontawesome/solid/trash-arrow-up.svg","fontawesome-solid-trash-can-arrow-up":"fontawesome/solid/trash-can-arrow-up.svg","fontawesome-solid-trash-can":"fontawesome/solid/trash-can.svg","fontawesome-solid-trash":"fontawesome/solid/trash.svg","fontawesome-solid-tree-city":"fontawesome/solid/tree-city.svg","fontawesome-solid-tree":"fontawesome/solid/tree.svg","fontawesome-solid-triangle-exclamation":"fontawesome/solid/triangle-exclamation.svg","fontawesome-solid-trophy":"fontawesome/solid/trophy.svg","fontawesome-solid-trowel-bricks":"fontawesome/solid/trowel-bricks.svg","fontawesome-solid-trowel":"fontawesome/solid/trowel.svg","fontawesome-solid-truck-arrow-right":"fontawesome/solid/truck-arrow-right.svg","fontawesome-solid-truck-droplet":"fontawesome/solid/truck-droplet.svg","fontawesome-solid-truck-fast":"fontawesome/solid/truck-fast.svg","fontawesome-solid-truck-field-un":"fontawesome/solid/truck-field-un.svg","fontawesome-solid-truck-field":"fontawesome/solid/truck-field.svg","fontawesome-solid-truck-front":"fontawesome/solid/truck-front.svg","fontawesome-solid-truck-medical":"fontawesome/solid/truck-medical.svg","fontawesome-solid-truck-monster":"fontawesome/solid/truck-monster.svg","fontawesome-solid-truck-moving":"fontawesome/solid/truck-moving.svg","fontawesome-solid-truck-pickup":"fontawesome/solid/truck-pickup.svg","fontawesome-solid-truck-plane":"fontawesome/solid/truck-plane.svg","fontawesome-solid-truck-ramp-box":"fontawesome/solid/truck-ramp-box.svg","fontawesome-solid-truck":"fontawesome/solid/truck.svg","fontawesome-solid-tty":"fontawesome/solid/tty.svg","fontawesome-solid-turkish-lira-sign":"fontawesome/solid/turkish-lira-sign.svg","fontawesome-solid-turn-down":"fontawesome/solid/turn-down.svg","fontawesome-solid-turn-up":"fontawesome/solid/turn-up.svg","fontawesome-solid-tv":"fontawesome/solid/tv.svg","fontawesome-solid-u":"fontawesome/solid/u.svg","fontawesome-solid-umbrella-beach":"fontawesome/solid/umbrella-beach.svg","fontawesome-solid-umbrella":"fontawesome/solid/umbrella.svg","fontawesome-solid-underline":"fontawesome/solid/underline.svg","fontawesome-solid-universal-access":"fontawesome/solid/universal-access.svg","fontawesome-solid-unlock-keyhole":"fontawesome/solid/unlock-keyhole.svg","fontawesome-solid-unlock":"fontawesome/solid/unlock.svg","fontawesome-solid-up-down-left-right":"fontawesome/solid/up-down-left-right.svg","fontawesome-solid-up-down":"fontawesome/solid/up-down.svg","fontawesome-solid-up-long":"fontawesome/solid/up-long.svg","fontawesome-solid-up-right-and-down-left-from-center":"fontawesome/solid/up-right-and-down-left-from-center.svg","fontawesome-solid-up-right-from-square":"fontawesome/solid/up-right-from-square.svg","fontawesome-solid-upload":"fontawesome/solid/upload.svg","fontawesome-solid-user-astronaut":"fontawesome/solid/user-astronaut.svg","fontawesome-solid-user-check":"fontawesome/solid/user-check.svg","fontawesome-solid-user-clock":"fontawesome/solid/user-clock.svg","fontawesome-solid-user-doctor":"fontawesome/solid/user-doctor.svg","fontawesome-solid-user-gear":"fontawesome/solid/user-gear.svg","fontawesome-solid-user-graduate":"fontawesome/solid/user-graduate.svg","fontawesome-solid-user-group":"fontawesome/solid/user-group.svg","fontawesome-solid-user-injured":"fontawesome/solid/user-injured.svg","fontawesome-solid-user-large-slash":"fontawesome/solid/user-large-slash.svg","fontawesome-solid-user-large":"fontawesome/solid/user-large.svg","fontawesome-solid-user-lock":"fontawesome/solid/user-lock.svg","fontawesome-solid-user-minus":"fontawesome/solid/user-minus.svg","fontawesome-solid-user-ninja":"fontawesome/solid/user-ninja.svg","fontawesome-solid-user-nurse":"fontawesome/solid/user-nurse.svg","fontawesome-solid-user-pen":"fontawesome/solid/user-pen.svg","fontawesome-solid-user-plus":"fontawesome/solid/user-plus.svg","fontawesome-solid-user-secret":"fontawesome/solid/user-secret.svg","fontawesome-solid-user-shield":"fontawesome/solid/user-shield.svg","fontawesome-solid-user-slash":"fontawesome/solid/user-slash.svg","fontawesome-solid-user-tag":"fontawesome/solid/user-tag.svg","fontawesome-solid-user-tie":"fontawesome/solid/user-tie.svg","fontawesome-solid-user-xmark":"fontawesome/solid/user-xmark.svg","fontawesome-solid-user":"fontawesome/solid/user.svg","fontawesome-solid-users-between-lines":"fontawesome/solid/users-between-lines.svg","fontawesome-solid-users-gear":"fontawesome/solid/users-gear.svg","fontawesome-solid-users-line":"fontawesome/solid/users-line.svg","fontawesome-solid-users-rays":"fontawesome/solid/users-rays.svg","fontawesome-solid-users-rectangle":"fontawesome/solid/users-rectangle.svg","fontawesome-solid-users-slash":"fontawesome/solid/users-slash.svg","fontawesome-solid-users-viewfinder":"fontawesome/solid/users-viewfinder.svg","fontawesome-solid-users":"fontawesome/solid/users.svg","fontawesome-solid-utensils":"fontawesome/solid/utensils.svg","fontawesome-solid-v":"fontawesome/solid/v.svg","fontawesome-solid-van-shuttle":"fontawesome/solid/van-shuttle.svg","fontawesome-solid-vault":"fontawesome/solid/vault.svg","fontawesome-solid-vector-square":"fontawesome/solid/vector-square.svg","fontawesome-solid-venus-double":"fontawesome/solid/venus-double.svg","fontawesome-solid-venus-mars":"fontawesome/solid/venus-mars.svg","fontawesome-solid-venus":"fontawesome/solid/venus.svg","fontawesome-solid-vest-patches":"fontawesome/solid/vest-patches.svg","fontawesome-solid-vest":"fontawesome/solid/vest.svg","fontawesome-solid-vial-circle-check":"fontawesome/solid/vial-circle-check.svg","fontawesome-solid-vial-virus":"fontawesome/solid/vial-virus.svg","fontawesome-solid-vial":"fontawesome/solid/vial.svg","fontawesome-solid-vials":"fontawesome/solid/vials.svg","fontawesome-solid-video-slash":"fontawesome/solid/video-slash.svg","fontawesome-solid-video":"fontawesome/solid/video.svg","fontawesome-solid-vihara":"fontawesome/solid/vihara.svg","fontawesome-solid-virus-covid-slash":"fontawesome/solid/virus-covid-slash.svg","fontawesome-solid-virus-covid":"fontawesome/solid/virus-covid.svg","fontawesome-solid-virus-slash":"fontawesome/solid/virus-slash.svg","fontawesome-solid-virus":"fontawesome/solid/virus.svg","fontawesome-solid-viruses":"fontawesome/solid/viruses.svg","fontawesome-solid-voicemail":"fontawesome/solid/voicemail.svg","fontawesome-solid-volcano":"fontawesome/solid/volcano.svg","fontawesome-solid-volleyball":"fontawesome/solid/volleyball.svg","fontawesome-solid-volume-high":"fontawesome/solid/volume-high.svg","fontawesome-solid-volume-low":"fontawesome/solid/volume-low.svg","fontawesome-solid-volume-off":"fontawesome/solid/volume-off.svg","fontawesome-solid-volume-xmark":"fontawesome/solid/volume-xmark.svg","fontawesome-solid-vr-cardboard":"fontawesome/solid/vr-cardboard.svg","fontawesome-solid-w":"fontawesome/solid/w.svg","fontawesome-solid-walkie-talkie":"fontawesome/solid/walkie-talkie.svg","fontawesome-solid-wallet":"fontawesome/solid/wallet.svg","fontawesome-solid-wand-magic-sparkles":"fontawesome/solid/wand-magic-sparkles.svg","fontawesome-solid-wand-magic":"fontawesome/solid/wand-magic.svg","fontawesome-solid-wand-sparkles":"fontawesome/solid/wand-sparkles.svg","fontawesome-solid-warehouse":"fontawesome/solid/warehouse.svg","fontawesome-solid-water-ladder":"fontawesome/solid/water-ladder.svg","fontawesome-solid-water":"fontawesome/solid/water.svg","fontawesome-solid-wave-square":"fontawesome/solid/wave-square.svg","fontawesome-solid-weight-hanging":"fontawesome/solid/weight-hanging.svg","fontawesome-solid-weight-scale":"fontawesome/solid/weight-scale.svg","fontawesome-solid-wheat-awn-circle-exclamation":"fontawesome/solid/wheat-awn-circle-exclamation.svg","fontawesome-solid-wheat-awn":"fontawesome/solid/wheat-awn.svg","fontawesome-solid-wheelchair-move":"fontawesome/solid/wheelchair-move.svg","fontawesome-solid-wheelchair":"fontawesome/solid/wheelchair.svg","fontawesome-solid-whiskey-glass":"fontawesome/solid/whiskey-glass.svg","fontawesome-solid-wifi":"fontawesome/solid/wifi.svg","fontawesome-solid-wind":"fontawesome/solid/wind.svg","fontawesome-solid-window-maximize":"fontawesome/solid/window-maximize.svg","fontawesome-solid-window-minimize":"fontawesome/solid/window-minimize.svg","fontawesome-solid-window-restore":"fontawesome/solid/window-restore.svg","fontawesome-solid-wine-bottle":"fontawesome/solid/wine-bottle.svg","fontawesome-solid-wine-glass-empty":"fontawesome/solid/wine-glass-empty.svg","fontawesome-solid-wine-glass":"fontawesome/solid/wine-glass.svg","fontawesome-solid-won-sign":"fontawesome/solid/won-sign.svg","fontawesome-solid-worm":"fontawesome/solid/worm.svg","fontawesome-solid-wrench":"fontawesome/solid/wrench.svg","fontawesome-solid-x-ray":"fontawesome/solid/x-ray.svg","fontawesome-solid-x":"fontawesome/solid/x.svg","fontawesome-solid-xmark":"fontawesome/solid/xmark.svg","fontawesome-solid-xmarks-lines":"fontawesome/solid/xmarks-lines.svg","fontawesome-solid-y":"fontawesome/solid/y.svg","fontawesome-solid-yen-sign":"fontawesome/solid/yen-sign.svg","fontawesome-solid-yin-yang":"fontawesome/solid/yin-yang.svg","fontawesome-solid-z":"fontawesome/solid/z.svg","logo":"logo.svg","material-ab-testing":"material/ab-testing.svg","material-abacus":"material/abacus.svg","material-abjad-arabic":"material/abjad-arabic.svg","material-abjad-hebrew":"material/abjad-hebrew.svg","material-abugida-devanagari":"material/abugida-devanagari.svg","material-abugida-thai":"material/abugida-thai.svg","material-access-point-check":"material/access-point-check.svg","material-access-point-minus":"material/access-point-minus.svg","material-access-point-network-off":"material/access-point-network-off.svg","material-access-point-network":"material/access-point-network.svg","material-access-point-off":"material/access-point-off.svg","material-access-point-plus":"material/access-point-plus.svg","material-access-point-remove":"material/access-point-remove.svg","material-access-point":"material/access-point.svg","material-account-alert-outline":"material/account-alert-outline.svg","material-account-alert":"material/account-alert.svg","material-account-arrow-down-outline":"material/account-arrow-down-outline.svg","material-account-arrow-down":"material/account-arrow-down.svg","material-account-arrow-left-outline":"material/account-arrow-left-outline.svg","material-account-arrow-left":"material/account-arrow-left.svg","material-account-arrow-right-outline":"material/account-arrow-right-outline.svg","material-account-arrow-right":"material/account-arrow-right.svg","material-account-arrow-up-outline":"material/account-arrow-up-outline.svg","material-account-arrow-up":"material/account-arrow-up.svg","material-account-badge-outline":"material/account-badge-outline.svg","material-account-badge":"material/account-badge.svg","material-account-box-multiple-outline":"material/account-box-multiple-outline.svg","material-account-box-multiple":"material/account-box-multiple.svg","material-account-box-outline":"material/account-box-outline.svg","material-account-box":"material/account-box.svg","material-account-cancel-outline":"material/account-cancel-outline.svg","material-account-cancel":"material/account-cancel.svg","material-account-card-outline":"material/account-card-outline.svg","material-account-card":"material/account-card.svg","material-account-cash-outline":"material/account-cash-outline.svg","material-account-cash":"material/account-cash.svg","material-account-check-outline":"material/account-check-outline.svg","material-account-check":"material/account-check.svg","material-account-child-circle":"material/account-child-circle.svg","material-account-child-outline":"material/account-child-outline.svg","material-account-child":"material/account-child.svg","material-account-circle-outline":"material/account-circle-outline.svg","material-account-circle":"material/account-circle.svg","material-account-clock-outline":"material/account-clock-outline.svg","material-account-clock":"material/account-clock.svg","material-account-cog-outline":"material/account-cog-outline.svg","material-account-cog":"material/account-cog.svg","material-account-convert-outline":"material/account-convert-outline.svg","material-account-convert":"material/account-convert.svg","material-account-cowboy-hat-outline":"material/account-cowboy-hat-outline.svg","material-account-cowboy-hat":"material/account-cowboy-hat.svg","material-account-credit-card-outline":"material/account-credit-card-outline.svg","material-account-credit-card":"material/account-credit-card.svg","material-account-details-outline":"material/account-details-outline.svg","material-account-details":"material/account-details.svg","material-account-edit-outline":"material/account-edit-outline.svg","material-account-edit":"material/account-edit.svg","material-account-eye-outline":"material/account-eye-outline.svg","material-account-eye":"material/account-eye.svg","material-account-filter-outline":"material/account-filter-outline.svg","material-account-filter":"material/account-filter.svg","material-account-group-outline":"material/account-group-outline.svg","material-account-group":"material/account-group.svg","material-account-hard-hat-outline":"material/account-hard-hat-outline.svg","material-account-hard-hat":"material/account-hard-hat.svg","material-account-heart-outline":"material/account-heart-outline.svg","material-account-heart":"material/account-heart.svg","material-account-injury-outline":"material/account-injury-outline.svg","material-account-injury":"material/account-injury.svg","material-account-key-outline":"material/account-key-outline.svg","material-account-key":"material/account-key.svg","material-account-lock-open-outline":"material/account-lock-open-outline.svg","material-account-lock-open":"material/account-lock-open.svg","material-account-lock-outline":"material/account-lock-outline.svg","material-account-lock":"material/account-lock.svg","material-account-minus-outline":"material/account-minus-outline.svg","material-account-minus":"material/account-minus.svg","material-account-multiple-check-outline":"material/account-multiple-check-outline.svg","material-account-multiple-check":"material/account-multiple-check.svg","material-account-multiple-minus-outline":"material/account-multiple-minus-outline.svg","material-account-multiple-minus":"material/account-multiple-minus.svg","material-account-multiple-outline":"material/account-multiple-outline.svg","material-account-multiple-plus-outline":"material/account-multiple-plus-outline.svg","material-account-multiple-plus":"material/account-multiple-plus.svg","material-account-multiple-remove-outline":"material/account-multiple-remove-outline.svg","material-account-multiple-remove":"material/account-multiple-remove.svg","material-account-multiple":"material/account-multiple.svg","material-account-music-outline":"material/account-music-outline.svg","material-account-music":"material/account-music.svg","material-account-network-off-outline":"material/account-network-off-outline.svg","material-account-network-off":"material/account-network-off.svg","material-account-network-outline":"material/account-network-outline.svg","material-account-network":"material/account-network.svg","material-account-off-outline":"material/account-off-outline.svg","material-account-off":"material/account-off.svg","material-account-outline":"material/account-outline.svg","material-account-plus-outline":"material/account-plus-outline.svg","material-account-plus":"material/account-plus.svg","material-account-question-outline":"material/account-question-outline.svg","material-account-question":"material/account-question.svg","material-account-reactivate-outline":"material/account-reactivate-outline.svg","material-account-reactivate":"material/account-reactivate.svg","material-account-remove-outline":"material/account-remove-outline.svg","material-account-remove":"material/account-remove.svg","material-account-school-outline":"material/account-school-outline.svg","material-account-school":"material/account-school.svg","material-account-search-outline":"material/account-search-outline.svg","material-account-search":"material/account-search.svg","material-account-settings-outline":"material/account-settings-outline.svg","material-account-settings":"material/account-settings.svg","material-account-star-outline":"material/account-star-outline.svg","material-account-star":"material/account-star.svg","material-account-supervisor-circle-outline":"material/account-supervisor-circle-outline.svg","material-account-supervisor-circle":"material/account-supervisor-circle.svg","material-account-supervisor-outline":"material/account-supervisor-outline.svg","material-account-supervisor":"material/account-supervisor.svg","material-account-switch-outline":"material/account-switch-outline.svg","material-account-switch":"material/account-switch.svg","material-account-sync-outline":"material/account-sync-outline.svg","material-account-sync":"material/account-sync.svg","material-account-tie-hat-outline":"material/account-tie-hat-outline.svg","material-account-tie-hat":"material/account-tie-hat.svg","material-account-tie-outline":"material/account-tie-outline.svg","material-account-tie-voice-off-outline":"material/account-tie-voice-off-outline.svg","material-account-tie-voice-off":"material/account-tie-voice-off.svg","material-account-tie-voice-outline":"material/account-tie-voice-outline.svg","material-account-tie-voice":"material/account-tie-voice.svg","material-account-tie-woman":"material/account-tie-woman.svg","material-account-tie":"material/account-tie.svg","material-account-voice-off":"material/account-voice-off.svg","material-account-voice":"material/account-voice.svg","material-account-wrench-outline":"material/account-wrench-outline.svg","material-account-wrench":"material/account-wrench.svg","material-account":"material/account.svg","material-adjust":"material/adjust.svg","material-advertisements-off":"material/advertisements-off.svg","material-advertisements":"material/advertisements.svg","material-air-conditioner":"material/air-conditioner.svg","material-air-filter":"material/air-filter.svg","material-air-horn":"material/air-horn.svg","material-air-humidifier-off":"material/air-humidifier-off.svg","material-air-humidifier":"material/air-humidifier.svg","material-air-purifier-off":"material/air-purifier-off.svg","material-air-purifier":"material/air-purifier.svg","material-airbag":"material/airbag.svg","material-airballoon-outline":"material/airballoon-outline.svg","material-airballoon":"material/airballoon.svg","material-airplane-alert":"material/airplane-alert.svg","material-airplane-check":"material/airplane-check.svg","material-airplane-clock":"material/airplane-clock.svg","material-airplane-cog":"material/airplane-cog.svg","material-airplane-edit":"material/airplane-edit.svg","material-airplane-landing":"material/airplane-landing.svg","material-airplane-marker":"material/airplane-marker.svg","material-airplane-minus":"material/airplane-minus.svg","material-airplane-off":"material/airplane-off.svg","material-airplane-plus":"material/airplane-plus.svg","material-airplane-remove":"material/airplane-remove.svg","material-airplane-search":"material/airplane-search.svg","material-airplane-settings":"material/airplane-settings.svg","material-airplane-takeoff":"material/airplane-takeoff.svg","material-airplane":"material/airplane.svg","material-airport":"material/airport.svg","material-alarm-bell":"material/alarm-bell.svg","material-alarm-check":"material/alarm-check.svg","material-alarm-light-off-outline":"material/alarm-light-off-outline.svg","material-alarm-light-off":"material/alarm-light-off.svg","material-alarm-light-outline":"material/alarm-light-outline.svg","material-alarm-light":"material/alarm-light.svg","material-alarm-multiple":"material/alarm-multiple.svg","material-alarm-note-off":"material/alarm-note-off.svg","material-alarm-note":"material/alarm-note.svg","material-alarm-off":"material/alarm-off.svg","material-alarm-panel-outline":"material/alarm-panel-outline.svg","material-alarm-panel":"material/alarm-panel.svg","material-alarm-plus":"material/alarm-plus.svg","material-alarm-snooze":"material/alarm-snooze.svg","material-alarm":"material/alarm.svg","material-album":"material/album.svg","material-alert-box-outline":"material/alert-box-outline.svg","material-alert-box":"material/alert-box.svg","material-alert-circle-check-outline":"material/alert-circle-check-outline.svg","material-alert-circle-check":"material/alert-circle-check.svg","material-alert-circle-outline":"material/alert-circle-outline.svg","material-alert-circle":"material/alert-circle.svg","material-alert-decagram-outline":"material/alert-decagram-outline.svg","material-alert-decagram":"material/alert-decagram.svg","material-alert-minus-outline":"material/alert-minus-outline.svg","material-alert-minus":"material/alert-minus.svg","material-alert-octagon-outline":"material/alert-octagon-outline.svg","material-alert-octagon":"material/alert-octagon.svg","material-alert-octagram-outline":"material/alert-octagram-outline.svg","material-alert-octagram":"material/alert-octagram.svg","material-alert-outline":"material/alert-outline.svg","material-alert-plus-outline":"material/alert-plus-outline.svg","material-alert-plus":"material/alert-plus.svg","material-alert-remove-outline":"material/alert-remove-outline.svg","material-alert-remove":"material/alert-remove.svg","material-alert-rhombus-outline":"material/alert-rhombus-outline.svg","material-alert-rhombus":"material/alert-rhombus.svg","material-alert":"material/alert.svg","material-alien-outline":"material/alien-outline.svg","material-alien":"material/alien.svg","material-align-horizontal-center":"material/align-horizontal-center.svg","material-align-horizontal-distribute":"material/align-horizontal-distribute.svg","material-align-horizontal-left":"material/align-horizontal-left.svg","material-align-horizontal-right":"material/align-horizontal-right.svg","material-align-vertical-bottom":"material/align-vertical-bottom.svg","material-align-vertical-center":"material/align-vertical-center.svg","material-align-vertical-distribute":"material/align-vertical-distribute.svg","material-align-vertical-top":"material/align-vertical-top.svg","material-all-inclusive-box-outline":"material/all-inclusive-box-outline.svg","material-all-inclusive-box":"material/all-inclusive-box.svg","material-all-inclusive":"material/all-inclusive.svg","material-allergy":"material/allergy.svg","material-alpha-a-box-outline":"material/alpha-a-box-outline.svg","material-alpha-a-box":"material/alpha-a-box.svg","material-alpha-a-circle-outline":"material/alpha-a-circle-outline.svg","material-alpha-a-circle":"material/alpha-a-circle.svg","material-alpha-a":"material/alpha-a.svg","material-alpha-b-box-outline":"material/alpha-b-box-outline.svg","material-alpha-b-box":"material/alpha-b-box.svg","material-alpha-b-circle-outline":"material/alpha-b-circle-outline.svg","material-alpha-b-circle":"material/alpha-b-circle.svg","material-alpha-b":"material/alpha-b.svg","material-alpha-c-box-outline":"material/alpha-c-box-outline.svg","material-alpha-c-box":"material/alpha-c-box.svg","material-alpha-c-circle-outline":"material/alpha-c-circle-outline.svg","material-alpha-c-circle":"material/alpha-c-circle.svg","material-alpha-c":"material/alpha-c.svg","material-alpha-d-box-outline":"material/alpha-d-box-outline.svg","material-alpha-d-box":"material/alpha-d-box.svg","material-alpha-d-circle-outline":"material/alpha-d-circle-outline.svg","material-alpha-d-circle":"material/alpha-d-circle.svg","material-alpha-d":"material/alpha-d.svg","material-alpha-e-box-outline":"material/alpha-e-box-outline.svg","material-alpha-e-box":"material/alpha-e-box.svg","material-alpha-e-circle-outline":"material/alpha-e-circle-outline.svg","material-alpha-e-circle":"material/alpha-e-circle.svg","material-alpha-e":"material/alpha-e.svg","material-alpha-f-box-outline":"material/alpha-f-box-outline.svg","material-alpha-f-box":"material/alpha-f-box.svg","material-alpha-f-circle-outline":"material/alpha-f-circle-outline.svg","material-alpha-f-circle":"material/alpha-f-circle.svg","material-alpha-f":"material/alpha-f.svg","material-alpha-g-box-outline":"material/alpha-g-box-outline.svg","material-alpha-g-box":"material/alpha-g-box.svg","material-alpha-g-circle-outline":"material/alpha-g-circle-outline.svg","material-alpha-g-circle":"material/alpha-g-circle.svg","material-alpha-g":"material/alpha-g.svg","material-alpha-h-box-outline":"material/alpha-h-box-outline.svg","material-alpha-h-box":"material/alpha-h-box.svg","material-alpha-h-circle-outline":"material/alpha-h-circle-outline.svg","material-alpha-h-circle":"material/alpha-h-circle.svg","material-alpha-h":"material/alpha-h.svg","material-alpha-i-box-outline":"material/alpha-i-box-outline.svg","material-alpha-i-box":"material/alpha-i-box.svg","material-alpha-i-circle-outline":"material/alpha-i-circle-outline.svg","material-alpha-i-circle":"material/alpha-i-circle.svg","material-alpha-i":"material/alpha-i.svg","material-alpha-j-box-outline":"material/alpha-j-box-outline.svg","material-alpha-j-box":"material/alpha-j-box.svg","material-alpha-j-circle-outline":"material/alpha-j-circle-outline.svg","material-alpha-j-circle":"material/alpha-j-circle.svg","material-alpha-j":"material/alpha-j.svg","material-alpha-k-box-outline":"material/alpha-k-box-outline.svg","material-alpha-k-box":"material/alpha-k-box.svg","material-alpha-k-circle-outline":"material/alpha-k-circle-outline.svg","material-alpha-k-circle":"material/alpha-k-circle.svg","material-alpha-k":"material/alpha-k.svg","material-alpha-l-box-outline":"material/alpha-l-box-outline.svg","material-alpha-l-box":"material/alpha-l-box.svg","material-alpha-l-circle-outline":"material/alpha-l-circle-outline.svg","material-alpha-l-circle":"material/alpha-l-circle.svg","material-alpha-l":"material/alpha-l.svg","material-alpha-m-box-outline":"material/alpha-m-box-outline.svg","material-alpha-m-box":"material/alpha-m-box.svg","material-alpha-m-circle-outline":"material/alpha-m-circle-outline.svg","material-alpha-m-circle":"material/alpha-m-circle.svg","material-alpha-m":"material/alpha-m.svg","material-alpha-n-box-outline":"material/alpha-n-box-outline.svg","material-alpha-n-box":"material/alpha-n-box.svg","material-alpha-n-circle-outline":"material/alpha-n-circle-outline.svg","material-alpha-n-circle":"material/alpha-n-circle.svg","material-alpha-n":"material/alpha-n.svg","material-alpha-o-box-outline":"material/alpha-o-box-outline.svg","material-alpha-o-box":"material/alpha-o-box.svg","material-alpha-o-circle-outline":"material/alpha-o-circle-outline.svg","material-alpha-o-circle":"material/alpha-o-circle.svg","material-alpha-o":"material/alpha-o.svg","material-alpha-p-box-outline":"material/alpha-p-box-outline.svg","material-alpha-p-box":"material/alpha-p-box.svg","material-alpha-p-circle-outline":"material/alpha-p-circle-outline.svg","material-alpha-p-circle":"material/alpha-p-circle.svg","material-alpha-p":"material/alpha-p.svg","material-alpha-q-box-outline":"material/alpha-q-box-outline.svg","material-alpha-q-box":"material/alpha-q-box.svg","material-alpha-q-circle-outline":"material/alpha-q-circle-outline.svg","material-alpha-q-circle":"material/alpha-q-circle.svg","material-alpha-q":"material/alpha-q.svg","material-alpha-r-box-outline":"material/alpha-r-box-outline.svg","material-alpha-r-box":"material/alpha-r-box.svg","material-alpha-r-circle-outline":"material/alpha-r-circle-outline.svg","material-alpha-r-circle":"material/alpha-r-circle.svg","material-alpha-r":"material/alpha-r.svg","material-alpha-s-box-outline":"material/alpha-s-box-outline.svg","material-alpha-s-box":"material/alpha-s-box.svg","material-alpha-s-circle-outline":"material/alpha-s-circle-outline.svg","material-alpha-s-circle":"material/alpha-s-circle.svg","material-alpha-s":"material/alpha-s.svg","material-alpha-t-box-outline":"material/alpha-t-box-outline.svg","material-alpha-t-box":"material/alpha-t-box.svg","material-alpha-t-circle-outline":"material/alpha-t-circle-outline.svg","material-alpha-t-circle":"material/alpha-t-circle.svg","material-alpha-t":"material/alpha-t.svg","material-alpha-u-box-outline":"material/alpha-u-box-outline.svg","material-alpha-u-box":"material/alpha-u-box.svg","material-alpha-u-circle-outline":"material/alpha-u-circle-outline.svg","material-alpha-u-circle":"material/alpha-u-circle.svg","material-alpha-u":"material/alpha-u.svg","material-alpha-v-box-outline":"material/alpha-v-box-outline.svg","material-alpha-v-box":"material/alpha-v-box.svg","material-alpha-v-circle-outline":"material/alpha-v-circle-outline.svg","material-alpha-v-circle":"material/alpha-v-circle.svg","material-alpha-v":"material/alpha-v.svg","material-alpha-w-box-outline":"material/alpha-w-box-outline.svg","material-alpha-w-box":"material/alpha-w-box.svg","material-alpha-w-circle-outline":"material/alpha-w-circle-outline.svg","material-alpha-w-circle":"material/alpha-w-circle.svg","material-alpha-w":"material/alpha-w.svg","material-alpha-x-box-outline":"material/alpha-x-box-outline.svg","material-alpha-x-box":"material/alpha-x-box.svg","material-alpha-x-circle-outline":"material/alpha-x-circle-outline.svg","material-alpha-x-circle":"material/alpha-x-circle.svg","material-alpha-x":"material/alpha-x.svg","material-alpha-y-box-outline":"material/alpha-y-box-outline.svg","material-alpha-y-box":"material/alpha-y-box.svg","material-alpha-y-circle-outline":"material/alpha-y-circle-outline.svg","material-alpha-y-circle":"material/alpha-y-circle.svg","material-alpha-y":"material/alpha-y.svg","material-alpha-z-box-outline":"material/alpha-z-box-outline.svg","material-alpha-z-box":"material/alpha-z-box.svg","material-alpha-z-circle-outline":"material/alpha-z-circle-outline.svg","material-alpha-z-circle":"material/alpha-z-circle.svg","material-alpha-z":"material/alpha-z.svg","material-alpha":"material/alpha.svg","material-alphabet-aurebesh":"material/alphabet-aurebesh.svg","material-alphabet-cyrillic":"material/alphabet-cyrillic.svg","material-alphabet-greek":"material/alphabet-greek.svg","material-alphabet-latin":"material/alphabet-latin.svg","material-alphabet-piqad":"material/alphabet-piqad.svg","material-alphabet-tengwar":"material/alphabet-tengwar.svg","material-alphabetical-off":"material/alphabetical-off.svg","material-alphabetical-variant-off":"material/alphabetical-variant-off.svg","material-alphabetical-variant":"material/alphabetical-variant.svg","material-alphabetical":"material/alphabetical.svg","material-altimeter":"material/altimeter.svg","material-ambulance":"material/ambulance.svg","material-ammunition":"material/ammunition.svg","material-ampersand":"material/ampersand.svg","material-amplifier-off":"material/amplifier-off.svg","material-amplifier":"material/amplifier.svg","material-anchor":"material/anchor.svg","material-android-studio":"material/android-studio.svg","material-android":"material/android.svg","material-angle-acute":"material/angle-acute.svg","material-angle-obtuse":"material/angle-obtuse.svg","material-angle-right":"material/angle-right.svg","material-angular":"material/angular.svg","material-angularjs":"material/angularjs.svg","material-animation-outline":"material/animation-outline.svg","material-animation-play-outline":"material/animation-play-outline.svg","material-animation-play":"material/animation-play.svg","material-animation":"material/animation.svg","material-ansible":"material/ansible.svg","material-antenna":"material/antenna.svg","material-anvil":"material/anvil.svg","material-apache-kafka":"material/apache-kafka.svg","material-api-off":"material/api-off.svg","material-api":"material/api.svg","material-apple-finder":"material/apple-finder.svg","material-apple-icloud":"material/apple-icloud.svg","material-apple-ios":"material/apple-ios.svg","material-apple-keyboard-caps":"material/apple-keyboard-caps.svg","material-apple-keyboard-command":"material/apple-keyboard-command.svg","material-apple-keyboard-control":"material/apple-keyboard-control.svg","material-apple-keyboard-option":"material/apple-keyboard-option.svg","material-apple-keyboard-shift":"material/apple-keyboard-shift.svg","material-apple-safari":"material/apple-safari.svg","material-apple":"material/apple.svg","material-application-array-outline":"material/application-array-outline.svg","material-application-array":"material/application-array.svg","material-application-braces-outline":"material/application-braces-outline.svg","material-application-braces":"material/application-braces.svg","material-application-brackets-outline":"material/application-brackets-outline.svg","material-application-brackets":"material/application-brackets.svg","material-application-cog-outline":"material/application-cog-outline.svg","material-application-cog":"material/application-cog.svg","material-application-edit-outline":"material/application-edit-outline.svg","material-application-edit":"material/application-edit.svg","material-application-export":"material/application-export.svg","material-application-import":"material/application-import.svg","material-application-outline":"material/application-outline.svg","material-application-parentheses-outline":"material/application-parentheses-outline.svg","material-application-parentheses":"material/application-parentheses.svg","material-application-settings-outline":"material/application-settings-outline.svg","material-application-settings":"material/application-settings.svg","material-application-variable-outline":"material/application-variable-outline.svg","material-application-variable":"material/application-variable.svg","material-application":"material/application.svg","material-approximately-equal-box":"material/approximately-equal-box.svg","material-approximately-equal":"material/approximately-equal.svg","material-apps-box":"material/apps-box.svg","material-apps":"material/apps.svg","material-arch":"material/arch.svg","material-archive-alert-outline":"material/archive-alert-outline.svg","material-archive-alert":"material/archive-alert.svg","material-archive-arrow-down-outline":"material/archive-arrow-down-outline.svg","material-archive-arrow-down":"material/archive-arrow-down.svg","material-archive-arrow-up-outline":"material/archive-arrow-up-outline.svg","material-archive-arrow-up":"material/archive-arrow-up.svg","material-archive-cancel-outline":"material/archive-cancel-outline.svg","material-archive-cancel":"material/archive-cancel.svg","material-archive-check-outline":"material/archive-check-outline.svg","material-archive-check":"material/archive-check.svg","material-archive-clock-outline":"material/archive-clock-outline.svg","material-archive-clock":"material/archive-clock.svg","material-archive-cog-outline":"material/archive-cog-outline.svg","material-archive-cog":"material/archive-cog.svg","material-archive-edit-outline":"material/archive-edit-outline.svg","material-archive-edit":"material/archive-edit.svg","material-archive-eye-outline":"material/archive-eye-outline.svg","material-archive-eye":"material/archive-eye.svg","material-archive-lock-open-outline":"material/archive-lock-open-outline.svg","material-archive-lock-open":"material/archive-lock-open.svg","material-archive-lock-outline":"material/archive-lock-outline.svg","material-archive-lock":"material/archive-lock.svg","material-archive-marker-outline":"material/archive-marker-outline.svg","material-archive-marker":"material/archive-marker.svg","material-archive-minus-outline":"material/archive-minus-outline.svg","material-archive-minus":"material/archive-minus.svg","material-archive-music-outline":"material/archive-music-outline.svg","material-archive-music":"material/archive-music.svg","material-archive-off-outline":"material/archive-off-outline.svg","material-archive-off":"material/archive-off.svg","material-archive-outline":"material/archive-outline.svg","material-archive-plus-outline":"material/archive-plus-outline.svg","material-archive-plus":"material/archive-plus.svg","material-archive-refresh-outline":"material/archive-refresh-outline.svg","material-archive-refresh":"material/archive-refresh.svg","material-archive-remove-outline":"material/archive-remove-outline.svg","material-archive-remove":"material/archive-remove.svg","material-archive-search-outline":"material/archive-search-outline.svg","material-archive-search":"material/archive-search.svg","material-archive-settings-outline":"material/archive-settings-outline.svg","material-archive-settings":"material/archive-settings.svg","material-archive-star-outline":"material/archive-star-outline.svg","material-archive-star":"material/archive-star.svg","material-archive-sync-outline":"material/archive-sync-outline.svg","material-archive-sync":"material/archive-sync.svg","material-archive":"material/archive.svg","material-arm-flex-outline":"material/arm-flex-outline.svg","material-arm-flex":"material/arm-flex.svg","material-arrange-bring-forward":"material/arrange-bring-forward.svg","material-arrange-bring-to-front":"material/arrange-bring-to-front.svg","material-arrange-send-backward":"material/arrange-send-backward.svg","material-arrange-send-to-back":"material/arrange-send-to-back.svg","material-arrow-all":"material/arrow-all.svg","material-arrow-bottom-left-bold-box-outline":"material/arrow-bottom-left-bold-box-outline.svg","material-arrow-bottom-left-bold-box":"material/arrow-bottom-left-bold-box.svg","material-arrow-bottom-left-bold-outline":"material/arrow-bottom-left-bold-outline.svg","material-arrow-bottom-left-thick":"material/arrow-bottom-left-thick.svg","material-arrow-bottom-left-thin-circle-outline":"material/arrow-bottom-left-thin-circle-outline.svg","material-arrow-bottom-left-thin":"material/arrow-bottom-left-thin.svg","material-arrow-bottom-left":"material/arrow-bottom-left.svg","material-arrow-bottom-right-bold-box-outline":"material/arrow-bottom-right-bold-box-outline.svg","material-arrow-bottom-right-bold-box":"material/arrow-bottom-right-bold-box.svg","material-arrow-bottom-right-bold-outline":"material/arrow-bottom-right-bold-outline.svg","material-arrow-bottom-right-thick":"material/arrow-bottom-right-thick.svg","material-arrow-bottom-right-thin-circle-outline":"material/arrow-bottom-right-thin-circle-outline.svg","material-arrow-bottom-right-thin":"material/arrow-bottom-right-thin.svg","material-arrow-bottom-right":"material/arrow-bottom-right.svg","material-arrow-collapse-all":"material/arrow-collapse-all.svg","material-arrow-collapse-down":"material/arrow-collapse-down.svg","material-arrow-collapse-horizontal":"material/arrow-collapse-horizontal.svg","material-arrow-collapse-left":"material/arrow-collapse-left.svg","material-arrow-collapse-right":"material/arrow-collapse-right.svg","material-arrow-collapse-up":"material/arrow-collapse-up.svg","material-arrow-collapse-vertical":"material/arrow-collapse-vertical.svg","material-arrow-collapse":"material/arrow-collapse.svg","material-arrow-decision-auto-outline":"material/arrow-decision-auto-outline.svg","material-arrow-decision-auto":"material/arrow-decision-auto.svg","material-arrow-decision-outline":"material/arrow-decision-outline.svg","material-arrow-decision":"material/arrow-decision.svg","material-arrow-down-bold-box-outline":"material/arrow-down-bold-box-outline.svg","material-arrow-down-bold-box":"material/arrow-down-bold-box.svg","material-arrow-down-bold-circle-outline":"material/arrow-down-bold-circle-outline.svg","material-arrow-down-bold-circle":"material/arrow-down-bold-circle.svg","material-arrow-down-bold-hexagon-outline":"material/arrow-down-bold-hexagon-outline.svg","material-arrow-down-bold-outline":"material/arrow-down-bold-outline.svg","material-arrow-down-bold":"material/arrow-down-bold.svg","material-arrow-down-box":"material/arrow-down-box.svg","material-arrow-down-circle-outline":"material/arrow-down-circle-outline.svg","material-arrow-down-circle":"material/arrow-down-circle.svg","material-arrow-down-drop-circle-outline":"material/arrow-down-drop-circle-outline.svg","material-arrow-down-drop-circle":"material/arrow-down-drop-circle.svg","material-arrow-down-left-bold":"material/arrow-down-left-bold.svg","material-arrow-down-left":"material/arrow-down-left.svg","material-arrow-down-right-bold":"material/arrow-down-right-bold.svg","material-arrow-down-right":"material/arrow-down-right.svg","material-arrow-down-thick":"material/arrow-down-thick.svg","material-arrow-down-thin-circle-outline":"material/arrow-down-thin-circle-outline.svg","material-arrow-down-thin":"material/arrow-down-thin.svg","material-arrow-down":"material/arrow-down.svg","material-arrow-expand-all":"material/arrow-expand-all.svg","material-arrow-expand-down":"material/arrow-expand-down.svg","material-arrow-expand-horizontal":"material/arrow-expand-horizontal.svg","material-arrow-expand-left":"material/arrow-expand-left.svg","material-arrow-expand-right":"material/arrow-expand-right.svg","material-arrow-expand-up":"material/arrow-expand-up.svg","material-arrow-expand-vertical":"material/arrow-expand-vertical.svg","material-arrow-expand":"material/arrow-expand.svg","material-arrow-horizontal-lock":"material/arrow-horizontal-lock.svg","material-arrow-left-bold-box-outline":"material/arrow-left-bold-box-outline.svg","material-arrow-left-bold-box":"material/arrow-left-bold-box.svg","material-arrow-left-bold-circle-outline":"material/arrow-left-bold-circle-outline.svg","material-arrow-left-bold-circle":"material/arrow-left-bold-circle.svg","material-arrow-left-bold-hexagon-outline":"material/arrow-left-bold-hexagon-outline.svg","material-arrow-left-bold-outline":"material/arrow-left-bold-outline.svg","material-arrow-left-bold":"material/arrow-left-bold.svg","material-arrow-left-bottom-bold":"material/arrow-left-bottom-bold.svg","material-arrow-left-bottom":"material/arrow-left-bottom.svg","material-arrow-left-box":"material/arrow-left-box.svg","material-arrow-left-circle-outline":"material/arrow-left-circle-outline.svg","material-arrow-left-circle":"material/arrow-left-circle.svg","material-arrow-left-drop-circle-outline":"material/arrow-left-drop-circle-outline.svg","material-arrow-left-drop-circle":"material/arrow-left-drop-circle.svg","material-arrow-left-right-bold-outline":"material/arrow-left-right-bold-outline.svg","material-arrow-left-right-bold":"material/arrow-left-right-bold.svg","material-arrow-left-right":"material/arrow-left-right.svg","material-arrow-left-thick":"material/arrow-left-thick.svg","material-arrow-left-thin-circle-outline":"material/arrow-left-thin-circle-outline.svg","material-arrow-left-thin":"material/arrow-left-thin.svg","material-arrow-left-top-bold":"material/arrow-left-top-bold.svg","material-arrow-left-top":"material/arrow-left-top.svg","material-arrow-left":"material/arrow-left.svg","material-arrow-projectile-multiple":"material/arrow-projectile-multiple.svg","material-arrow-projectile":"material/arrow-projectile.svg","material-arrow-right-bold-box-outline":"material/arrow-right-bold-box-outline.svg","material-arrow-right-bold-box":"material/arrow-right-bold-box.svg","material-arrow-right-bold-circle-outline":"material/arrow-right-bold-circle-outline.svg","material-arrow-right-bold-circle":"material/arrow-right-bold-circle.svg","material-arrow-right-bold-hexagon-outline":"material/arrow-right-bold-hexagon-outline.svg","material-arrow-right-bold-outline":"material/arrow-right-bold-outline.svg","material-arrow-right-bold":"material/arrow-right-bold.svg","material-arrow-right-bottom-bold":"material/arrow-right-bottom-bold.svg","material-arrow-right-bottom":"material/arrow-right-bottom.svg","material-arrow-right-box":"material/arrow-right-box.svg","material-arrow-right-circle-outline":"material/arrow-right-circle-outline.svg","material-arrow-right-circle":"material/arrow-right-circle.svg","material-arrow-right-drop-circle-outline":"material/arrow-right-drop-circle-outline.svg","material-arrow-right-drop-circle":"material/arrow-right-drop-circle.svg","material-arrow-right-thick":"material/arrow-right-thick.svg","material-arrow-right-thin-circle-outline":"material/arrow-right-thin-circle-outline.svg","material-arrow-right-thin":"material/arrow-right-thin.svg","material-arrow-right-top-bold":"material/arrow-right-top-bold.svg","material-arrow-right-top":"material/arrow-right-top.svg","material-arrow-right":"material/arrow-right.svg","material-arrow-split-horizontal":"material/arrow-split-horizontal.svg","material-arrow-split-vertical":"material/arrow-split-vertical.svg","material-arrow-top-left-bold-box-outline":"material/arrow-top-left-bold-box-outline.svg","material-arrow-top-left-bold-box":"material/arrow-top-left-bold-box.svg","material-arrow-top-left-bold-outline":"material/arrow-top-left-bold-outline.svg","material-arrow-top-left-bottom-right-bold":"material/arrow-top-left-bottom-right-bold.svg","material-arrow-top-left-bottom-right":"material/arrow-top-left-bottom-right.svg","material-arrow-top-left-thick":"material/arrow-top-left-thick.svg","material-arrow-top-left-thin-circle-outline":"material/arrow-top-left-thin-circle-outline.svg","material-arrow-top-left-thin":"material/arrow-top-left-thin.svg","material-arrow-top-left":"material/arrow-top-left.svg","material-arrow-top-right-bold-box-outline":"material/arrow-top-right-bold-box-outline.svg","material-arrow-top-right-bold-box":"material/arrow-top-right-bold-box.svg","material-arrow-top-right-bold-outline":"material/arrow-top-right-bold-outline.svg","material-arrow-top-right-bottom-left-bold":"material/arrow-top-right-bottom-left-bold.svg","material-arrow-top-right-bottom-left":"material/arrow-top-right-bottom-left.svg","material-arrow-top-right-thick":"material/arrow-top-right-thick.svg","material-arrow-top-right-thin-circle-outline":"material/arrow-top-right-thin-circle-outline.svg","material-arrow-top-right-thin":"material/arrow-top-right-thin.svg","material-arrow-top-right":"material/arrow-top-right.svg","material-arrow-u-down-left-bold":"material/arrow-u-down-left-bold.svg","material-arrow-u-down-left":"material/arrow-u-down-left.svg","material-arrow-u-down-right-bold":"material/arrow-u-down-right-bold.svg","material-arrow-u-down-right":"material/arrow-u-down-right.svg","material-arrow-u-left-bottom-bold":"material/arrow-u-left-bottom-bold.svg","material-arrow-u-left-bottom":"material/arrow-u-left-bottom.svg","material-arrow-u-left-top-bold":"material/arrow-u-left-top-bold.svg","material-arrow-u-left-top":"material/arrow-u-left-top.svg","material-arrow-u-right-bottom-bold":"material/arrow-u-right-bottom-bold.svg","material-arrow-u-right-bottom":"material/arrow-u-right-bottom.svg","material-arrow-u-right-top-bold":"material/arrow-u-right-top-bold.svg","material-arrow-u-right-top":"material/arrow-u-right-top.svg","material-arrow-u-up-left-bold":"material/arrow-u-up-left-bold.svg","material-arrow-u-up-left":"material/arrow-u-up-left.svg","material-arrow-u-up-right-bold":"material/arrow-u-up-right-bold.svg","material-arrow-u-up-right":"material/arrow-u-up-right.svg","material-arrow-up-bold-box-outline":"material/arrow-up-bold-box-outline.svg","material-arrow-up-bold-box":"material/arrow-up-bold-box.svg","material-arrow-up-bold-circle-outline":"material/arrow-up-bold-circle-outline.svg","material-arrow-up-bold-circle":"material/arrow-up-bold-circle.svg","material-arrow-up-bold-hexagon-outline":"material/arrow-up-bold-hexagon-outline.svg","material-arrow-up-bold-outline":"material/arrow-up-bold-outline.svg","material-arrow-up-bold":"material/arrow-up-bold.svg","material-arrow-up-box":"material/arrow-up-box.svg","material-arrow-up-circle-outline":"material/arrow-up-circle-outline.svg","material-arrow-up-circle":"material/arrow-up-circle.svg","material-arrow-up-down-bold-outline":"material/arrow-up-down-bold-outline.svg","material-arrow-up-down-bold":"material/arrow-up-down-bold.svg","material-arrow-up-down":"material/arrow-up-down.svg","material-arrow-up-drop-circle-outline":"material/arrow-up-drop-circle-outline.svg","material-arrow-up-drop-circle":"material/arrow-up-drop-circle.svg","material-arrow-up-left-bold":"material/arrow-up-left-bold.svg","material-arrow-up-left":"material/arrow-up-left.svg","material-arrow-up-right-bold":"material/arrow-up-right-bold.svg","material-arrow-up-right":"material/arrow-up-right.svg","material-arrow-up-thick":"material/arrow-up-thick.svg","material-arrow-up-thin-circle-outline":"material/arrow-up-thin-circle-outline.svg","material-arrow-up-thin":"material/arrow-up-thin.svg","material-arrow-up":"material/arrow-up.svg","material-arrow-vertical-lock":"material/arrow-vertical-lock.svg","material-artboard":"material/artboard.svg","material-artstation":"material/artstation.svg","material-aspect-ratio":"material/aspect-ratio.svg","material-assistant":"material/assistant.svg","material-asterisk-circle-outline":"material/asterisk-circle-outline.svg","material-asterisk":"material/asterisk.svg","material-at":"material/at.svg","material-atlassian":"material/atlassian.svg","material-atm":"material/atm.svg","material-atom-variant":"material/atom-variant.svg","material-atom":"material/atom.svg","material-attachment-check":"material/attachment-check.svg","material-attachment-lock":"material/attachment-lock.svg","material-attachment-minus":"material/attachment-minus.svg","material-attachment-off":"material/attachment-off.svg","material-attachment-plus":"material/attachment-plus.svg","material-attachment-remove":"material/attachment-remove.svg","material-attachment":"material/attachment.svg","material-atv":"material/atv.svg","material-audio-input-rca":"material/audio-input-rca.svg","material-audio-input-stereo-minijack":"material/audio-input-stereo-minijack.svg","material-audio-input-xlr":"material/audio-input-xlr.svg","material-audio-video-off":"material/audio-video-off.svg","material-audio-video":"material/audio-video.svg","material-augmented-reality":"material/augmented-reality.svg","material-auto-download":"material/auto-download.svg","material-auto-fix":"material/auto-fix.svg","material-auto-upload":"material/auto-upload.svg","material-autorenew-off":"material/autorenew-off.svg","material-autorenew":"material/autorenew.svg","material-av-timer":"material/av-timer.svg","material-awning-outline":"material/awning-outline.svg","material-awning":"material/awning.svg","material-aws":"material/aws.svg","material-axe-battle":"material/axe-battle.svg","material-axe":"material/axe.svg","material-axis-arrow-info":"material/axis-arrow-info.svg","material-axis-arrow-lock":"material/axis-arrow-lock.svg","material-axis-arrow":"material/axis-arrow.svg","material-axis-lock":"material/axis-lock.svg","material-axis-x-arrow-lock":"material/axis-x-arrow-lock.svg","material-axis-x-arrow":"material/axis-x-arrow.svg","material-axis-x-rotate-clockwise":"material/axis-x-rotate-clockwise.svg","material-axis-x-rotate-counterclockwise":"material/axis-x-rotate-counterclockwise.svg","material-axis-x-y-arrow-lock":"material/axis-x-y-arrow-lock.svg","material-axis-y-arrow-lock":"material/axis-y-arrow-lock.svg","material-axis-y-arrow":"material/axis-y-arrow.svg","material-axis-y-rotate-clockwise":"material/axis-y-rotate-clockwise.svg","material-axis-y-rotate-counterclockwise":"material/axis-y-rotate-counterclockwise.svg","material-axis-z-arrow-lock":"material/axis-z-arrow-lock.svg","material-axis-z-arrow":"material/axis-z-arrow.svg","material-axis-z-rotate-clockwise":"material/axis-z-rotate-clockwise.svg","material-axis-z-rotate-counterclockwise":"material/axis-z-rotate-counterclockwise.svg","material-axis":"material/axis.svg","material-babel":"material/babel.svg","material-baby-bottle-outline":"material/baby-bottle-outline.svg","material-baby-bottle":"material/baby-bottle.svg","material-baby-buggy-off":"material/baby-buggy-off.svg","material-baby-buggy":"material/baby-buggy.svg","material-baby-carriage-off":"material/baby-carriage-off.svg","material-baby-carriage":"material/baby-carriage.svg","material-baby-face-outline":"material/baby-face-outline.svg","material-baby-face":"material/baby-face.svg","material-baby":"material/baby.svg","material-backburger":"material/backburger.svg","material-backspace-outline":"material/backspace-outline.svg","material-backspace-reverse-outline":"material/backspace-reverse-outline.svg","material-backspace-reverse":"material/backspace-reverse.svg","material-backspace":"material/backspace.svg","material-backup-restore":"material/backup-restore.svg","material-bacteria-outline":"material/bacteria-outline.svg","material-bacteria":"material/bacteria.svg","material-badge-account-alert-outline":"material/badge-account-alert-outline.svg","material-badge-account-alert":"material/badge-account-alert.svg","material-badge-account-horizontal-outline":"material/badge-account-horizontal-outline.svg","material-badge-account-horizontal":"material/badge-account-horizontal.svg","material-badge-account-outline":"material/badge-account-outline.svg","material-badge-account":"material/badge-account.svg","material-badminton":"material/badminton.svg","material-bag-carry-on-check":"material/bag-carry-on-check.svg","material-bag-carry-on-off":"material/bag-carry-on-off.svg","material-bag-carry-on":"material/bag-carry-on.svg","material-bag-checked":"material/bag-checked.svg","material-bag-personal-off-outline":"material/bag-personal-off-outline.svg","material-bag-personal-off":"material/bag-personal-off.svg","material-bag-personal-outline":"material/bag-personal-outline.svg","material-bag-personal-tag-outline":"material/bag-personal-tag-outline.svg","material-bag-personal-tag":"material/bag-personal-tag.svg","material-bag-personal":"material/bag-personal.svg","material-bag-suitcase-off-outline":"material/bag-suitcase-off-outline.svg","material-bag-suitcase-off":"material/bag-suitcase-off.svg","material-bag-suitcase-outline":"material/bag-suitcase-outline.svg","material-bag-suitcase":"material/bag-suitcase.svg","material-baguette":"material/baguette.svg","material-balcony":"material/balcony.svg","material-balloon":"material/balloon.svg","material-ballot-outline":"material/ballot-outline.svg","material-ballot-recount-outline":"material/ballot-recount-outline.svg","material-ballot-recount":"material/ballot-recount.svg","material-ballot":"material/ballot.svg","material-bandage":"material/bandage.svg","material-bank-check":"material/bank-check.svg","material-bank-minus":"material/bank-minus.svg","material-bank-off-outline":"material/bank-off-outline.svg","material-bank-off":"material/bank-off.svg","material-bank-outline":"material/bank-outline.svg","material-bank-plus":"material/bank-plus.svg","material-bank-remove":"material/bank-remove.svg","material-bank-transfer-in":"material/bank-transfer-in.svg","material-bank-transfer-out":"material/bank-transfer-out.svg","material-bank-transfer":"material/bank-transfer.svg","material-bank":"material/bank.svg","material-barcode-off":"material/barcode-off.svg","material-barcode-scan":"material/barcode-scan.svg","material-barcode":"material/barcode.svg","material-barley-off":"material/barley-off.svg","material-barley":"material/barley.svg","material-barn":"material/barn.svg","material-barrel-outline":"material/barrel-outline.svg","material-barrel":"material/barrel.svg","material-baseball-bat":"material/baseball-bat.svg","material-baseball-diamond-outline":"material/baseball-diamond-outline.svg","material-baseball-diamond":"material/baseball-diamond.svg","material-baseball":"material/baseball.svg","material-bash":"material/bash.svg","material-basket-check-outline":"material/basket-check-outline.svg","material-basket-check":"material/basket-check.svg","material-basket-fill":"material/basket-fill.svg","material-basket-minus-outline":"material/basket-minus-outline.svg","material-basket-minus":"material/basket-minus.svg","material-basket-off-outline":"material/basket-off-outline.svg","material-basket-off":"material/basket-off.svg","material-basket-outline":"material/basket-outline.svg","material-basket-plus-outline":"material/basket-plus-outline.svg","material-basket-plus":"material/basket-plus.svg","material-basket-remove-outline":"material/basket-remove-outline.svg","material-basket-remove":"material/basket-remove.svg","material-basket-unfill":"material/basket-unfill.svg","material-basket":"material/basket.svg","material-basketball-hoop-outline":"material/basketball-hoop-outline.svg","material-basketball-hoop":"material/basketball-hoop.svg","material-basketball":"material/basketball.svg","material-bat":"material/bat.svg","material-bathtub-outline":"material/bathtub-outline.svg","material-bathtub":"material/bathtub.svg","material-battery-10-bluetooth":"material/battery-10-bluetooth.svg","material-battery-10":"material/battery-10.svg","material-battery-20-bluetooth":"material/battery-20-bluetooth.svg","material-battery-20":"material/battery-20.svg","material-battery-30-bluetooth":"material/battery-30-bluetooth.svg","material-battery-30":"material/battery-30.svg","material-battery-40-bluetooth":"material/battery-40-bluetooth.svg","material-battery-40":"material/battery-40.svg","material-battery-50-bluetooth":"material/battery-50-bluetooth.svg","material-battery-50":"material/battery-50.svg","material-battery-60-bluetooth":"material/battery-60-bluetooth.svg","material-battery-60":"material/battery-60.svg","material-battery-70-bluetooth":"material/battery-70-bluetooth.svg","material-battery-70":"material/battery-70.svg","material-battery-80-bluetooth":"material/battery-80-bluetooth.svg","material-battery-80":"material/battery-80.svg","material-battery-90-bluetooth":"material/battery-90-bluetooth.svg","material-battery-90":"material/battery-90.svg","material-battery-alert-bluetooth":"material/battery-alert-bluetooth.svg","material-battery-alert-variant-outline":"material/battery-alert-variant-outline.svg","material-battery-alert-variant":"material/battery-alert-variant.svg","material-battery-alert":"material/battery-alert.svg","material-battery-arrow-down-outline":"material/battery-arrow-down-outline.svg","material-battery-arrow-down":"material/battery-arrow-down.svg","material-battery-arrow-up-outline":"material/battery-arrow-up-outline.svg","material-battery-arrow-up":"material/battery-arrow-up.svg","material-battery-bluetooth-variant":"material/battery-bluetooth-variant.svg","material-battery-bluetooth":"material/battery-bluetooth.svg","material-battery-charging-10":"material/battery-charging-10.svg","material-battery-charging-100":"material/battery-charging-100.svg","material-battery-charging-20":"material/battery-charging-20.svg","material-battery-charging-30":"material/battery-charging-30.svg","material-battery-charging-40":"material/battery-charging-40.svg","material-battery-charging-50":"material/battery-charging-50.svg","material-battery-charging-60":"material/battery-charging-60.svg","material-battery-charging-70":"material/battery-charging-70.svg","material-battery-charging-80":"material/battery-charging-80.svg","material-battery-charging-90":"material/battery-charging-90.svg","material-battery-charging-high":"material/battery-charging-high.svg","material-battery-charging-low":"material/battery-charging-low.svg","material-battery-charging-medium":"material/battery-charging-medium.svg","material-battery-charging-outline":"material/battery-charging-outline.svg","material-battery-charging-wireless-10":"material/battery-charging-wireless-10.svg","material-battery-charging-wireless-20":"material/battery-charging-wireless-20.svg","material-battery-charging-wireless-30":"material/battery-charging-wireless-30.svg","material-battery-charging-wireless-40":"material/battery-charging-wireless-40.svg","material-battery-charging-wireless-50":"material/battery-charging-wireless-50.svg","material-battery-charging-wireless-60":"material/battery-charging-wireless-60.svg","material-battery-charging-wireless-70":"material/battery-charging-wireless-70.svg","material-battery-charging-wireless-80":"material/battery-charging-wireless-80.svg","material-battery-charging-wireless-90":"material/battery-charging-wireless-90.svg","material-battery-charging-wireless-alert":"material/battery-charging-wireless-alert.svg","material-battery-charging-wireless-outline":"material/battery-charging-wireless-outline.svg","material-battery-charging-wireless":"material/battery-charging-wireless.svg","material-battery-charging":"material/battery-charging.svg","material-battery-check-outline":"material/battery-check-outline.svg","material-battery-check":"material/battery-check.svg","material-battery-clock-outline":"material/battery-clock-outline.svg","material-battery-clock":"material/battery-clock.svg","material-battery-heart-outline":"material/battery-heart-outline.svg","material-battery-heart-variant":"material/battery-heart-variant.svg","material-battery-heart":"material/battery-heart.svg","material-battery-high":"material/battery-high.svg","material-battery-lock-open":"material/battery-lock-open.svg","material-battery-lock":"material/battery-lock.svg","material-battery-low":"material/battery-low.svg","material-battery-medium":"material/battery-medium.svg","material-battery-minus-outline":"material/battery-minus-outline.svg","material-battery-minus-variant":"material/battery-minus-variant.svg","material-battery-minus":"material/battery-minus.svg","material-battery-negative":"material/battery-negative.svg","material-battery-off-outline":"material/battery-off-outline.svg","material-battery-off":"material/battery-off.svg","material-battery-outline":"material/battery-outline.svg","material-battery-plus-outline":"material/battery-plus-outline.svg","material-battery-plus-variant":"material/battery-plus-variant.svg","material-battery-plus":"material/battery-plus.svg","material-battery-positive":"material/battery-positive.svg","material-battery-remove-outline":"material/battery-remove-outline.svg","material-battery-remove":"material/battery-remove.svg","material-battery-sync-outline":"material/battery-sync-outline.svg","material-battery-sync":"material/battery-sync.svg","material-battery-unknown-bluetooth":"material/battery-unknown-bluetooth.svg","material-battery-unknown":"material/battery-unknown.svg","material-battery":"material/battery.svg","material-beach":"material/beach.svg","material-beaker-alert-outline":"material/beaker-alert-outline.svg","material-beaker-alert":"material/beaker-alert.svg","material-beaker-check-outline":"material/beaker-check-outline.svg","material-beaker-check":"material/beaker-check.svg","material-beaker-minus-outline":"material/beaker-minus-outline.svg","material-beaker-minus":"material/beaker-minus.svg","material-beaker-outline":"material/beaker-outline.svg","material-beaker-plus-outline":"material/beaker-plus-outline.svg","material-beaker-plus":"material/beaker-plus.svg","material-beaker-question-outline":"material/beaker-question-outline.svg","material-beaker-question":"material/beaker-question.svg","material-beaker-remove-outline":"material/beaker-remove-outline.svg","material-beaker-remove":"material/beaker-remove.svg","material-beaker":"material/beaker.svg","material-bed-clock":"material/bed-clock.svg","material-bed-double-outline":"material/bed-double-outline.svg","material-bed-double":"material/bed-double.svg","material-bed-empty":"material/bed-empty.svg","material-bed-king-outline":"material/bed-king-outline.svg","material-bed-king":"material/bed-king.svg","material-bed-outline":"material/bed-outline.svg","material-bed-queen-outline":"material/bed-queen-outline.svg","material-bed-queen":"material/bed-queen.svg","material-bed-single-outline":"material/bed-single-outline.svg","material-bed-single":"material/bed-single.svg","material-bed":"material/bed.svg","material-bee-flower":"material/bee-flower.svg","material-bee":"material/bee.svg","material-beehive-off-outline":"material/beehive-off-outline.svg","material-beehive-outline":"material/beehive-outline.svg","material-beekeeper":"material/beekeeper.svg","material-beer-outline":"material/beer-outline.svg","material-beer":"material/beer.svg","material-bell-alert-outline":"material/bell-alert-outline.svg","material-bell-alert":"material/bell-alert.svg","material-bell-badge-outline":"material/bell-badge-outline.svg","material-bell-badge":"material/bell-badge.svg","material-bell-cancel-outline":"material/bell-cancel-outline.svg","material-bell-cancel":"material/bell-cancel.svg","material-bell-check-outline":"material/bell-check-outline.svg","material-bell-check":"material/bell-check.svg","material-bell-circle-outline":"material/bell-circle-outline.svg","material-bell-circle":"material/bell-circle.svg","material-bell-cog-outline":"material/bell-cog-outline.svg","material-bell-cog":"material/bell-cog.svg","material-bell-minus-outline":"material/bell-minus-outline.svg","material-bell-minus":"material/bell-minus.svg","material-bell-off-outline":"material/bell-off-outline.svg","material-bell-off":"material/bell-off.svg","material-bell-outline":"material/bell-outline.svg","material-bell-plus-outline":"material/bell-plus-outline.svg","material-bell-plus":"material/bell-plus.svg","material-bell-remove-outline":"material/bell-remove-outline.svg","material-bell-remove":"material/bell-remove.svg","material-bell-ring-outline":"material/bell-ring-outline.svg","material-bell-ring":"material/bell-ring.svg","material-bell-sleep-outline":"material/bell-sleep-outline.svg","material-bell-sleep":"material/bell-sleep.svg","material-bell":"material/bell.svg","material-beta":"material/beta.svg","material-betamax":"material/betamax.svg","material-biathlon":"material/biathlon.svg","material-bicycle-basket":"material/bicycle-basket.svg","material-bicycle-cargo":"material/bicycle-cargo.svg","material-bicycle-electric":"material/bicycle-electric.svg","material-bicycle-penny-farthing":"material/bicycle-penny-farthing.svg","material-bicycle":"material/bicycle.svg","material-bike-fast":"material/bike-fast.svg","material-bike":"material/bike.svg","material-billboard":"material/billboard.svg","material-billiards-rack":"material/billiards-rack.svg","material-billiards":"material/billiards.svg","material-binoculars":"material/binoculars.svg","material-bio":"material/bio.svg","material-biohazard":"material/biohazard.svg","material-bird":"material/bird.svg","material-bitbucket":"material/bitbucket.svg","material-bitcoin":"material/bitcoin.svg","material-black-mesa":"material/black-mesa.svg","material-blender-outline":"material/blender-outline.svg","material-blender-software":"material/blender-software.svg","material-blender":"material/blender.svg","material-blinds-horizontal-closed":"material/blinds-horizontal-closed.svg","material-blinds-horizontal":"material/blinds-horizontal.svg","material-blinds-open":"material/blinds-open.svg","material-blinds-vertical-closed":"material/blinds-vertical-closed.svg","material-blinds-vertical":"material/blinds-vertical.svg","material-blinds":"material/blinds.svg","material-block-helper":"material/block-helper.svg","material-blood-bag":"material/blood-bag.svg","material-bluetooth-audio":"material/bluetooth-audio.svg","material-bluetooth-connect":"material/bluetooth-connect.svg","material-bluetooth-off":"material/bluetooth-off.svg","material-bluetooth-settings":"material/bluetooth-settings.svg","material-bluetooth-transfer":"material/bluetooth-transfer.svg","material-bluetooth":"material/bluetooth.svg","material-blur-linear":"material/blur-linear.svg","material-blur-off":"material/blur-off.svg","material-blur-radial":"material/blur-radial.svg","material-blur":"material/blur.svg","material-bolt":"material/bolt.svg","material-bomb-off":"material/bomb-off.svg","material-bomb":"material/bomb.svg","material-bone-off":"material/bone-off.svg","material-bone":"material/bone.svg","material-book-account-outline":"material/book-account-outline.svg","material-book-account":"material/book-account.svg","material-book-alert-outline":"material/book-alert-outline.svg","material-book-alert":"material/book-alert.svg","material-book-alphabet":"material/book-alphabet.svg","material-book-arrow-down-outline":"material/book-arrow-down-outline.svg","material-book-arrow-down":"material/book-arrow-down.svg","material-book-arrow-left-outline":"material/book-arrow-left-outline.svg","material-book-arrow-left":"material/book-arrow-left.svg","material-book-arrow-right-outline":"material/book-arrow-right-outline.svg","material-book-arrow-right":"material/book-arrow-right.svg","material-book-arrow-up-outline":"material/book-arrow-up-outline.svg","material-book-arrow-up":"material/book-arrow-up.svg","material-book-cancel-outline":"material/book-cancel-outline.svg","material-book-cancel":"material/book-cancel.svg","material-book-check-outline":"material/book-check-outline.svg","material-book-check":"material/book-check.svg","material-book-clock-outline":"material/book-clock-outline.svg","material-book-clock":"material/book-clock.svg","material-book-cog-outline":"material/book-cog-outline.svg","material-book-cog":"material/book-cog.svg","material-book-cross":"material/book-cross.svg","material-book-edit-outline":"material/book-edit-outline.svg","material-book-edit":"material/book-edit.svg","material-book-education-outline":"material/book-education-outline.svg","material-book-education":"material/book-education.svg","material-book-heart-outline":"material/book-heart-outline.svg","material-book-heart":"material/book-heart.svg","material-book-information-variant":"material/book-information-variant.svg","material-book-lock-open-outline":"material/book-lock-open-outline.svg","material-book-lock-open":"material/book-lock-open.svg","material-book-lock-outline":"material/book-lock-outline.svg","material-book-lock":"material/book-lock.svg","material-book-marker-outline":"material/book-marker-outline.svg","material-book-marker":"material/book-marker.svg","material-book-minus-multiple-outline":"material/book-minus-multiple-outline.svg","material-book-minus-multiple":"material/book-minus-multiple.svg","material-book-minus-outline":"material/book-minus-outline.svg","material-book-minus":"material/book-minus.svg","material-book-multiple-outline":"material/book-multiple-outline.svg","material-book-multiple":"material/book-multiple.svg","material-book-music-outline":"material/book-music-outline.svg","material-book-music":"material/book-music.svg","material-book-off-outline":"material/book-off-outline.svg","material-book-off":"material/book-off.svg","material-book-open-blank-variant":"material/book-open-blank-variant.svg","material-book-open-outline":"material/book-open-outline.svg","material-book-open-page-variant-outline":"material/book-open-page-variant-outline.svg","material-book-open-page-variant":"material/book-open-page-variant.svg","material-book-open-variant":"material/book-open-variant.svg","material-book-open":"material/book-open.svg","material-book-outline":"material/book-outline.svg","material-book-play-outline":"material/book-play-outline.svg","material-book-play":"material/book-play.svg","material-book-plus-multiple-outline":"material/book-plus-multiple-outline.svg","material-book-plus-multiple":"material/book-plus-multiple.svg","material-book-plus-outline":"material/book-plus-outline.svg","material-book-plus":"material/book-plus.svg","material-book-refresh-outline":"material/book-refresh-outline.svg","material-book-refresh":"material/book-refresh.svg","material-book-remove-multiple-outline":"material/book-remove-multiple-outline.svg","material-book-remove-multiple":"material/book-remove-multiple.svg","material-book-remove-outline":"material/book-remove-outline.svg","material-book-remove":"material/book-remove.svg","material-book-search-outline":"material/book-search-outline.svg","material-book-search":"material/book-search.svg","material-book-settings-outline":"material/book-settings-outline.svg","material-book-settings":"material/book-settings.svg","material-book-sync-outline":"material/book-sync-outline.svg","material-book-sync":"material/book-sync.svg","material-book-variant":"material/book-variant.svg","material-book":"material/book.svg","material-bookmark-box-multiple-outline":"material/bookmark-box-multiple-outline.svg","material-bookmark-box-multiple":"material/bookmark-box-multiple.svg","material-bookmark-box-outline":"material/bookmark-box-outline.svg","material-bookmark-box":"material/bookmark-box.svg","material-bookmark-check-outline":"material/bookmark-check-outline.svg","material-bookmark-check":"material/bookmark-check.svg","material-bookmark-minus-outline":"material/bookmark-minus-outline.svg","material-bookmark-minus":"material/bookmark-minus.svg","material-bookmark-multiple-outline":"material/bookmark-multiple-outline.svg","material-bookmark-multiple":"material/bookmark-multiple.svg","material-bookmark-music-outline":"material/bookmark-music-outline.svg","material-bookmark-music":"material/bookmark-music.svg","material-bookmark-off-outline":"material/bookmark-off-outline.svg","material-bookmark-off":"material/bookmark-off.svg","material-bookmark-outline":"material/bookmark-outline.svg","material-bookmark-plus-outline":"material/bookmark-plus-outline.svg","material-bookmark-plus":"material/bookmark-plus.svg","material-bookmark-remove-outline":"material/bookmark-remove-outline.svg","material-bookmark-remove":"material/bookmark-remove.svg","material-bookmark":"material/bookmark.svg","material-bookshelf":"material/bookshelf.svg","material-boom-gate-alert-outline":"material/boom-gate-alert-outline.svg","material-boom-gate-alert":"material/boom-gate-alert.svg","material-boom-gate-arrow-down-outline":"material/boom-gate-arrow-down-outline.svg","material-boom-gate-arrow-down":"material/boom-gate-arrow-down.svg","material-boom-gate-arrow-up-outline":"material/boom-gate-arrow-up-outline.svg","material-boom-gate-arrow-up":"material/boom-gate-arrow-up.svg","material-boom-gate-outline":"material/boom-gate-outline.svg","material-boom-gate-up-outline":"material/boom-gate-up-outline.svg","material-boom-gate-up":"material/boom-gate-up.svg","material-boom-gate":"material/boom-gate.svg","material-boombox":"material/boombox.svg","material-boomerang":"material/boomerang.svg","material-bootstrap":"material/bootstrap.svg","material-border-all-variant":"material/border-all-variant.svg","material-border-all":"material/border-all.svg","material-border-bottom-variant":"material/border-bottom-variant.svg","material-border-bottom":"material/border-bottom.svg","material-border-color":"material/border-color.svg","material-border-horizontal":"material/border-horizontal.svg","material-border-inside":"material/border-inside.svg","material-border-left-variant":"material/border-left-variant.svg","material-border-left":"material/border-left.svg","material-border-none-variant":"material/border-none-variant.svg","material-border-none":"material/border-none.svg","material-border-outside":"material/border-outside.svg","material-border-radius":"material/border-radius.svg","material-border-right-variant":"material/border-right-variant.svg","material-border-right":"material/border-right.svg","material-border-style":"material/border-style.svg","material-border-top-variant":"material/border-top-variant.svg","material-border-top":"material/border-top.svg","material-border-vertical":"material/border-vertical.svg","material-bottle-soda-classic-outline":"material/bottle-soda-classic-outline.svg","material-bottle-soda-classic":"material/bottle-soda-classic.svg","material-bottle-soda-outline":"material/bottle-soda-outline.svg","material-bottle-soda":"material/bottle-soda.svg","material-bottle-tonic-outline":"material/bottle-tonic-outline.svg","material-bottle-tonic-plus-outline":"material/bottle-tonic-plus-outline.svg","material-bottle-tonic-plus":"material/bottle-tonic-plus.svg","material-bottle-tonic-skull-outline":"material/bottle-tonic-skull-outline.svg","material-bottle-tonic-skull":"material/bottle-tonic-skull.svg","material-bottle-tonic":"material/bottle-tonic.svg","material-bottle-wine-outline":"material/bottle-wine-outline.svg","material-bottle-wine":"material/bottle-wine.svg","material-bow-arrow":"material/bow-arrow.svg","material-bow-tie":"material/bow-tie.svg","material-bowl-mix-outline":"material/bowl-mix-outline.svg","material-bowl-mix":"material/bowl-mix.svg","material-bowl-outline":"material/bowl-outline.svg","material-bowl":"material/bowl.svg","material-bowling":"material/bowling.svg","material-box-cutter-off":"material/box-cutter-off.svg","material-box-cutter":"material/box-cutter.svg","material-box-shadow":"material/box-shadow.svg","material-box":"material/box.svg","material-boxing-glove":"material/boxing-glove.svg","material-braille":"material/braille.svg","material-brain":"material/brain.svg","material-bread-slice-outline":"material/bread-slice-outline.svg","material-bread-slice":"material/bread-slice.svg","material-bridge":"material/bridge.svg","material-briefcase-account-outline":"material/briefcase-account-outline.svg","material-briefcase-account":"material/briefcase-account.svg","material-briefcase-arrow-left-right-outline":"material/briefcase-arrow-left-right-outline.svg","material-briefcase-arrow-left-right":"material/briefcase-arrow-left-right.svg","material-briefcase-arrow-up-down-outline":"material/briefcase-arrow-up-down-outline.svg","material-briefcase-arrow-up-down":"material/briefcase-arrow-up-down.svg","material-briefcase-check-outline":"material/briefcase-check-outline.svg","material-briefcase-check":"material/briefcase-check.svg","material-briefcase-clock-outline":"material/briefcase-clock-outline.svg","material-briefcase-clock":"material/briefcase-clock.svg","material-briefcase-download-outline":"material/briefcase-download-outline.svg","material-briefcase-download":"material/briefcase-download.svg","material-briefcase-edit-outline":"material/briefcase-edit-outline.svg","material-briefcase-edit":"material/briefcase-edit.svg","material-briefcase-eye-outline":"material/briefcase-eye-outline.svg","material-briefcase-eye":"material/briefcase-eye.svg","material-briefcase-minus-outline":"material/briefcase-minus-outline.svg","material-briefcase-minus":"material/briefcase-minus.svg","material-briefcase-off-outline":"material/briefcase-off-outline.svg","material-briefcase-off":"material/briefcase-off.svg","material-briefcase-outline":"material/briefcase-outline.svg","material-briefcase-plus-outline":"material/briefcase-plus-outline.svg","material-briefcase-plus":"material/briefcase-plus.svg","material-briefcase-remove-outline":"material/briefcase-remove-outline.svg","material-briefcase-remove":"material/briefcase-remove.svg","material-briefcase-search-outline":"material/briefcase-search-outline.svg","material-briefcase-search":"material/briefcase-search.svg","material-briefcase-upload-outline":"material/briefcase-upload-outline.svg","material-briefcase-upload":"material/briefcase-upload.svg","material-briefcase-variant-off-outline":"material/briefcase-variant-off-outline.svg","material-briefcase-variant-off":"material/briefcase-variant-off.svg","material-briefcase-variant-outline":"material/briefcase-variant-outline.svg","material-briefcase-variant":"material/briefcase-variant.svg","material-briefcase":"material/briefcase.svg","material-brightness-1":"material/brightness-1.svg","material-brightness-2":"material/brightness-2.svg","material-brightness-3":"material/brightness-3.svg","material-brightness-4":"material/brightness-4.svg","material-brightness-5":"material/brightness-5.svg","material-brightness-6":"material/brightness-6.svg","material-brightness-7":"material/brightness-7.svg","material-brightness-auto":"material/brightness-auto.svg","material-brightness-percent":"material/brightness-percent.svg","material-broadcast-off":"material/broadcast-off.svg","material-broadcast":"material/broadcast.svg","material-broom":"material/broom.svg","material-brush-off":"material/brush-off.svg","material-brush-outline":"material/brush-outline.svg","material-brush-variant":"material/brush-variant.svg","material-brush":"material/brush.svg","material-bucket-outline":"material/bucket-outline.svg","material-bucket":"material/bucket.svg","material-buffet":"material/buffet.svg","material-bug-check-outline":"material/bug-check-outline.svg","material-bug-check":"material/bug-check.svg","material-bug-outline":"material/bug-outline.svg","material-bug-pause-outline":"material/bug-pause-outline.svg","material-bug-pause":"material/bug-pause.svg","material-bug-play-outline":"material/bug-play-outline.svg","material-bug-play":"material/bug-play.svg","material-bug-stop-outline":"material/bug-stop-outline.svg","material-bug-stop":"material/bug-stop.svg","material-bug":"material/bug.svg","material-bugle":"material/bugle.svg","material-bulkhead-light":"material/bulkhead-light.svg","material-bulldozer":"material/bulldozer.svg","material-bullet":"material/bullet.svg","material-bulletin-board":"material/bulletin-board.svg","material-bullhorn-outline":"material/bullhorn-outline.svg","material-bullhorn-variant-outline":"material/bullhorn-variant-outline.svg","material-bullhorn-variant":"material/bullhorn-variant.svg","material-bullhorn":"material/bullhorn.svg","material-bullseye-arrow":"material/bullseye-arrow.svg","material-bullseye":"material/bullseye.svg","material-bulma":"material/bulma.svg","material-bunk-bed-outline":"material/bunk-bed-outline.svg","material-bunk-bed":"material/bunk-bed.svg","material-bus-alert":"material/bus-alert.svg","material-bus-articulated-end":"material/bus-articulated-end.svg","material-bus-articulated-front":"material/bus-articulated-front.svg","material-bus-clock":"material/bus-clock.svg","material-bus-double-decker":"material/bus-double-decker.svg","material-bus-electric":"material/bus-electric.svg","material-bus-marker":"material/bus-marker.svg","material-bus-multiple":"material/bus-multiple.svg","material-bus-school":"material/bus-school.svg","material-bus-side":"material/bus-side.svg","material-bus-stop-covered":"material/bus-stop-covered.svg","material-bus-stop-uncovered":"material/bus-stop-uncovered.svg","material-bus-stop":"material/bus-stop.svg","material-bus":"material/bus.svg","material-butterfly-outline":"material/butterfly-outline.svg","material-butterfly":"material/butterfly.svg","material-button-cursor":"material/button-cursor.svg","material-button-pointer":"material/button-pointer.svg","material-cabin-a-frame":"material/cabin-a-frame.svg","material-cable-data":"material/cable-data.svg","material-cached":"material/cached.svg","material-cactus":"material/cactus.svg","material-cake-layered":"material/cake-layered.svg","material-cake-variant-outline":"material/cake-variant-outline.svg","material-cake-variant":"material/cake-variant.svg","material-cake":"material/cake.svg","material-calculator-variant-outline":"material/calculator-variant-outline.svg","material-calculator-variant":"material/calculator-variant.svg","material-calculator":"material/calculator.svg","material-calendar-account-outline":"material/calendar-account-outline.svg","material-calendar-account":"material/calendar-account.svg","material-calendar-alert-outline":"material/calendar-alert-outline.svg","material-calendar-alert":"material/calendar-alert.svg","material-calendar-arrow-left":"material/calendar-arrow-left.svg","material-calendar-arrow-right":"material/calendar-arrow-right.svg","material-calendar-badge-outline":"material/calendar-badge-outline.svg","material-calendar-badge":"material/calendar-badge.svg","material-calendar-blank-multiple":"material/calendar-blank-multiple.svg","material-calendar-blank-outline":"material/calendar-blank-outline.svg","material-calendar-blank":"material/calendar-blank.svg","material-calendar-check-outline":"material/calendar-check-outline.svg","material-calendar-check":"material/calendar-check.svg","material-calendar-clock-outline":"material/calendar-clock-outline.svg","material-calendar-clock":"material/calendar-clock.svg","material-calendar-collapse-horizontal-outline":"material/calendar-collapse-horizontal-outline.svg","material-calendar-collapse-horizontal":"material/calendar-collapse-horizontal.svg","material-calendar-cursor-outline":"material/calendar-cursor-outline.svg","material-calendar-cursor":"material/calendar-cursor.svg","material-calendar-edit-outline":"material/calendar-edit-outline.svg","material-calendar-edit":"material/calendar-edit.svg","material-calendar-end-outline":"material/calendar-end-outline.svg","material-calendar-end":"material/calendar-end.svg","material-calendar-expand-horizontal-outline":"material/calendar-expand-horizontal-outline.svg","material-calendar-expand-horizontal":"material/calendar-expand-horizontal.svg","material-calendar-export-outline":"material/calendar-export-outline.svg","material-calendar-export":"material/calendar-export.svg","material-calendar-filter-outline":"material/calendar-filter-outline.svg","material-calendar-filter":"material/calendar-filter.svg","material-calendar-heart-outline":"material/calendar-heart-outline.svg","material-calendar-heart":"material/calendar-heart.svg","material-calendar-import-outline":"material/calendar-import-outline.svg","material-calendar-import":"material/calendar-import.svg","material-calendar-lock-open-outline":"material/calendar-lock-open-outline.svg","material-calendar-lock-open":"material/calendar-lock-open.svg","material-calendar-lock-outline":"material/calendar-lock-outline.svg","material-calendar-lock":"material/calendar-lock.svg","material-calendar-minus-outline":"material/calendar-minus-outline.svg","material-calendar-minus":"material/calendar-minus.svg","material-calendar-month-outline":"material/calendar-month-outline.svg","material-calendar-month":"material/calendar-month.svg","material-calendar-multiple-check":"material/calendar-multiple-check.svg","material-calendar-multiple":"material/calendar-multiple.svg","material-calendar-multiselect-outline":"material/calendar-multiselect-outline.svg","material-calendar-multiselect":"material/calendar-multiselect.svg","material-calendar-outline":"material/calendar-outline.svg","material-calendar-plus-outline":"material/calendar-plus-outline.svg","material-calendar-plus":"material/calendar-plus.svg","material-calendar-question-outline":"material/calendar-question-outline.svg","material-calendar-question":"material/calendar-question.svg","material-calendar-range-outline":"material/calendar-range-outline.svg","material-calendar-range":"material/calendar-range.svg","material-calendar-refresh-outline":"material/calendar-refresh-outline.svg","material-calendar-refresh":"material/calendar-refresh.svg","material-calendar-remove-outline":"material/calendar-remove-outline.svg","material-calendar-remove":"material/calendar-remove.svg","material-calendar-search-outline":"material/calendar-search-outline.svg","material-calendar-search":"material/calendar-search.svg","material-calendar-star-outline":"material/calendar-star-outline.svg","material-calendar-star":"material/calendar-star.svg","material-calendar-start-outline":"material/calendar-start-outline.svg","material-calendar-start":"material/calendar-start.svg","material-calendar-sync-outline":"material/calendar-sync-outline.svg","material-calendar-sync":"material/calendar-sync.svg","material-calendar-text-outline":"material/calendar-text-outline.svg","material-calendar-text":"material/calendar-text.svg","material-calendar-today-outline":"material/calendar-today-outline.svg","material-calendar-today":"material/calendar-today.svg","material-calendar-week-begin-outline":"material/calendar-week-begin-outline.svg","material-calendar-week-begin":"material/calendar-week-begin.svg","material-calendar-week-outline":"material/calendar-week-outline.svg","material-calendar-week":"material/calendar-week.svg","material-calendar-weekend-outline":"material/calendar-weekend-outline.svg","material-calendar-weekend":"material/calendar-weekend.svg","material-calendar":"material/calendar.svg","material-call-made":"material/call-made.svg","material-call-merge":"material/call-merge.svg","material-call-missed":"material/call-missed.svg","material-call-received":"material/call-received.svg","material-call-split":"material/call-split.svg","material-camcorder-off":"material/camcorder-off.svg","material-camcorder":"material/camcorder.svg","material-camera-account":"material/camera-account.svg","material-camera-burst":"material/camera-burst.svg","material-camera-control":"material/camera-control.svg","material-camera-document-off":"material/camera-document-off.svg","material-camera-document":"material/camera-document.svg","material-camera-enhance-outline":"material/camera-enhance-outline.svg","material-camera-enhance":"material/camera-enhance.svg","material-camera-flip-outline":"material/camera-flip-outline.svg","material-camera-flip":"material/camera-flip.svg","material-camera-front-variant":"material/camera-front-variant.svg","material-camera-front":"material/camera-front.svg","material-camera-gopro":"material/camera-gopro.svg","material-camera-image":"material/camera-image.svg","material-camera-iris":"material/camera-iris.svg","material-camera-lock-outline":"material/camera-lock-outline.svg","material-camera-lock":"material/camera-lock.svg","material-camera-marker-outline":"material/camera-marker-outline.svg","material-camera-marker":"material/camera-marker.svg","material-camera-metering-center":"material/camera-metering-center.svg","material-camera-metering-matrix":"material/camera-metering-matrix.svg","material-camera-metering-partial":"material/camera-metering-partial.svg","material-camera-metering-spot":"material/camera-metering-spot.svg","material-camera-off-outline":"material/camera-off-outline.svg","material-camera-off":"material/camera-off.svg","material-camera-outline":"material/camera-outline.svg","material-camera-party-mode":"material/camera-party-mode.svg","material-camera-plus-outline":"material/camera-plus-outline.svg","material-camera-plus":"material/camera-plus.svg","material-camera-rear-variant":"material/camera-rear-variant.svg","material-camera-rear":"material/camera-rear.svg","material-camera-retake-outline":"material/camera-retake-outline.svg","material-camera-retake":"material/camera-retake.svg","material-camera-switch-outline":"material/camera-switch-outline.svg","material-camera-switch":"material/camera-switch.svg","material-camera-timer":"material/camera-timer.svg","material-camera-wireless-outline":"material/camera-wireless-outline.svg","material-camera-wireless":"material/camera-wireless.svg","material-camera":"material/camera.svg","material-campfire":"material/campfire.svg","material-cancel":"material/cancel.svg","material-candelabra-fire":"material/candelabra-fire.svg","material-candelabra":"material/candelabra.svg","material-candle":"material/candle.svg","material-candy-off-outline":"material/candy-off-outline.svg","material-candy-off":"material/candy-off.svg","material-candy-outline":"material/candy-outline.svg","material-candy":"material/candy.svg","material-candycane":"material/candycane.svg","material-cannabis-off":"material/cannabis-off.svg","material-cannabis":"material/cannabis.svg","material-caps-lock":"material/caps-lock.svg","material-car-2-plus":"material/car-2-plus.svg","material-car-3-plus":"material/car-3-plus.svg","material-car-arrow-left":"material/car-arrow-left.svg","material-car-arrow-right":"material/car-arrow-right.svg","material-car-back":"material/car-back.svg","material-car-battery":"material/car-battery.svg","material-car-brake-abs":"material/car-brake-abs.svg","material-car-brake-alert":"material/car-brake-alert.svg","material-car-brake-fluid-level":"material/car-brake-fluid-level.svg","material-car-brake-hold":"material/car-brake-hold.svg","material-car-brake-low-pressure":"material/car-brake-low-pressure.svg","material-car-brake-parking":"material/car-brake-parking.svg","material-car-brake-retarder":"material/car-brake-retarder.svg","material-car-brake-temperature":"material/car-brake-temperature.svg","material-car-brake-worn-linings":"material/car-brake-worn-linings.svg","material-car-child-seat":"material/car-child-seat.svg","material-car-clock":"material/car-clock.svg","material-car-clutch":"material/car-clutch.svg","material-car-cog":"material/car-cog.svg","material-car-connected":"material/car-connected.svg","material-car-convertible":"material/car-convertible.svg","material-car-coolant-level":"material/car-coolant-level.svg","material-car-cruise-control":"material/car-cruise-control.svg","material-car-defrost-front":"material/car-defrost-front.svg","material-car-defrost-rear":"material/car-defrost-rear.svg","material-car-door-lock":"material/car-door-lock.svg","material-car-door":"material/car-door.svg","material-car-electric-outline":"material/car-electric-outline.svg","material-car-electric":"material/car-electric.svg","material-car-emergency":"material/car-emergency.svg","material-car-esp":"material/car-esp.svg","material-car-estate":"material/car-estate.svg","material-car-hatchback":"material/car-hatchback.svg","material-car-info":"material/car-info.svg","material-car-key":"material/car-key.svg","material-car-lifted-pickup":"material/car-lifted-pickup.svg","material-car-light-alert":"material/car-light-alert.svg","material-car-light-dimmed":"material/car-light-dimmed.svg","material-car-light-fog":"material/car-light-fog.svg","material-car-light-high":"material/car-light-high.svg","material-car-limousine":"material/car-limousine.svg","material-car-multiple":"material/car-multiple.svg","material-car-off":"material/car-off.svg","material-car-outline":"material/car-outline.svg","material-car-parking-lights":"material/car-parking-lights.svg","material-car-pickup":"material/car-pickup.svg","material-car-search-outline":"material/car-search-outline.svg","material-car-search":"material/car-search.svg","material-car-seat-cooler":"material/car-seat-cooler.svg","material-car-seat-heater":"material/car-seat-heater.svg","material-car-seat":"material/car-seat.svg","material-car-select":"material/car-select.svg","material-car-settings":"material/car-settings.svg","material-car-shift-pattern":"material/car-shift-pattern.svg","material-car-side":"material/car-side.svg","material-car-speed-limiter":"material/car-speed-limiter.svg","material-car-sports":"material/car-sports.svg","material-car-tire-alert":"material/car-tire-alert.svg","material-car-traction-control":"material/car-traction-control.svg","material-car-turbocharger":"material/car-turbocharger.svg","material-car-wash":"material/car-wash.svg","material-car-windshield-outline":"material/car-windshield-outline.svg","material-car-windshield":"material/car-windshield.svg","material-car-wireless":"material/car-wireless.svg","material-car-wrench":"material/car-wrench.svg","material-car":"material/car.svg","material-carabiner":"material/carabiner.svg","material-caravan":"material/caravan.svg","material-card-account-details-outline":"material/card-account-details-outline.svg","material-card-account-details-star-outline":"material/card-account-details-star-outline.svg","material-card-account-details-star":"material/card-account-details-star.svg","material-card-account-details":"material/card-account-details.svg","material-card-account-mail-outline":"material/card-account-mail-outline.svg","material-card-account-mail":"material/card-account-mail.svg","material-card-account-phone-outline":"material/card-account-phone-outline.svg","material-card-account-phone":"material/card-account-phone.svg","material-card-bulleted-off-outline":"material/card-bulleted-off-outline.svg","material-card-bulleted-off":"material/card-bulleted-off.svg","material-card-bulleted-outline":"material/card-bulleted-outline.svg","material-card-bulleted-settings-outline":"material/card-bulleted-settings-outline.svg","material-card-bulleted-settings":"material/card-bulleted-settings.svg","material-card-bulleted":"material/card-bulleted.svg","material-card-minus-outline":"material/card-minus-outline.svg","material-card-minus":"material/card-minus.svg","material-card-multiple-outline":"material/card-multiple-outline.svg","material-card-multiple":"material/card-multiple.svg","material-card-off-outline":"material/card-off-outline.svg","material-card-off":"material/card-off.svg","material-card-outline":"material/card-outline.svg","material-card-plus-outline":"material/card-plus-outline.svg","material-card-plus":"material/card-plus.svg","material-card-remove-outline":"material/card-remove-outline.svg","material-card-remove":"material/card-remove.svg","material-card-search-outline":"material/card-search-outline.svg","material-card-search":"material/card-search.svg","material-card-text-outline":"material/card-text-outline.svg","material-card-text":"material/card-text.svg","material-card":"material/card.svg","material-cards-club-outline":"material/cards-club-outline.svg","material-cards-club":"material/cards-club.svg","material-cards-diamond-outline":"material/cards-diamond-outline.svg","material-cards-diamond":"material/cards-diamond.svg","material-cards-heart-outline":"material/cards-heart-outline.svg","material-cards-heart":"material/cards-heart.svg","material-cards-outline":"material/cards-outline.svg","material-cards-playing-club-multiple-outline":"material/cards-playing-club-multiple-outline.svg","material-cards-playing-club-multiple":"material/cards-playing-club-multiple.svg","material-cards-playing-club-outline":"material/cards-playing-club-outline.svg","material-cards-playing-club":"material/cards-playing-club.svg","material-cards-playing-diamond-multiple-outline":"material/cards-playing-diamond-multiple-outline.svg","material-cards-playing-diamond-multiple":"material/cards-playing-diamond-multiple.svg","material-cards-playing-diamond-outline":"material/cards-playing-diamond-outline.svg","material-cards-playing-diamond":"material/cards-playing-diamond.svg","material-cards-playing-heart-multiple-outline":"material/cards-playing-heart-multiple-outline.svg","material-cards-playing-heart-multiple":"material/cards-playing-heart-multiple.svg","material-cards-playing-heart-outline":"material/cards-playing-heart-outline.svg","material-cards-playing-heart":"material/cards-playing-heart.svg","material-cards-playing-outline":"material/cards-playing-outline.svg","material-cards-playing-spade-multiple-outline":"material/cards-playing-spade-multiple-outline.svg","material-cards-playing-spade-multiple":"material/cards-playing-spade-multiple.svg","material-cards-playing-spade-outline":"material/cards-playing-spade-outline.svg","material-cards-playing-spade":"material/cards-playing-spade.svg","material-cards-playing":"material/cards-playing.svg","material-cards-spade-outline":"material/cards-spade-outline.svg","material-cards-spade":"material/cards-spade.svg","material-cards-variant":"material/cards-variant.svg","material-cards":"material/cards.svg","material-carrot":"material/carrot.svg","material-cart-arrow-down":"material/cart-arrow-down.svg","material-cart-arrow-right":"material/cart-arrow-right.svg","material-cart-arrow-up":"material/cart-arrow-up.svg","material-cart-check":"material/cart-check.svg","material-cart-heart":"material/cart-heart.svg","material-cart-minus":"material/cart-minus.svg","material-cart-off":"material/cart-off.svg","material-cart-outline":"material/cart-outline.svg","material-cart-percent":"material/cart-percent.svg","material-cart-plus":"material/cart-plus.svg","material-cart-remove":"material/cart-remove.svg","material-cart-variant":"material/cart-variant.svg","material-cart":"material/cart.svg","material-case-sensitive-alt":"material/case-sensitive-alt.svg","material-cash-100":"material/cash-100.svg","material-cash-check":"material/cash-check.svg","material-cash-clock":"material/cash-clock.svg","material-cash-fast":"material/cash-fast.svg","material-cash-lock-open":"material/cash-lock-open.svg","material-cash-lock":"material/cash-lock.svg","material-cash-marker":"material/cash-marker.svg","material-cash-minus":"material/cash-minus.svg","material-cash-multiple":"material/cash-multiple.svg","material-cash-plus":"material/cash-plus.svg","material-cash-refund":"material/cash-refund.svg","material-cash-register":"material/cash-register.svg","material-cash-remove":"material/cash-remove.svg","material-cash-sync":"material/cash-sync.svg","material-cash":"material/cash.svg","material-cassette":"material/cassette.svg","material-cast-audio-variant":"material/cast-audio-variant.svg","material-cast-audio":"material/cast-audio.svg","material-cast-connected":"material/cast-connected.svg","material-cast-education":"material/cast-education.svg","material-cast-off":"material/cast-off.svg","material-cast-variant":"material/cast-variant.svg","material-cast":"material/cast.svg","material-castle":"material/castle.svg","material-cat":"material/cat.svg","material-cctv-off":"material/cctv-off.svg","material-cctv":"material/cctv.svg","material-ceiling-fan-light":"material/ceiling-fan-light.svg","material-ceiling-fan":"material/ceiling-fan.svg","material-ceiling-light-multiple-outline":"material/ceiling-light-multiple-outline.svg","material-ceiling-light-multiple":"material/ceiling-light-multiple.svg","material-ceiling-light-outline":"material/ceiling-light-outline.svg","material-ceiling-light":"material/ceiling-light.svg","material-cellphone-arrow-down-variant":"material/cellphone-arrow-down-variant.svg","material-cellphone-arrow-down":"material/cellphone-arrow-down.svg","material-cellphone-basic":"material/cellphone-basic.svg","material-cellphone-charging":"material/cellphone-charging.svg","material-cellphone-check":"material/cellphone-check.svg","material-cellphone-cog":"material/cellphone-cog.svg","material-cellphone-dock":"material/cellphone-dock.svg","material-cellphone-information":"material/cellphone-information.svg","material-cellphone-key":"material/cellphone-key.svg","material-cellphone-link-off":"material/cellphone-link-off.svg","material-cellphone-link":"material/cellphone-link.svg","material-cellphone-lock":"material/cellphone-lock.svg","material-cellphone-marker":"material/cellphone-marker.svg","material-cellphone-message-off":"material/cellphone-message-off.svg","material-cellphone-message":"material/cellphone-message.svg","material-cellphone-nfc-off":"material/cellphone-nfc-off.svg","material-cellphone-nfc":"material/cellphone-nfc.svg","material-cellphone-off":"material/cellphone-off.svg","material-cellphone-play":"material/cellphone-play.svg","material-cellphone-remove":"material/cellphone-remove.svg","material-cellphone-screenshot":"material/cellphone-screenshot.svg","material-cellphone-settings":"material/cellphone-settings.svg","material-cellphone-sound":"material/cellphone-sound.svg","material-cellphone-text":"material/cellphone-text.svg","material-cellphone-wireless":"material/cellphone-wireless.svg","material-cellphone":"material/cellphone.svg","material-centos":"material/centos.svg","material-certificate-outline":"material/certificate-outline.svg","material-certificate":"material/certificate.svg","material-chair-rolling":"material/chair-rolling.svg","material-chair-school":"material/chair-school.svg","material-chandelier":"material/chandelier.svg","material-charity":"material/charity.svg","material-chart-arc":"material/chart-arc.svg","material-chart-areaspline-variant":"material/chart-areaspline-variant.svg","material-chart-areaspline":"material/chart-areaspline.svg","material-chart-bar-stacked":"material/chart-bar-stacked.svg","material-chart-bar":"material/chart-bar.svg","material-chart-bell-curve-cumulative":"material/chart-bell-curve-cumulative.svg","material-chart-bell-curve":"material/chart-bell-curve.svg","material-chart-box-outline":"material/chart-box-outline.svg","material-chart-box-plus-outline":"material/chart-box-plus-outline.svg","material-chart-box":"material/chart-box.svg","material-chart-bubble":"material/chart-bubble.svg","material-chart-donut-variant":"material/chart-donut-variant.svg","material-chart-donut":"material/chart-donut.svg","material-chart-gantt":"material/chart-gantt.svg","material-chart-histogram":"material/chart-histogram.svg","material-chart-line-stacked":"material/chart-line-stacked.svg","material-chart-line-variant":"material/chart-line-variant.svg","material-chart-line":"material/chart-line.svg","material-chart-multiline":"material/chart-multiline.svg","material-chart-multiple":"material/chart-multiple.svg","material-chart-pie":"material/chart-pie.svg","material-chart-ppf":"material/chart-ppf.svg","material-chart-sankey-variant":"material/chart-sankey-variant.svg","material-chart-sankey":"material/chart-sankey.svg","material-chart-scatter-plot-hexbin":"material/chart-scatter-plot-hexbin.svg","material-chart-scatter-plot":"material/chart-scatter-plot.svg","material-chart-timeline-variant-shimmer":"material/chart-timeline-variant-shimmer.svg","material-chart-timeline-variant":"material/chart-timeline-variant.svg","material-chart-timeline":"material/chart-timeline.svg","material-chart-tree":"material/chart-tree.svg","material-chart-waterfall":"material/chart-waterfall.svg","material-chat-alert-outline":"material/chat-alert-outline.svg","material-chat-alert":"material/chat-alert.svg","material-chat-minus-outline":"material/chat-minus-outline.svg","material-chat-minus":"material/chat-minus.svg","material-chat-outline":"material/chat-outline.svg","material-chat-plus-outline":"material/chat-plus-outline.svg","material-chat-plus":"material/chat-plus.svg","material-chat-processing-outline":"material/chat-processing-outline.svg","material-chat-processing":"material/chat-processing.svg","material-chat-question-outline":"material/chat-question-outline.svg","material-chat-question":"material/chat-question.svg","material-chat-remove-outline":"material/chat-remove-outline.svg","material-chat-remove":"material/chat-remove.svg","material-chat-sleep-outline":"material/chat-sleep-outline.svg","material-chat-sleep":"material/chat-sleep.svg","material-chat":"material/chat.svg","material-check-all":"material/check-all.svg","material-check-bold":"material/check-bold.svg","material-check-circle-outline":"material/check-circle-outline.svg","material-check-circle":"material/check-circle.svg","material-check-decagram-outline":"material/check-decagram-outline.svg","material-check-decagram":"material/check-decagram.svg","material-check-network-outline":"material/check-network-outline.svg","material-check-network":"material/check-network.svg","material-check-outline":"material/check-outline.svg","material-check-underline-circle-outline":"material/check-underline-circle-outline.svg","material-check-underline-circle":"material/check-underline-circle.svg","material-check-underline":"material/check-underline.svg","material-check":"material/check.svg","material-checkbook":"material/checkbook.svg","material-checkbox-blank-badge-outline":"material/checkbox-blank-badge-outline.svg","material-checkbox-blank-badge":"material/checkbox-blank-badge.svg","material-checkbox-blank-circle-outline":"material/checkbox-blank-circle-outline.svg","material-checkbox-blank-circle":"material/checkbox-blank-circle.svg","material-checkbox-blank-off-outline":"material/checkbox-blank-off-outline.svg","material-checkbox-blank-off":"material/checkbox-blank-off.svg","material-checkbox-blank-outline":"material/checkbox-blank-outline.svg","material-checkbox-blank":"material/checkbox-blank.svg","material-checkbox-intermediate-variant":"material/checkbox-intermediate-variant.svg","material-checkbox-intermediate":"material/checkbox-intermediate.svg","material-checkbox-marked-circle-outline":"material/checkbox-marked-circle-outline.svg","material-checkbox-marked-circle-plus-outline":"material/checkbox-marked-circle-plus-outline.svg","material-checkbox-marked-circle":"material/checkbox-marked-circle.svg","material-checkbox-marked-outline":"material/checkbox-marked-outline.svg","material-checkbox-marked":"material/checkbox-marked.svg","material-checkbox-multiple-blank-circle-outline":"material/checkbox-multiple-blank-circle-outline.svg","material-checkbox-multiple-blank-circle":"material/checkbox-multiple-blank-circle.svg","material-checkbox-multiple-blank-outline":"material/checkbox-multiple-blank-outline.svg","material-checkbox-multiple-blank":"material/checkbox-multiple-blank.svg","material-checkbox-multiple-marked-circle-outline":"material/checkbox-multiple-marked-circle-outline.svg","material-checkbox-multiple-marked-circle":"material/checkbox-multiple-marked-circle.svg","material-checkbox-multiple-marked-outline":"material/checkbox-multiple-marked-outline.svg","material-checkbox-multiple-marked":"material/checkbox-multiple-marked.svg","material-checkbox-multiple-outline":"material/checkbox-multiple-outline.svg","material-checkbox-outline":"material/checkbox-outline.svg","material-checkerboard-minus":"material/checkerboard-minus.svg","material-checkerboard-plus":"material/checkerboard-plus.svg","material-checkerboard-remove":"material/checkerboard-remove.svg","material-checkerboard":"material/checkerboard.svg","material-cheese-off":"material/cheese-off.svg","material-cheese":"material/cheese.svg","material-chef-hat":"material/chef-hat.svg","material-chemical-weapon":"material/chemical-weapon.svg","material-chess-bishop":"material/chess-bishop.svg","material-chess-king":"material/chess-king.svg","material-chess-knight":"material/chess-knight.svg","material-chess-pawn":"material/chess-pawn.svg","material-chess-queen":"material/chess-queen.svg","material-chess-rook":"material/chess-rook.svg","material-chevron-double-down":"material/chevron-double-down.svg","material-chevron-double-left":"material/chevron-double-left.svg","material-chevron-double-right":"material/chevron-double-right.svg","material-chevron-double-up":"material/chevron-double-up.svg","material-chevron-down-box-outline":"material/chevron-down-box-outline.svg","material-chevron-down-box":"material/chevron-down-box.svg","material-chevron-down-circle-outline":"material/chevron-down-circle-outline.svg","material-chevron-down-circle":"material/chevron-down-circle.svg","material-chevron-down":"material/chevron-down.svg","material-chevron-left-box-outline":"material/chevron-left-box-outline.svg","material-chevron-left-box":"material/chevron-left-box.svg","material-chevron-left-circle-outline":"material/chevron-left-circle-outline.svg","material-chevron-left-circle":"material/chevron-left-circle.svg","material-chevron-left":"material/chevron-left.svg","material-chevron-right-box-outline":"material/chevron-right-box-outline.svg","material-chevron-right-box":"material/chevron-right-box.svg","material-chevron-right-circle-outline":"material/chevron-right-circle-outline.svg","material-chevron-right-circle":"material/chevron-right-circle.svg","material-chevron-right":"material/chevron-right.svg","material-chevron-triple-down":"material/chevron-triple-down.svg","material-chevron-triple-left":"material/chevron-triple-left.svg","material-chevron-triple-right":"material/chevron-triple-right.svg","material-chevron-triple-up":"material/chevron-triple-up.svg","material-chevron-up-box-outline":"material/chevron-up-box-outline.svg","material-chevron-up-box":"material/chevron-up-box.svg","material-chevron-up-circle-outline":"material/chevron-up-circle-outline.svg","material-chevron-up-circle":"material/chevron-up-circle.svg","material-chevron-up":"material/chevron-up.svg","material-chili-alert-outline":"material/chili-alert-outline.svg","material-chili-alert":"material/chili-alert.svg","material-chili-hot-outline":"material/chili-hot-outline.svg","material-chili-hot":"material/chili-hot.svg","material-chili-medium-outline":"material/chili-medium-outline.svg","material-chili-medium":"material/chili-medium.svg","material-chili-mild-outline":"material/chili-mild-outline.svg","material-chili-mild":"material/chili-mild.svg","material-chili-off-outline":"material/chili-off-outline.svg","material-chili-off":"material/chili-off.svg","material-chip":"material/chip.svg","material-church-outline":"material/church-outline.svg","material-church":"material/church.svg","material-cigar-off":"material/cigar-off.svg","material-cigar":"material/cigar.svg","material-circle-box-outline":"material/circle-box-outline.svg","material-circle-box":"material/circle-box.svg","material-circle-double":"material/circle-double.svg","material-circle-edit-outline":"material/circle-edit-outline.svg","material-circle-expand":"material/circle-expand.svg","material-circle-half-full":"material/circle-half-full.svg","material-circle-half":"material/circle-half.svg","material-circle-medium":"material/circle-medium.svg","material-circle-multiple-outline":"material/circle-multiple-outline.svg","material-circle-multiple":"material/circle-multiple.svg","material-circle-off-outline":"material/circle-off-outline.svg","material-circle-opacity":"material/circle-opacity.svg","material-circle-outline":"material/circle-outline.svg","material-circle-slice-1":"material/circle-slice-1.svg","material-circle-slice-2":"material/circle-slice-2.svg","material-circle-slice-3":"material/circle-slice-3.svg","material-circle-slice-4":"material/circle-slice-4.svg","material-circle-slice-5":"material/circle-slice-5.svg","material-circle-slice-6":"material/circle-slice-6.svg","material-circle-slice-7":"material/circle-slice-7.svg","material-circle-slice-8":"material/circle-slice-8.svg","material-circle-small":"material/circle-small.svg","material-circle":"material/circle.svg","material-circular-saw":"material/circular-saw.svg","material-city-variant-outline":"material/city-variant-outline.svg","material-city-variant":"material/city-variant.svg","material-city":"material/city.svg","material-clipboard-account-outline":"material/clipboard-account-outline.svg","material-clipboard-account":"material/clipboard-account.svg","material-clipboard-alert-outline":"material/clipboard-alert-outline.svg","material-clipboard-alert":"material/clipboard-alert.svg","material-clipboard-arrow-down-outline":"material/clipboard-arrow-down-outline.svg","material-clipboard-arrow-down":"material/clipboard-arrow-down.svg","material-clipboard-arrow-left-outline":"material/clipboard-arrow-left-outline.svg","material-clipboard-arrow-left":"material/clipboard-arrow-left.svg","material-clipboard-arrow-right-outline":"material/clipboard-arrow-right-outline.svg","material-clipboard-arrow-right":"material/clipboard-arrow-right.svg","material-clipboard-arrow-up-outline":"material/clipboard-arrow-up-outline.svg","material-clipboard-arrow-up":"material/clipboard-arrow-up.svg","material-clipboard-check-multiple-outline":"material/clipboard-check-multiple-outline.svg","material-clipboard-check-multiple":"material/clipboard-check-multiple.svg","material-clipboard-check-outline":"material/clipboard-check-outline.svg","material-clipboard-check":"material/clipboard-check.svg","material-clipboard-clock-outline":"material/clipboard-clock-outline.svg","material-clipboard-clock":"material/clipboard-clock.svg","material-clipboard-edit-outline":"material/clipboard-edit-outline.svg","material-clipboard-edit":"material/clipboard-edit.svg","material-clipboard-file-outline":"material/clipboard-file-outline.svg","material-clipboard-file":"material/clipboard-file.svg","material-clipboard-flow-outline":"material/clipboard-flow-outline.svg","material-clipboard-flow":"material/clipboard-flow.svg","material-clipboard-list-outline":"material/clipboard-list-outline.svg","material-clipboard-list":"material/clipboard-list.svg","material-clipboard-minus-outline":"material/clipboard-minus-outline.svg","material-clipboard-minus":"material/clipboard-minus.svg","material-clipboard-multiple-outline":"material/clipboard-multiple-outline.svg","material-clipboard-multiple":"material/clipboard-multiple.svg","material-clipboard-off-outline":"material/clipboard-off-outline.svg","material-clipboard-off":"material/clipboard-off.svg","material-clipboard-outline":"material/clipboard-outline.svg","material-clipboard-play-multiple-outline":"material/clipboard-play-multiple-outline.svg","material-clipboard-play-multiple":"material/clipboard-play-multiple.svg","material-clipboard-play-outline":"material/clipboard-play-outline.svg","material-clipboard-play":"material/clipboard-play.svg","material-clipboard-plus-outline":"material/clipboard-plus-outline.svg","material-clipboard-plus":"material/clipboard-plus.svg","material-clipboard-pulse-outline":"material/clipboard-pulse-outline.svg","material-clipboard-pulse":"material/clipboard-pulse.svg","material-clipboard-remove-outline":"material/clipboard-remove-outline.svg","material-clipboard-remove":"material/clipboard-remove.svg","material-clipboard-search-outline":"material/clipboard-search-outline.svg","material-clipboard-search":"material/clipboard-search.svg","material-clipboard-text-clock-outline":"material/clipboard-text-clock-outline.svg","material-clipboard-text-clock":"material/clipboard-text-clock.svg","material-clipboard-text-multiple-outline":"material/clipboard-text-multiple-outline.svg","material-clipboard-text-multiple":"material/clipboard-text-multiple.svg","material-clipboard-text-off-outline":"material/clipboard-text-off-outline.svg","material-clipboard-text-off":"material/clipboard-text-off.svg","material-clipboard-text-outline":"material/clipboard-text-outline.svg","material-clipboard-text-play-outline":"material/clipboard-text-play-outline.svg","material-clipboard-text-play":"material/clipboard-text-play.svg","material-clipboard-text-search-outline":"material/clipboard-text-search-outline.svg","material-clipboard-text-search":"material/clipboard-text-search.svg","material-clipboard-text":"material/clipboard-text.svg","material-clipboard":"material/clipboard.svg","material-clippy":"material/clippy.svg","material-clock-alert-outline":"material/clock-alert-outline.svg","material-clock-alert":"material/clock-alert.svg","material-clock-check-outline":"material/clock-check-outline.svg","material-clock-check":"material/clock-check.svg","material-clock-digital":"material/clock-digital.svg","material-clock-edit-outline":"material/clock-edit-outline.svg","material-clock-edit":"material/clock-edit.svg","material-clock-end":"material/clock-end.svg","material-clock-fast":"material/clock-fast.svg","material-clock-in":"material/clock-in.svg","material-clock-minus-outline":"material/clock-minus-outline.svg","material-clock-minus":"material/clock-minus.svg","material-clock-out":"material/clock-out.svg","material-clock-outline":"material/clock-outline.svg","material-clock-plus-outline":"material/clock-plus-outline.svg","material-clock-plus":"material/clock-plus.svg","material-clock-remove-outline":"material/clock-remove-outline.svg","material-clock-remove":"material/clock-remove.svg","material-clock-start":"material/clock-start.svg","material-clock-time-eight-outline":"material/clock-time-eight-outline.svg","material-clock-time-eight":"material/clock-time-eight.svg","material-clock-time-eleven-outline":"material/clock-time-eleven-outline.svg","material-clock-time-eleven":"material/clock-time-eleven.svg","material-clock-time-five-outline":"material/clock-time-five-outline.svg","material-clock-time-five":"material/clock-time-five.svg","material-clock-time-four-outline":"material/clock-time-four-outline.svg","material-clock-time-four":"material/clock-time-four.svg","material-clock-time-nine-outline":"material/clock-time-nine-outline.svg","material-clock-time-nine":"material/clock-time-nine.svg","material-clock-time-one-outline":"material/clock-time-one-outline.svg","material-clock-time-one":"material/clock-time-one.svg","material-clock-time-seven-outline":"material/clock-time-seven-outline.svg","material-clock-time-seven":"material/clock-time-seven.svg","material-clock-time-six-outline":"material/clock-time-six-outline.svg","material-clock-time-six":"material/clock-time-six.svg","material-clock-time-ten-outline":"material/clock-time-ten-outline.svg","material-clock-time-ten":"material/clock-time-ten.svg","material-clock-time-three-outline":"material/clock-time-three-outline.svg","material-clock-time-three":"material/clock-time-three.svg","material-clock-time-twelve-outline":"material/clock-time-twelve-outline.svg","material-clock-time-twelve":"material/clock-time-twelve.svg","material-clock-time-two-outline":"material/clock-time-two-outline.svg","material-clock-time-two":"material/clock-time-two.svg","material-clock":"material/clock.svg","material-close-box-multiple-outline":"material/close-box-multiple-outline.svg","material-close-box-multiple":"material/close-box-multiple.svg","material-close-box-outline":"material/close-box-outline.svg","material-close-box":"material/close-box.svg","material-close-circle-multiple-outline":"material/close-circle-multiple-outline.svg","material-close-circle-multiple":"material/close-circle-multiple.svg","material-close-circle-outline":"material/close-circle-outline.svg","material-close-circle":"material/close-circle.svg","material-close-network-outline":"material/close-network-outline.svg","material-close-network":"material/close-network.svg","material-close-octagon-outline":"material/close-octagon-outline.svg","material-close-octagon":"material/close-octagon.svg","material-close-outline":"material/close-outline.svg","material-close-thick":"material/close-thick.svg","material-close":"material/close.svg","material-closed-caption-outline":"material/closed-caption-outline.svg","material-closed-caption":"material/closed-caption.svg","material-cloud-alert":"material/cloud-alert.svg","material-cloud-braces":"material/cloud-braces.svg","material-cloud-check-outline":"material/cloud-check-outline.svg","material-cloud-check":"material/cloud-check.svg","material-cloud-circle":"material/cloud-circle.svg","material-cloud-download-outline":"material/cloud-download-outline.svg","material-cloud-download":"material/cloud-download.svg","material-cloud-lock-outline":"material/cloud-lock-outline.svg","material-cloud-lock":"material/cloud-lock.svg","material-cloud-off-outline":"material/cloud-off-outline.svg","material-cloud-outline":"material/cloud-outline.svg","material-cloud-percent-outline":"material/cloud-percent-outline.svg","material-cloud-percent":"material/cloud-percent.svg","material-cloud-print-outline":"material/cloud-print-outline.svg","material-cloud-print":"material/cloud-print.svg","material-cloud-question":"material/cloud-question.svg","material-cloud-refresh":"material/cloud-refresh.svg","material-cloud-search-outline":"material/cloud-search-outline.svg","material-cloud-search":"material/cloud-search.svg","material-cloud-sync-outline":"material/cloud-sync-outline.svg","material-cloud-sync":"material/cloud-sync.svg","material-cloud-tags":"material/cloud-tags.svg","material-cloud-upload-outline":"material/cloud-upload-outline.svg","material-cloud-upload":"material/cloud-upload.svg","material-cloud":"material/cloud.svg","material-clouds":"material/clouds.svg","material-clover":"material/clover.svg","material-coach-lamp-variant":"material/coach-lamp-variant.svg","material-coach-lamp":"material/coach-lamp.svg","material-coat-rack":"material/coat-rack.svg","material-code-array":"material/code-array.svg","material-code-braces-box":"material/code-braces-box.svg","material-code-braces":"material/code-braces.svg","material-code-brackets":"material/code-brackets.svg","material-code-equal":"material/code-equal.svg","material-code-greater-than-or-equal":"material/code-greater-than-or-equal.svg","material-code-greater-than":"material/code-greater-than.svg","material-code-json":"material/code-json.svg","material-code-less-than-or-equal":"material/code-less-than-or-equal.svg","material-code-less-than":"material/code-less-than.svg","material-code-not-equal-variant":"material/code-not-equal-variant.svg","material-code-not-equal":"material/code-not-equal.svg","material-code-parentheses-box":"material/code-parentheses-box.svg","material-code-parentheses":"material/code-parentheses.svg","material-code-string":"material/code-string.svg","material-code-tags-check":"material/code-tags-check.svg","material-code-tags":"material/code-tags.svg","material-codepen":"material/codepen.svg","material-coffee-maker-check-outline":"material/coffee-maker-check-outline.svg","material-coffee-maker-check":"material/coffee-maker-check.svg","material-coffee-maker-outline":"material/coffee-maker-outline.svg","material-coffee-maker":"material/coffee-maker.svg","material-coffee-off-outline":"material/coffee-off-outline.svg","material-coffee-off":"material/coffee-off.svg","material-coffee-outline":"material/coffee-outline.svg","material-coffee-to-go-outline":"material/coffee-to-go-outline.svg","material-coffee-to-go":"material/coffee-to-go.svg","material-coffee":"material/coffee.svg","material-coffin":"material/coffin.svg","material-cog-box":"material/cog-box.svg","material-cog-clockwise":"material/cog-clockwise.svg","material-cog-counterclockwise":"material/cog-counterclockwise.svg","material-cog-off-outline":"material/cog-off-outline.svg","material-cog-off":"material/cog-off.svg","material-cog-outline":"material/cog-outline.svg","material-cog-pause-outline":"material/cog-pause-outline.svg","material-cog-pause":"material/cog-pause.svg","material-cog-play-outline":"material/cog-play-outline.svg","material-cog-play":"material/cog-play.svg","material-cog-refresh-outline":"material/cog-refresh-outline.svg","material-cog-refresh":"material/cog-refresh.svg","material-cog-stop-outline":"material/cog-stop-outline.svg","material-cog-stop":"material/cog-stop.svg","material-cog-sync-outline":"material/cog-sync-outline.svg","material-cog-sync":"material/cog-sync.svg","material-cog-transfer-outline":"material/cog-transfer-outline.svg","material-cog-transfer":"material/cog-transfer.svg","material-cog":"material/cog.svg","material-cogs":"material/cogs.svg","material-collage":"material/collage.svg","material-collapse-all-outline":"material/collapse-all-outline.svg","material-collapse-all":"material/collapse-all.svg","material-color-helper":"material/color-helper.svg","material-comma-box-outline":"material/comma-box-outline.svg","material-comma-box":"material/comma-box.svg","material-comma-circle-outline":"material/comma-circle-outline.svg","material-comma-circle":"material/comma-circle.svg","material-comma":"material/comma.svg","material-comment-account-outline":"material/comment-account-outline.svg","material-comment-account":"material/comment-account.svg","material-comment-alert-outline":"material/comment-alert-outline.svg","material-comment-alert":"material/comment-alert.svg","material-comment-arrow-left-outline":"material/comment-arrow-left-outline.svg","material-comment-arrow-left":"material/comment-arrow-left.svg","material-comment-arrow-right-outline":"material/comment-arrow-right-outline.svg","material-comment-arrow-right":"material/comment-arrow-right.svg","material-comment-bookmark-outline":"material/comment-bookmark-outline.svg","material-comment-bookmark":"material/comment-bookmark.svg","material-comment-check-outline":"material/comment-check-outline.svg","material-comment-check":"material/comment-check.svg","material-comment-edit-outline":"material/comment-edit-outline.svg","material-comment-edit":"material/comment-edit.svg","material-comment-eye-outline":"material/comment-eye-outline.svg","material-comment-eye":"material/comment-eye.svg","material-comment-flash-outline":"material/comment-flash-outline.svg","material-comment-flash":"material/comment-flash.svg","material-comment-minus-outline":"material/comment-minus-outline.svg","material-comment-minus":"material/comment-minus.svg","material-comment-multiple-outline":"material/comment-multiple-outline.svg","material-comment-multiple":"material/comment-multiple.svg","material-comment-off-outline":"material/comment-off-outline.svg","material-comment-off":"material/comment-off.svg","material-comment-outline":"material/comment-outline.svg","material-comment-plus-outline":"material/comment-plus-outline.svg","material-comment-plus":"material/comment-plus.svg","material-comment-processing-outline":"material/comment-processing-outline.svg","material-comment-processing":"material/comment-processing.svg","material-comment-question-outline":"material/comment-question-outline.svg","material-comment-question":"material/comment-question.svg","material-comment-quote-outline":"material/comment-quote-outline.svg","material-comment-quote":"material/comment-quote.svg","material-comment-remove-outline":"material/comment-remove-outline.svg","material-comment-remove":"material/comment-remove.svg","material-comment-search-outline":"material/comment-search-outline.svg","material-comment-search":"material/comment-search.svg","material-comment-text-multiple-outline":"material/comment-text-multiple-outline.svg","material-comment-text-multiple":"material/comment-text-multiple.svg","material-comment-text-outline":"material/comment-text-outline.svg","material-comment-text":"material/comment-text.svg","material-comment":"material/comment.svg","material-compare-horizontal":"material/compare-horizontal.svg","material-compare-remove":"material/compare-remove.svg","material-compare-vertical":"material/compare-vertical.svg","material-compare":"material/compare.svg","material-compass-off-outline":"material/compass-off-outline.svg","material-compass-off":"material/compass-off.svg","material-compass-outline":"material/compass-outline.svg","material-compass-rose":"material/compass-rose.svg","material-compass":"material/compass.svg","material-compost":"material/compost.svg","material-cone-off":"material/cone-off.svg","material-cone":"material/cone.svg","material-connection":"material/connection.svg","material-console-line":"material/console-line.svg","material-console-network-outline":"material/console-network-outline.svg","material-console-network":"material/console-network.svg","material-console":"material/console.svg","material-consolidate":"material/consolidate.svg","material-contactless-payment-circle-outline":"material/contactless-payment-circle-outline.svg","material-contactless-payment-circle":"material/contactless-payment-circle.svg","material-contactless-payment":"material/contactless-payment.svg","material-contacts-outline":"material/contacts-outline.svg","material-contacts":"material/contacts.svg","material-contain-end":"material/contain-end.svg","material-contain-start":"material/contain-start.svg","material-contain":"material/contain.svg","material-content-copy":"material/content-copy.svg","material-content-cut":"material/content-cut.svg","material-content-duplicate":"material/content-duplicate.svg","material-content-paste":"material/content-paste.svg","material-content-save-alert-outline":"material/content-save-alert-outline.svg","material-content-save-alert":"material/content-save-alert.svg","material-content-save-all-outline":"material/content-save-all-outline.svg","material-content-save-all":"material/content-save-all.svg","material-content-save-check-outline":"material/content-save-check-outline.svg","material-content-save-check":"material/content-save-check.svg","material-content-save-cog-outline":"material/content-save-cog-outline.svg","material-content-save-cog":"material/content-save-cog.svg","material-content-save-edit-outline":"material/content-save-edit-outline.svg","material-content-save-edit":"material/content-save-edit.svg","material-content-save-minus-outline":"material/content-save-minus-outline.svg","material-content-save-minus":"material/content-save-minus.svg","material-content-save-move-outline":"material/content-save-move-outline.svg","material-content-save-move":"material/content-save-move.svg","material-content-save-off-outline":"material/content-save-off-outline.svg","material-content-save-off":"material/content-save-off.svg","material-content-save-outline":"material/content-save-outline.svg","material-content-save-plus-outline":"material/content-save-plus-outline.svg","material-content-save-plus":"material/content-save-plus.svg","material-content-save-settings-outline":"material/content-save-settings-outline.svg","material-content-save-settings":"material/content-save-settings.svg","material-content-save":"material/content-save.svg","material-contrast-box":"material/contrast-box.svg","material-contrast-circle":"material/contrast-circle.svg","material-contrast":"material/contrast.svg","material-controller-classic-outline":"material/controller-classic-outline.svg","material-controller-classic":"material/controller-classic.svg","material-controller-off":"material/controller-off.svg","material-controller":"material/controller.svg","material-cookie-alert-outline":"material/cookie-alert-outline.svg","material-cookie-alert":"material/cookie-alert.svg","material-cookie-check-outline":"material/cookie-check-outline.svg","material-cookie-check":"material/cookie-check.svg","material-cookie-clock-outline":"material/cookie-clock-outline.svg","material-cookie-clock":"material/cookie-clock.svg","material-cookie-cog-outline":"material/cookie-cog-outline.svg","material-cookie-cog":"material/cookie-cog.svg","material-cookie-edit-outline":"material/cookie-edit-outline.svg","material-cookie-edit":"material/cookie-edit.svg","material-cookie-lock-outline":"material/cookie-lock-outline.svg","material-cookie-lock":"material/cookie-lock.svg","material-cookie-minus-outline":"material/cookie-minus-outline.svg","material-cookie-minus":"material/cookie-minus.svg","material-cookie-off-outline":"material/cookie-off-outline.svg","material-cookie-off":"material/cookie-off.svg","material-cookie-outline":"material/cookie-outline.svg","material-cookie-plus-outline":"material/cookie-plus-outline.svg","material-cookie-plus":"material/cookie-plus.svg","material-cookie-refresh-outline":"material/cookie-refresh-outline.svg","material-cookie-refresh":"material/cookie-refresh.svg","material-cookie-remove-outline":"material/cookie-remove-outline.svg","material-cookie-remove":"material/cookie-remove.svg","material-cookie-settings-outline":"material/cookie-settings-outline.svg","material-cookie-settings":"material/cookie-settings.svg","material-cookie":"material/cookie.svg","material-coolant-temperature":"material/coolant-temperature.svg","material-copyleft":"material/copyleft.svg","material-copyright":"material/copyright.svg","material-cordova":"material/cordova.svg","material-corn-off":"material/corn-off.svg","material-corn":"material/corn.svg","material-cosine-wave":"material/cosine-wave.svg","material-counter":"material/counter.svg","material-countertop-outline":"material/countertop-outline.svg","material-countertop":"material/countertop.svg","material-cow-off":"material/cow-off.svg","material-cow":"material/cow.svg","material-cpu-32-bit":"material/cpu-32-bit.svg","material-cpu-64-bit":"material/cpu-64-bit.svg","material-cradle-outline":"material/cradle-outline.svg","material-cradle":"material/cradle.svg","material-crane":"material/crane.svg","material-creation":"material/creation.svg","material-creative-commons":"material/creative-commons.svg","material-credit-card-check-outline":"material/credit-card-check-outline.svg","material-credit-card-check":"material/credit-card-check.svg","material-credit-card-chip-outline":"material/credit-card-chip-outline.svg","material-credit-card-chip":"material/credit-card-chip.svg","material-credit-card-clock-outline":"material/credit-card-clock-outline.svg","material-credit-card-clock":"material/credit-card-clock.svg","material-credit-card-edit-outline":"material/credit-card-edit-outline.svg","material-credit-card-edit":"material/credit-card-edit.svg","material-credit-card-fast-outline":"material/credit-card-fast-outline.svg","material-credit-card-fast":"material/credit-card-fast.svg","material-credit-card-lock-outline":"material/credit-card-lock-outline.svg","material-credit-card-lock":"material/credit-card-lock.svg","material-credit-card-marker-outline":"material/credit-card-marker-outline.svg","material-credit-card-marker":"material/credit-card-marker.svg","material-credit-card-minus-outline":"material/credit-card-minus-outline.svg","material-credit-card-minus":"material/credit-card-minus.svg","material-credit-card-multiple-outline":"material/credit-card-multiple-outline.svg","material-credit-card-multiple":"material/credit-card-multiple.svg","material-credit-card-off-outline":"material/credit-card-off-outline.svg","material-credit-card-off":"material/credit-card-off.svg","material-credit-card-outline":"material/credit-card-outline.svg","material-credit-card-plus-outline":"material/credit-card-plus-outline.svg","material-credit-card-plus":"material/credit-card-plus.svg","material-credit-card-refresh-outline":"material/credit-card-refresh-outline.svg","material-credit-card-refresh":"material/credit-card-refresh.svg","material-credit-card-refund-outline":"material/credit-card-refund-outline.svg","material-credit-card-refund":"material/credit-card-refund.svg","material-credit-card-remove-outline":"material/credit-card-remove-outline.svg","material-credit-card-remove":"material/credit-card-remove.svg","material-credit-card-scan-outline":"material/credit-card-scan-outline.svg","material-credit-card-scan":"material/credit-card-scan.svg","material-credit-card-search-outline":"material/credit-card-search-outline.svg","material-credit-card-search":"material/credit-card-search.svg","material-credit-card-settings-outline":"material/credit-card-settings-outline.svg","material-credit-card-settings":"material/credit-card-settings.svg","material-credit-card-sync-outline":"material/credit-card-sync-outline.svg","material-credit-card-sync":"material/credit-card-sync.svg","material-credit-card-wireless-off-outline":"material/credit-card-wireless-off-outline.svg","material-credit-card-wireless-off":"material/credit-card-wireless-off.svg","material-credit-card-wireless-outline":"material/credit-card-wireless-outline.svg","material-credit-card-wireless":"material/credit-card-wireless.svg","material-credit-card":"material/credit-card.svg","material-cricket":"material/cricket.svg","material-crop-free":"material/crop-free.svg","material-crop-landscape":"material/crop-landscape.svg","material-crop-portrait":"material/crop-portrait.svg","material-crop-rotate":"material/crop-rotate.svg","material-crop-square":"material/crop-square.svg","material-crop":"material/crop.svg","material-cross-bolnisi":"material/cross-bolnisi.svg","material-cross-celtic":"material/cross-celtic.svg","material-cross-outline":"material/cross-outline.svg","material-cross":"material/cross.svg","material-crosshairs-gps":"material/crosshairs-gps.svg","material-crosshairs-off":"material/crosshairs-off.svg","material-crosshairs-question":"material/crosshairs-question.svg","material-crosshairs":"material/crosshairs.svg","material-crowd":"material/crowd.svg","material-crown-circle-outline":"material/crown-circle-outline.svg","material-crown-circle":"material/crown-circle.svg","material-crown-outline":"material/crown-outline.svg","material-crown":"material/crown.svg","material-cryengine":"material/cryengine.svg","material-crystal-ball":"material/crystal-ball.svg","material-cube-off-outline":"material/cube-off-outline.svg","material-cube-off":"material/cube-off.svg","material-cube-outline":"material/cube-outline.svg","material-cube-scan":"material/cube-scan.svg","material-cube-send":"material/cube-send.svg","material-cube-unfolded":"material/cube-unfolded.svg","material-cube":"material/cube.svg","material-cup-off-outline":"material/cup-off-outline.svg","material-cup-off":"material/cup-off.svg","material-cup-outline":"material/cup-outline.svg","material-cup-water":"material/cup-water.svg","material-cup":"material/cup.svg","material-cupboard-outline":"material/cupboard-outline.svg","material-cupboard":"material/cupboard.svg","material-cupcake":"material/cupcake.svg","material-curling":"material/curling.svg","material-currency-bdt":"material/currency-bdt.svg","material-currency-brl":"material/currency-brl.svg","material-currency-btc":"material/currency-btc.svg","material-currency-cny":"material/currency-cny.svg","material-currency-eth":"material/currency-eth.svg","material-currency-eur-off":"material/currency-eur-off.svg","material-currency-eur":"material/currency-eur.svg","material-currency-fra":"material/currency-fra.svg","material-currency-gbp":"material/currency-gbp.svg","material-currency-ils":"material/currency-ils.svg","material-currency-inr":"material/currency-inr.svg","material-currency-jpy":"material/currency-jpy.svg","material-currency-krw":"material/currency-krw.svg","material-currency-kzt":"material/currency-kzt.svg","material-currency-mnt":"material/currency-mnt.svg","material-currency-ngn":"material/currency-ngn.svg","material-currency-php":"material/currency-php.svg","material-currency-rial":"material/currency-rial.svg","material-currency-rub":"material/currency-rub.svg","material-currency-rupee":"material/currency-rupee.svg","material-currency-sign":"material/currency-sign.svg","material-currency-try":"material/currency-try.svg","material-currency-twd":"material/currency-twd.svg","material-currency-uah":"material/currency-uah.svg","material-currency-usd-off":"material/currency-usd-off.svg","material-currency-usd":"material/currency-usd.svg","material-current-ac":"material/current-ac.svg","material-current-dc":"material/current-dc.svg","material-cursor-default-click-outline":"material/cursor-default-click-outline.svg","material-cursor-default-click":"material/cursor-default-click.svg","material-cursor-default-gesture-outline":"material/cursor-default-gesture-outline.svg","material-cursor-default-gesture":"material/cursor-default-gesture.svg","material-cursor-default-outline":"material/cursor-default-outline.svg","material-cursor-default":"material/cursor-default.svg","material-cursor-move":"material/cursor-move.svg","material-cursor-pointer":"material/cursor-pointer.svg","material-cursor-text":"material/cursor-text.svg","material-curtains-closed":"material/curtains-closed.svg","material-curtains":"material/curtains.svg","material-cylinder-off":"material/cylinder-off.svg","material-cylinder":"material/cylinder.svg","material-dance-ballroom":"material/dance-ballroom.svg","material-dance-pole":"material/dance-pole.svg","material-data-matrix-edit":"material/data-matrix-edit.svg","material-data-matrix-minus":"material/data-matrix-minus.svg","material-data-matrix-plus":"material/data-matrix-plus.svg","material-data-matrix-remove":"material/data-matrix-remove.svg","material-data-matrix-scan":"material/data-matrix-scan.svg","material-data-matrix":"material/data-matrix.svg","material-database-alert-outline":"material/database-alert-outline.svg","material-database-alert":"material/database-alert.svg","material-database-arrow-down-outline":"material/database-arrow-down-outline.svg","material-database-arrow-down":"material/database-arrow-down.svg","material-database-arrow-left-outline":"material/database-arrow-left-outline.svg","material-database-arrow-left":"material/database-arrow-left.svg","material-database-arrow-right-outline":"material/database-arrow-right-outline.svg","material-database-arrow-right":"material/database-arrow-right.svg","material-database-arrow-up-outline":"material/database-arrow-up-outline.svg","material-database-arrow-up":"material/database-arrow-up.svg","material-database-check-outline":"material/database-check-outline.svg","material-database-check":"material/database-check.svg","material-database-clock-outline":"material/database-clock-outline.svg","material-database-clock":"material/database-clock.svg","material-database-cog-outline":"material/database-cog-outline.svg","material-database-cog":"material/database-cog.svg","material-database-edit-outline":"material/database-edit-outline.svg","material-database-edit":"material/database-edit.svg","material-database-export-outline":"material/database-export-outline.svg","material-database-export":"material/database-export.svg","material-database-eye-off-outline":"material/database-eye-off-outline.svg","material-database-eye-off":"material/database-eye-off.svg","material-database-eye-outline":"material/database-eye-outline.svg","material-database-eye":"material/database-eye.svg","material-database-import-outline":"material/database-import-outline.svg","material-database-import":"material/database-import.svg","material-database-lock-outline":"material/database-lock-outline.svg","material-database-lock":"material/database-lock.svg","material-database-marker-outline":"material/database-marker-outline.svg","material-database-marker":"material/database-marker.svg","material-database-minus-outline":"material/database-minus-outline.svg","material-database-minus":"material/database-minus.svg","material-database-off-outline":"material/database-off-outline.svg","material-database-off":"material/database-off.svg","material-database-outline":"material/database-outline.svg","material-database-plus-outline":"material/database-plus-outline.svg","material-database-plus":"material/database-plus.svg","material-database-refresh-outline":"material/database-refresh-outline.svg","material-database-refresh":"material/database-refresh.svg","material-database-remove-outline":"material/database-remove-outline.svg","material-database-remove":"material/database-remove.svg","material-database-search-outline":"material/database-search-outline.svg","material-database-search":"material/database-search.svg","material-database-settings-outline":"material/database-settings-outline.svg","material-database-settings":"material/database-settings.svg","material-database-sync-outline":"material/database-sync-outline.svg","material-database-sync":"material/database-sync.svg","material-database":"material/database.svg","material-death-star-variant":"material/death-star-variant.svg","material-death-star":"material/death-star.svg","material-deathly-hallows":"material/deathly-hallows.svg","material-debian":"material/debian.svg","material-debug-step-into":"material/debug-step-into.svg","material-debug-step-out":"material/debug-step-out.svg","material-debug-step-over":"material/debug-step-over.svg","material-decagram-outline":"material/decagram-outline.svg","material-decagram":"material/decagram.svg","material-decimal-comma-decrease":"material/decimal-comma-decrease.svg","material-decimal-comma-increase":"material/decimal-comma-increase.svg","material-decimal-comma":"material/decimal-comma.svg","material-decimal-decrease":"material/decimal-decrease.svg","material-decimal-increase":"material/decimal-increase.svg","material-decimal":"material/decimal.svg","material-delete-alert-outline":"material/delete-alert-outline.svg","material-delete-alert":"material/delete-alert.svg","material-delete-circle-outline":"material/delete-circle-outline.svg","material-delete-circle":"material/delete-circle.svg","material-delete-clock-outline":"material/delete-clock-outline.svg","material-delete-clock":"material/delete-clock.svg","material-delete-empty-outline":"material/delete-empty-outline.svg","material-delete-empty":"material/delete-empty.svg","material-delete-forever-outline":"material/delete-forever-outline.svg","material-delete-forever":"material/delete-forever.svg","material-delete-off-outline":"material/delete-off-outline.svg","material-delete-off":"material/delete-off.svg","material-delete-outline":"material/delete-outline.svg","material-delete-restore":"material/delete-restore.svg","material-delete-sweep-outline":"material/delete-sweep-outline.svg","material-delete-sweep":"material/delete-sweep.svg","material-delete-variant":"material/delete-variant.svg","material-delete":"material/delete.svg","material-delta":"material/delta.svg","material-desk-lamp-off":"material/desk-lamp-off.svg","material-desk-lamp-on":"material/desk-lamp-on.svg","material-desk-lamp":"material/desk-lamp.svg","material-desk":"material/desk.svg","material-deskphone":"material/deskphone.svg","material-desktop-classic":"material/desktop-classic.svg","material-desktop-tower-monitor":"material/desktop-tower-monitor.svg","material-desktop-tower":"material/desktop-tower.svg","material-details":"material/details.svg","material-dev-to":"material/dev-to.svg","material-developer-board":"material/developer-board.svg","material-deviantart":"material/deviantart.svg","material-devices":"material/devices.svg","material-dharmachakra":"material/dharmachakra.svg","material-diabetes":"material/diabetes.svg","material-dialpad":"material/dialpad.svg","material-diameter-outline":"material/diameter-outline.svg","material-diameter-variant":"material/diameter-variant.svg","material-diameter":"material/diameter.svg","material-diamond-outline":"material/diamond-outline.svg","material-diamond-stone":"material/diamond-stone.svg","material-diamond":"material/diamond.svg","material-dice-1-outline":"material/dice-1-outline.svg","material-dice-1":"material/dice-1.svg","material-dice-2-outline":"material/dice-2-outline.svg","material-dice-2":"material/dice-2.svg","material-dice-3-outline":"material/dice-3-outline.svg","material-dice-3":"material/dice-3.svg","material-dice-4-outline":"material/dice-4-outline.svg","material-dice-4":"material/dice-4.svg","material-dice-5-outline":"material/dice-5-outline.svg","material-dice-5":"material/dice-5.svg","material-dice-6-outline":"material/dice-6-outline.svg","material-dice-6":"material/dice-6.svg","material-dice-d10-outline":"material/dice-d10-outline.svg","material-dice-d10":"material/dice-d10.svg","material-dice-d12-outline":"material/dice-d12-outline.svg","material-dice-d12":"material/dice-d12.svg","material-dice-d20-outline":"material/dice-d20-outline.svg","material-dice-d20":"material/dice-d20.svg","material-dice-d4-outline":"material/dice-d4-outline.svg","material-dice-d4":"material/dice-d4.svg","material-dice-d6-outline":"material/dice-d6-outline.svg","material-dice-d6":"material/dice-d6.svg","material-dice-d8-outline":"material/dice-d8-outline.svg","material-dice-d8":"material/dice-d8.svg","material-dice-multiple-outline":"material/dice-multiple-outline.svg","material-dice-multiple":"material/dice-multiple.svg","material-digital-ocean":"material/digital-ocean.svg","material-dip-switch":"material/dip-switch.svg","material-directions-fork":"material/directions-fork.svg","material-directions":"material/directions.svg","material-disc-alert":"material/disc-alert.svg","material-disc-player":"material/disc-player.svg","material-disc":"material/disc.svg","material-dishwasher-alert":"material/dishwasher-alert.svg","material-dishwasher-off":"material/dishwasher-off.svg","material-dishwasher":"material/dishwasher.svg","material-disqus":"material/disqus.svg","material-distribute-horizontal-center":"material/distribute-horizontal-center.svg","material-distribute-horizontal-left":"material/distribute-horizontal-left.svg","material-distribute-horizontal-right":"material/distribute-horizontal-right.svg","material-distribute-vertical-bottom":"material/distribute-vertical-bottom.svg","material-distribute-vertical-center":"material/distribute-vertical-center.svg","material-distribute-vertical-top":"material/distribute-vertical-top.svg","material-diversify":"material/diversify.svg","material-diving-flippers":"material/diving-flippers.svg","material-diving-helmet":"material/diving-helmet.svg","material-diving-scuba-flag":"material/diving-scuba-flag.svg","material-diving-scuba-mask":"material/diving-scuba-mask.svg","material-diving-scuba-tank-multiple":"material/diving-scuba-tank-multiple.svg","material-diving-scuba-tank":"material/diving-scuba-tank.svg","material-diving-scuba":"material/diving-scuba.svg","material-diving-snorkel":"material/diving-snorkel.svg","material-diving":"material/diving.svg","material-division-box":"material/division-box.svg","material-division":"material/division.svg","material-dlna":"material/dlna.svg","material-dna":"material/dna.svg","material-dns-outline":"material/dns-outline.svg","material-dns":"material/dns.svg","material-dock-bottom":"material/dock-bottom.svg","material-dock-left":"material/dock-left.svg","material-dock-right":"material/dock-right.svg","material-dock-top":"material/dock-top.svg","material-dock-window":"material/dock-window.svg","material-docker":"material/docker.svg","material-doctor":"material/doctor.svg","material-dog-service":"material/dog-service.svg","material-dog-side-off":"material/dog-side-off.svg","material-dog-side":"material/dog-side.svg","material-dog":"material/dog.svg","material-dolby":"material/dolby.svg","material-dolly":"material/dolly.svg","material-dolphin":"material/dolphin.svg","material-domain-off":"material/domain-off.svg","material-domain-plus":"material/domain-plus.svg","material-domain-remove":"material/domain-remove.svg","material-domain":"material/domain.svg","material-dome-light":"material/dome-light.svg","material-domino-mask":"material/domino-mask.svg","material-donkey":"material/donkey.svg","material-door-closed-lock":"material/door-closed-lock.svg","material-door-closed":"material/door-closed.svg","material-door-open":"material/door-open.svg","material-door-sliding-lock":"material/door-sliding-lock.svg","material-door-sliding-open":"material/door-sliding-open.svg","material-door-sliding":"material/door-sliding.svg","material-door":"material/door.svg","material-doorbell-video":"material/doorbell-video.svg","material-doorbell":"material/doorbell.svg","material-dot-net":"material/dot-net.svg","material-dots-circle":"material/dots-circle.svg","material-dots-grid":"material/dots-grid.svg","material-dots-hexagon":"material/dots-hexagon.svg","material-dots-horizontal-circle-outline":"material/dots-horizontal-circle-outline.svg","material-dots-horizontal-circle":"material/dots-horizontal-circle.svg","material-dots-horizontal":"material/dots-horizontal.svg","material-dots-square":"material/dots-square.svg","material-dots-triangle":"material/dots-triangle.svg","material-dots-vertical-circle-outline":"material/dots-vertical-circle-outline.svg","material-dots-vertical-circle":"material/dots-vertical-circle.svg","material-dots-vertical":"material/dots-vertical.svg","material-download-box-outline":"material/download-box-outline.svg","material-download-box":"material/download-box.svg","material-download-circle-outline":"material/download-circle-outline.svg","material-download-circle":"material/download-circle.svg","material-download-lock-outline":"material/download-lock-outline.svg","material-download-lock":"material/download-lock.svg","material-download-multiple":"material/download-multiple.svg","material-download-network-outline":"material/download-network-outline.svg","material-download-network":"material/download-network.svg","material-download-off-outline":"material/download-off-outline.svg","material-download-off":"material/download-off.svg","material-download-outline":"material/download-outline.svg","material-download":"material/download.svg","material-drag-horizontal-variant":"material/drag-horizontal-variant.svg","material-drag-horizontal":"material/drag-horizontal.svg","material-drag-variant":"material/drag-variant.svg","material-drag-vertical-variant":"material/drag-vertical-variant.svg","material-drag-vertical":"material/drag-vertical.svg","material-drag":"material/drag.svg","material-drama-masks":"material/drama-masks.svg","material-draw-pen":"material/draw-pen.svg","material-draw":"material/draw.svg","material-drawing-box":"material/drawing-box.svg","material-drawing":"material/drawing.svg","material-dresser-outline":"material/dresser-outline.svg","material-dresser":"material/dresser.svg","material-drone":"material/drone.svg","material-dropbox":"material/dropbox.svg","material-drupal":"material/drupal.svg","material-duck":"material/duck.svg","material-dumbbell":"material/dumbbell.svg","material-dump-truck":"material/dump-truck.svg","material-ear-hearing-loop":"material/ear-hearing-loop.svg","material-ear-hearing-off":"material/ear-hearing-off.svg","material-ear-hearing":"material/ear-hearing.svg","material-earbuds-off-outline":"material/earbuds-off-outline.svg","material-earbuds-off":"material/earbuds-off.svg","material-earbuds-outline":"material/earbuds-outline.svg","material-earbuds":"material/earbuds.svg","material-earth-arrow-right":"material/earth-arrow-right.svg","material-earth-box-minus":"material/earth-box-minus.svg","material-earth-box-off":"material/earth-box-off.svg","material-earth-box-plus":"material/earth-box-plus.svg","material-earth-box-remove":"material/earth-box-remove.svg","material-earth-box":"material/earth-box.svg","material-earth-minus":"material/earth-minus.svg","material-earth-off":"material/earth-off.svg","material-earth-plus":"material/earth-plus.svg","material-earth-remove":"material/earth-remove.svg","material-earth":"material/earth.svg","material-egg-easter":"material/egg-easter.svg","material-egg-fried":"material/egg-fried.svg","material-egg-off-outline":"material/egg-off-outline.svg","material-egg-off":"material/egg-off.svg","material-egg-outline":"material/egg-outline.svg","material-egg":"material/egg.svg","material-eiffel-tower":"material/eiffel-tower.svg","material-eight-track":"material/eight-track.svg","material-eject-circle-outline":"material/eject-circle-outline.svg","material-eject-circle":"material/eject-circle.svg","material-eject-outline":"material/eject-outline.svg","material-eject":"material/eject.svg","material-electric-switch-closed":"material/electric-switch-closed.svg","material-electric-switch":"material/electric-switch.svg","material-electron-framework":"material/electron-framework.svg","material-elephant":"material/elephant.svg","material-elevation-decline":"material/elevation-decline.svg","material-elevation-rise":"material/elevation-rise.svg","material-elevator-down":"material/elevator-down.svg","material-elevator-passenger-off-outline":"material/elevator-passenger-off-outline.svg","material-elevator-passenger-off":"material/elevator-passenger-off.svg","material-elevator-passenger-outline":"material/elevator-passenger-outline.svg","material-elevator-passenger":"material/elevator-passenger.svg","material-elevator-up":"material/elevator-up.svg","material-elevator":"material/elevator.svg","material-ellipse-outline":"material/ellipse-outline.svg","material-ellipse":"material/ellipse.svg","material-email-alert-outline":"material/email-alert-outline.svg","material-email-alert":"material/email-alert.svg","material-email-arrow-left-outline":"material/email-arrow-left-outline.svg","material-email-arrow-left":"material/email-arrow-left.svg","material-email-arrow-right-outline":"material/email-arrow-right-outline.svg","material-email-arrow-right":"material/email-arrow-right.svg","material-email-box":"material/email-box.svg","material-email-check-outline":"material/email-check-outline.svg","material-email-check":"material/email-check.svg","material-email-edit-outline":"material/email-edit-outline.svg","material-email-edit":"material/email-edit.svg","material-email-fast-outline":"material/email-fast-outline.svg","material-email-fast":"material/email-fast.svg","material-email-lock-outline":"material/email-lock-outline.svg","material-email-lock":"material/email-lock.svg","material-email-mark-as-unread":"material/email-mark-as-unread.svg","material-email-minus-outline":"material/email-minus-outline.svg","material-email-minus":"material/email-minus.svg","material-email-multiple-outline":"material/email-multiple-outline.svg","material-email-multiple":"material/email-multiple.svg","material-email-newsletter":"material/email-newsletter.svg","material-email-off-outline":"material/email-off-outline.svg","material-email-off":"material/email-off.svg","material-email-open-multiple-outline":"material/email-open-multiple-outline.svg","material-email-open-multiple":"material/email-open-multiple.svg","material-email-open-outline":"material/email-open-outline.svg","material-email-open":"material/email-open.svg","material-email-outline":"material/email-outline.svg","material-email-plus-outline":"material/email-plus-outline.svg","material-email-plus":"material/email-plus.svg","material-email-remove-outline":"material/email-remove-outline.svg","material-email-remove":"material/email-remove.svg","material-email-seal-outline":"material/email-seal-outline.svg","material-email-seal":"material/email-seal.svg","material-email-search-outline":"material/email-search-outline.svg","material-email-search":"material/email-search.svg","material-email-sync-outline":"material/email-sync-outline.svg","material-email-sync":"material/email-sync.svg","material-email-variant":"material/email-variant.svg","material-email":"material/email.svg","material-ember":"material/ember.svg","material-emby":"material/emby.svg","material-emoticon-angry-outline":"material/emoticon-angry-outline.svg","material-emoticon-angry":"material/emoticon-angry.svg","material-emoticon-confused-outline":"material/emoticon-confused-outline.svg","material-emoticon-confused":"material/emoticon-confused.svg","material-emoticon-cool-outline":"material/emoticon-cool-outline.svg","material-emoticon-cool":"material/emoticon-cool.svg","material-emoticon-cry-outline":"material/emoticon-cry-outline.svg","material-emoticon-cry":"material/emoticon-cry.svg","material-emoticon-dead-outline":"material/emoticon-dead-outline.svg","material-emoticon-dead":"material/emoticon-dead.svg","material-emoticon-devil-outline":"material/emoticon-devil-outline.svg","material-emoticon-devil":"material/emoticon-devil.svg","material-emoticon-excited-outline":"material/emoticon-excited-outline.svg","material-emoticon-excited":"material/emoticon-excited.svg","material-emoticon-frown-outline":"material/emoticon-frown-outline.svg","material-emoticon-frown":"material/emoticon-frown.svg","material-emoticon-happy-outline":"material/emoticon-happy-outline.svg","material-emoticon-happy":"material/emoticon-happy.svg","material-emoticon-kiss-outline":"material/emoticon-kiss-outline.svg","material-emoticon-kiss":"material/emoticon-kiss.svg","material-emoticon-lol-outline":"material/emoticon-lol-outline.svg","material-emoticon-lol":"material/emoticon-lol.svg","material-emoticon-neutral-outline":"material/emoticon-neutral-outline.svg","material-emoticon-neutral":"material/emoticon-neutral.svg","material-emoticon-outline":"material/emoticon-outline.svg","material-emoticon-poop-outline":"material/emoticon-poop-outline.svg","material-emoticon-poop":"material/emoticon-poop.svg","material-emoticon-sad-outline":"material/emoticon-sad-outline.svg","material-emoticon-sad":"material/emoticon-sad.svg","material-emoticon-sick-outline":"material/emoticon-sick-outline.svg","material-emoticon-sick":"material/emoticon-sick.svg","material-emoticon-tongue-outline":"material/emoticon-tongue-outline.svg","material-emoticon-tongue":"material/emoticon-tongue.svg","material-emoticon-wink-outline":"material/emoticon-wink-outline.svg","material-emoticon-wink":"material/emoticon-wink.svg","material-emoticon":"material/emoticon.svg","material-engine-off-outline":"material/engine-off-outline.svg","material-engine-off":"material/engine-off.svg","material-engine-outline":"material/engine-outline.svg","material-engine":"material/engine.svg","material-epsilon":"material/epsilon.svg","material-equal-box":"material/equal-box.svg","material-equal":"material/equal.svg","material-equalizer-outline":"material/equalizer-outline.svg","material-equalizer":"material/equalizer.svg","material-eraser-variant":"material/eraser-variant.svg","material-eraser":"material/eraser.svg","material-escalator-box":"material/escalator-box.svg","material-escalator-down":"material/escalator-down.svg","material-escalator-up":"material/escalator-up.svg","material-escalator":"material/escalator.svg","material-eslint":"material/eslint.svg","material-et":"material/et.svg","material-ethereum":"material/ethereum.svg","material-ethernet-cable-off":"material/ethernet-cable-off.svg","material-ethernet-cable":"material/ethernet-cable.svg","material-ethernet":"material/ethernet.svg","material-ev-plug-ccs1":"material/ev-plug-ccs1.svg","material-ev-plug-ccs2":"material/ev-plug-ccs2.svg","material-ev-plug-chademo":"material/ev-plug-chademo.svg","material-ev-plug-tesla":"material/ev-plug-tesla.svg","material-ev-plug-type1":"material/ev-plug-type1.svg","material-ev-plug-type2":"material/ev-plug-type2.svg","material-ev-station":"material/ev-station.svg","material-evernote":"material/evernote.svg","material-excavator":"material/excavator.svg","material-exclamation-thick":"material/exclamation-thick.svg","material-exclamation":"material/exclamation.svg","material-exit-run":"material/exit-run.svg","material-exit-to-app":"material/exit-to-app.svg","material-expand-all-outline":"material/expand-all-outline.svg","material-expand-all":"material/expand-all.svg","material-expansion-card-variant":"material/expansion-card-variant.svg","material-expansion-card":"material/expansion-card.svg","material-exponent-box":"material/exponent-box.svg","material-exponent":"material/exponent.svg","material-export-variant":"material/export-variant.svg","material-export":"material/export.svg","material-eye-arrow-left-outline":"material/eye-arrow-left-outline.svg","material-eye-arrow-left":"material/eye-arrow-left.svg","material-eye-arrow-right-outline":"material/eye-arrow-right-outline.svg","material-eye-arrow-right":"material/eye-arrow-right.svg","material-eye-check-outline":"material/eye-check-outline.svg","material-eye-check":"material/eye-check.svg","material-eye-circle-outline":"material/eye-circle-outline.svg","material-eye-circle":"material/eye-circle.svg","material-eye-minus-outline":"material/eye-minus-outline.svg","material-eye-minus":"material/eye-minus.svg","material-eye-off-outline":"material/eye-off-outline.svg","material-eye-off":"material/eye-off.svg","material-eye-outline":"material/eye-outline.svg","material-eye-plus-outline":"material/eye-plus-outline.svg","material-eye-plus":"material/eye-plus.svg","material-eye-refresh-outline":"material/eye-refresh-outline.svg","material-eye-refresh":"material/eye-refresh.svg","material-eye-remove-outline":"material/eye-remove-outline.svg","material-eye-remove":"material/eye-remove.svg","material-eye-settings-outline":"material/eye-settings-outline.svg","material-eye-settings":"material/eye-settings.svg","material-eye":"material/eye.svg","material-eyedropper-minus":"material/eyedropper-minus.svg","material-eyedropper-off":"material/eyedropper-off.svg","material-eyedropper-plus":"material/eyedropper-plus.svg","material-eyedropper-remove":"material/eyedropper-remove.svg","material-eyedropper-variant":"material/eyedropper-variant.svg","material-eyedropper":"material/eyedropper.svg","material-face-agent":"material/face-agent.svg","material-face-man-outline":"material/face-man-outline.svg","material-face-man-profile":"material/face-man-profile.svg","material-face-man-shimmer-outline":"material/face-man-shimmer-outline.svg","material-face-man-shimmer":"material/face-man-shimmer.svg","material-face-man":"material/face-man.svg","material-face-mask-outline":"material/face-mask-outline.svg","material-face-mask":"material/face-mask.svg","material-face-recognition":"material/face-recognition.svg","material-face-woman-outline":"material/face-woman-outline.svg","material-face-woman-profile":"material/face-woman-profile.svg","material-face-woman-shimmer-outline":"material/face-woman-shimmer-outline.svg","material-face-woman-shimmer":"material/face-woman-shimmer.svg","material-face-woman":"material/face-woman.svg","material-facebook-gaming":"material/facebook-gaming.svg","material-facebook-messenger":"material/facebook-messenger.svg","material-facebook-workplace":"material/facebook-workplace.svg","material-facebook":"material/facebook.svg","material-factory":"material/factory.svg","material-family-tree":"material/family-tree.svg","material-fan-alert":"material/fan-alert.svg","material-fan-auto":"material/fan-auto.svg","material-fan-chevron-down":"material/fan-chevron-down.svg","material-fan-chevron-up":"material/fan-chevron-up.svg","material-fan-clock":"material/fan-clock.svg","material-fan-minus":"material/fan-minus.svg","material-fan-off":"material/fan-off.svg","material-fan-plus":"material/fan-plus.svg","material-fan-remove":"material/fan-remove.svg","material-fan-speed-1":"material/fan-speed-1.svg","material-fan-speed-2":"material/fan-speed-2.svg","material-fan-speed-3":"material/fan-speed-3.svg","material-fan":"material/fan.svg","material-fast-forward-10":"material/fast-forward-10.svg","material-fast-forward-15":"material/fast-forward-15.svg","material-fast-forward-30":"material/fast-forward-30.svg","material-fast-forward-45":"material/fast-forward-45.svg","material-fast-forward-5":"material/fast-forward-5.svg","material-fast-forward-60":"material/fast-forward-60.svg","material-fast-forward-outline":"material/fast-forward-outline.svg","material-fast-forward":"material/fast-forward.svg","material-faucet-variant":"material/faucet-variant.svg","material-faucet":"material/faucet.svg","material-fax":"material/fax.svg","material-feather":"material/feather.svg","material-feature-search-outline":"material/feature-search-outline.svg","material-feature-search":"material/feature-search.svg","material-fedora":"material/fedora.svg","material-fence-electric":"material/fence-electric.svg","material-fence":"material/fence.svg","material-fencing":"material/fencing.svg","material-ferris-wheel":"material/ferris-wheel.svg","material-ferry":"material/ferry.svg","material-file-account-outline":"material/file-account-outline.svg","material-file-account":"material/file-account.svg","material-file-alert-outline":"material/file-alert-outline.svg","material-file-alert":"material/file-alert.svg","material-file-arrow-left-right-outline":"material/file-arrow-left-right-outline.svg","material-file-arrow-left-right":"material/file-arrow-left-right.svg","material-file-arrow-up-down-outline":"material/file-arrow-up-down-outline.svg","material-file-arrow-up-down":"material/file-arrow-up-down.svg","material-file-cabinet":"material/file-cabinet.svg","material-file-cad-box":"material/file-cad-box.svg","material-file-cad":"material/file-cad.svg","material-file-cancel-outline":"material/file-cancel-outline.svg","material-file-cancel":"material/file-cancel.svg","material-file-certificate-outline":"material/file-certificate-outline.svg","material-file-certificate":"material/file-certificate.svg","material-file-chart-check-outline":"material/file-chart-check-outline.svg","material-file-chart-check":"material/file-chart-check.svg","material-file-chart-outline":"material/file-chart-outline.svg","material-file-chart":"material/file-chart.svg","material-file-check-outline":"material/file-check-outline.svg","material-file-check":"material/file-check.svg","material-file-clock-outline":"material/file-clock-outline.svg","material-file-clock":"material/file-clock.svg","material-file-cloud-outline":"material/file-cloud-outline.svg","material-file-cloud":"material/file-cloud.svg","material-file-code-outline":"material/file-code-outline.svg","material-file-code":"material/file-code.svg","material-file-cog-outline":"material/file-cog-outline.svg","material-file-cog":"material/file-cog.svg","material-file-compare":"material/file-compare.svg","material-file-delimited-outline":"material/file-delimited-outline.svg","material-file-delimited":"material/file-delimited.svg","material-file-document-alert-outline":"material/file-document-alert-outline.svg","material-file-document-alert":"material/file-document-alert.svg","material-file-document-check-outline":"material/file-document-check-outline.svg","material-file-document-check":"material/file-document-check.svg","material-file-document-edit-outline":"material/file-document-edit-outline.svg","material-file-document-edit":"material/file-document-edit.svg","material-file-document-minus-outline":"material/file-document-minus-outline.svg","material-file-document-minus":"material/file-document-minus.svg","material-file-document-multiple-outline":"material/file-document-multiple-outline.svg","material-file-document-multiple":"material/file-document-multiple.svg","material-file-document-outline":"material/file-document-outline.svg","material-file-document-plus-outline":"material/file-document-plus-outline.svg","material-file-document-plus":"material/file-document-plus.svg","material-file-document-remove-outline":"material/file-document-remove-outline.svg","material-file-document-remove":"material/file-document-remove.svg","material-file-document":"material/file-document.svg","material-file-download-outline":"material/file-download-outline.svg","material-file-download":"material/file-download.svg","material-file-edit-outline":"material/file-edit-outline.svg","material-file-edit":"material/file-edit.svg","material-file-excel-box-outline":"material/file-excel-box-outline.svg","material-file-excel-box":"material/file-excel-box.svg","material-file-excel-outline":"material/file-excel-outline.svg","material-file-excel":"material/file-excel.svg","material-file-export-outline":"material/file-export-outline.svg","material-file-export":"material/file-export.svg","material-file-eye-outline":"material/file-eye-outline.svg","material-file-eye":"material/file-eye.svg","material-file-find-outline":"material/file-find-outline.svg","material-file-find":"material/file-find.svg","material-file-gif-box":"material/file-gif-box.svg","material-file-hidden":"material/file-hidden.svg","material-file-image-marker-outline":"material/file-image-marker-outline.svg","material-file-image-marker":"material/file-image-marker.svg","material-file-image-minus-outline":"material/file-image-minus-outline.svg","material-file-image-minus":"material/file-image-minus.svg","material-file-image-outline":"material/file-image-outline.svg","material-file-image-plus-outline":"material/file-image-plus-outline.svg","material-file-image-plus":"material/file-image-plus.svg","material-file-image-remove-outline":"material/file-image-remove-outline.svg","material-file-image-remove":"material/file-image-remove.svg","material-file-image":"material/file-image.svg","material-file-import-outline":"material/file-import-outline.svg","material-file-import":"material/file-import.svg","material-file-jpg-box":"material/file-jpg-box.svg","material-file-key-outline":"material/file-key-outline.svg","material-file-key":"material/file-key.svg","material-file-link-outline":"material/file-link-outline.svg","material-file-link":"material/file-link.svg","material-file-lock-open-outline":"material/file-lock-open-outline.svg","material-file-lock-open":"material/file-lock-open.svg","material-file-lock-outline":"material/file-lock-outline.svg","material-file-lock":"material/file-lock.svg","material-file-marker-outline":"material/file-marker-outline.svg","material-file-marker":"material/file-marker.svg","material-file-minus-outline":"material/file-minus-outline.svg","material-file-minus":"material/file-minus.svg","material-file-move-outline":"material/file-move-outline.svg","material-file-move":"material/file-move.svg","material-file-multiple-outline":"material/file-multiple-outline.svg","material-file-multiple":"material/file-multiple.svg","material-file-music-outline":"material/file-music-outline.svg","material-file-music":"material/file-music.svg","material-file-outline":"material/file-outline.svg","material-file-pdf-box":"material/file-pdf-box.svg","material-file-percent-outline":"material/file-percent-outline.svg","material-file-percent":"material/file-percent.svg","material-file-phone-outline":"material/file-phone-outline.svg","material-file-phone":"material/file-phone.svg","material-file-plus-outline":"material/file-plus-outline.svg","material-file-plus":"material/file-plus.svg","material-file-png-box":"material/file-png-box.svg","material-file-powerpoint-box-outline":"material/file-powerpoint-box-outline.svg","material-file-powerpoint-box":"material/file-powerpoint-box.svg","material-file-powerpoint-outline":"material/file-powerpoint-outline.svg","material-file-powerpoint":"material/file-powerpoint.svg","material-file-presentation-box":"material/file-presentation-box.svg","material-file-question-outline":"material/file-question-outline.svg","material-file-question":"material/file-question.svg","material-file-refresh-outline":"material/file-refresh-outline.svg","material-file-refresh":"material/file-refresh.svg","material-file-remove-outline":"material/file-remove-outline.svg","material-file-remove":"material/file-remove.svg","material-file-replace-outline":"material/file-replace-outline.svg","material-file-replace":"material/file-replace.svg","material-file-restore-outline":"material/file-restore-outline.svg","material-file-restore":"material/file-restore.svg","material-file-rotate-left-outline":"material/file-rotate-left-outline.svg","material-file-rotate-left":"material/file-rotate-left.svg","material-file-rotate-right-outline":"material/file-rotate-right-outline.svg","material-file-rotate-right":"material/file-rotate-right.svg","material-file-search-outline":"material/file-search-outline.svg","material-file-search":"material/file-search.svg","material-file-send-outline":"material/file-send-outline.svg","material-file-send":"material/file-send.svg","material-file-settings-outline":"material/file-settings-outline.svg","material-file-settings":"material/file-settings.svg","material-file-sign":"material/file-sign.svg","material-file-star-outline":"material/file-star-outline.svg","material-file-star":"material/file-star.svg","material-file-swap-outline":"material/file-swap-outline.svg","material-file-swap":"material/file-swap.svg","material-file-sync-outline":"material/file-sync-outline.svg","material-file-sync":"material/file-sync.svg","material-file-table-box-multiple-outline":"material/file-table-box-multiple-outline.svg","material-file-table-box-multiple":"material/file-table-box-multiple.svg","material-file-table-box-outline":"material/file-table-box-outline.svg","material-file-table-box":"material/file-table-box.svg","material-file-table-outline":"material/file-table-outline.svg","material-file-table":"material/file-table.svg","material-file-tree-outline":"material/file-tree-outline.svg","material-file-tree":"material/file-tree.svg","material-file-undo-outline":"material/file-undo-outline.svg","material-file-undo":"material/file-undo.svg","material-file-upload-outline":"material/file-upload-outline.svg","material-file-upload":"material/file-upload.svg","material-file-video-outline":"material/file-video-outline.svg","material-file-video":"material/file-video.svg","material-file-word-box-outline":"material/file-word-box-outline.svg","material-file-word-box":"material/file-word-box.svg","material-file-word-outline":"material/file-word-outline.svg","material-file-word":"material/file-word.svg","material-file-xml-box":"material/file-xml-box.svg","material-file":"material/file.svg","material-film":"material/film.svg","material-filmstrip-box-multiple":"material/filmstrip-box-multiple.svg","material-filmstrip-box":"material/filmstrip-box.svg","material-filmstrip-off":"material/filmstrip-off.svg","material-filmstrip":"material/filmstrip.svg","material-filter-check-outline":"material/filter-check-outline.svg","material-filter-check":"material/filter-check.svg","material-filter-cog-outline":"material/filter-cog-outline.svg","material-filter-cog":"material/filter-cog.svg","material-filter-menu-outline":"material/filter-menu-outline.svg","material-filter-menu":"material/filter-menu.svg","material-filter-minus-outline":"material/filter-minus-outline.svg","material-filter-minus":"material/filter-minus.svg","material-filter-multiple-outline":"material/filter-multiple-outline.svg","material-filter-multiple":"material/filter-multiple.svg","material-filter-off-outline":"material/filter-off-outline.svg","material-filter-off":"material/filter-off.svg","material-filter-outline":"material/filter-outline.svg","material-filter-plus-outline":"material/filter-plus-outline.svg","material-filter-plus":"material/filter-plus.svg","material-filter-remove-outline":"material/filter-remove-outline.svg","material-filter-remove":"material/filter-remove.svg","material-filter-settings-outline":"material/filter-settings-outline.svg","material-filter-settings":"material/filter-settings.svg","material-filter-variant-minus":"material/filter-variant-minus.svg","material-filter-variant-plus":"material/filter-variant-plus.svg","material-filter-variant-remove":"material/filter-variant-remove.svg","material-filter-variant":"material/filter-variant.svg","material-filter":"material/filter.svg","material-finance":"material/finance.svg","material-find-replace":"material/find-replace.svg","material-fingerprint-off":"material/fingerprint-off.svg","material-fingerprint":"material/fingerprint.svg","material-fire-alert":"material/fire-alert.svg","material-fire-circle":"material/fire-circle.svg","material-fire-extinguisher":"material/fire-extinguisher.svg","material-fire-hydrant-alert":"material/fire-hydrant-alert.svg","material-fire-hydrant-off":"material/fire-hydrant-off.svg","material-fire-hydrant":"material/fire-hydrant.svg","material-fire-off":"material/fire-off.svg","material-fire-truck":"material/fire-truck.svg","material-fire":"material/fire.svg","material-firebase":"material/firebase.svg","material-firefox":"material/firefox.svg","material-fireplace-off":"material/fireplace-off.svg","material-fireplace":"material/fireplace.svg","material-firewire":"material/firewire.svg","material-firework-off":"material/firework-off.svg","material-firework":"material/firework.svg","material-fish-off":"material/fish-off.svg","material-fish":"material/fish.svg","material-fishbowl-outline":"material/fishbowl-outline.svg","material-fishbowl":"material/fishbowl.svg","material-fit-to-page-outline":"material/fit-to-page-outline.svg","material-fit-to-page":"material/fit-to-page.svg","material-fit-to-screen-outline":"material/fit-to-screen-outline.svg","material-fit-to-screen":"material/fit-to-screen.svg","material-flag-checkered":"material/flag-checkered.svg","material-flag-minus-outline":"material/flag-minus-outline.svg","material-flag-minus":"material/flag-minus.svg","material-flag-off-outline":"material/flag-off-outline.svg","material-flag-off":"material/flag-off.svg","material-flag-outline":"material/flag-outline.svg","material-flag-plus-outline":"material/flag-plus-outline.svg","material-flag-plus":"material/flag-plus.svg","material-flag-remove-outline":"material/flag-remove-outline.svg","material-flag-remove":"material/flag-remove.svg","material-flag-triangle":"material/flag-triangle.svg","material-flag-variant-minus-outline":"material/flag-variant-minus-outline.svg","material-flag-variant-minus":"material/flag-variant-minus.svg","material-flag-variant-off-outline":"material/flag-variant-off-outline.svg","material-flag-variant-off":"material/flag-variant-off.svg","material-flag-variant-outline":"material/flag-variant-outline.svg","material-flag-variant-plus-outline":"material/flag-variant-plus-outline.svg","material-flag-variant-plus":"material/flag-variant-plus.svg","material-flag-variant-remove-outline":"material/flag-variant-remove-outline.svg","material-flag-variant-remove":"material/flag-variant-remove.svg","material-flag-variant":"material/flag-variant.svg","material-flag":"material/flag.svg","material-flare":"material/flare.svg","material-flash-alert-outline":"material/flash-alert-outline.svg","material-flash-alert":"material/flash-alert.svg","material-flash-auto":"material/flash-auto.svg","material-flash-off-outline":"material/flash-off-outline.svg","material-flash-off":"material/flash-off.svg","material-flash-outline":"material/flash-outline.svg","material-flash-red-eye":"material/flash-red-eye.svg","material-flash-triangle-outline":"material/flash-triangle-outline.svg","material-flash-triangle":"material/flash-triangle.svg","material-flash":"material/flash.svg","material-flashlight-off":"material/flashlight-off.svg","material-flashlight":"material/flashlight.svg","material-flask-empty-minus-outline":"material/flask-empty-minus-outline.svg","material-flask-empty-minus":"material/flask-empty-minus.svg","material-flask-empty-off-outline":"material/flask-empty-off-outline.svg","material-flask-empty-off":"material/flask-empty-off.svg","material-flask-empty-outline":"material/flask-empty-outline.svg","material-flask-empty-plus-outline":"material/flask-empty-plus-outline.svg","material-flask-empty-plus":"material/flask-empty-plus.svg","material-flask-empty-remove-outline":"material/flask-empty-remove-outline.svg","material-flask-empty-remove":"material/flask-empty-remove.svg","material-flask-empty":"material/flask-empty.svg","material-flask-minus-outline":"material/flask-minus-outline.svg","material-flask-minus":"material/flask-minus.svg","material-flask-off-outline":"material/flask-off-outline.svg","material-flask-off":"material/flask-off.svg","material-flask-outline":"material/flask-outline.svg","material-flask-plus-outline":"material/flask-plus-outline.svg","material-flask-plus":"material/flask-plus.svg","material-flask-remove-outline":"material/flask-remove-outline.svg","material-flask-remove":"material/flask-remove.svg","material-flask-round-bottom-empty-outline":"material/flask-round-bottom-empty-outline.svg","material-flask-round-bottom-empty":"material/flask-round-bottom-empty.svg","material-flask-round-bottom-outline":"material/flask-round-bottom-outline.svg","material-flask-round-bottom":"material/flask-round-bottom.svg","material-flask":"material/flask.svg","material-fleur-de-lis":"material/fleur-de-lis.svg","material-flip-horizontal":"material/flip-horizontal.svg","material-flip-to-back":"material/flip-to-back.svg","material-flip-to-front":"material/flip-to-front.svg","material-flip-vertical":"material/flip-vertical.svg","material-floor-lamp-dual-outline":"material/floor-lamp-dual-outline.svg","material-floor-lamp-dual":"material/floor-lamp-dual.svg","material-floor-lamp-outline":"material/floor-lamp-outline.svg","material-floor-lamp-torchiere-outline":"material/floor-lamp-torchiere-outline.svg","material-floor-lamp-torchiere-variant-outline":"material/floor-lamp-torchiere-variant-outline.svg","material-floor-lamp-torchiere-variant":"material/floor-lamp-torchiere-variant.svg","material-floor-lamp-torchiere":"material/floor-lamp-torchiere.svg","material-floor-lamp":"material/floor-lamp.svg","material-floor-plan":"material/floor-plan.svg","material-floppy-variant":"material/floppy-variant.svg","material-floppy":"material/floppy.svg","material-flower-outline":"material/flower-outline.svg","material-flower-pollen-outline":"material/flower-pollen-outline.svg","material-flower-pollen":"material/flower-pollen.svg","material-flower-poppy":"material/flower-poppy.svg","material-flower-tulip-outline":"material/flower-tulip-outline.svg","material-flower-tulip":"material/flower-tulip.svg","material-flower":"material/flower.svg","material-focus-auto":"material/focus-auto.svg","material-focus-field-horizontal":"material/focus-field-horizontal.svg","material-focus-field-vertical":"material/focus-field-vertical.svg","material-focus-field":"material/focus-field.svg","material-folder-account-outline":"material/folder-account-outline.svg","material-folder-account":"material/folder-account.svg","material-folder-alert-outline":"material/folder-alert-outline.svg","material-folder-alert":"material/folder-alert.svg","material-folder-arrow-down-outline":"material/folder-arrow-down-outline.svg","material-folder-arrow-down":"material/folder-arrow-down.svg","material-folder-arrow-left-outline":"material/folder-arrow-left-outline.svg","material-folder-arrow-left-right-outline":"material/folder-arrow-left-right-outline.svg","material-folder-arrow-left-right":"material/folder-arrow-left-right.svg","material-folder-arrow-left":"material/folder-arrow-left.svg","material-folder-arrow-right-outline":"material/folder-arrow-right-outline.svg","material-folder-arrow-right":"material/folder-arrow-right.svg","material-folder-arrow-up-down-outline":"material/folder-arrow-up-down-outline.svg","material-folder-arrow-up-down":"material/folder-arrow-up-down.svg","material-folder-arrow-up-outline":"material/folder-arrow-up-outline.svg","material-folder-arrow-up":"material/folder-arrow-up.svg","material-folder-cancel-outline":"material/folder-cancel-outline.svg","material-folder-cancel":"material/folder-cancel.svg","material-folder-check-outline":"material/folder-check-outline.svg","material-folder-check":"material/folder-check.svg","material-folder-clock-outline":"material/folder-clock-outline.svg","material-folder-clock":"material/folder-clock.svg","material-folder-cog-outline":"material/folder-cog-outline.svg","material-folder-cog":"material/folder-cog.svg","material-folder-download-outline":"material/folder-download-outline.svg","material-folder-download":"material/folder-download.svg","material-folder-edit-outline":"material/folder-edit-outline.svg","material-folder-edit":"material/folder-edit.svg","material-folder-eye-outline":"material/folder-eye-outline.svg","material-folder-eye":"material/folder-eye.svg","material-folder-file-outline":"material/folder-file-outline.svg","material-folder-file":"material/folder-file.svg","material-folder-google-drive":"material/folder-google-drive.svg","material-folder-heart-outline":"material/folder-heart-outline.svg","material-folder-heart":"material/folder-heart.svg","material-folder-hidden":"material/folder-hidden.svg","material-folder-home-outline":"material/folder-home-outline.svg","material-folder-home":"material/folder-home.svg","material-folder-image":"material/folder-image.svg","material-folder-information-outline":"material/folder-information-outline.svg","material-folder-information":"material/folder-information.svg","material-folder-key-network-outline":"material/folder-key-network-outline.svg","material-folder-key-network":"material/folder-key-network.svg","material-folder-key-outline":"material/folder-key-outline.svg","material-folder-key":"material/folder-key.svg","material-folder-lock-open-outline":"material/folder-lock-open-outline.svg","material-folder-lock-open":"material/folder-lock-open.svg","material-folder-lock-outline":"material/folder-lock-outline.svg","material-folder-lock":"material/folder-lock.svg","material-folder-marker-outline":"material/folder-marker-outline.svg","material-folder-marker":"material/folder-marker.svg","material-folder-minus-outline":"material/folder-minus-outline.svg","material-folder-minus":"material/folder-minus.svg","material-folder-move-outline":"material/folder-move-outline.svg","material-folder-move":"material/folder-move.svg","material-folder-multiple-image":"material/folder-multiple-image.svg","material-folder-multiple-outline":"material/folder-multiple-outline.svg","material-folder-multiple-plus-outline":"material/folder-multiple-plus-outline.svg","material-folder-multiple-plus":"material/folder-multiple-plus.svg","material-folder-multiple":"material/folder-multiple.svg","material-folder-music-outline":"material/folder-music-outline.svg","material-folder-music":"material/folder-music.svg","material-folder-network-outline":"material/folder-network-outline.svg","material-folder-network":"material/folder-network.svg","material-folder-off-outline":"material/folder-off-outline.svg","material-folder-off":"material/folder-off.svg","material-folder-open-outline":"material/folder-open-outline.svg","material-folder-open":"material/folder-open.svg","material-folder-outline":"material/folder-outline.svg","material-folder-play-outline":"material/folder-play-outline.svg","material-folder-play":"material/folder-play.svg","material-folder-plus-outline":"material/folder-plus-outline.svg","material-folder-plus":"material/folder-plus.svg","material-folder-pound-outline":"material/folder-pound-outline.svg","material-folder-pound":"material/folder-pound.svg","material-folder-question-outline":"material/folder-question-outline.svg","material-folder-question":"material/folder-question.svg","material-folder-refresh-outline":"material/folder-refresh-outline.svg","material-folder-refresh":"material/folder-refresh.svg","material-folder-remove-outline":"material/folder-remove-outline.svg","material-folder-remove":"material/folder-remove.svg","material-folder-search-outline":"material/folder-search-outline.svg","material-folder-search":"material/folder-search.svg","material-folder-settings-outline":"material/folder-settings-outline.svg","material-folder-settings":"material/folder-settings.svg","material-folder-star-multiple-outline":"material/folder-star-multiple-outline.svg","material-folder-star-multiple":"material/folder-star-multiple.svg","material-folder-star-outline":"material/folder-star-outline.svg","material-folder-star":"material/folder-star.svg","material-folder-swap-outline":"material/folder-swap-outline.svg","material-folder-swap":"material/folder-swap.svg","material-folder-sync-outline":"material/folder-sync-outline.svg","material-folder-sync":"material/folder-sync.svg","material-folder-table-outline":"material/folder-table-outline.svg","material-folder-table":"material/folder-table.svg","material-folder-text-outline":"material/folder-text-outline.svg","material-folder-text":"material/folder-text.svg","material-folder-upload-outline":"material/folder-upload-outline.svg","material-folder-upload":"material/folder-upload.svg","material-folder-wrench-outline":"material/folder-wrench-outline.svg","material-folder-wrench":"material/folder-wrench.svg","material-folder-zip-outline":"material/folder-zip-outline.svg","material-folder-zip":"material/folder-zip.svg","material-folder":"material/folder.svg","material-font-awesome":"material/font-awesome.svg","material-food-apple-outline":"material/food-apple-outline.svg","material-food-apple":"material/food-apple.svg","material-food-croissant":"material/food-croissant.svg","material-food-drumstick-off-outline":"material/food-drumstick-off-outline.svg","material-food-drumstick-off":"material/food-drumstick-off.svg","material-food-drumstick-outline":"material/food-drumstick-outline.svg","material-food-drumstick":"material/food-drumstick.svg","material-food-fork-drink":"material/food-fork-drink.svg","material-food-halal":"material/food-halal.svg","material-food-hot-dog":"material/food-hot-dog.svg","material-food-kosher":"material/food-kosher.svg","material-food-off-outline":"material/food-off-outline.svg","material-food-off":"material/food-off.svg","material-food-outline":"material/food-outline.svg","material-food-steak-off":"material/food-steak-off.svg","material-food-steak":"material/food-steak.svg","material-food-takeout-box-outline":"material/food-takeout-box-outline.svg","material-food-takeout-box":"material/food-takeout-box.svg","material-food-turkey":"material/food-turkey.svg","material-food-variant-off":"material/food-variant-off.svg","material-food-variant":"material/food-variant.svg","material-food":"material/food.svg","material-foot-print":"material/foot-print.svg","material-football-australian":"material/football-australian.svg","material-football-helmet":"material/football-helmet.svg","material-football":"material/football.svg","material-forest":"material/forest.svg","material-forklift":"material/forklift.svg","material-form-dropdown":"material/form-dropdown.svg","material-form-select":"material/form-select.svg","material-form-textarea":"material/form-textarea.svg","material-form-textbox-lock":"material/form-textbox-lock.svg","material-form-textbox-password":"material/form-textbox-password.svg","material-form-textbox":"material/form-textbox.svg","material-format-align-bottom":"material/format-align-bottom.svg","material-format-align-center":"material/format-align-center.svg","material-format-align-justify":"material/format-align-justify.svg","material-format-align-left":"material/format-align-left.svg","material-format-align-middle":"material/format-align-middle.svg","material-format-align-right":"material/format-align-right.svg","material-format-align-top":"material/format-align-top.svg","material-format-annotation-minus":"material/format-annotation-minus.svg","material-format-annotation-plus":"material/format-annotation-plus.svg","material-format-bold":"material/format-bold.svg","material-format-clear":"material/format-clear.svg","material-format-color-fill":"material/format-color-fill.svg","material-format-color-highlight":"material/format-color-highlight.svg","material-format-color-marker-cancel":"material/format-color-marker-cancel.svg","material-format-color-text":"material/format-color-text.svg","material-format-columns":"material/format-columns.svg","material-format-float-center":"material/format-float-center.svg","material-format-float-left":"material/format-float-left.svg","material-format-float-none":"material/format-float-none.svg","material-format-float-right":"material/format-float-right.svg","material-format-font-size-decrease":"material/format-font-size-decrease.svg","material-format-font-size-increase":"material/format-font-size-increase.svg","material-format-font":"material/format-font.svg","material-format-header-1":"material/format-header-1.svg","material-format-header-2":"material/format-header-2.svg","material-format-header-3":"material/format-header-3.svg","material-format-header-4":"material/format-header-4.svg","material-format-header-5":"material/format-header-5.svg","material-format-header-6":"material/format-header-6.svg","material-format-header-decrease":"material/format-header-decrease.svg","material-format-header-equal":"material/format-header-equal.svg","material-format-header-increase":"material/format-header-increase.svg","material-format-header-pound":"material/format-header-pound.svg","material-format-horizontal-align-center":"material/format-horizontal-align-center.svg","material-format-horizontal-align-left":"material/format-horizontal-align-left.svg","material-format-horizontal-align-right":"material/format-horizontal-align-right.svg","material-format-indent-decrease":"material/format-indent-decrease.svg","material-format-indent-increase":"material/format-indent-increase.svg","material-format-italic":"material/format-italic.svg","material-format-letter-case-lower":"material/format-letter-case-lower.svg","material-format-letter-case-upper":"material/format-letter-case-upper.svg","material-format-letter-case":"material/format-letter-case.svg","material-format-letter-ends-with":"material/format-letter-ends-with.svg","material-format-letter-matches":"material/format-letter-matches.svg","material-format-letter-spacing-variant":"material/format-letter-spacing-variant.svg","material-format-letter-spacing":"material/format-letter-spacing.svg","material-format-letter-starts-with":"material/format-letter-starts-with.svg","material-format-line-height":"material/format-line-height.svg","material-format-line-spacing":"material/format-line-spacing.svg","material-format-line-style":"material/format-line-style.svg","material-format-line-weight":"material/format-line-weight.svg","material-format-list-bulleted-square":"material/format-list-bulleted-square.svg","material-format-list-bulleted-triangle":"material/format-list-bulleted-triangle.svg","material-format-list-bulleted-type":"material/format-list-bulleted-type.svg","material-format-list-bulleted":"material/format-list-bulleted.svg","material-format-list-checkbox":"material/format-list-checkbox.svg","material-format-list-checks":"material/format-list-checks.svg","material-format-list-group-plus":"material/format-list-group-plus.svg","material-format-list-group":"material/format-list-group.svg","material-format-list-numbered-rtl":"material/format-list-numbered-rtl.svg","material-format-list-numbered":"material/format-list-numbered.svg","material-format-list-text":"material/format-list-text.svg","material-format-overline":"material/format-overline.svg","material-format-page-break":"material/format-page-break.svg","material-format-page-split":"material/format-page-split.svg","material-format-paint":"material/format-paint.svg","material-format-paragraph-spacing":"material/format-paragraph-spacing.svg","material-format-paragraph":"material/format-paragraph.svg","material-format-pilcrow-arrow-left":"material/format-pilcrow-arrow-left.svg","material-format-pilcrow-arrow-right":"material/format-pilcrow-arrow-right.svg","material-format-pilcrow":"material/format-pilcrow.svg","material-format-quote-close-outline":"material/format-quote-close-outline.svg","material-format-quote-close":"material/format-quote-close.svg","material-format-quote-open-outline":"material/format-quote-open-outline.svg","material-format-quote-open":"material/format-quote-open.svg","material-format-rotate-90":"material/format-rotate-90.svg","material-format-section":"material/format-section.svg","material-format-size":"material/format-size.svg","material-format-strikethrough-variant":"material/format-strikethrough-variant.svg","material-format-strikethrough":"material/format-strikethrough.svg","material-format-subscript":"material/format-subscript.svg","material-format-superscript":"material/format-superscript.svg","material-format-text-rotation-angle-down":"material/format-text-rotation-angle-down.svg","material-format-text-rotation-angle-up":"material/format-text-rotation-angle-up.svg","material-format-text-rotation-down-vertical":"material/format-text-rotation-down-vertical.svg","material-format-text-rotation-down":"material/format-text-rotation-down.svg","material-format-text-rotation-none":"material/format-text-rotation-none.svg","material-format-text-rotation-up":"material/format-text-rotation-up.svg","material-format-text-rotation-vertical":"material/format-text-rotation-vertical.svg","material-format-text-variant-outline":"material/format-text-variant-outline.svg","material-format-text-variant":"material/format-text-variant.svg","material-format-text-wrapping-clip":"material/format-text-wrapping-clip.svg","material-format-text-wrapping-overflow":"material/format-text-wrapping-overflow.svg","material-format-text-wrapping-wrap":"material/format-text-wrapping-wrap.svg","material-format-text":"material/format-text.svg","material-format-textbox":"material/format-textbox.svg","material-format-title":"material/format-title.svg","material-format-underline-wavy":"material/format-underline-wavy.svg","material-format-underline":"material/format-underline.svg","material-format-vertical-align-bottom":"material/format-vertical-align-bottom.svg","material-format-vertical-align-center":"material/format-vertical-align-center.svg","material-format-vertical-align-top":"material/format-vertical-align-top.svg","material-format-wrap-inline":"material/format-wrap-inline.svg","material-format-wrap-square":"material/format-wrap-square.svg","material-format-wrap-tight":"material/format-wrap-tight.svg","material-format-wrap-top-bottom":"material/format-wrap-top-bottom.svg","material-forum-minus-outline":"material/forum-minus-outline.svg","material-forum-minus":"material/forum-minus.svg","material-forum-outline":"material/forum-outline.svg","material-forum-plus-outline":"material/forum-plus-outline.svg","material-forum-plus":"material/forum-plus.svg","material-forum-remove-outline":"material/forum-remove-outline.svg","material-forum-remove":"material/forum-remove.svg","material-forum":"material/forum.svg","material-forward":"material/forward.svg","material-forwardburger":"material/forwardburger.svg","material-fountain-pen-tip":"material/fountain-pen-tip.svg","material-fountain-pen":"material/fountain-pen.svg","material-fountain":"material/fountain.svg","material-fraction-one-half":"material/fraction-one-half.svg","material-freebsd":"material/freebsd.svg","material-french-fries":"material/french-fries.svg","material-frequently-asked-questions":"material/frequently-asked-questions.svg","material-fridge-alert-outline":"material/fridge-alert-outline.svg","material-fridge-alert":"material/fridge-alert.svg","material-fridge-bottom":"material/fridge-bottom.svg","material-fridge-industrial-alert-outline":"material/fridge-industrial-alert-outline.svg","material-fridge-industrial-alert":"material/fridge-industrial-alert.svg","material-fridge-industrial-off-outline":"material/fridge-industrial-off-outline.svg","material-fridge-industrial-off":"material/fridge-industrial-off.svg","material-fridge-industrial-outline":"material/fridge-industrial-outline.svg","material-fridge-industrial":"material/fridge-industrial.svg","material-fridge-off-outline":"material/fridge-off-outline.svg","material-fridge-off":"material/fridge-off.svg","material-fridge-outline":"material/fridge-outline.svg","material-fridge-top":"material/fridge-top.svg","material-fridge-variant-alert-outline":"material/fridge-variant-alert-outline.svg","material-fridge-variant-alert":"material/fridge-variant-alert.svg","material-fridge-variant-off-outline":"material/fridge-variant-off-outline.svg","material-fridge-variant-off":"material/fridge-variant-off.svg","material-fridge-variant-outline":"material/fridge-variant-outline.svg","material-fridge-variant":"material/fridge-variant.svg","material-fridge":"material/fridge.svg","material-fruit-cherries-off":"material/fruit-cherries-off.svg","material-fruit-cherries":"material/fruit-cherries.svg","material-fruit-citrus-off":"material/fruit-citrus-off.svg","material-fruit-citrus":"material/fruit-citrus.svg","material-fruit-grapes-outline":"material/fruit-grapes-outline.svg","material-fruit-grapes":"material/fruit-grapes.svg","material-fruit-pear":"material/fruit-pear.svg","material-fruit-pineapple":"material/fruit-pineapple.svg","material-fruit-watermelon":"material/fruit-watermelon.svg","material-fuel-cell":"material/fuel-cell.svg","material-fuel":"material/fuel.svg","material-fullscreen-exit":"material/fullscreen-exit.svg","material-fullscreen":"material/fullscreen.svg","material-function-variant":"material/function-variant.svg","material-function":"material/function.svg","material-furigana-horizontal":"material/furigana-horizontal.svg","material-furigana-vertical":"material/furigana-vertical.svg","material-fuse-alert":"material/fuse-alert.svg","material-fuse-blade":"material/fuse-blade.svg","material-fuse-off":"material/fuse-off.svg","material-fuse":"material/fuse.svg","material-gamepad-circle-down":"material/gamepad-circle-down.svg","material-gamepad-circle-left":"material/gamepad-circle-left.svg","material-gamepad-circle-outline":"material/gamepad-circle-outline.svg","material-gamepad-circle-right":"material/gamepad-circle-right.svg","material-gamepad-circle-up":"material/gamepad-circle-up.svg","material-gamepad-circle":"material/gamepad-circle.svg","material-gamepad-down":"material/gamepad-down.svg","material-gamepad-left":"material/gamepad-left.svg","material-gamepad-outline":"material/gamepad-outline.svg","material-gamepad-right":"material/gamepad-right.svg","material-gamepad-round-down":"material/gamepad-round-down.svg","material-gamepad-round-left":"material/gamepad-round-left.svg","material-gamepad-round-outline":"material/gamepad-round-outline.svg","material-gamepad-round-right":"material/gamepad-round-right.svg","material-gamepad-round-up":"material/gamepad-round-up.svg","material-gamepad-round":"material/gamepad-round.svg","material-gamepad-square-outline":"material/gamepad-square-outline.svg","material-gamepad-square":"material/gamepad-square.svg","material-gamepad-up":"material/gamepad-up.svg","material-gamepad-variant-outline":"material/gamepad-variant-outline.svg","material-gamepad-variant":"material/gamepad-variant.svg","material-gamepad":"material/gamepad.svg","material-gamma":"material/gamma.svg","material-gantry-crane":"material/gantry-crane.svg","material-garage-alert-variant":"material/garage-alert-variant.svg","material-garage-alert":"material/garage-alert.svg","material-garage-lock":"material/garage-lock.svg","material-garage-open-variant":"material/garage-open-variant.svg","material-garage-open":"material/garage-open.svg","material-garage-variant-lock":"material/garage-variant-lock.svg","material-garage-variant":"material/garage-variant.svg","material-garage":"material/garage.svg","material-gas-burner":"material/gas-burner.svg","material-gas-cylinder":"material/gas-cylinder.svg","material-gas-station-off-outline":"material/gas-station-off-outline.svg","material-gas-station-off":"material/gas-station-off.svg","material-gas-station-outline":"material/gas-station-outline.svg","material-gas-station":"material/gas-station.svg","material-gate-alert":"material/gate-alert.svg","material-gate-and":"material/gate-and.svg","material-gate-arrow-left":"material/gate-arrow-left.svg","material-gate-arrow-right":"material/gate-arrow-right.svg","material-gate-buffer":"material/gate-buffer.svg","material-gate-nand":"material/gate-nand.svg","material-gate-nor":"material/gate-nor.svg","material-gate-not":"material/gate-not.svg","material-gate-open":"material/gate-open.svg","material-gate-or":"material/gate-or.svg","material-gate-xnor":"material/gate-xnor.svg","material-gate-xor":"material/gate-xor.svg","material-gate":"material/gate.svg","material-gatsby":"material/gatsby.svg","material-gauge-empty":"material/gauge-empty.svg","material-gauge-full":"material/gauge-full.svg","material-gauge-low":"material/gauge-low.svg","material-gauge":"material/gauge.svg","material-gavel":"material/gavel.svg","material-gender-female":"material/gender-female.svg","material-gender-male-female-variant":"material/gender-male-female-variant.svg","material-gender-male-female":"material/gender-male-female.svg","material-gender-male":"material/gender-male.svg","material-gender-non-binary":"material/gender-non-binary.svg","material-gender-transgender":"material/gender-transgender.svg","material-gentoo":"material/gentoo.svg","material-gesture-double-tap":"material/gesture-double-tap.svg","material-gesture-pinch":"material/gesture-pinch.svg","material-gesture-spread":"material/gesture-spread.svg","material-gesture-swipe-down":"material/gesture-swipe-down.svg","material-gesture-swipe-horizontal":"material/gesture-swipe-horizontal.svg","material-gesture-swipe-left":"material/gesture-swipe-left.svg","material-gesture-swipe-right":"material/gesture-swipe-right.svg","material-gesture-swipe-up":"material/gesture-swipe-up.svg","material-gesture-swipe-vertical":"material/gesture-swipe-vertical.svg","material-gesture-swipe":"material/gesture-swipe.svg","material-gesture-tap-box":"material/gesture-tap-box.svg","material-gesture-tap-button":"material/gesture-tap-button.svg","material-gesture-tap-hold":"material/gesture-tap-hold.svg","material-gesture-tap":"material/gesture-tap.svg","material-gesture-two-double-tap":"material/gesture-two-double-tap.svg","material-gesture-two-tap":"material/gesture-two-tap.svg","material-gesture":"material/gesture.svg","material-ghost-off-outline":"material/ghost-off-outline.svg","material-ghost-off":"material/ghost-off.svg","material-ghost-outline":"material/ghost-outline.svg","material-ghost":"material/ghost.svg","material-gift-off-outline":"material/gift-off-outline.svg","material-gift-off":"material/gift-off.svg","material-gift-open-outline":"material/gift-open-outline.svg","material-gift-open":"material/gift-open.svg","material-gift-outline":"material/gift-outline.svg","material-gift":"material/gift.svg","material-git":"material/git.svg","material-github":"material/github.svg","material-gitlab":"material/gitlab.svg","material-glass-cocktail-off":"material/glass-cocktail-off.svg","material-glass-cocktail":"material/glass-cocktail.svg","material-glass-flute":"material/glass-flute.svg","material-glass-fragile":"material/glass-fragile.svg","material-glass-mug-off":"material/glass-mug-off.svg","material-glass-mug-variant-off":"material/glass-mug-variant-off.svg","material-glass-mug-variant":"material/glass-mug-variant.svg","material-glass-mug":"material/glass-mug.svg","material-glass-pint-outline":"material/glass-pint-outline.svg","material-glass-stange":"material/glass-stange.svg","material-glass-tulip":"material/glass-tulip.svg","material-glass-wine":"material/glass-wine.svg","material-glasses":"material/glasses.svg","material-globe-light-outline":"material/globe-light-outline.svg","material-globe-light":"material/globe-light.svg","material-globe-model":"material/globe-model.svg","material-gmail":"material/gmail.svg","material-gnome":"material/gnome.svg","material-go-kart-track":"material/go-kart-track.svg","material-go-kart":"material/go-kart.svg","material-gog":"material/gog.svg","material-gold":"material/gold.svg","material-golf-cart":"material/golf-cart.svg","material-golf-tee":"material/golf-tee.svg","material-golf":"material/golf.svg","material-gondola":"material/gondola.svg","material-goodreads":"material/goodreads.svg","material-google-ads":"material/google-ads.svg","material-google-analytics":"material/google-analytics.svg","material-google-assistant":"material/google-assistant.svg","material-google-cardboard":"material/google-cardboard.svg","material-google-chrome":"material/google-chrome.svg","material-google-circles-communities":"material/google-circles-communities.svg","material-google-circles-extended":"material/google-circles-extended.svg","material-google-circles-group":"material/google-circles-group.svg","material-google-circles":"material/google-circles.svg","material-google-classroom":"material/google-classroom.svg","material-google-cloud":"material/google-cloud.svg","material-google-downasaur":"material/google-downasaur.svg","material-google-drive":"material/google-drive.svg","material-google-earth":"material/google-earth.svg","material-google-fit":"material/google-fit.svg","material-google-glass":"material/google-glass.svg","material-google-hangouts":"material/google-hangouts.svg","material-google-keep":"material/google-keep.svg","material-google-lens":"material/google-lens.svg","material-google-maps":"material/google-maps.svg","material-google-my-business":"material/google-my-business.svg","material-google-nearby":"material/google-nearby.svg","material-google-play":"material/google-play.svg","material-google-plus":"material/google-plus.svg","material-google-podcast":"material/google-podcast.svg","material-google-spreadsheet":"material/google-spreadsheet.svg","material-google-street-view":"material/google-street-view.svg","material-google-translate":"material/google-translate.svg","material-google":"material/google.svg","material-gradient-horizontal":"material/gradient-horizontal.svg","material-gradient-vertical":"material/gradient-vertical.svg","material-grain":"material/grain.svg","material-graph-outline":"material/graph-outline.svg","material-graph":"material/graph.svg","material-graphql":"material/graphql.svg","material-grass":"material/grass.svg","material-grave-stone":"material/grave-stone.svg","material-grease-pencil":"material/grease-pencil.svg","material-greater-than-or-equal":"material/greater-than-or-equal.svg","material-greater-than":"material/greater-than.svg","material-greenhouse":"material/greenhouse.svg","material-grid-large":"material/grid-large.svg","material-grid-off":"material/grid-off.svg","material-grid":"material/grid.svg","material-grill-outline":"material/grill-outline.svg","material-grill":"material/grill.svg","material-group":"material/group.svg","material-guitar-acoustic":"material/guitar-acoustic.svg","material-guitar-electric":"material/guitar-electric.svg","material-guitar-pick-outline":"material/guitar-pick-outline.svg","material-guitar-pick":"material/guitar-pick.svg","material-guy-fawkes-mask":"material/guy-fawkes-mask.svg","material-gymnastics":"material/gymnastics.svg","material-hail":"material/hail.svg","material-hair-dryer-outline":"material/hair-dryer-outline.svg","material-hair-dryer":"material/hair-dryer.svg","material-halloween":"material/halloween.svg","material-hamburger-check":"material/hamburger-check.svg","material-hamburger-minus":"material/hamburger-minus.svg","material-hamburger-off":"material/hamburger-off.svg","material-hamburger-plus":"material/hamburger-plus.svg","material-hamburger-remove":"material/hamburger-remove.svg","material-hamburger":"material/hamburger.svg","material-hammer-screwdriver":"material/hammer-screwdriver.svg","material-hammer-sickle":"material/hammer-sickle.svg","material-hammer-wrench":"material/hammer-wrench.svg","material-hammer":"material/hammer.svg","material-hand-back-left-off-outline":"material/hand-back-left-off-outline.svg","material-hand-back-left-off":"material/hand-back-left-off.svg","material-hand-back-left-outline":"material/hand-back-left-outline.svg","material-hand-back-left":"material/hand-back-left.svg","material-hand-back-right-off-outline":"material/hand-back-right-off-outline.svg","material-hand-back-right-off":"material/hand-back-right-off.svg","material-hand-back-right-outline":"material/hand-back-right-outline.svg","material-hand-back-right":"material/hand-back-right.svg","material-hand-clap-off":"material/hand-clap-off.svg","material-hand-clap":"material/hand-clap.svg","material-hand-coin-outline":"material/hand-coin-outline.svg","material-hand-coin":"material/hand-coin.svg","material-hand-cycle":"material/hand-cycle.svg","material-hand-extended-outline":"material/hand-extended-outline.svg","material-hand-extended":"material/hand-extended.svg","material-hand-front-left-outline":"material/hand-front-left-outline.svg","material-hand-front-left":"material/hand-front-left.svg","material-hand-front-right-outline":"material/hand-front-right-outline.svg","material-hand-front-right":"material/hand-front-right.svg","material-hand-heart-outline":"material/hand-heart-outline.svg","material-hand-heart":"material/hand-heart.svg","material-hand-okay":"material/hand-okay.svg","material-hand-peace-variant":"material/hand-peace-variant.svg","material-hand-peace":"material/hand-peace.svg","material-hand-pointing-down":"material/hand-pointing-down.svg","material-hand-pointing-left":"material/hand-pointing-left.svg","material-hand-pointing-right":"material/hand-pointing-right.svg","material-hand-pointing-up":"material/hand-pointing-up.svg","material-hand-saw":"material/hand-saw.svg","material-hand-wash-outline":"material/hand-wash-outline.svg","material-hand-wash":"material/hand-wash.svg","material-hand-water":"material/hand-water.svg","material-hand-wave-outline":"material/hand-wave-outline.svg","material-hand-wave":"material/hand-wave.svg","material-handball":"material/handball.svg","material-handcuffs":"material/handcuffs.svg","material-hands-pray":"material/hands-pray.svg","material-handshake-outline":"material/handshake-outline.svg","material-handshake":"material/handshake.svg","material-hanger":"material/hanger.svg","material-hard-hat":"material/hard-hat.svg","material-harddisk-plus":"material/harddisk-plus.svg","material-harddisk-remove":"material/harddisk-remove.svg","material-harddisk":"material/harddisk.svg","material-hat-fedora":"material/hat-fedora.svg","material-hazard-lights":"material/hazard-lights.svg","material-hdmi-port":"material/hdmi-port.svg","material-hdr-off":"material/hdr-off.svg","material-hdr":"material/hdr.svg","material-head-alert-outline":"material/head-alert-outline.svg","material-head-alert":"material/head-alert.svg","material-head-check-outline":"material/head-check-outline.svg","material-head-check":"material/head-check.svg","material-head-cog-outline":"material/head-cog-outline.svg","material-head-cog":"material/head-cog.svg","material-head-dots-horizontal-outline":"material/head-dots-horizontal-outline.svg","material-head-dots-horizontal":"material/head-dots-horizontal.svg","material-head-flash-outline":"material/head-flash-outline.svg","material-head-flash":"material/head-flash.svg","material-head-heart-outline":"material/head-heart-outline.svg","material-head-heart":"material/head-heart.svg","material-head-lightbulb-outline":"material/head-lightbulb-outline.svg","material-head-lightbulb":"material/head-lightbulb.svg","material-head-minus-outline":"material/head-minus-outline.svg","material-head-minus":"material/head-minus.svg","material-head-outline":"material/head-outline.svg","material-head-plus-outline":"material/head-plus-outline.svg","material-head-plus":"material/head-plus.svg","material-head-question-outline":"material/head-question-outline.svg","material-head-question":"material/head-question.svg","material-head-remove-outline":"material/head-remove-outline.svg","material-head-remove":"material/head-remove.svg","material-head-snowflake-outline":"material/head-snowflake-outline.svg","material-head-snowflake":"material/head-snowflake.svg","material-head-sync-outline":"material/head-sync-outline.svg","material-head-sync":"material/head-sync.svg","material-head":"material/head.svg","material-headphones-bluetooth":"material/headphones-bluetooth.svg","material-headphones-box":"material/headphones-box.svg","material-headphones-off":"material/headphones-off.svg","material-headphones-settings":"material/headphones-settings.svg","material-headphones":"material/headphones.svg","material-headset-dock":"material/headset-dock.svg","material-headset-off":"material/headset-off.svg","material-headset":"material/headset.svg","material-heart-box-outline":"material/heart-box-outline.svg","material-heart-box":"material/heart-box.svg","material-heart-broken-outline":"material/heart-broken-outline.svg","material-heart-broken":"material/heart-broken.svg","material-heart-circle-outline":"material/heart-circle-outline.svg","material-heart-circle":"material/heart-circle.svg","material-heart-cog-outline":"material/heart-cog-outline.svg","material-heart-cog":"material/heart-cog.svg","material-heart-flash":"material/heart-flash.svg","material-heart-half-full":"material/heart-half-full.svg","material-heart-half-outline":"material/heart-half-outline.svg","material-heart-half":"material/heart-half.svg","material-heart-minus-outline":"material/heart-minus-outline.svg","material-heart-minus":"material/heart-minus.svg","material-heart-multiple-outline":"material/heart-multiple-outline.svg","material-heart-multiple":"material/heart-multiple.svg","material-heart-off-outline":"material/heart-off-outline.svg","material-heart-off":"material/heart-off.svg","material-heart-outline":"material/heart-outline.svg","material-heart-plus-outline":"material/heart-plus-outline.svg","material-heart-plus":"material/heart-plus.svg","material-heart-pulse":"material/heart-pulse.svg","material-heart-remove-outline":"material/heart-remove-outline.svg","material-heart-remove":"material/heart-remove.svg","material-heart-settings-outline":"material/heart-settings-outline.svg","material-heart-settings":"material/heart-settings.svg","material-heart":"material/heart.svg","material-heat-pump-outline":"material/heat-pump-outline.svg","material-heat-pump":"material/heat-pump.svg","material-heat-wave":"material/heat-wave.svg","material-heating-coil":"material/heating-coil.svg","material-helicopter":"material/helicopter.svg","material-help-box":"material/help-box.svg","material-help-circle-outline":"material/help-circle-outline.svg","material-help-circle":"material/help-circle.svg","material-help-network-outline":"material/help-network-outline.svg","material-help-network":"material/help-network.svg","material-help-rhombus-outline":"material/help-rhombus-outline.svg","material-help-rhombus":"material/help-rhombus.svg","material-help":"material/help.svg","material-hexadecimal":"material/hexadecimal.svg","material-hexagon-multiple-outline":"material/hexagon-multiple-outline.svg","material-hexagon-multiple":"material/hexagon-multiple.svg","material-hexagon-outline":"material/hexagon-outline.svg","material-hexagon-slice-1":"material/hexagon-slice-1.svg","material-hexagon-slice-2":"material/hexagon-slice-2.svg","material-hexagon-slice-3":"material/hexagon-slice-3.svg","material-hexagon-slice-4":"material/hexagon-slice-4.svg","material-hexagon-slice-5":"material/hexagon-slice-5.svg","material-hexagon-slice-6":"material/hexagon-slice-6.svg","material-hexagon":"material/hexagon.svg","material-hexagram-outline":"material/hexagram-outline.svg","material-hexagram":"material/hexagram.svg","material-high-definition-box":"material/high-definition-box.svg","material-high-definition":"material/high-definition.svg","material-highway":"material/highway.svg","material-hiking":"material/hiking.svg","material-history":"material/history.svg","material-hockey-puck":"material/hockey-puck.svg","material-hockey-sticks":"material/hockey-sticks.svg","material-hololens":"material/hololens.svg","material-home-account":"material/home-account.svg","material-home-alert-outline":"material/home-alert-outline.svg","material-home-alert":"material/home-alert.svg","material-home-analytics":"material/home-analytics.svg","material-home-assistant":"material/home-assistant.svg","material-home-automation":"material/home-automation.svg","material-home-battery-outline":"material/home-battery-outline.svg","material-home-battery":"material/home-battery.svg","material-home-circle-outline":"material/home-circle-outline.svg","material-home-circle":"material/home-circle.svg","material-home-city-outline":"material/home-city-outline.svg","material-home-city":"material/home-city.svg","material-home-clock-outline":"material/home-clock-outline.svg","material-home-clock":"material/home-clock.svg","material-home-edit-outline":"material/home-edit-outline.svg","material-home-edit":"material/home-edit.svg","material-home-export-outline":"material/home-export-outline.svg","material-home-flood":"material/home-flood.svg","material-home-floor-0":"material/home-floor-0.svg","material-home-floor-1":"material/home-floor-1.svg","material-home-floor-2":"material/home-floor-2.svg","material-home-floor-3":"material/home-floor-3.svg","material-home-floor-a":"material/home-floor-a.svg","material-home-floor-b":"material/home-floor-b.svg","material-home-floor-g":"material/home-floor-g.svg","material-home-floor-l":"material/home-floor-l.svg","material-home-floor-negative-1":"material/home-floor-negative-1.svg","material-home-group-minus":"material/home-group-minus.svg","material-home-group-plus":"material/home-group-plus.svg","material-home-group-remove":"material/home-group-remove.svg","material-home-group":"material/home-group.svg","material-home-heart":"material/home-heart.svg","material-home-import-outline":"material/home-import-outline.svg","material-home-lightbulb-outline":"material/home-lightbulb-outline.svg","material-home-lightbulb":"material/home-lightbulb.svg","material-home-lightning-bolt-outline":"material/home-lightning-bolt-outline.svg","material-home-lightning-bolt":"material/home-lightning-bolt.svg","material-home-lock-open":"material/home-lock-open.svg","material-home-lock":"material/home-lock.svg","material-home-map-marker":"material/home-map-marker.svg","material-home-minus-outline":"material/home-minus-outline.svg","material-home-minus":"material/home-minus.svg","material-home-modern":"material/home-modern.svg","material-home-off-outline":"material/home-off-outline.svg","material-home-off":"material/home-off.svg","material-home-outline":"material/home-outline.svg","material-home-plus-outline":"material/home-plus-outline.svg","material-home-plus":"material/home-plus.svg","material-home-remove-outline":"material/home-remove-outline.svg","material-home-remove":"material/home-remove.svg","material-home-roof":"material/home-roof.svg","material-home-search-outline":"material/home-search-outline.svg","material-home-search":"material/home-search.svg","material-home-silo-outline":"material/home-silo-outline.svg","material-home-silo":"material/home-silo.svg","material-home-switch-outline":"material/home-switch-outline.svg","material-home-switch":"material/home-switch.svg","material-home-thermometer-outline":"material/home-thermometer-outline.svg","material-home-thermometer":"material/home-thermometer.svg","material-home-variant-outline":"material/home-variant-outline.svg","material-home-variant":"material/home-variant.svg","material-home":"material/home.svg","material-hook-off":"material/hook-off.svg","material-hook":"material/hook.svg","material-hoop-house":"material/hoop-house.svg","material-hops":"material/hops.svg","material-horizontal-rotate-clockwise":"material/horizontal-rotate-clockwise.svg","material-horizontal-rotate-counterclockwise":"material/horizontal-rotate-counterclockwise.svg","material-horse-human":"material/horse-human.svg","material-horse-variant-fast":"material/horse-variant-fast.svg","material-horse-variant":"material/horse-variant.svg","material-horse":"material/horse.svg","material-horseshoe":"material/horseshoe.svg","material-hospital-box-outline":"material/hospital-box-outline.svg","material-hospital-box":"material/hospital-box.svg","material-hospital-building":"material/hospital-building.svg","material-hospital-marker":"material/hospital-marker.svg","material-hospital":"material/hospital.svg","material-hot-tub":"material/hot-tub.svg","material-hours-24":"material/hours-24.svg","material-hubspot":"material/hubspot.svg","material-hulu":"material/hulu.svg","material-human-baby-changing-table":"material/human-baby-changing-table.svg","material-human-cane":"material/human-cane.svg","material-human-capacity-decrease":"material/human-capacity-decrease.svg","material-human-capacity-increase":"material/human-capacity-increase.svg","material-human-child":"material/human-child.svg","material-human-dolly":"material/human-dolly.svg","material-human-edit":"material/human-edit.svg","material-human-female-boy":"material/human-female-boy.svg","material-human-female-dance":"material/human-female-dance.svg","material-human-female-female":"material/human-female-female.svg","material-human-female-girl":"material/human-female-girl.svg","material-human-female":"material/human-female.svg","material-human-greeting-proximity":"material/human-greeting-proximity.svg","material-human-greeting-variant":"material/human-greeting-variant.svg","material-human-greeting":"material/human-greeting.svg","material-human-handsdown":"material/human-handsdown.svg","material-human-handsup":"material/human-handsup.svg","material-human-male-board-poll":"material/human-male-board-poll.svg","material-human-male-board":"material/human-male-board.svg","material-human-male-boy":"material/human-male-boy.svg","material-human-male-child":"material/human-male-child.svg","material-human-male-female-child":"material/human-male-female-child.svg","material-human-male-female":"material/human-male-female.svg","material-human-male-girl":"material/human-male-girl.svg","material-human-male-height-variant":"material/human-male-height-variant.svg","material-human-male-height":"material/human-male-height.svg","material-human-male-male":"material/human-male-male.svg","material-human-male":"material/human-male.svg","material-human-non-binary":"material/human-non-binary.svg","material-human-pregnant":"material/human-pregnant.svg","material-human-queue":"material/human-queue.svg","material-human-scooter":"material/human-scooter.svg","material-human-walker":"material/human-walker.svg","material-human-wheelchair":"material/human-wheelchair.svg","material-human-white-cane":"material/human-white-cane.svg","material-human":"material/human.svg","material-humble-bundle":"material/humble-bundle.svg","material-hvac-off":"material/hvac-off.svg","material-hvac":"material/hvac.svg","material-hydraulic-oil-level":"material/hydraulic-oil-level.svg","material-hydraulic-oil-temperature":"material/hydraulic-oil-temperature.svg","material-hydro-power":"material/hydro-power.svg","material-hydrogen-station":"material/hydrogen-station.svg","material-ice-cream-off":"material/ice-cream-off.svg","material-ice-cream":"material/ice-cream.svg","material-ice-pop":"material/ice-pop.svg","material-id-card":"material/id-card.svg","material-identifier":"material/identifier.svg","material-ideogram-cjk-variant":"material/ideogram-cjk-variant.svg","material-ideogram-cjk":"material/ideogram-cjk.svg","material-image-album":"material/image-album.svg","material-image-area-close":"material/image-area-close.svg","material-image-area":"material/image-area.svg","material-image-auto-adjust":"material/image-auto-adjust.svg","material-image-broken-variant":"material/image-broken-variant.svg","material-image-broken":"material/image-broken.svg","material-image-check-outline":"material/image-check-outline.svg","material-image-check":"material/image-check.svg","material-image-edit-outline":"material/image-edit-outline.svg","material-image-edit":"material/image-edit.svg","material-image-filter-black-white":"material/image-filter-black-white.svg","material-image-filter-center-focus-strong-outline":"material/image-filter-center-focus-strong-outline.svg","material-image-filter-center-focus-strong":"material/image-filter-center-focus-strong.svg","material-image-filter-center-focus-weak":"material/image-filter-center-focus-weak.svg","material-image-filter-center-focus":"material/image-filter-center-focus.svg","material-image-filter-drama":"material/image-filter-drama.svg","material-image-filter-frames":"material/image-filter-frames.svg","material-image-filter-hdr":"material/image-filter-hdr.svg","material-image-filter-none":"material/image-filter-none.svg","material-image-filter-tilt-shift":"material/image-filter-tilt-shift.svg","material-image-filter-vintage":"material/image-filter-vintage.svg","material-image-frame":"material/image-frame.svg","material-image-lock-outline":"material/image-lock-outline.svg","material-image-lock":"material/image-lock.svg","material-image-marker-outline":"material/image-marker-outline.svg","material-image-marker":"material/image-marker.svg","material-image-minus-outline":"material/image-minus-outline.svg","material-image-minus":"material/image-minus.svg","material-image-move":"material/image-move.svg","material-image-multiple-outline":"material/image-multiple-outline.svg","material-image-multiple":"material/image-multiple.svg","material-image-off-outline":"material/image-off-outline.svg","material-image-off":"material/image-off.svg","material-image-outline":"material/image-outline.svg","material-image-plus-outline":"material/image-plus-outline.svg","material-image-plus":"material/image-plus.svg","material-image-refresh-outline":"material/image-refresh-outline.svg","material-image-refresh":"material/image-refresh.svg","material-image-remove-outline":"material/image-remove-outline.svg","material-image-remove":"material/image-remove.svg","material-image-search-outline":"material/image-search-outline.svg","material-image-search":"material/image-search.svg","material-image-size-select-actual":"material/image-size-select-actual.svg","material-image-size-select-large":"material/image-size-select-large.svg","material-image-size-select-small":"material/image-size-select-small.svg","material-image-sync-outline":"material/image-sync-outline.svg","material-image-sync":"material/image-sync.svg","material-image-text":"material/image-text.svg","material-image":"material/image.svg","material-import":"material/import.svg","material-inbox-arrow-down-outline":"material/inbox-arrow-down-outline.svg","material-inbox-arrow-down":"material/inbox-arrow-down.svg","material-inbox-arrow-up-outline":"material/inbox-arrow-up-outline.svg","material-inbox-arrow-up":"material/inbox-arrow-up.svg","material-inbox-full-outline":"material/inbox-full-outline.svg","material-inbox-full":"material/inbox-full.svg","material-inbox-multiple-outline":"material/inbox-multiple-outline.svg","material-inbox-multiple":"material/inbox-multiple.svg","material-inbox-outline":"material/inbox-outline.svg","material-inbox-remove-outline":"material/inbox-remove-outline.svg","material-inbox-remove":"material/inbox-remove.svg","material-inbox":"material/inbox.svg","material-incognito-circle-off":"material/incognito-circle-off.svg","material-incognito-circle":"material/incognito-circle.svg","material-incognito-off":"material/incognito-off.svg","material-incognito":"material/incognito.svg","material-induction":"material/induction.svg","material-infinity":"material/infinity.svg","material-information-off-outline":"material/information-off-outline.svg","material-information-off":"material/information-off.svg","material-information-outline":"material/information-outline.svg","material-information-variant":"material/information-variant.svg","material-information":"material/information.svg","material-instagram":"material/instagram.svg","material-instrument-triangle":"material/instrument-triangle.svg","material-integrated-circuit-chip":"material/integrated-circuit-chip.svg","material-invert-colors-off":"material/invert-colors-off.svg","material-invert-colors":"material/invert-colors.svg","material-iobroker":"material/iobroker.svg","material-ip-network-outline":"material/ip-network-outline.svg","material-ip-network":"material/ip-network.svg","material-ip-outline":"material/ip-outline.svg","material-ip":"material/ip.svg","material-ipod":"material/ipod.svg","material-iron-board":"material/iron-board.svg","material-iron-outline":"material/iron-outline.svg","material-iron":"material/iron.svg","material-island":"material/island.svg","material-iv-bag":"material/iv-bag.svg","material-jabber":"material/jabber.svg","material-jeepney":"material/jeepney.svg","material-jellyfish-outline":"material/jellyfish-outline.svg","material-jellyfish":"material/jellyfish.svg","material-jira":"material/jira.svg","material-jquery":"material/jquery.svg","material-jsfiddle":"material/jsfiddle.svg","material-jump-rope":"material/jump-rope.svg","material-kabaddi":"material/kabaddi.svg","material-kangaroo":"material/kangaroo.svg","material-karate":"material/karate.svg","material-kayaking":"material/kayaking.svg","material-keg":"material/keg.svg","material-kettle-alert-outline":"material/kettle-alert-outline.svg","material-kettle-alert":"material/kettle-alert.svg","material-kettle-off-outline":"material/kettle-off-outline.svg","material-kettle-off":"material/kettle-off.svg","material-kettle-outline":"material/kettle-outline.svg","material-kettle-pour-over":"material/kettle-pour-over.svg","material-kettle-steam-outline":"material/kettle-steam-outline.svg","material-kettle-steam":"material/kettle-steam.svg","material-kettle":"material/kettle.svg","material-kettlebell":"material/kettlebell.svg","material-key-alert-outline":"material/key-alert-outline.svg","material-key-alert":"material/key-alert.svg","material-key-arrow-right":"material/key-arrow-right.svg","material-key-chain-variant":"material/key-chain-variant.svg","material-key-chain":"material/key-chain.svg","material-key-change":"material/key-change.svg","material-key-link":"material/key-link.svg","material-key-minus":"material/key-minus.svg","material-key-outline":"material/key-outline.svg","material-key-plus":"material/key-plus.svg","material-key-remove":"material/key-remove.svg","material-key-star":"material/key-star.svg","material-key-variant":"material/key-variant.svg","material-key-wireless":"material/key-wireless.svg","material-key":"material/key.svg","material-keyboard-backspace":"material/keyboard-backspace.svg","material-keyboard-caps":"material/keyboard-caps.svg","material-keyboard-close":"material/keyboard-close.svg","material-keyboard-esc":"material/keyboard-esc.svg","material-keyboard-f1":"material/keyboard-f1.svg","material-keyboard-f10":"material/keyboard-f10.svg","material-keyboard-f11":"material/keyboard-f11.svg","material-keyboard-f12":"material/keyboard-f12.svg","material-keyboard-f2":"material/keyboard-f2.svg","material-keyboard-f3":"material/keyboard-f3.svg","material-keyboard-f4":"material/keyboard-f4.svg","material-keyboard-f5":"material/keyboard-f5.svg","material-keyboard-f6":"material/keyboard-f6.svg","material-keyboard-f7":"material/keyboard-f7.svg","material-keyboard-f8":"material/keyboard-f8.svg","material-keyboard-f9":"material/keyboard-f9.svg","material-keyboard-off-outline":"material/keyboard-off-outline.svg","material-keyboard-off":"material/keyboard-off.svg","material-keyboard-outline":"material/keyboard-outline.svg","material-keyboard-return":"material/keyboard-return.svg","material-keyboard-settings-outline":"material/keyboard-settings-outline.svg","material-keyboard-settings":"material/keyboard-settings.svg","material-keyboard-space":"material/keyboard-space.svg","material-keyboard-tab-reverse":"material/keyboard-tab-reverse.svg","material-keyboard-tab":"material/keyboard-tab.svg","material-keyboard-variant":"material/keyboard-variant.svg","material-keyboard":"material/keyboard.svg","material-khanda":"material/khanda.svg","material-kickstarter":"material/kickstarter.svg","material-kite-outline":"material/kite-outline.svg","material-kite":"material/kite.svg","material-kitesurfing":"material/kitesurfing.svg","material-klingon":"material/klingon.svg","material-knife-military":"material/knife-military.svg","material-knife":"material/knife.svg","material-knob":"material/knob.svg","material-koala":"material/koala.svg","material-kodi":"material/kodi.svg","material-kubernetes":"material/kubernetes.svg","material-label-multiple-outline":"material/label-multiple-outline.svg","material-label-multiple":"material/label-multiple.svg","material-label-off-outline":"material/label-off-outline.svg","material-label-off":"material/label-off.svg","material-label-outline":"material/label-outline.svg","material-label-percent-outline":"material/label-percent-outline.svg","material-label-percent":"material/label-percent.svg","material-label-variant-outline":"material/label-variant-outline.svg","material-label-variant":"material/label-variant.svg","material-label":"material/label.svg","material-ladder":"material/ladder.svg","material-ladybug":"material/ladybug.svg","material-lambda":"material/lambda.svg","material-lamp-outline":"material/lamp-outline.svg","material-lamp":"material/lamp.svg","material-lamps-outline":"material/lamps-outline.svg","material-lamps":"material/lamps.svg","material-lan-check":"material/lan-check.svg","material-lan-connect":"material/lan-connect.svg","material-lan-disconnect":"material/lan-disconnect.svg","material-lan-pending":"material/lan-pending.svg","material-lan":"material/lan.svg","material-land-fields":"material/land-fields.svg","material-land-plots-circle-variant":"material/land-plots-circle-variant.svg","material-land-plots-circle":"material/land-plots-circle.svg","material-land-plots":"material/land-plots.svg","material-land-rows-horizontal":"material/land-rows-horizontal.svg","material-land-rows-vertical":"material/land-rows-vertical.svg","material-landslide-outline":"material/landslide-outline.svg","material-landslide":"material/landslide.svg","material-language-c":"material/language-c.svg","material-language-cpp":"material/language-cpp.svg","material-language-csharp":"material/language-csharp.svg","material-language-css3":"material/language-css3.svg","material-language-fortran":"material/language-fortran.svg","material-language-go":"material/language-go.svg","material-language-haskell":"material/language-haskell.svg","material-language-html5":"material/language-html5.svg","material-language-java":"material/language-java.svg","material-language-javascript":"material/language-javascript.svg","material-language-kotlin":"material/language-kotlin.svg","material-language-lua":"material/language-lua.svg","material-language-markdown-outline":"material/language-markdown-outline.svg","material-language-markdown":"material/language-markdown.svg","material-language-php":"material/language-php.svg","material-language-python":"material/language-python.svg","material-language-r":"material/language-r.svg","material-language-ruby-on-rails":"material/language-ruby-on-rails.svg","material-language-ruby":"material/language-ruby.svg","material-language-rust":"material/language-rust.svg","material-language-swift":"material/language-swift.svg","material-language-typescript":"material/language-typescript.svg","material-language-xaml":"material/language-xaml.svg","material-laptop-account":"material/laptop-account.svg","material-laptop-off":"material/laptop-off.svg","material-laptop":"material/laptop.svg","material-laravel":"material/laravel.svg","material-laser-pointer":"material/laser-pointer.svg","material-lasso":"material/lasso.svg","material-lastpass":"material/lastpass.svg","material-latitude":"material/latitude.svg","material-launch":"material/launch.svg","material-lava-lamp":"material/lava-lamp.svg","material-layers-edit":"material/layers-edit.svg","material-layers-minus":"material/layers-minus.svg","material-layers-off-outline":"material/layers-off-outline.svg","material-layers-off":"material/layers-off.svg","material-layers-outline":"material/layers-outline.svg","material-layers-plus":"material/layers-plus.svg","material-layers-remove":"material/layers-remove.svg","material-layers-search-outline":"material/layers-search-outline.svg","material-layers-search":"material/layers-search.svg","material-layers-triple-outline":"material/layers-triple-outline.svg","material-layers-triple":"material/layers-triple.svg","material-layers":"material/layers.svg","material-lead-pencil":"material/lead-pencil.svg","material-leaf-circle-outline":"material/leaf-circle-outline.svg","material-leaf-circle":"material/leaf-circle.svg","material-leaf-maple-off":"material/leaf-maple-off.svg","material-leaf-maple":"material/leaf-maple.svg","material-leaf-off":"material/leaf-off.svg","material-leaf":"material/leaf.svg","material-leak-off":"material/leak-off.svg","material-leak":"material/leak.svg","material-lectern":"material/lectern.svg","material-led-off":"material/led-off.svg","material-led-on":"material/led-on.svg","material-led-outline":"material/led-outline.svg","material-led-strip-variant-off":"material/led-strip-variant-off.svg","material-led-strip-variant":"material/led-strip-variant.svg","material-led-strip":"material/led-strip.svg","material-led-variant-off":"material/led-variant-off.svg","material-led-variant-on":"material/led-variant-on.svg","material-led-variant-outline":"material/led-variant-outline.svg","material-leek":"material/leek.svg","material-less-than-or-equal":"material/less-than-or-equal.svg","material-less-than":"material/less-than.svg","material-library-outline":"material/library-outline.svg","material-library-shelves":"material/library-shelves.svg","material-library":"material/library.svg","material-license":"material/license.svg","material-lifebuoy":"material/lifebuoy.svg","material-light-flood-down":"material/light-flood-down.svg","material-light-flood-up":"material/light-flood-up.svg","material-light-recessed":"material/light-recessed.svg","material-light-switch-off":"material/light-switch-off.svg","material-light-switch":"material/light-switch.svg","material-lightbulb-alert-outline":"material/lightbulb-alert-outline.svg","material-lightbulb-alert":"material/lightbulb-alert.svg","material-lightbulb-auto-outline":"material/lightbulb-auto-outline.svg","material-lightbulb-auto":"material/lightbulb-auto.svg","material-lightbulb-cfl-off":"material/lightbulb-cfl-off.svg","material-lightbulb-cfl-spiral-off":"material/lightbulb-cfl-spiral-off.svg","material-lightbulb-cfl-spiral":"material/lightbulb-cfl-spiral.svg","material-lightbulb-cfl":"material/lightbulb-cfl.svg","material-lightbulb-fluorescent-tube-outline":"material/lightbulb-fluorescent-tube-outline.svg","material-lightbulb-fluorescent-tube":"material/lightbulb-fluorescent-tube.svg","material-lightbulb-group-off-outline":"material/lightbulb-group-off-outline.svg","material-lightbulb-group-off":"material/lightbulb-group-off.svg","material-lightbulb-group-outline":"material/lightbulb-group-outline.svg","material-lightbulb-group":"material/lightbulb-group.svg","material-lightbulb-multiple-off-outline":"material/lightbulb-multiple-off-outline.svg","material-lightbulb-multiple-off":"material/lightbulb-multiple-off.svg","material-lightbulb-multiple-outline":"material/lightbulb-multiple-outline.svg","material-lightbulb-multiple":"material/lightbulb-multiple.svg","material-lightbulb-night-outline":"material/lightbulb-night-outline.svg","material-lightbulb-night":"material/lightbulb-night.svg","material-lightbulb-off-outline":"material/lightbulb-off-outline.svg","material-lightbulb-off":"material/lightbulb-off.svg","material-lightbulb-on-10":"material/lightbulb-on-10.svg","material-lightbulb-on-20":"material/lightbulb-on-20.svg","material-lightbulb-on-30":"material/lightbulb-on-30.svg","material-lightbulb-on-40":"material/lightbulb-on-40.svg","material-lightbulb-on-50":"material/lightbulb-on-50.svg","material-lightbulb-on-60":"material/lightbulb-on-60.svg","material-lightbulb-on-70":"material/lightbulb-on-70.svg","material-lightbulb-on-80":"material/lightbulb-on-80.svg","material-lightbulb-on-90":"material/lightbulb-on-90.svg","material-lightbulb-on-outline":"material/lightbulb-on-outline.svg","material-lightbulb-on":"material/lightbulb-on.svg","material-lightbulb-outline":"material/lightbulb-outline.svg","material-lightbulb-question-outline":"material/lightbulb-question-outline.svg","material-lightbulb-question":"material/lightbulb-question.svg","material-lightbulb-spot-off":"material/lightbulb-spot-off.svg","material-lightbulb-spot":"material/lightbulb-spot.svg","material-lightbulb-variant-outline":"material/lightbulb-variant-outline.svg","material-lightbulb-variant":"material/lightbulb-variant.svg","material-lightbulb":"material/lightbulb.svg","material-lighthouse-on":"material/lighthouse-on.svg","material-lighthouse":"material/lighthouse.svg","material-lightning-bolt-circle":"material/lightning-bolt-circle.svg","material-lightning-bolt-outline":"material/lightning-bolt-outline.svg","material-lightning-bolt":"material/lightning-bolt.svg","material-line-scan":"material/line-scan.svg","material-lingerie":"material/lingerie.svg","material-link-box-outline":"material/link-box-outline.svg","material-link-box-variant-outline":"material/link-box-variant-outline.svg","material-link-box-variant":"material/link-box-variant.svg","material-link-box":"material/link-box.svg","material-link-lock":"material/link-lock.svg","material-link-off":"material/link-off.svg","material-link-plus":"material/link-plus.svg","material-link-variant-minus":"material/link-variant-minus.svg","material-link-variant-off":"material/link-variant-off.svg","material-link-variant-plus":"material/link-variant-plus.svg","material-link-variant-remove":"material/link-variant-remove.svg","material-link-variant":"material/link-variant.svg","material-link":"material/link.svg","material-linkedin":"material/linkedin.svg","material-linux-mint":"material/linux-mint.svg","material-linux":"material/linux.svg","material-lipstick":"material/lipstick.svg","material-liquid-spot":"material/liquid-spot.svg","material-liquor":"material/liquor.svg","material-list-box-outline":"material/list-box-outline.svg","material-list-box":"material/list-box.svg","material-list-status":"material/list-status.svg","material-litecoin":"material/litecoin.svg","material-loading":"material/loading.svg","material-location-enter":"material/location-enter.svg","material-location-exit":"material/location-exit.svg","material-lock-alert-outline":"material/lock-alert-outline.svg","material-lock-alert":"material/lock-alert.svg","material-lock-check-outline":"material/lock-check-outline.svg","material-lock-check":"material/lock-check.svg","material-lock-clock":"material/lock-clock.svg","material-lock-minus-outline":"material/lock-minus-outline.svg","material-lock-minus":"material/lock-minus.svg","material-lock-off-outline":"material/lock-off-outline.svg","material-lock-off":"material/lock-off.svg","material-lock-open-alert-outline":"material/lock-open-alert-outline.svg","material-lock-open-alert":"material/lock-open-alert.svg","material-lock-open-check-outline":"material/lock-open-check-outline.svg","material-lock-open-check":"material/lock-open-check.svg","material-lock-open-minus-outline":"material/lock-open-minus-outline.svg","material-lock-open-minus":"material/lock-open-minus.svg","material-lock-open-outline":"material/lock-open-outline.svg","material-lock-open-plus-outline":"material/lock-open-plus-outline.svg","material-lock-open-plus":"material/lock-open-plus.svg","material-lock-open-remove-outline":"material/lock-open-remove-outline.svg","material-lock-open-remove":"material/lock-open-remove.svg","material-lock-open-variant-outline":"material/lock-open-variant-outline.svg","material-lock-open-variant":"material/lock-open-variant.svg","material-lock-open":"material/lock-open.svg","material-lock-outline":"material/lock-outline.svg","material-lock-pattern":"material/lock-pattern.svg","material-lock-plus-outline":"material/lock-plus-outline.svg","material-lock-plus":"material/lock-plus.svg","material-lock-question":"material/lock-question.svg","material-lock-remove-outline":"material/lock-remove-outline.svg","material-lock-remove":"material/lock-remove.svg","material-lock-reset":"material/lock-reset.svg","material-lock-smart":"material/lock-smart.svg","material-lock":"material/lock.svg","material-locker-multiple":"material/locker-multiple.svg","material-locker":"material/locker.svg","material-login-variant":"material/login-variant.svg","material-login":"material/login.svg","material-logout-variant":"material/logout-variant.svg","material-logout":"material/logout.svg","material-longitude":"material/longitude.svg","material-looks":"material/looks.svg","material-lotion-outline":"material/lotion-outline.svg","material-lotion-plus-outline":"material/lotion-plus-outline.svg","material-lotion-plus":"material/lotion-plus.svg","material-lotion":"material/lotion.svg","material-loupe":"material/loupe.svg","material-lumx":"material/lumx.svg","material-lungs":"material/lungs.svg","material-mace":"material/mace.svg","material-magazine-pistol":"material/magazine-pistol.svg","material-magazine-rifle":"material/magazine-rifle.svg","material-magic-staff":"material/magic-staff.svg","material-magnet-on":"material/magnet-on.svg","material-magnet":"material/magnet.svg","material-magnify-close":"material/magnify-close.svg","material-magnify-expand":"material/magnify-expand.svg","material-magnify-minus-cursor":"material/magnify-minus-cursor.svg","material-magnify-minus-outline":"material/magnify-minus-outline.svg","material-magnify-minus":"material/magnify-minus.svg","material-magnify-plus-cursor":"material/magnify-plus-cursor.svg","material-magnify-plus-outline":"material/magnify-plus-outline.svg","material-magnify-plus":"material/magnify-plus.svg","material-magnify-remove-cursor":"material/magnify-remove-cursor.svg","material-magnify-remove-outline":"material/magnify-remove-outline.svg","material-magnify-scan":"material/magnify-scan.svg","material-magnify":"material/magnify.svg","material-mail":"material/mail.svg","material-mailbox-open-outline":"material/mailbox-open-outline.svg","material-mailbox-open-up-outline":"material/mailbox-open-up-outline.svg","material-mailbox-open-up":"material/mailbox-open-up.svg","material-mailbox-open":"material/mailbox-open.svg","material-mailbox-outline":"material/mailbox-outline.svg","material-mailbox-up-outline":"material/mailbox-up-outline.svg","material-mailbox-up":"material/mailbox-up.svg","material-mailbox":"material/mailbox.svg","material-manjaro":"material/manjaro.svg","material-map-check-outline":"material/map-check-outline.svg","material-map-check":"material/map-check.svg","material-map-clock-outline":"material/map-clock-outline.svg","material-map-clock":"material/map-clock.svg","material-map-legend":"material/map-legend.svg","material-map-marker-account-outline":"material/map-marker-account-outline.svg","material-map-marker-account":"material/map-marker-account.svg","material-map-marker-alert-outline":"material/map-marker-alert-outline.svg","material-map-marker-alert":"material/map-marker-alert.svg","material-map-marker-check-outline":"material/map-marker-check-outline.svg","material-map-marker-check":"material/map-marker-check.svg","material-map-marker-circle":"material/map-marker-circle.svg","material-map-marker-distance":"material/map-marker-distance.svg","material-map-marker-down":"material/map-marker-down.svg","material-map-marker-left-outline":"material/map-marker-left-outline.svg","material-map-marker-left":"material/map-marker-left.svg","material-map-marker-minus-outline":"material/map-marker-minus-outline.svg","material-map-marker-minus":"material/map-marker-minus.svg","material-map-marker-multiple-outline":"material/map-marker-multiple-outline.svg","material-map-marker-multiple":"material/map-marker-multiple.svg","material-map-marker-off-outline":"material/map-marker-off-outline.svg","material-map-marker-off":"material/map-marker-off.svg","material-map-marker-outline":"material/map-marker-outline.svg","material-map-marker-path":"material/map-marker-path.svg","material-map-marker-plus-outline":"material/map-marker-plus-outline.svg","material-map-marker-plus":"material/map-marker-plus.svg","material-map-marker-question-outline":"material/map-marker-question-outline.svg","material-map-marker-question":"material/map-marker-question.svg","material-map-marker-radius-outline":"material/map-marker-radius-outline.svg","material-map-marker-radius":"material/map-marker-radius.svg","material-map-marker-remove-outline":"material/map-marker-remove-outline.svg","material-map-marker-remove-variant":"material/map-marker-remove-variant.svg","material-map-marker-remove":"material/map-marker-remove.svg","material-map-marker-right-outline":"material/map-marker-right-outline.svg","material-map-marker-right":"material/map-marker-right.svg","material-map-marker-star-outline":"material/map-marker-star-outline.svg","material-map-marker-star":"material/map-marker-star.svg","material-map-marker-up":"material/map-marker-up.svg","material-map-marker":"material/map-marker.svg","material-map-minus":"material/map-minus.svg","material-map-outline":"material/map-outline.svg","material-map-plus":"material/map-plus.svg","material-map-search-outline":"material/map-search-outline.svg","material-map-search":"material/map-search.svg","material-map":"material/map.svg","material-mapbox":"material/mapbox.svg","material-margin":"material/margin.svg","material-marker-cancel":"material/marker-cancel.svg","material-marker-check":"material/marker-check.svg","material-marker":"material/marker.svg","material-mastodon":"material/mastodon.svg","material-material-design":"material/material-design.svg","material-material-ui":"material/material-ui.svg","material-math-compass":"material/math-compass.svg","material-math-cos":"material/math-cos.svg","material-math-integral-box":"material/math-integral-box.svg","material-math-integral":"material/math-integral.svg","material-math-log":"material/math-log.svg","material-math-norm-box":"material/math-norm-box.svg","material-math-norm":"material/math-norm.svg","material-math-sin":"material/math-sin.svg","material-math-tan":"material/math-tan.svg","material-matrix":"material/matrix.svg","material-medal-outline":"material/medal-outline.svg","material-medal":"material/medal.svg","material-medical-bag":"material/medical-bag.svg","material-medical-cotton-swab":"material/medical-cotton-swab.svg","material-medication-outline":"material/medication-outline.svg","material-medication":"material/medication.svg","material-meditation":"material/meditation.svg","material-memory":"material/memory.svg","material-menorah-fire":"material/menorah-fire.svg","material-menorah":"material/menorah.svg","material-menu-down-outline":"material/menu-down-outline.svg","material-menu-down":"material/menu-down.svg","material-menu-left-outline":"material/menu-left-outline.svg","material-menu-left":"material/menu-left.svg","material-menu-open":"material/menu-open.svg","material-menu-right-outline":"material/menu-right-outline.svg","material-menu-right":"material/menu-right.svg","material-menu-swap-outline":"material/menu-swap-outline.svg","material-menu-swap":"material/menu-swap.svg","material-menu-up-outline":"material/menu-up-outline.svg","material-menu-up":"material/menu-up.svg","material-menu":"material/menu.svg","material-merge":"material/merge.svg","material-message-alert-outline":"material/message-alert-outline.svg","material-message-alert":"material/message-alert.svg","material-message-arrow-left-outline":"material/message-arrow-left-outline.svg","material-message-arrow-left":"material/message-arrow-left.svg","material-message-arrow-right-outline":"material/message-arrow-right-outline.svg","material-message-arrow-right":"material/message-arrow-right.svg","material-message-badge-outline":"material/message-badge-outline.svg","material-message-badge":"material/message-badge.svg","material-message-bookmark-outline":"material/message-bookmark-outline.svg","material-message-bookmark":"material/message-bookmark.svg","material-message-bulleted-off":"material/message-bulleted-off.svg","material-message-bulleted":"material/message-bulleted.svg","material-message-check-outline":"material/message-check-outline.svg","material-message-check":"material/message-check.svg","material-message-cog-outline":"material/message-cog-outline.svg","material-message-cog":"material/message-cog.svg","material-message-draw":"material/message-draw.svg","material-message-fast-outline":"material/message-fast-outline.svg","material-message-fast":"material/message-fast.svg","material-message-flash-outline":"material/message-flash-outline.svg","material-message-flash":"material/message-flash.svg","material-message-image-outline":"material/message-image-outline.svg","material-message-image":"material/message-image.svg","material-message-lock-outline":"material/message-lock-outline.svg","material-message-lock":"material/message-lock.svg","material-message-minus-outline":"material/message-minus-outline.svg","material-message-minus":"material/message-minus.svg","material-message-off-outline":"material/message-off-outline.svg","material-message-off":"material/message-off.svg","material-message-outline":"material/message-outline.svg","material-message-plus-outline":"material/message-plus-outline.svg","material-message-plus":"material/message-plus.svg","material-message-processing-outline":"material/message-processing-outline.svg","material-message-processing":"material/message-processing.svg","material-message-question-outline":"material/message-question-outline.svg","material-message-question":"material/message-question.svg","material-message-reply-outline":"material/message-reply-outline.svg","material-message-reply-text-outline":"material/message-reply-text-outline.svg","material-message-reply-text":"material/message-reply-text.svg","material-message-reply":"material/message-reply.svg","material-message-settings-outline":"material/message-settings-outline.svg","material-message-settings":"material/message-settings.svg","material-message-star-outline":"material/message-star-outline.svg","material-message-star":"material/message-star.svg","material-message-text-clock-outline":"material/message-text-clock-outline.svg","material-message-text-clock":"material/message-text-clock.svg","material-message-text-fast-outline":"material/message-text-fast-outline.svg","material-message-text-fast":"material/message-text-fast.svg","material-message-text-lock-outline":"material/message-text-lock-outline.svg","material-message-text-lock":"material/message-text-lock.svg","material-message-text-outline":"material/message-text-outline.svg","material-message-text":"material/message-text.svg","material-message-video":"material/message-video.svg","material-message":"material/message.svg","material-meteor":"material/meteor.svg","material-meter-electric-outline":"material/meter-electric-outline.svg","material-meter-electric":"material/meter-electric.svg","material-meter-gas-outline":"material/meter-gas-outline.svg","material-meter-gas":"material/meter-gas.svg","material-metronome-tick":"material/metronome-tick.svg","material-metronome":"material/metronome.svg","material-micro-sd":"material/micro-sd.svg","material-microphone-message-off":"material/microphone-message-off.svg","material-microphone-message":"material/microphone-message.svg","material-microphone-minus":"material/microphone-minus.svg","material-microphone-off":"material/microphone-off.svg","material-microphone-outline":"material/microphone-outline.svg","material-microphone-plus":"material/microphone-plus.svg","material-microphone-question-outline":"material/microphone-question-outline.svg","material-microphone-question":"material/microphone-question.svg","material-microphone-settings":"material/microphone-settings.svg","material-microphone-variant-off":"material/microphone-variant-off.svg","material-microphone-variant":"material/microphone-variant.svg","material-microphone":"material/microphone.svg","material-microscope":"material/microscope.svg","material-microsoft-access":"material/microsoft-access.svg","material-microsoft-azure-devops":"material/microsoft-azure-devops.svg","material-microsoft-azure":"material/microsoft-azure.svg","material-microsoft-bing":"material/microsoft-bing.svg","material-microsoft-dynamics-365":"material/microsoft-dynamics-365.svg","material-microsoft-edge":"material/microsoft-edge.svg","material-microsoft-excel":"material/microsoft-excel.svg","material-microsoft-internet-explorer":"material/microsoft-internet-explorer.svg","material-microsoft-office":"material/microsoft-office.svg","material-microsoft-onedrive":"material/microsoft-onedrive.svg","material-microsoft-onenote":"material/microsoft-onenote.svg","material-microsoft-outlook":"material/microsoft-outlook.svg","material-microsoft-powerpoint":"material/microsoft-powerpoint.svg","material-microsoft-sharepoint":"material/microsoft-sharepoint.svg","material-microsoft-teams":"material/microsoft-teams.svg","material-microsoft-visual-studio-code":"material/microsoft-visual-studio-code.svg","material-microsoft-visual-studio":"material/microsoft-visual-studio.svg","material-microsoft-windows-classic":"material/microsoft-windows-classic.svg","material-microsoft-windows":"material/microsoft-windows.svg","material-microsoft-word":"material/microsoft-word.svg","material-microsoft-xbox-controller-battery-alert":"material/microsoft-xbox-controller-battery-alert.svg","material-microsoft-xbox-controller-battery-charging":"material/microsoft-xbox-controller-battery-charging.svg","material-microsoft-xbox-controller-battery-empty":"material/microsoft-xbox-controller-battery-empty.svg","material-microsoft-xbox-controller-battery-full":"material/microsoft-xbox-controller-battery-full.svg","material-microsoft-xbox-controller-battery-low":"material/microsoft-xbox-controller-battery-low.svg","material-microsoft-xbox-controller-battery-medium":"material/microsoft-xbox-controller-battery-medium.svg","material-microsoft-xbox-controller-battery-unknown":"material/microsoft-xbox-controller-battery-unknown.svg","material-microsoft-xbox-controller-menu":"material/microsoft-xbox-controller-menu.svg","material-microsoft-xbox-controller-off":"material/microsoft-xbox-controller-off.svg","material-microsoft-xbox-controller-view":"material/microsoft-xbox-controller-view.svg","material-microsoft-xbox-controller":"material/microsoft-xbox-controller.svg","material-microsoft-xbox":"material/microsoft-xbox.svg","material-microsoft":"material/microsoft.svg","material-microwave-off":"material/microwave-off.svg","material-microwave":"material/microwave.svg","material-middleware-outline":"material/middleware-outline.svg","material-middleware":"material/middleware.svg","material-midi-port":"material/midi-port.svg","material-midi":"material/midi.svg","material-mine":"material/mine.svg","material-minecraft":"material/minecraft.svg","material-mini-sd":"material/mini-sd.svg","material-minidisc":"material/minidisc.svg","material-minus-box-multiple-outline":"material/minus-box-multiple-outline.svg","material-minus-box-multiple":"material/minus-box-multiple.svg","material-minus-box-outline":"material/minus-box-outline.svg","material-minus-box":"material/minus-box.svg","material-minus-circle-multiple-outline":"material/minus-circle-multiple-outline.svg","material-minus-circle-multiple":"material/minus-circle-multiple.svg","material-minus-circle-off-outline":"material/minus-circle-off-outline.svg","material-minus-circle-off":"material/minus-circle-off.svg","material-minus-circle-outline":"material/minus-circle-outline.svg","material-minus-circle":"material/minus-circle.svg","material-minus-network-outline":"material/minus-network-outline.svg","material-minus-network":"material/minus-network.svg","material-minus-thick":"material/minus-thick.svg","material-minus":"material/minus.svg","material-mirror-rectangle":"material/mirror-rectangle.svg","material-mirror-variant":"material/mirror-variant.svg","material-mirror":"material/mirror.svg","material-mixed-martial-arts":"material/mixed-martial-arts.svg","material-mixed-reality":"material/mixed-reality.svg","material-molecule-co":"material/molecule-co.svg","material-molecule-co2":"material/molecule-co2.svg","material-molecule":"material/molecule.svg","material-monitor-account":"material/monitor-account.svg","material-monitor-arrow-down-variant":"material/monitor-arrow-down-variant.svg","material-monitor-arrow-down":"material/monitor-arrow-down.svg","material-monitor-cellphone-star":"material/monitor-cellphone-star.svg","material-monitor-cellphone":"material/monitor-cellphone.svg","material-monitor-dashboard":"material/monitor-dashboard.svg","material-monitor-edit":"material/monitor-edit.svg","material-monitor-eye":"material/monitor-eye.svg","material-monitor-lock":"material/monitor-lock.svg","material-monitor-multiple":"material/monitor-multiple.svg","material-monitor-off":"material/monitor-off.svg","material-monitor-screenshot":"material/monitor-screenshot.svg","material-monitor-share":"material/monitor-share.svg","material-monitor-shimmer":"material/monitor-shimmer.svg","material-monitor-small":"material/monitor-small.svg","material-monitor-speaker-off":"material/monitor-speaker-off.svg","material-monitor-speaker":"material/monitor-speaker.svg","material-monitor-star":"material/monitor-star.svg","material-monitor":"material/monitor.svg","material-moon-first-quarter":"material/moon-first-quarter.svg","material-moon-full":"material/moon-full.svg","material-moon-last-quarter":"material/moon-last-quarter.svg","material-moon-new":"material/moon-new.svg","material-moon-waning-crescent":"material/moon-waning-crescent.svg","material-moon-waning-gibbous":"material/moon-waning-gibbous.svg","material-moon-waxing-crescent":"material/moon-waxing-crescent.svg","material-moon-waxing-gibbous":"material/moon-waxing-gibbous.svg","material-moped-electric-outline":"material/moped-electric-outline.svg","material-moped-electric":"material/moped-electric.svg","material-moped-outline":"material/moped-outline.svg","material-moped":"material/moped.svg","material-more":"material/more.svg","material-mortar-pestle-plus":"material/mortar-pestle-plus.svg","material-mortar-pestle":"material/mortar-pestle.svg","material-mosque-outline":"material/mosque-outline.svg","material-mosque":"material/mosque.svg","material-mother-heart":"material/mother-heart.svg","material-mother-nurse":"material/mother-nurse.svg","material-motion-outline":"material/motion-outline.svg","material-motion-pause-outline":"material/motion-pause-outline.svg","material-motion-pause":"material/motion-pause.svg","material-motion-play-outline":"material/motion-play-outline.svg","material-motion-play":"material/motion-play.svg","material-motion-sensor-off":"material/motion-sensor-off.svg","material-motion-sensor":"material/motion-sensor.svg","material-motion":"material/motion.svg","material-motorbike-electric":"material/motorbike-electric.svg","material-motorbike-off":"material/motorbike-off.svg","material-motorbike":"material/motorbike.svg","material-mouse-bluetooth":"material/mouse-bluetooth.svg","material-mouse-move-down":"material/mouse-move-down.svg","material-mouse-move-up":"material/mouse-move-up.svg","material-mouse-move-vertical":"material/mouse-move-vertical.svg","material-mouse-off":"material/mouse-off.svg","material-mouse-variant-off":"material/mouse-variant-off.svg","material-mouse-variant":"material/mouse-variant.svg","material-mouse":"material/mouse.svg","material-move-resize-variant":"material/move-resize-variant.svg","material-move-resize":"material/move-resize.svg","material-movie-check-outline":"material/movie-check-outline.svg","material-movie-check":"material/movie-check.svg","material-movie-cog-outline":"material/movie-cog-outline.svg","material-movie-cog":"material/movie-cog.svg","material-movie-edit-outline":"material/movie-edit-outline.svg","material-movie-edit":"material/movie-edit.svg","material-movie-filter-outline":"material/movie-filter-outline.svg","material-movie-filter":"material/movie-filter.svg","material-movie-minus-outline":"material/movie-minus-outline.svg","material-movie-minus":"material/movie-minus.svg","material-movie-off-outline":"material/movie-off-outline.svg","material-movie-off":"material/movie-off.svg","material-movie-open-check-outline":"material/movie-open-check-outline.svg","material-movie-open-check":"material/movie-open-check.svg","material-movie-open-cog-outline":"material/movie-open-cog-outline.svg","material-movie-open-cog":"material/movie-open-cog.svg","material-movie-open-edit-outline":"material/movie-open-edit-outline.svg","material-movie-open-edit":"material/movie-open-edit.svg","material-movie-open-minus-outline":"material/movie-open-minus-outline.svg","material-movie-open-minus":"material/movie-open-minus.svg","material-movie-open-off-outline":"material/movie-open-off-outline.svg","material-movie-open-off":"material/movie-open-off.svg","material-movie-open-outline":"material/movie-open-outline.svg","material-movie-open-play-outline":"material/movie-open-play-outline.svg","material-movie-open-play":"material/movie-open-play.svg","material-movie-open-plus-outline":"material/movie-open-plus-outline.svg","material-movie-open-plus":"material/movie-open-plus.svg","material-movie-open-remove-outline":"material/movie-open-remove-outline.svg","material-movie-open-remove":"material/movie-open-remove.svg","material-movie-open-settings-outline":"material/movie-open-settings-outline.svg","material-movie-open-settings":"material/movie-open-settings.svg","material-movie-open-star-outline":"material/movie-open-star-outline.svg","material-movie-open-star":"material/movie-open-star.svg","material-movie-open":"material/movie-open.svg","material-movie-outline":"material/movie-outline.svg","material-movie-play-outline":"material/movie-play-outline.svg","material-movie-play":"material/movie-play.svg","material-movie-plus-outline":"material/movie-plus-outline.svg","material-movie-plus":"material/movie-plus.svg","material-movie-remove-outline":"material/movie-remove-outline.svg","material-movie-remove":"material/movie-remove.svg","material-movie-roll":"material/movie-roll.svg","material-movie-search-outline":"material/movie-search-outline.svg","material-movie-search":"material/movie-search.svg","material-movie-settings-outline":"material/movie-settings-outline.svg","material-movie-settings":"material/movie-settings.svg","material-movie-star-outline":"material/movie-star-outline.svg","material-movie-star":"material/movie-star.svg","material-movie":"material/movie.svg","material-mower-bag-on":"material/mower-bag-on.svg","material-mower-bag":"material/mower-bag.svg","material-mower-on":"material/mower-on.svg","material-mower":"material/mower.svg","material-muffin":"material/muffin.svg","material-multicast":"material/multicast.svg","material-multimedia":"material/multimedia.svg","material-multiplication-box":"material/multiplication-box.svg","material-multiplication":"material/multiplication.svg","material-mushroom-off-outline":"material/mushroom-off-outline.svg","material-mushroom-off":"material/mushroom-off.svg","material-mushroom-outline":"material/mushroom-outline.svg","material-mushroom":"material/mushroom.svg","material-music-accidental-double-flat":"material/music-accidental-double-flat.svg","material-music-accidental-double-sharp":"material/music-accidental-double-sharp.svg","material-music-accidental-flat":"material/music-accidental-flat.svg","material-music-accidental-natural":"material/music-accidental-natural.svg","material-music-accidental-sharp":"material/music-accidental-sharp.svg","material-music-box-multiple-outline":"material/music-box-multiple-outline.svg","material-music-box-multiple":"material/music-box-multiple.svg","material-music-box-outline":"material/music-box-outline.svg","material-music-box":"material/music-box.svg","material-music-circle-outline":"material/music-circle-outline.svg","material-music-circle":"material/music-circle.svg","material-music-clef-alto":"material/music-clef-alto.svg","material-music-clef-bass":"material/music-clef-bass.svg","material-music-clef-treble":"material/music-clef-treble.svg","material-music-note-bluetooth-off":"material/music-note-bluetooth-off.svg","material-music-note-bluetooth":"material/music-note-bluetooth.svg","material-music-note-eighth-dotted":"material/music-note-eighth-dotted.svg","material-music-note-eighth":"material/music-note-eighth.svg","material-music-note-half-dotted":"material/music-note-half-dotted.svg","material-music-note-half":"material/music-note-half.svg","material-music-note-minus":"material/music-note-minus.svg","material-music-note-off-outline":"material/music-note-off-outline.svg","material-music-note-off":"material/music-note-off.svg","material-music-note-outline":"material/music-note-outline.svg","material-music-note-plus":"material/music-note-plus.svg","material-music-note-quarter-dotted":"material/music-note-quarter-dotted.svg","material-music-note-quarter":"material/music-note-quarter.svg","material-music-note-sixteenth-dotted":"material/music-note-sixteenth-dotted.svg","material-music-note-sixteenth":"material/music-note-sixteenth.svg","material-music-note-whole-dotted":"material/music-note-whole-dotted.svg","material-music-note-whole":"material/music-note-whole.svg","material-music-note":"material/music-note.svg","material-music-off":"material/music-off.svg","material-music-rest-eighth":"material/music-rest-eighth.svg","material-music-rest-half":"material/music-rest-half.svg","material-music-rest-quarter":"material/music-rest-quarter.svg","material-music-rest-sixteenth":"material/music-rest-sixteenth.svg","material-music-rest-whole":"material/music-rest-whole.svg","material-music":"material/music.svg","material-mustache":"material/mustache.svg","material-nail":"material/nail.svg","material-nas":"material/nas.svg","material-nativescript":"material/nativescript.svg","material-nature-people":"material/nature-people.svg","material-nature":"material/nature.svg","material-navigation-outline":"material/navigation-outline.svg","material-navigation-variant-outline":"material/navigation-variant-outline.svg","material-navigation-variant":"material/navigation-variant.svg","material-navigation":"material/navigation.svg","material-near-me":"material/near-me.svg","material-necklace":"material/necklace.svg","material-needle-off":"material/needle-off.svg","material-needle":"material/needle.svg","material-netflix":"material/netflix.svg","material-network-off-outline":"material/network-off-outline.svg","material-network-off":"material/network-off.svg","material-network-outline":"material/network-outline.svg","material-network-pos":"material/network-pos.svg","material-network-strength-1-alert":"material/network-strength-1-alert.svg","material-network-strength-1":"material/network-strength-1.svg","material-network-strength-2-alert":"material/network-strength-2-alert.svg","material-network-strength-2":"material/network-strength-2.svg","material-network-strength-3-alert":"material/network-strength-3-alert.svg","material-network-strength-3":"material/network-strength-3.svg","material-network-strength-4-alert":"material/network-strength-4-alert.svg","material-network-strength-4-cog":"material/network-strength-4-cog.svg","material-network-strength-4":"material/network-strength-4.svg","material-network-strength-off-outline":"material/network-strength-off-outline.svg","material-network-strength-off":"material/network-strength-off.svg","material-network-strength-outline":"material/network-strength-outline.svg","material-network":"material/network.svg","material-new-box":"material/new-box.svg","material-newspaper-check":"material/newspaper-check.svg","material-newspaper-minus":"material/newspaper-minus.svg","material-newspaper-plus":"material/newspaper-plus.svg","material-newspaper-remove":"material/newspaper-remove.svg","material-newspaper-variant-multiple-outline":"material/newspaper-variant-multiple-outline.svg","material-newspaper-variant-multiple":"material/newspaper-variant-multiple.svg","material-newspaper-variant-outline":"material/newspaper-variant-outline.svg","material-newspaper-variant":"material/newspaper-variant.svg","material-newspaper":"material/newspaper.svg","material-nfc-search-variant":"material/nfc-search-variant.svg","material-nfc-tap":"material/nfc-tap.svg","material-nfc-variant-off":"material/nfc-variant-off.svg","material-nfc-variant":"material/nfc-variant.svg","material-nfc":"material/nfc.svg","material-ninja":"material/ninja.svg","material-nintendo-game-boy":"material/nintendo-game-boy.svg","material-nintendo-switch":"material/nintendo-switch.svg","material-nintendo-wii":"material/nintendo-wii.svg","material-nintendo-wiiu":"material/nintendo-wiiu.svg","material-nix":"material/nix.svg","material-nodejs":"material/nodejs.svg","material-noodles":"material/noodles.svg","material-not-equal-variant":"material/not-equal-variant.svg","material-not-equal":"material/not-equal.svg","material-note-alert-outline":"material/note-alert-outline.svg","material-note-alert":"material/note-alert.svg","material-note-check-outline":"material/note-check-outline.svg","material-note-check":"material/note-check.svg","material-note-edit-outline":"material/note-edit-outline.svg","material-note-edit":"material/note-edit.svg","material-note-minus-outline":"material/note-minus-outline.svg","material-note-minus":"material/note-minus.svg","material-note-multiple-outline":"material/note-multiple-outline.svg","material-note-multiple":"material/note-multiple.svg","material-note-off-outline":"material/note-off-outline.svg","material-note-off":"material/note-off.svg","material-note-outline":"material/note-outline.svg","material-note-plus-outline":"material/note-plus-outline.svg","material-note-plus":"material/note-plus.svg","material-note-remove-outline":"material/note-remove-outline.svg","material-note-remove":"material/note-remove.svg","material-note-search-outline":"material/note-search-outline.svg","material-note-search":"material/note-search.svg","material-note-text-outline":"material/note-text-outline.svg","material-note-text":"material/note-text.svg","material-note":"material/note.svg","material-notebook-check-outline":"material/notebook-check-outline.svg","material-notebook-check":"material/notebook-check.svg","material-notebook-edit-outline":"material/notebook-edit-outline.svg","material-notebook-edit":"material/notebook-edit.svg","material-notebook-heart-outline":"material/notebook-heart-outline.svg","material-notebook-heart":"material/notebook-heart.svg","material-notebook-minus-outline":"material/notebook-minus-outline.svg","material-notebook-minus":"material/notebook-minus.svg","material-notebook-multiple":"material/notebook-multiple.svg","material-notebook-outline":"material/notebook-outline.svg","material-notebook-plus-outline":"material/notebook-plus-outline.svg","material-notebook-plus":"material/notebook-plus.svg","material-notebook-remove-outline":"material/notebook-remove-outline.svg","material-notebook-remove":"material/notebook-remove.svg","material-notebook":"material/notebook.svg","material-notification-clear-all":"material/notification-clear-all.svg","material-npm":"material/npm.svg","material-nuke":"material/nuke.svg","material-null":"material/null.svg","material-numeric-0-box-multiple-outline":"material/numeric-0-box-multiple-outline.svg","material-numeric-0-box-multiple":"material/numeric-0-box-multiple.svg","material-numeric-0-box-outline":"material/numeric-0-box-outline.svg","material-numeric-0-box":"material/numeric-0-box.svg","material-numeric-0-circle-outline":"material/numeric-0-circle-outline.svg","material-numeric-0-circle":"material/numeric-0-circle.svg","material-numeric-0":"material/numeric-0.svg","material-numeric-1-box-multiple-outline":"material/numeric-1-box-multiple-outline.svg","material-numeric-1-box-multiple":"material/numeric-1-box-multiple.svg","material-numeric-1-box-outline":"material/numeric-1-box-outline.svg","material-numeric-1-box":"material/numeric-1-box.svg","material-numeric-1-circle-outline":"material/numeric-1-circle-outline.svg","material-numeric-1-circle":"material/numeric-1-circle.svg","material-numeric-1":"material/numeric-1.svg","material-numeric-10-box-multiple-outline":"material/numeric-10-box-multiple-outline.svg","material-numeric-10-box-multiple":"material/numeric-10-box-multiple.svg","material-numeric-10-box-outline":"material/numeric-10-box-outline.svg","material-numeric-10-box":"material/numeric-10-box.svg","material-numeric-10-circle-outline":"material/numeric-10-circle-outline.svg","material-numeric-10-circle":"material/numeric-10-circle.svg","material-numeric-10":"material/numeric-10.svg","material-numeric-2-box-multiple-outline":"material/numeric-2-box-multiple-outline.svg","material-numeric-2-box-multiple":"material/numeric-2-box-multiple.svg","material-numeric-2-box-outline":"material/numeric-2-box-outline.svg","material-numeric-2-box":"material/numeric-2-box.svg","material-numeric-2-circle-outline":"material/numeric-2-circle-outline.svg","material-numeric-2-circle":"material/numeric-2-circle.svg","material-numeric-2":"material/numeric-2.svg","material-numeric-3-box-multiple-outline":"material/numeric-3-box-multiple-outline.svg","material-numeric-3-box-multiple":"material/numeric-3-box-multiple.svg","material-numeric-3-box-outline":"material/numeric-3-box-outline.svg","material-numeric-3-box":"material/numeric-3-box.svg","material-numeric-3-circle-outline":"material/numeric-3-circle-outline.svg","material-numeric-3-circle":"material/numeric-3-circle.svg","material-numeric-3":"material/numeric-3.svg","material-numeric-4-box-multiple-outline":"material/numeric-4-box-multiple-outline.svg","material-numeric-4-box-multiple":"material/numeric-4-box-multiple.svg","material-numeric-4-box-outline":"material/numeric-4-box-outline.svg","material-numeric-4-box":"material/numeric-4-box.svg","material-numeric-4-circle-outline":"material/numeric-4-circle-outline.svg","material-numeric-4-circle":"material/numeric-4-circle.svg","material-numeric-4":"material/numeric-4.svg","material-numeric-5-box-multiple-outline":"material/numeric-5-box-multiple-outline.svg","material-numeric-5-box-multiple":"material/numeric-5-box-multiple.svg","material-numeric-5-box-outline":"material/numeric-5-box-outline.svg","material-numeric-5-box":"material/numeric-5-box.svg","material-numeric-5-circle-outline":"material/numeric-5-circle-outline.svg","material-numeric-5-circle":"material/numeric-5-circle.svg","material-numeric-5":"material/numeric-5.svg","material-numeric-6-box-multiple-outline":"material/numeric-6-box-multiple-outline.svg","material-numeric-6-box-multiple":"material/numeric-6-box-multiple.svg","material-numeric-6-box-outline":"material/numeric-6-box-outline.svg","material-numeric-6-box":"material/numeric-6-box.svg","material-numeric-6-circle-outline":"material/numeric-6-circle-outline.svg","material-numeric-6-circle":"material/numeric-6-circle.svg","material-numeric-6":"material/numeric-6.svg","material-numeric-7-box-multiple-outline":"material/numeric-7-box-multiple-outline.svg","material-numeric-7-box-multiple":"material/numeric-7-box-multiple.svg","material-numeric-7-box-outline":"material/numeric-7-box-outline.svg","material-numeric-7-box":"material/numeric-7-box.svg","material-numeric-7-circle-outline":"material/numeric-7-circle-outline.svg","material-numeric-7-circle":"material/numeric-7-circle.svg","material-numeric-7":"material/numeric-7.svg","material-numeric-8-box-multiple-outline":"material/numeric-8-box-multiple-outline.svg","material-numeric-8-box-multiple":"material/numeric-8-box-multiple.svg","material-numeric-8-box-outline":"material/numeric-8-box-outline.svg","material-numeric-8-box":"material/numeric-8-box.svg","material-numeric-8-circle-outline":"material/numeric-8-circle-outline.svg","material-numeric-8-circle":"material/numeric-8-circle.svg","material-numeric-8":"material/numeric-8.svg","material-numeric-9-box-multiple-outline":"material/numeric-9-box-multiple-outline.svg","material-numeric-9-box-multiple":"material/numeric-9-box-multiple.svg","material-numeric-9-box-outline":"material/numeric-9-box-outline.svg","material-numeric-9-box":"material/numeric-9-box.svg","material-numeric-9-circle-outline":"material/numeric-9-circle-outline.svg","material-numeric-9-circle":"material/numeric-9-circle.svg","material-numeric-9-plus-box-multiple-outline":"material/numeric-9-plus-box-multiple-outline.svg","material-numeric-9-plus-box-multiple":"material/numeric-9-plus-box-multiple.svg","material-numeric-9-plus-box-outline":"material/numeric-9-plus-box-outline.svg","material-numeric-9-plus-box":"material/numeric-9-plus-box.svg","material-numeric-9-plus-circle-outline":"material/numeric-9-plus-circle-outline.svg","material-numeric-9-plus-circle":"material/numeric-9-plus-circle.svg","material-numeric-9-plus":"material/numeric-9-plus.svg","material-numeric-9":"material/numeric-9.svg","material-numeric-negative-1":"material/numeric-negative-1.svg","material-numeric-off":"material/numeric-off.svg","material-numeric-positive-1":"material/numeric-positive-1.svg","material-numeric":"material/numeric.svg","material-nut":"material/nut.svg","material-nutrition":"material/nutrition.svg","material-nuxt":"material/nuxt.svg","material-oar":"material/oar.svg","material-ocarina":"material/ocarina.svg","material-oci":"material/oci.svg","material-ocr":"material/ocr.svg","material-octagon-outline":"material/octagon-outline.svg","material-octagon":"material/octagon.svg","material-octagram-outline":"material/octagram-outline.svg","material-octagram":"material/octagram.svg","material-octahedron-off":"material/octahedron-off.svg","material-octahedron":"material/octahedron.svg","material-odnoklassniki":"material/odnoklassniki.svg","material-offer":"material/offer.svg","material-office-building-cog-outline":"material/office-building-cog-outline.svg","material-office-building-cog":"material/office-building-cog.svg","material-office-building-marker-outline":"material/office-building-marker-outline.svg","material-office-building-marker":"material/office-building-marker.svg","material-office-building-minus-outline":"material/office-building-minus-outline.svg","material-office-building-minus":"material/office-building-minus.svg","material-office-building-outline":"material/office-building-outline.svg","material-office-building-plus-outline":"material/office-building-plus-outline.svg","material-office-building-plus":"material/office-building-plus.svg","material-office-building-remove-outline":"material/office-building-remove-outline.svg","material-office-building-remove":"material/office-building-remove.svg","material-office-building":"material/office-building.svg","material-oil-lamp":"material/oil-lamp.svg","material-oil-level":"material/oil-level.svg","material-oil-temperature":"material/oil-temperature.svg","material-oil":"material/oil.svg","material-om":"material/om.svg","material-omega":"material/omega.svg","material-one-up":"material/one-up.svg","material-onepassword":"material/onepassword.svg","material-opacity":"material/opacity.svg","material-open-in-app":"material/open-in-app.svg","material-open-in-new":"material/open-in-new.svg","material-open-source-initiative":"material/open-source-initiative.svg","material-openid":"material/openid.svg","material-opera":"material/opera.svg","material-orbit-variant":"material/orbit-variant.svg","material-orbit":"material/orbit.svg","material-order-alphabetical-ascending":"material/order-alphabetical-ascending.svg","material-order-alphabetical-descending":"material/order-alphabetical-descending.svg","material-order-bool-ascending-variant":"material/order-bool-ascending-variant.svg","material-order-bool-ascending":"material/order-bool-ascending.svg","material-order-bool-descending-variant":"material/order-bool-descending-variant.svg","material-order-bool-descending":"material/order-bool-descending.svg","material-order-numeric-ascending":"material/order-numeric-ascending.svg","material-order-numeric-descending":"material/order-numeric-descending.svg","material-origin":"material/origin.svg","material-ornament-variant":"material/ornament-variant.svg","material-ornament":"material/ornament.svg","material-outdoor-lamp":"material/outdoor-lamp.svg","material-overscan":"material/overscan.svg","material-owl":"material/owl.svg","material-pac-man":"material/pac-man.svg","material-package-check":"material/package-check.svg","material-package-down":"material/package-down.svg","material-package-up":"material/package-up.svg","material-package-variant-closed-check":"material/package-variant-closed-check.svg","material-package-variant-closed-minus":"material/package-variant-closed-minus.svg","material-package-variant-closed-plus":"material/package-variant-closed-plus.svg","material-package-variant-closed-remove":"material/package-variant-closed-remove.svg","material-package-variant-closed":"material/package-variant-closed.svg","material-package-variant-minus":"material/package-variant-minus.svg","material-package-variant-plus":"material/package-variant-plus.svg","material-package-variant-remove":"material/package-variant-remove.svg","material-package-variant":"material/package-variant.svg","material-package":"material/package.svg","material-page-first":"material/page-first.svg","material-page-last":"material/page-last.svg","material-page-layout-body":"material/page-layout-body.svg","material-page-layout-footer":"material/page-layout-footer.svg","material-page-layout-header-footer":"material/page-layout-header-footer.svg","material-page-layout-header":"material/page-layout-header.svg","material-page-layout-sidebar-left":"material/page-layout-sidebar-left.svg","material-page-layout-sidebar-right":"material/page-layout-sidebar-right.svg","material-page-next-outline":"material/page-next-outline.svg","material-page-next":"material/page-next.svg","material-page-previous-outline":"material/page-previous-outline.svg","material-page-previous":"material/page-previous.svg","material-pail-minus-outline":"material/pail-minus-outline.svg","material-pail-minus":"material/pail-minus.svg","material-pail-off-outline":"material/pail-off-outline.svg","material-pail-off":"material/pail-off.svg","material-pail-outline":"material/pail-outline.svg","material-pail-plus-outline":"material/pail-plus-outline.svg","material-pail-plus":"material/pail-plus.svg","material-pail-remove-outline":"material/pail-remove-outline.svg","material-pail-remove":"material/pail-remove.svg","material-pail":"material/pail.svg","material-palette-advanced":"material/palette-advanced.svg","material-palette-outline":"material/palette-outline.svg","material-palette-swatch-outline":"material/palette-swatch-outline.svg","material-palette-swatch-variant":"material/palette-swatch-variant.svg","material-palette-swatch":"material/palette-swatch.svg","material-palette":"material/palette.svg","material-palm-tree":"material/palm-tree.svg","material-pan-bottom-left":"material/pan-bottom-left.svg","material-pan-bottom-right":"material/pan-bottom-right.svg","material-pan-down":"material/pan-down.svg","material-pan-horizontal":"material/pan-horizontal.svg","material-pan-left":"material/pan-left.svg","material-pan-right":"material/pan-right.svg","material-pan-top-left":"material/pan-top-left.svg","material-pan-top-right":"material/pan-top-right.svg","material-pan-up":"material/pan-up.svg","material-pan-vertical":"material/pan-vertical.svg","material-pan":"material/pan.svg","material-panda":"material/panda.svg","material-pandora":"material/pandora.svg","material-panorama-fisheye":"material/panorama-fisheye.svg","material-panorama-horizontal-outline":"material/panorama-horizontal-outline.svg","material-panorama-horizontal":"material/panorama-horizontal.svg","material-panorama-outline":"material/panorama-outline.svg","material-panorama-sphere-outline":"material/panorama-sphere-outline.svg","material-panorama-sphere":"material/panorama-sphere.svg","material-panorama-variant-outline":"material/panorama-variant-outline.svg","material-panorama-variant":"material/panorama-variant.svg","material-panorama-vertical-outline":"material/panorama-vertical-outline.svg","material-panorama-vertical":"material/panorama-vertical.svg","material-panorama-wide-angle-outline":"material/panorama-wide-angle-outline.svg","material-panorama-wide-angle":"material/panorama-wide-angle.svg","material-panorama":"material/panorama.svg","material-paper-cut-vertical":"material/paper-cut-vertical.svg","material-paper-roll-outline":"material/paper-roll-outline.svg","material-paper-roll":"material/paper-roll.svg","material-paperclip-check":"material/paperclip-check.svg","material-paperclip-lock":"material/paperclip-lock.svg","material-paperclip-minus":"material/paperclip-minus.svg","material-paperclip-off":"material/paperclip-off.svg","material-paperclip-plus":"material/paperclip-plus.svg","material-paperclip-remove":"material/paperclip-remove.svg","material-paperclip":"material/paperclip.svg","material-parachute-outline":"material/parachute-outline.svg","material-parachute":"material/parachute.svg","material-paragliding":"material/paragliding.svg","material-parking":"material/parking.svg","material-party-popper":"material/party-popper.svg","material-passport-biometric":"material/passport-biometric.svg","material-passport":"material/passport.svg","material-pasta":"material/pasta.svg","material-patio-heater":"material/patio-heater.svg","material-patreon":"material/patreon.svg","material-pause-box-outline":"material/pause-box-outline.svg","material-pause-box":"material/pause-box.svg","material-pause-circle-outline":"material/pause-circle-outline.svg","material-pause-circle":"material/pause-circle.svg","material-pause-octagon-outline":"material/pause-octagon-outline.svg","material-pause-octagon":"material/pause-octagon.svg","material-pause":"material/pause.svg","material-paw-off-outline":"material/paw-off-outline.svg","material-paw-off":"material/paw-off.svg","material-paw-outline":"material/paw-outline.svg","material-paw":"material/paw.svg","material-peace":"material/peace.svg","material-peanut-off-outline":"material/peanut-off-outline.svg","material-peanut-off":"material/peanut-off.svg","material-peanut-outline":"material/peanut-outline.svg","material-peanut":"material/peanut.svg","material-pen-lock":"material/pen-lock.svg","material-pen-minus":"material/pen-minus.svg","material-pen-off":"material/pen-off.svg","material-pen-plus":"material/pen-plus.svg","material-pen-remove":"material/pen-remove.svg","material-pen":"material/pen.svg","material-pencil-box-multiple-outline":"material/pencil-box-multiple-outline.svg","material-pencil-box-multiple":"material/pencil-box-multiple.svg","material-pencil-box-outline":"material/pencil-box-outline.svg","material-pencil-box":"material/pencil-box.svg","material-pencil-circle-outline":"material/pencil-circle-outline.svg","material-pencil-circle":"material/pencil-circle.svg","material-pencil-lock-outline":"material/pencil-lock-outline.svg","material-pencil-lock":"material/pencil-lock.svg","material-pencil-minus-outline":"material/pencil-minus-outline.svg","material-pencil-minus":"material/pencil-minus.svg","material-pencil-off-outline":"material/pencil-off-outline.svg","material-pencil-off":"material/pencil-off.svg","material-pencil-outline":"material/pencil-outline.svg","material-pencil-plus-outline":"material/pencil-plus-outline.svg","material-pencil-plus":"material/pencil-plus.svg","material-pencil-remove-outline":"material/pencil-remove-outline.svg","material-pencil-remove":"material/pencil-remove.svg","material-pencil-ruler":"material/pencil-ruler.svg","material-pencil":"material/pencil.svg","material-penguin":"material/penguin.svg","material-pentagon-outline":"material/pentagon-outline.svg","material-pentagon":"material/pentagon.svg","material-pentagram":"material/pentagram.svg","material-percent-box-outline":"material/percent-box-outline.svg","material-percent-box":"material/percent-box.svg","material-percent-circle-outline":"material/percent-circle-outline.svg","material-percent-circle":"material/percent-circle.svg","material-percent-outline":"material/percent-outline.svg","material-percent":"material/percent.svg","material-periodic-table":"material/periodic-table.svg","material-perspective-less":"material/perspective-less.svg","material-perspective-more":"material/perspective-more.svg","material-ph":"material/ph.svg","material-phone-alert-outline":"material/phone-alert-outline.svg","material-phone-alert":"material/phone-alert.svg","material-phone-bluetooth-outline":"material/phone-bluetooth-outline.svg","material-phone-bluetooth":"material/phone-bluetooth.svg","material-phone-cancel-outline":"material/phone-cancel-outline.svg","material-phone-cancel":"material/phone-cancel.svg","material-phone-check-outline":"material/phone-check-outline.svg","material-phone-check":"material/phone-check.svg","material-phone-classic-off":"material/phone-classic-off.svg","material-phone-classic":"material/phone-classic.svg","material-phone-clock":"material/phone-clock.svg","material-phone-dial-outline":"material/phone-dial-outline.svg","material-phone-dial":"material/phone-dial.svg","material-phone-forward-outline":"material/phone-forward-outline.svg","material-phone-forward":"material/phone-forward.svg","material-phone-hangup-outline":"material/phone-hangup-outline.svg","material-phone-hangup":"material/phone-hangup.svg","material-phone-in-talk-outline":"material/phone-in-talk-outline.svg","material-phone-in-talk":"material/phone-in-talk.svg","material-phone-incoming-outgoing-outline":"material/phone-incoming-outgoing-outline.svg","material-phone-incoming-outgoing":"material/phone-incoming-outgoing.svg","material-phone-incoming-outline":"material/phone-incoming-outline.svg","material-phone-incoming":"material/phone-incoming.svg","material-phone-lock-outline":"material/phone-lock-outline.svg","material-phone-lock":"material/phone-lock.svg","material-phone-log-outline":"material/phone-log-outline.svg","material-phone-log":"material/phone-log.svg","material-phone-message-outline":"material/phone-message-outline.svg","material-phone-message":"material/phone-message.svg","material-phone-minus-outline":"material/phone-minus-outline.svg","material-phone-minus":"material/phone-minus.svg","material-phone-missed-outline":"material/phone-missed-outline.svg","material-phone-missed":"material/phone-missed.svg","material-phone-off-outline":"material/phone-off-outline.svg","material-phone-off":"material/phone-off.svg","material-phone-outgoing-outline":"material/phone-outgoing-outline.svg","material-phone-outgoing":"material/phone-outgoing.svg","material-phone-outline":"material/phone-outline.svg","material-phone-paused-outline":"material/phone-paused-outline.svg","material-phone-paused":"material/phone-paused.svg","material-phone-plus-outline":"material/phone-plus-outline.svg","material-phone-plus":"material/phone-plus.svg","material-phone-refresh-outline":"material/phone-refresh-outline.svg","material-phone-refresh":"material/phone-refresh.svg","material-phone-remove-outline":"material/phone-remove-outline.svg","material-phone-remove":"material/phone-remove.svg","material-phone-return-outline":"material/phone-return-outline.svg","material-phone-return":"material/phone-return.svg","material-phone-ring-outline":"material/phone-ring-outline.svg","material-phone-ring":"material/phone-ring.svg","material-phone-rotate-landscape":"material/phone-rotate-landscape.svg","material-phone-rotate-portrait":"material/phone-rotate-portrait.svg","material-phone-settings-outline":"material/phone-settings-outline.svg","material-phone-settings":"material/phone-settings.svg","material-phone-sync-outline":"material/phone-sync-outline.svg","material-phone-sync":"material/phone-sync.svg","material-phone-voip":"material/phone-voip.svg","material-phone":"material/phone.svg","material-pi-box":"material/pi-box.svg","material-pi-hole":"material/pi-hole.svg","material-pi":"material/pi.svg","material-piano-off":"material/piano-off.svg","material-piano":"material/piano.svg","material-pickaxe":"material/pickaxe.svg","material-picture-in-picture-bottom-right-outline":"material/picture-in-picture-bottom-right-outline.svg","material-picture-in-picture-bottom-right":"material/picture-in-picture-bottom-right.svg","material-picture-in-picture-top-right-outline":"material/picture-in-picture-top-right-outline.svg","material-picture-in-picture-top-right":"material/picture-in-picture-top-right.svg","material-pier-crane":"material/pier-crane.svg","material-pier":"material/pier.svg","material-pig-variant-outline":"material/pig-variant-outline.svg","material-pig-variant":"material/pig-variant.svg","material-pig":"material/pig.svg","material-piggy-bank-outline":"material/piggy-bank-outline.svg","material-piggy-bank":"material/piggy-bank.svg","material-pill-multiple":"material/pill-multiple.svg","material-pill-off":"material/pill-off.svg","material-pill":"material/pill.svg","material-pillar":"material/pillar.svg","material-pin-off-outline":"material/pin-off-outline.svg","material-pin-off":"material/pin-off.svg","material-pin-outline":"material/pin-outline.svg","material-pin":"material/pin.svg","material-pine-tree-box":"material/pine-tree-box.svg","material-pine-tree-fire":"material/pine-tree-fire.svg","material-pine-tree":"material/pine-tree.svg","material-pinterest":"material/pinterest.svg","material-pinwheel-outline":"material/pinwheel-outline.svg","material-pinwheel":"material/pinwheel.svg","material-pipe-disconnected":"material/pipe-disconnected.svg","material-pipe-leak":"material/pipe-leak.svg","material-pipe-valve":"material/pipe-valve.svg","material-pipe-wrench":"material/pipe-wrench.svg","material-pipe":"material/pipe.svg","material-pirate":"material/pirate.svg","material-pistol":"material/pistol.svg","material-piston":"material/piston.svg","material-pitchfork":"material/pitchfork.svg","material-pizza":"material/pizza.svg","material-plane-car":"material/plane-car.svg","material-plane-train":"material/plane-train.svg","material-play-box-lock-open-outline":"material/play-box-lock-open-outline.svg","material-play-box-lock-open":"material/play-box-lock-open.svg","material-play-box-lock-outline":"material/play-box-lock-outline.svg","material-play-box-lock":"material/play-box-lock.svg","material-play-box-multiple-outline":"material/play-box-multiple-outline.svg","material-play-box-multiple":"material/play-box-multiple.svg","material-play-box-outline":"material/play-box-outline.svg","material-play-box":"material/play-box.svg","material-play-circle-outline":"material/play-circle-outline.svg","material-play-circle":"material/play-circle.svg","material-play-network-outline":"material/play-network-outline.svg","material-play-network":"material/play-network.svg","material-play-outline":"material/play-outline.svg","material-play-pause":"material/play-pause.svg","material-play-protected-content":"material/play-protected-content.svg","material-play-speed":"material/play-speed.svg","material-play":"material/play.svg","material-playlist-check":"material/playlist-check.svg","material-playlist-edit":"material/playlist-edit.svg","material-playlist-minus":"material/playlist-minus.svg","material-playlist-music-outline":"material/playlist-music-outline.svg","material-playlist-music":"material/playlist-music.svg","material-playlist-play":"material/playlist-play.svg","material-playlist-plus":"material/playlist-plus.svg","material-playlist-remove":"material/playlist-remove.svg","material-playlist-star":"material/playlist-star.svg","material-plex":"material/plex.svg","material-pliers":"material/pliers.svg","material-plus-box-multiple-outline":"material/plus-box-multiple-outline.svg","material-plus-box-multiple":"material/plus-box-multiple.svg","material-plus-box-outline":"material/plus-box-outline.svg","material-plus-box":"material/plus-box.svg","material-plus-circle-multiple-outline":"material/plus-circle-multiple-outline.svg","material-plus-circle-multiple":"material/plus-circle-multiple.svg","material-plus-circle-outline":"material/plus-circle-outline.svg","material-plus-circle":"material/plus-circle.svg","material-plus-lock-open":"material/plus-lock-open.svg","material-plus-lock":"material/plus-lock.svg","material-plus-minus-box":"material/plus-minus-box.svg","material-plus-minus-variant":"material/plus-minus-variant.svg","material-plus-minus":"material/plus-minus.svg","material-plus-network-outline":"material/plus-network-outline.svg","material-plus-network":"material/plus-network.svg","material-plus-outline":"material/plus-outline.svg","material-plus-thick":"material/plus-thick.svg","material-plus":"material/plus.svg","material-podcast":"material/podcast.svg","material-podium-bronze":"material/podium-bronze.svg","material-podium-gold":"material/podium-gold.svg","material-podium-silver":"material/podium-silver.svg","material-podium":"material/podium.svg","material-point-of-sale":"material/point-of-sale.svg","material-pokeball":"material/pokeball.svg","material-pokemon-go":"material/pokemon-go.svg","material-poker-chip":"material/poker-chip.svg","material-polaroid":"material/polaroid.svg","material-police-badge-outline":"material/police-badge-outline.svg","material-police-badge":"material/police-badge.svg","material-police-station":"material/police-station.svg","material-poll":"material/poll.svg","material-polo":"material/polo.svg","material-polymer":"material/polymer.svg","material-pool-thermometer":"material/pool-thermometer.svg","material-pool":"material/pool.svg","material-popcorn":"material/popcorn.svg","material-post-lamp":"material/post-lamp.svg","material-post-outline":"material/post-outline.svg","material-post":"material/post.svg","material-postage-stamp":"material/postage-stamp.svg","material-pot-mix-outline":"material/pot-mix-outline.svg","material-pot-mix":"material/pot-mix.svg","material-pot-outline":"material/pot-outline.svg","material-pot-steam-outline":"material/pot-steam-outline.svg","material-pot-steam":"material/pot-steam.svg","material-pot":"material/pot.svg","material-pound-box-outline":"material/pound-box-outline.svg","material-pound-box":"material/pound-box.svg","material-pound":"material/pound.svg","material-power-cycle":"material/power-cycle.svg","material-power-off":"material/power-off.svg","material-power-on":"material/power-on.svg","material-power-plug-off-outline":"material/power-plug-off-outline.svg","material-power-plug-off":"material/power-plug-off.svg","material-power-plug-outline":"material/power-plug-outline.svg","material-power-plug":"material/power-plug.svg","material-power-settings":"material/power-settings.svg","material-power-sleep":"material/power-sleep.svg","material-power-socket-au":"material/power-socket-au.svg","material-power-socket-ch":"material/power-socket-ch.svg","material-power-socket-de":"material/power-socket-de.svg","material-power-socket-eu":"material/power-socket-eu.svg","material-power-socket-fr":"material/power-socket-fr.svg","material-power-socket-it":"material/power-socket-it.svg","material-power-socket-jp":"material/power-socket-jp.svg","material-power-socket-uk":"material/power-socket-uk.svg","material-power-socket-us":"material/power-socket-us.svg","material-power-socket":"material/power-socket.svg","material-power-standby":"material/power-standby.svg","material-power":"material/power.svg","material-powershell":"material/powershell.svg","material-prescription":"material/prescription.svg","material-presentation-play":"material/presentation-play.svg","material-presentation":"material/presentation.svg","material-pretzel":"material/pretzel.svg","material-printer-3d-nozzle-alert-outline":"material/printer-3d-nozzle-alert-outline.svg","material-printer-3d-nozzle-alert":"material/printer-3d-nozzle-alert.svg","material-printer-3d-nozzle-heat-outline":"material/printer-3d-nozzle-heat-outline.svg","material-printer-3d-nozzle-heat":"material/printer-3d-nozzle-heat.svg","material-printer-3d-nozzle-off-outline":"material/printer-3d-nozzle-off-outline.svg","material-printer-3d-nozzle-off":"material/printer-3d-nozzle-off.svg","material-printer-3d-nozzle-outline":"material/printer-3d-nozzle-outline.svg","material-printer-3d-nozzle":"material/printer-3d-nozzle.svg","material-printer-3d-off":"material/printer-3d-off.svg","material-printer-3d":"material/printer-3d.svg","material-printer-alert":"material/printer-alert.svg","material-printer-check":"material/printer-check.svg","material-printer-eye":"material/printer-eye.svg","material-printer-off-outline":"material/printer-off-outline.svg","material-printer-off":"material/printer-off.svg","material-printer-outline":"material/printer-outline.svg","material-printer-pos":"material/printer-pos.svg","material-printer-search":"material/printer-search.svg","material-printer-settings":"material/printer-settings.svg","material-printer-wireless":"material/printer-wireless.svg","material-printer":"material/printer.svg","material-priority-high":"material/priority-high.svg","material-priority-low":"material/priority-low.svg","material-professional-hexagon":"material/professional-hexagon.svg","material-progress-alert":"material/progress-alert.svg","material-progress-check":"material/progress-check.svg","material-progress-clock":"material/progress-clock.svg","material-progress-close":"material/progress-close.svg","material-progress-download":"material/progress-download.svg","material-progress-helper":"material/progress-helper.svg","material-progress-pencil":"material/progress-pencil.svg","material-progress-question":"material/progress-question.svg","material-progress-star":"material/progress-star.svg","material-progress-upload":"material/progress-upload.svg","material-progress-wrench":"material/progress-wrench.svg","material-projector-off":"material/projector-off.svg","material-projector-screen-off-outline":"material/projector-screen-off-outline.svg","material-projector-screen-off":"material/projector-screen-off.svg","material-projector-screen-outline":"material/projector-screen-outline.svg","material-projector-screen-variant-off-outline":"material/projector-screen-variant-off-outline.svg","material-projector-screen-variant-off":"material/projector-screen-variant-off.svg","material-projector-screen-variant-outline":"material/projector-screen-variant-outline.svg","material-projector-screen-variant":"material/projector-screen-variant.svg","material-projector-screen":"material/projector-screen.svg","material-projector":"material/projector.svg","material-propane-tank-outline":"material/propane-tank-outline.svg","material-propane-tank":"material/propane-tank.svg","material-protocol":"material/protocol.svg","material-publish-off":"material/publish-off.svg","material-publish":"material/publish.svg","material-pulse":"material/pulse.svg","material-pump-off":"material/pump-off.svg","material-pump":"material/pump.svg","material-pumpkin":"material/pumpkin.svg","material-purse-outline":"material/purse-outline.svg","material-purse":"material/purse.svg","material-puzzle-check-outline":"material/puzzle-check-outline.svg","material-puzzle-check":"material/puzzle-check.svg","material-puzzle-edit-outline":"material/puzzle-edit-outline.svg","material-puzzle-edit":"material/puzzle-edit.svg","material-puzzle-heart-outline":"material/puzzle-heart-outline.svg","material-puzzle-heart":"material/puzzle-heart.svg","material-puzzle-minus-outline":"material/puzzle-minus-outline.svg","material-puzzle-minus":"material/puzzle-minus.svg","material-puzzle-outline":"material/puzzle-outline.svg","material-puzzle-plus-outline":"material/puzzle-plus-outline.svg","material-puzzle-plus":"material/puzzle-plus.svg","material-puzzle-remove-outline":"material/puzzle-remove-outline.svg","material-puzzle-remove":"material/puzzle-remove.svg","material-puzzle-star-outline":"material/puzzle-star-outline.svg","material-puzzle-star":"material/puzzle-star.svg","material-puzzle":"material/puzzle.svg","material-pyramid-off":"material/pyramid-off.svg","material-pyramid":"material/pyramid.svg","material-qi":"material/qi.svg","material-qqchat":"material/qqchat.svg","material-qrcode-edit":"material/qrcode-edit.svg","material-qrcode-minus":"material/qrcode-minus.svg","material-qrcode-plus":"material/qrcode-plus.svg","material-qrcode-remove":"material/qrcode-remove.svg","material-qrcode-scan":"material/qrcode-scan.svg","material-qrcode":"material/qrcode.svg","material-quadcopter":"material/quadcopter.svg","material-quality-high":"material/quality-high.svg","material-quality-low":"material/quality-low.svg","material-quality-medium":"material/quality-medium.svg","material-quora":"material/quora.svg","material-rabbit-variant-outline":"material/rabbit-variant-outline.svg","material-rabbit-variant":"material/rabbit-variant.svg","material-rabbit":"material/rabbit.svg","material-racing-helmet":"material/racing-helmet.svg","material-racquetball":"material/racquetball.svg","material-radar":"material/radar.svg","material-radiator-disabled":"material/radiator-disabled.svg","material-radiator-off":"material/radiator-off.svg","material-radiator":"material/radiator.svg","material-radio-am":"material/radio-am.svg","material-radio-fm":"material/radio-fm.svg","material-radio-handheld":"material/radio-handheld.svg","material-radio-off":"material/radio-off.svg","material-radio-tower":"material/radio-tower.svg","material-radio":"material/radio.svg","material-radioactive-circle-outline":"material/radioactive-circle-outline.svg","material-radioactive-circle":"material/radioactive-circle.svg","material-radioactive-off":"material/radioactive-off.svg","material-radioactive":"material/radioactive.svg","material-radiobox-blank":"material/radiobox-blank.svg","material-radiobox-marked":"material/radiobox-marked.svg","material-radiology-box-outline":"material/radiology-box-outline.svg","material-radiology-box":"material/radiology-box.svg","material-radius-outline":"material/radius-outline.svg","material-radius":"material/radius.svg","material-railroad-light":"material/railroad-light.svg","material-rake":"material/rake.svg","material-raspberry-pi":"material/raspberry-pi.svg","material-raw-off":"material/raw-off.svg","material-raw":"material/raw.svg","material-ray-end-arrow":"material/ray-end-arrow.svg","material-ray-end":"material/ray-end.svg","material-ray-start-arrow":"material/ray-start-arrow.svg","material-ray-start-end":"material/ray-start-end.svg","material-ray-start-vertex-end":"material/ray-start-vertex-end.svg","material-ray-start":"material/ray-start.svg","material-ray-vertex":"material/ray-vertex.svg","material-razor-double-edge":"material/razor-double-edge.svg","material-razor-single-edge":"material/razor-single-edge.svg","material-react":"material/react.svg","material-read":"material/read.svg","material-receipt-outline":"material/receipt-outline.svg","material-receipt-text-check-outline":"material/receipt-text-check-outline.svg","material-receipt-text-check":"material/receipt-text-check.svg","material-receipt-text-minus-outline":"material/receipt-text-minus-outline.svg","material-receipt-text-minus":"material/receipt-text-minus.svg","material-receipt-text-outline":"material/receipt-text-outline.svg","material-receipt-text-plus-outline":"material/receipt-text-plus-outline.svg","material-receipt-text-plus":"material/receipt-text-plus.svg","material-receipt-text-remove-outline":"material/receipt-text-remove-outline.svg","material-receipt-text-remove":"material/receipt-text-remove.svg","material-receipt-text":"material/receipt-text.svg","material-receipt":"material/receipt.svg","material-record-circle-outline":"material/record-circle-outline.svg","material-record-circle":"material/record-circle.svg","material-record-player":"material/record-player.svg","material-record-rec":"material/record-rec.svg","material-record":"material/record.svg","material-rectangle-outline":"material/rectangle-outline.svg","material-rectangle":"material/rectangle.svg","material-recycle-variant":"material/recycle-variant.svg","material-recycle":"material/recycle.svg","material-reddit":"material/reddit.svg","material-redhat":"material/redhat.svg","material-redo-variant":"material/redo-variant.svg","material-redo":"material/redo.svg","material-reflect-horizontal":"material/reflect-horizontal.svg","material-reflect-vertical":"material/reflect-vertical.svg","material-refresh-auto":"material/refresh-auto.svg","material-refresh-circle":"material/refresh-circle.svg","material-refresh":"material/refresh.svg","material-regex":"material/regex.svg","material-registered-trademark":"material/registered-trademark.svg","material-reiterate":"material/reiterate.svg","material-relation-many-to-many":"material/relation-many-to-many.svg","material-relation-many-to-one-or-many":"material/relation-many-to-one-or-many.svg","material-relation-many-to-one":"material/relation-many-to-one.svg","material-relation-many-to-only-one":"material/relation-many-to-only-one.svg","material-relation-many-to-zero-or-many":"material/relation-many-to-zero-or-many.svg","material-relation-many-to-zero-or-one":"material/relation-many-to-zero-or-one.svg","material-relation-one-or-many-to-many":"material/relation-one-or-many-to-many.svg","material-relation-one-or-many-to-one-or-many":"material/relation-one-or-many-to-one-or-many.svg","material-relation-one-or-many-to-one":"material/relation-one-or-many-to-one.svg","material-relation-one-or-many-to-only-one":"material/relation-one-or-many-to-only-one.svg","material-relation-one-or-many-to-zero-or-many":"material/relation-one-or-many-to-zero-or-many.svg","material-relation-one-or-many-to-zero-or-one":"material/relation-one-or-many-to-zero-or-one.svg","material-relation-one-to-many":"material/relation-one-to-many.svg","material-relation-one-to-one-or-many":"material/relation-one-to-one-or-many.svg","material-relation-one-to-one":"material/relation-one-to-one.svg","material-relation-one-to-only-one":"material/relation-one-to-only-one.svg","material-relation-one-to-zero-or-many":"material/relation-one-to-zero-or-many.svg","material-relation-one-to-zero-or-one":"material/relation-one-to-zero-or-one.svg","material-relation-only-one-to-many":"material/relation-only-one-to-many.svg","material-relation-only-one-to-one-or-many":"material/relation-only-one-to-one-or-many.svg","material-relation-only-one-to-one":"material/relation-only-one-to-one.svg","material-relation-only-one-to-only-one":"material/relation-only-one-to-only-one.svg","material-relation-only-one-to-zero-or-many":"material/relation-only-one-to-zero-or-many.svg","material-relation-only-one-to-zero-or-one":"material/relation-only-one-to-zero-or-one.svg","material-relation-zero-or-many-to-many":"material/relation-zero-or-many-to-many.svg","material-relation-zero-or-many-to-one-or-many":"material/relation-zero-or-many-to-one-or-many.svg","material-relation-zero-or-many-to-one":"material/relation-zero-or-many-to-one.svg","material-relation-zero-or-many-to-only-one":"material/relation-zero-or-many-to-only-one.svg","material-relation-zero-or-many-to-zero-or-many":"material/relation-zero-or-many-to-zero-or-many.svg","material-relation-zero-or-many-to-zero-or-one":"material/relation-zero-or-many-to-zero-or-one.svg","material-relation-zero-or-one-to-many":"material/relation-zero-or-one-to-many.svg","material-relation-zero-or-one-to-one-or-many":"material/relation-zero-or-one-to-one-or-many.svg","material-relation-zero-or-one-to-one":"material/relation-zero-or-one-to-one.svg","material-relation-zero-or-one-to-only-one":"material/relation-zero-or-one-to-only-one.svg","material-relation-zero-or-one-to-zero-or-many":"material/relation-zero-or-one-to-zero-or-many.svg","material-relation-zero-or-one-to-zero-or-one":"material/relation-zero-or-one-to-zero-or-one.svg","material-relative-scale":"material/relative-scale.svg","material-reload-alert":"material/reload-alert.svg","material-reload":"material/reload.svg","material-reminder":"material/reminder.svg","material-remote-desktop":"material/remote-desktop.svg","material-remote-off":"material/remote-off.svg","material-remote-tv-off":"material/remote-tv-off.svg","material-remote-tv":"material/remote-tv.svg","material-remote":"material/remote.svg","material-rename-box":"material/rename-box.svg","material-reorder-horizontal":"material/reorder-horizontal.svg","material-reorder-vertical":"material/reorder-vertical.svg","material-repeat-off":"material/repeat-off.svg","material-repeat-once":"material/repeat-once.svg","material-repeat-variant":"material/repeat-variant.svg","material-repeat":"material/repeat.svg","material-replay":"material/replay.svg","material-reply-all-outline":"material/reply-all-outline.svg","material-reply-all":"material/reply-all.svg","material-reply-circle":"material/reply-circle.svg","material-reply-outline":"material/reply-outline.svg","material-reply":"material/reply.svg","material-reproduction":"material/reproduction.svg","material-resistor-nodes":"material/resistor-nodes.svg","material-resistor":"material/resistor.svg","material-resize-bottom-right":"material/resize-bottom-right.svg","material-resize":"material/resize.svg","material-responsive":"material/responsive.svg","material-restart-alert":"material/restart-alert.svg","material-restart-off":"material/restart-off.svg","material-restart":"material/restart.svg","material-restore-alert":"material/restore-alert.svg","material-restore":"material/restore.svg","material-rewind-10":"material/rewind-10.svg","material-rewind-15":"material/rewind-15.svg","material-rewind-30":"material/rewind-30.svg","material-rewind-45":"material/rewind-45.svg","material-rewind-5":"material/rewind-5.svg","material-rewind-60":"material/rewind-60.svg","material-rewind-outline":"material/rewind-outline.svg","material-rewind":"material/rewind.svg","material-rhombus-medium-outline":"material/rhombus-medium-outline.svg","material-rhombus-medium":"material/rhombus-medium.svg","material-rhombus-outline":"material/rhombus-outline.svg","material-rhombus-split-outline":"material/rhombus-split-outline.svg","material-rhombus-split":"material/rhombus-split.svg","material-rhombus":"material/rhombus.svg","material-ribbon":"material/ribbon.svg","material-rice":"material/rice.svg","material-rickshaw-electric":"material/rickshaw-electric.svg","material-rickshaw":"material/rickshaw.svg","material-ring":"material/ring.svg","material-rivet":"material/rivet.svg","material-road-variant":"material/road-variant.svg","material-road":"material/road.svg","material-robber":"material/robber.svg","material-robot-angry-outline":"material/robot-angry-outline.svg","material-robot-angry":"material/robot-angry.svg","material-robot-confused-outline":"material/robot-confused-outline.svg","material-robot-confused":"material/robot-confused.svg","material-robot-dead-outline":"material/robot-dead-outline.svg","material-robot-dead":"material/robot-dead.svg","material-robot-excited-outline":"material/robot-excited-outline.svg","material-robot-excited":"material/robot-excited.svg","material-robot-happy-outline":"material/robot-happy-outline.svg","material-robot-happy":"material/robot-happy.svg","material-robot-industrial-outline":"material/robot-industrial-outline.svg","material-robot-industrial":"material/robot-industrial.svg","material-robot-love-outline":"material/robot-love-outline.svg","material-robot-love":"material/robot-love.svg","material-robot-mower-outline":"material/robot-mower-outline.svg","material-robot-mower":"material/robot-mower.svg","material-robot-off-outline":"material/robot-off-outline.svg","material-robot-off":"material/robot-off.svg","material-robot-outline":"material/robot-outline.svg","material-robot-vacuum-alert":"material/robot-vacuum-alert.svg","material-robot-vacuum-variant-alert":"material/robot-vacuum-variant-alert.svg","material-robot-vacuum-variant":"material/robot-vacuum-variant.svg","material-robot-vacuum":"material/robot-vacuum.svg","material-robot":"material/robot.svg","material-rocket-launch-outline":"material/rocket-launch-outline.svg","material-rocket-launch":"material/rocket-launch.svg","material-rocket-outline":"material/rocket-outline.svg","material-rocket":"material/rocket.svg","material-rodent":"material/rodent.svg","material-roller-shade-closed":"material/roller-shade-closed.svg","material-roller-shade":"material/roller-shade.svg","material-roller-skate-off":"material/roller-skate-off.svg","material-roller-skate":"material/roller-skate.svg","material-rollerblade-off":"material/rollerblade-off.svg","material-rollerblade":"material/rollerblade.svg","material-rollupjs":"material/rollupjs.svg","material-rolodex-outline":"material/rolodex-outline.svg","material-rolodex":"material/rolodex.svg","material-roman-numeral-1":"material/roman-numeral-1.svg","material-roman-numeral-10":"material/roman-numeral-10.svg","material-roman-numeral-2":"material/roman-numeral-2.svg","material-roman-numeral-3":"material/roman-numeral-3.svg","material-roman-numeral-4":"material/roman-numeral-4.svg","material-roman-numeral-5":"material/roman-numeral-5.svg","material-roman-numeral-6":"material/roman-numeral-6.svg","material-roman-numeral-7":"material/roman-numeral-7.svg","material-roman-numeral-8":"material/roman-numeral-8.svg","material-roman-numeral-9":"material/roman-numeral-9.svg","material-room-service-outline":"material/room-service-outline.svg","material-room-service":"material/room-service.svg","material-rotate-360":"material/rotate-360.svg","material-rotate-3d-variant":"material/rotate-3d-variant.svg","material-rotate-3d":"material/rotate-3d.svg","material-rotate-left-variant":"material/rotate-left-variant.svg","material-rotate-left":"material/rotate-left.svg","material-rotate-orbit":"material/rotate-orbit.svg","material-rotate-right-variant":"material/rotate-right-variant.svg","material-rotate-right":"material/rotate-right.svg","material-rounded-corner":"material/rounded-corner.svg","material-router-network":"material/router-network.svg","material-router-wireless-off":"material/router-wireless-off.svg","material-router-wireless-settings":"material/router-wireless-settings.svg","material-router-wireless":"material/router-wireless.svg","material-router":"material/router.svg","material-routes-clock":"material/routes-clock.svg","material-routes":"material/routes.svg","material-rowing":"material/rowing.svg","material-rss-box":"material/rss-box.svg","material-rss-off":"material/rss-off.svg","material-rss":"material/rss.svg","material-rug":"material/rug.svg","material-rugby":"material/rugby.svg","material-ruler-square-compass":"material/ruler-square-compass.svg","material-ruler-square":"material/ruler-square.svg","material-ruler":"material/ruler.svg","material-run-fast":"material/run-fast.svg","material-run":"material/run.svg","material-rv-truck":"material/rv-truck.svg","material-sack-percent":"material/sack-percent.svg","material-sack":"material/sack.svg","material-safe-square-outline":"material/safe-square-outline.svg","material-safe-square":"material/safe-square.svg","material-safe":"material/safe.svg","material-safety-goggles":"material/safety-goggles.svg","material-sail-boat-sink":"material/sail-boat-sink.svg","material-sail-boat":"material/sail-boat.svg","material-sale-outline":"material/sale-outline.svg","material-sale":"material/sale.svg","material-salesforce":"material/salesforce.svg","material-sass":"material/sass.svg","material-satellite-uplink":"material/satellite-uplink.svg","material-satellite-variant":"material/satellite-variant.svg","material-satellite":"material/satellite.svg","material-sausage-off":"material/sausage-off.svg","material-sausage":"material/sausage.svg","material-saw-blade":"material/saw-blade.svg","material-sawtooth-wave":"material/sawtooth-wave.svg","material-saxophone":"material/saxophone.svg","material-scale-balance":"material/scale-balance.svg","material-scale-bathroom":"material/scale-bathroom.svg","material-scale-off":"material/scale-off.svg","material-scale-unbalanced":"material/scale-unbalanced.svg","material-scale":"material/scale.svg","material-scan-helper":"material/scan-helper.svg","material-scanner-off":"material/scanner-off.svg","material-scanner":"material/scanner.svg","material-scatter-plot-outline":"material/scatter-plot-outline.svg","material-scatter-plot":"material/scatter-plot.svg","material-scent-off":"material/scent-off.svg","material-scent":"material/scent.svg","material-school-outline":"material/school-outline.svg","material-school":"material/school.svg","material-scissors-cutting":"material/scissors-cutting.svg","material-scooter-electric":"material/scooter-electric.svg","material-scooter":"material/scooter.svg","material-scoreboard-outline":"material/scoreboard-outline.svg","material-scoreboard":"material/scoreboard.svg","material-screen-rotation-lock":"material/screen-rotation-lock.svg","material-screen-rotation":"material/screen-rotation.svg","material-screw-flat-top":"material/screw-flat-top.svg","material-screw-lag":"material/screw-lag.svg","material-screw-machine-flat-top":"material/screw-machine-flat-top.svg","material-screw-machine-round-top":"material/screw-machine-round-top.svg","material-screw-round-top":"material/screw-round-top.svg","material-screwdriver":"material/screwdriver.svg","material-script-outline":"material/script-outline.svg","material-script-text-key-outline":"material/script-text-key-outline.svg","material-script-text-key":"material/script-text-key.svg","material-script-text-outline":"material/script-text-outline.svg","material-script-text-play-outline":"material/script-text-play-outline.svg","material-script-text-play":"material/script-text-play.svg","material-script-text":"material/script-text.svg","material-script":"material/script.svg","material-sd":"material/sd.svg","material-seal-variant":"material/seal-variant.svg","material-seal":"material/seal.svg","material-search-web":"material/search-web.svg","material-seat-flat-angled":"material/seat-flat-angled.svg","material-seat-flat":"material/seat-flat.svg","material-seat-individual-suite":"material/seat-individual-suite.svg","material-seat-legroom-extra":"material/seat-legroom-extra.svg","material-seat-legroom-normal":"material/seat-legroom-normal.svg","material-seat-legroom-reduced":"material/seat-legroom-reduced.svg","material-seat-outline":"material/seat-outline.svg","material-seat-passenger":"material/seat-passenger.svg","material-seat-recline-extra":"material/seat-recline-extra.svg","material-seat-recline-normal":"material/seat-recline-normal.svg","material-seat":"material/seat.svg","material-seatbelt":"material/seatbelt.svg","material-security-network":"material/security-network.svg","material-security":"material/security.svg","material-seed-off-outline":"material/seed-off-outline.svg","material-seed-off":"material/seed-off.svg","material-seed-outline":"material/seed-outline.svg","material-seed-plus-outline":"material/seed-plus-outline.svg","material-seed-plus":"material/seed-plus.svg","material-seed":"material/seed.svg","material-seesaw":"material/seesaw.svg","material-segment":"material/segment.svg","material-select-all":"material/select-all.svg","material-select-arrow-down":"material/select-arrow-down.svg","material-select-arrow-up":"material/select-arrow-up.svg","material-select-color":"material/select-color.svg","material-select-compare":"material/select-compare.svg","material-select-drag":"material/select-drag.svg","material-select-group":"material/select-group.svg","material-select-inverse":"material/select-inverse.svg","material-select-marker":"material/select-marker.svg","material-select-multiple-marker":"material/select-multiple-marker.svg","material-select-multiple":"material/select-multiple.svg","material-select-off":"material/select-off.svg","material-select-place":"material/select-place.svg","material-select-remove":"material/select-remove.svg","material-select-search":"material/select-search.svg","material-select":"material/select.svg","material-selection-drag":"material/selection-drag.svg","material-selection-ellipse-arrow-inside":"material/selection-ellipse-arrow-inside.svg","material-selection-ellipse-remove":"material/selection-ellipse-remove.svg","material-selection-ellipse":"material/selection-ellipse.svg","material-selection-marker":"material/selection-marker.svg","material-selection-multiple-marker":"material/selection-multiple-marker.svg","material-selection-multiple":"material/selection-multiple.svg","material-selection-off":"material/selection-off.svg","material-selection-remove":"material/selection-remove.svg","material-selection-search":"material/selection-search.svg","material-selection":"material/selection.svg","material-semantic-web":"material/semantic-web.svg","material-send-check-outline":"material/send-check-outline.svg","material-send-check":"material/send-check.svg","material-send-circle-outline":"material/send-circle-outline.svg","material-send-circle":"material/send-circle.svg","material-send-clock-outline":"material/send-clock-outline.svg","material-send-clock":"material/send-clock.svg","material-send-lock-outline":"material/send-lock-outline.svg","material-send-lock":"material/send-lock.svg","material-send-outline":"material/send-outline.svg","material-send":"material/send.svg","material-serial-port":"material/serial-port.svg","material-server-minus":"material/server-minus.svg","material-server-network-off":"material/server-network-off.svg","material-server-network":"material/server-network.svg","material-server-off":"material/server-off.svg","material-server-plus":"material/server-plus.svg","material-server-remove":"material/server-remove.svg","material-server-security":"material/server-security.svg","material-server":"material/server.svg","material-set-all":"material/set-all.svg","material-set-center-right":"material/set-center-right.svg","material-set-center":"material/set-center.svg","material-set-left-center":"material/set-left-center.svg","material-set-left-right":"material/set-left-right.svg","material-set-left":"material/set-left.svg","material-set-merge":"material/set-merge.svg","material-set-none":"material/set-none.svg","material-set-right":"material/set-right.svg","material-set-split":"material/set-split.svg","material-set-square":"material/set-square.svg","material-set-top-box":"material/set-top-box.svg","material-settings-helper":"material/settings-helper.svg","material-shaker-outline":"material/shaker-outline.svg","material-shaker":"material/shaker.svg","material-shape-circle-plus":"material/shape-circle-plus.svg","material-shape-outline":"material/shape-outline.svg","material-shape-oval-plus":"material/shape-oval-plus.svg","material-shape-plus":"material/shape-plus.svg","material-shape-polygon-plus":"material/shape-polygon-plus.svg","material-shape-rectangle-plus":"material/shape-rectangle-plus.svg","material-shape-square-plus":"material/shape-square-plus.svg","material-shape-square-rounded-plus":"material/shape-square-rounded-plus.svg","material-shape":"material/shape.svg","material-share-all-outline":"material/share-all-outline.svg","material-share-all":"material/share-all.svg","material-share-circle":"material/share-circle.svg","material-share-off-outline":"material/share-off-outline.svg","material-share-off":"material/share-off.svg","material-share-outline":"material/share-outline.svg","material-share-variant-outline":"material/share-variant-outline.svg","material-share-variant":"material/share-variant.svg","material-share":"material/share.svg","material-shark-fin-outline":"material/shark-fin-outline.svg","material-shark-fin":"material/shark-fin.svg","material-shark-off":"material/shark-off.svg","material-shark":"material/shark.svg","material-sheep":"material/sheep.svg","material-shield-account-outline":"material/shield-account-outline.svg","material-shield-account-variant-outline":"material/shield-account-variant-outline.svg","material-shield-account-variant":"material/shield-account-variant.svg","material-shield-account":"material/shield-account.svg","material-shield-airplane-outline":"material/shield-airplane-outline.svg","material-shield-airplane":"material/shield-airplane.svg","material-shield-alert-outline":"material/shield-alert-outline.svg","material-shield-alert":"material/shield-alert.svg","material-shield-bug-outline":"material/shield-bug-outline.svg","material-shield-bug":"material/shield-bug.svg","material-shield-car":"material/shield-car.svg","material-shield-check-outline":"material/shield-check-outline.svg","material-shield-check":"material/shield-check.svg","material-shield-cross-outline":"material/shield-cross-outline.svg","material-shield-cross":"material/shield-cross.svg","material-shield-crown-outline":"material/shield-crown-outline.svg","material-shield-crown":"material/shield-crown.svg","material-shield-edit-outline":"material/shield-edit-outline.svg","material-shield-edit":"material/shield-edit.svg","material-shield-half-full":"material/shield-half-full.svg","material-shield-half":"material/shield-half.svg","material-shield-home-outline":"material/shield-home-outline.svg","material-shield-home":"material/shield-home.svg","material-shield-key-outline":"material/shield-key-outline.svg","material-shield-key":"material/shield-key.svg","material-shield-link-variant-outline":"material/shield-link-variant-outline.svg","material-shield-link-variant":"material/shield-link-variant.svg","material-shield-lock-open-outline":"material/shield-lock-open-outline.svg","material-shield-lock-open":"material/shield-lock-open.svg","material-shield-lock-outline":"material/shield-lock-outline.svg","material-shield-lock":"material/shield-lock.svg","material-shield-moon-outline":"material/shield-moon-outline.svg","material-shield-moon":"material/shield-moon.svg","material-shield-off-outline":"material/shield-off-outline.svg","material-shield-off":"material/shield-off.svg","material-shield-outline":"material/shield-outline.svg","material-shield-plus-outline":"material/shield-plus-outline.svg","material-shield-plus":"material/shield-plus.svg","material-shield-refresh-outline":"material/shield-refresh-outline.svg","material-shield-refresh":"material/shield-refresh.svg","material-shield-remove-outline":"material/shield-remove-outline.svg","material-shield-remove":"material/shield-remove.svg","material-shield-search":"material/shield-search.svg","material-shield-star-outline":"material/shield-star-outline.svg","material-shield-star":"material/shield-star.svg","material-shield-sun-outline":"material/shield-sun-outline.svg","material-shield-sun":"material/shield-sun.svg","material-shield-sword-outline":"material/shield-sword-outline.svg","material-shield-sword":"material/shield-sword.svg","material-shield-sync-outline":"material/shield-sync-outline.svg","material-shield-sync":"material/shield-sync.svg","material-shield":"material/shield.svg","material-shimmer":"material/shimmer.svg","material-ship-wheel":"material/ship-wheel.svg","material-shipping-pallet":"material/shipping-pallet.svg","material-shoe-ballet":"material/shoe-ballet.svg","material-shoe-cleat":"material/shoe-cleat.svg","material-shoe-formal":"material/shoe-formal.svg","material-shoe-heel":"material/shoe-heel.svg","material-shoe-print":"material/shoe-print.svg","material-shoe-sneaker":"material/shoe-sneaker.svg","material-shopping-music":"material/shopping-music.svg","material-shopping-outline":"material/shopping-outline.svg","material-shopping-search-outline":"material/shopping-search-outline.svg","material-shopping-search":"material/shopping-search.svg","material-shopping":"material/shopping.svg","material-shore":"material/shore.svg","material-shovel-off":"material/shovel-off.svg","material-shovel":"material/shovel.svg","material-shower-head":"material/shower-head.svg","material-shower":"material/shower.svg","material-shredder":"material/shredder.svg","material-shuffle-disabled":"material/shuffle-disabled.svg","material-shuffle-variant":"material/shuffle-variant.svg","material-shuffle":"material/shuffle.svg","material-shuriken":"material/shuriken.svg","material-sickle":"material/sickle.svg","material-sigma-lower":"material/sigma-lower.svg","material-sigma":"material/sigma.svg","material-sign-caution":"material/sign-caution.svg","material-sign-direction-minus":"material/sign-direction-minus.svg","material-sign-direction-plus":"material/sign-direction-plus.svg","material-sign-direction-remove":"material/sign-direction-remove.svg","material-sign-direction":"material/sign-direction.svg","material-sign-language-outline":"material/sign-language-outline.svg","material-sign-language":"material/sign-language.svg","material-sign-pole":"material/sign-pole.svg","material-sign-real-estate":"material/sign-real-estate.svg","material-sign-text":"material/sign-text.svg","material-sign-yield":"material/sign-yield.svg","material-signal-2g":"material/signal-2g.svg","material-signal-3g":"material/signal-3g.svg","material-signal-4g":"material/signal-4g.svg","material-signal-5g":"material/signal-5g.svg","material-signal-cellular-1":"material/signal-cellular-1.svg","material-signal-cellular-2":"material/signal-cellular-2.svg","material-signal-cellular-3":"material/signal-cellular-3.svg","material-signal-cellular-outline":"material/signal-cellular-outline.svg","material-signal-distance-variant":"material/signal-distance-variant.svg","material-signal-hspa-plus":"material/signal-hspa-plus.svg","material-signal-hspa":"material/signal-hspa.svg","material-signal-off":"material/signal-off.svg","material-signal-variant":"material/signal-variant.svg","material-signal":"material/signal.svg","material-signature-freehand":"material/signature-freehand.svg","material-signature-image":"material/signature-image.svg","material-signature-text":"material/signature-text.svg","material-signature":"material/signature.svg","material-silo-outline":"material/silo-outline.svg","material-silo":"material/silo.svg","material-silverware-clean":"material/silverware-clean.svg","material-silverware-fork-knife":"material/silverware-fork-knife.svg","material-silverware-fork":"material/silverware-fork.svg","material-silverware-spoon":"material/silverware-spoon.svg","material-silverware-variant":"material/silverware-variant.svg","material-silverware":"material/silverware.svg","material-sim-alert-outline":"material/sim-alert-outline.svg","material-sim-alert":"material/sim-alert.svg","material-sim-off-outline":"material/sim-off-outline.svg","material-sim-off":"material/sim-off.svg","material-sim-outline":"material/sim-outline.svg","material-sim":"material/sim.svg","material-simple-icons":"material/simple-icons.svg","material-sina-weibo":"material/sina-weibo.svg","material-sine-wave":"material/sine-wave.svg","material-sitemap-outline":"material/sitemap-outline.svg","material-sitemap":"material/sitemap.svg","material-size-l":"material/size-l.svg","material-size-m":"material/size-m.svg","material-size-s":"material/size-s.svg","material-size-xl":"material/size-xl.svg","material-size-xs":"material/size-xs.svg","material-size-xxl":"material/size-xxl.svg","material-size-xxs":"material/size-xxs.svg","material-size-xxxl":"material/size-xxxl.svg","material-skate-off":"material/skate-off.svg","material-skate":"material/skate.svg","material-skateboard":"material/skateboard.svg","material-skateboarding":"material/skateboarding.svg","material-skew-less":"material/skew-less.svg","material-skew-more":"material/skew-more.svg","material-ski-cross-country":"material/ski-cross-country.svg","material-ski-water":"material/ski-water.svg","material-ski":"material/ski.svg","material-skip-backward-outline":"material/skip-backward-outline.svg","material-skip-backward":"material/skip-backward.svg","material-skip-forward-outline":"material/skip-forward-outline.svg","material-skip-forward":"material/skip-forward.svg","material-skip-next-circle-outline":"material/skip-next-circle-outline.svg","material-skip-next-circle":"material/skip-next-circle.svg","material-skip-next-outline":"material/skip-next-outline.svg","material-skip-next":"material/skip-next.svg","material-skip-previous-circle-outline":"material/skip-previous-circle-outline.svg","material-skip-previous-circle":"material/skip-previous-circle.svg","material-skip-previous-outline":"material/skip-previous-outline.svg","material-skip-previous":"material/skip-previous.svg","material-skull-crossbones-outline":"material/skull-crossbones-outline.svg","material-skull-crossbones":"material/skull-crossbones.svg","material-skull-outline":"material/skull-outline.svg","material-skull-scan-outline":"material/skull-scan-outline.svg","material-skull-scan":"material/skull-scan.svg","material-skull":"material/skull.svg","material-skype-business":"material/skype-business.svg","material-skype":"material/skype.svg","material-slack":"material/slack.svg","material-slash-forward-box":"material/slash-forward-box.svg","material-slash-forward":"material/slash-forward.svg","material-sledding":"material/sledding.svg","material-sleep-off":"material/sleep-off.svg","material-sleep":"material/sleep.svg","material-slide":"material/slide.svg","material-slope-downhill":"material/slope-downhill.svg","material-slope-uphill":"material/slope-uphill.svg","material-slot-machine-outline":"material/slot-machine-outline.svg","material-slot-machine":"material/slot-machine.svg","material-smart-card-off-outline":"material/smart-card-off-outline.svg","material-smart-card-off":"material/smart-card-off.svg","material-smart-card-outline":"material/smart-card-outline.svg","material-smart-card-reader-outline":"material/smart-card-reader-outline.svg","material-smart-card-reader":"material/smart-card-reader.svg","material-smart-card":"material/smart-card.svg","material-smog":"material/smog.svg","material-smoke-detector-alert-outline":"material/smoke-detector-alert-outline.svg","material-smoke-detector-alert":"material/smoke-detector-alert.svg","material-smoke-detector-off-outline":"material/smoke-detector-off-outline.svg","material-smoke-detector-off":"material/smoke-detector-off.svg","material-smoke-detector-outline":"material/smoke-detector-outline.svg","material-smoke-detector-variant-alert":"material/smoke-detector-variant-alert.svg","material-smoke-detector-variant-off":"material/smoke-detector-variant-off.svg","material-smoke-detector-variant":"material/smoke-detector-variant.svg","material-smoke-detector":"material/smoke-detector.svg","material-smoke":"material/smoke.svg","material-smoking-off":"material/smoking-off.svg","material-smoking-pipe-off":"material/smoking-pipe-off.svg","material-smoking-pipe":"material/smoking-pipe.svg","material-smoking":"material/smoking.svg","material-snail":"material/snail.svg","material-snake":"material/snake.svg","material-snapchat":"material/snapchat.svg","material-snowboard":"material/snowboard.svg","material-snowflake-alert":"material/snowflake-alert.svg","material-snowflake-check":"material/snowflake-check.svg","material-snowflake-melt":"material/snowflake-melt.svg","material-snowflake-off":"material/snowflake-off.svg","material-snowflake-thermometer":"material/snowflake-thermometer.svg","material-snowflake-variant":"material/snowflake-variant.svg","material-snowflake":"material/snowflake.svg","material-snowman":"material/snowman.svg","material-snowmobile":"material/snowmobile.svg","material-snowshoeing":"material/snowshoeing.svg","material-soccer-field":"material/soccer-field.svg","material-soccer":"material/soccer.svg","material-social-distance-2-meters":"material/social-distance-2-meters.svg","material-social-distance-6-feet":"material/social-distance-6-feet.svg","material-sofa-outline":"material/sofa-outline.svg","material-sofa-single-outline":"material/sofa-single-outline.svg","material-sofa-single":"material/sofa-single.svg","material-sofa":"material/sofa.svg","material-solar-panel-large":"material/solar-panel-large.svg","material-solar-panel":"material/solar-panel.svg","material-solar-power-variant-outline":"material/solar-power-variant-outline.svg","material-solar-power-variant":"material/solar-power-variant.svg","material-solar-power":"material/solar-power.svg","material-soldering-iron":"material/soldering-iron.svg","material-solid":"material/solid.svg","material-sony-playstation":"material/sony-playstation.svg","material-sort-alphabetical-ascending-variant":"material/sort-alphabetical-ascending-variant.svg","material-sort-alphabetical-ascending":"material/sort-alphabetical-ascending.svg","material-sort-alphabetical-descending-variant":"material/sort-alphabetical-descending-variant.svg","material-sort-alphabetical-descending":"material/sort-alphabetical-descending.svg","material-sort-alphabetical-variant":"material/sort-alphabetical-variant.svg","material-sort-ascending":"material/sort-ascending.svg","material-sort-bool-ascending-variant":"material/sort-bool-ascending-variant.svg","material-sort-bool-ascending":"material/sort-bool-ascending.svg","material-sort-bool-descending-variant":"material/sort-bool-descending-variant.svg","material-sort-bool-descending":"material/sort-bool-descending.svg","material-sort-calendar-ascending":"material/sort-calendar-ascending.svg","material-sort-calendar-descending":"material/sort-calendar-descending.svg","material-sort-clock-ascending-outline":"material/sort-clock-ascending-outline.svg","material-sort-clock-ascending":"material/sort-clock-ascending.svg","material-sort-clock-descending-outline":"material/sort-clock-descending-outline.svg","material-sort-clock-descending":"material/sort-clock-descending.svg","material-sort-descending":"material/sort-descending.svg","material-sort-numeric-ascending-variant":"material/sort-numeric-ascending-variant.svg","material-sort-numeric-ascending":"material/sort-numeric-ascending.svg","material-sort-numeric-descending-variant":"material/sort-numeric-descending-variant.svg","material-sort-numeric-descending":"material/sort-numeric-descending.svg","material-sort-numeric-variant":"material/sort-numeric-variant.svg","material-sort-reverse-variant":"material/sort-reverse-variant.svg","material-sort-variant-lock-open":"material/sort-variant-lock-open.svg","material-sort-variant-lock":"material/sort-variant-lock.svg","material-sort-variant-off":"material/sort-variant-off.svg","material-sort-variant-remove":"material/sort-variant-remove.svg","material-sort-variant":"material/sort-variant.svg","material-sort":"material/sort.svg","material-soundbar":"material/soundbar.svg","material-soundcloud":"material/soundcloud.svg","material-source-branch-check":"material/source-branch-check.svg","material-source-branch-minus":"material/source-branch-minus.svg","material-source-branch-plus":"material/source-branch-plus.svg","material-source-branch-refresh":"material/source-branch-refresh.svg","material-source-branch-remove":"material/source-branch-remove.svg","material-source-branch-sync":"material/source-branch-sync.svg","material-source-branch":"material/source-branch.svg","material-source-commit-end-local":"material/source-commit-end-local.svg","material-source-commit-end":"material/source-commit-end.svg","material-source-commit-local":"material/source-commit-local.svg","material-source-commit-next-local":"material/source-commit-next-local.svg","material-source-commit-start-next-local":"material/source-commit-start-next-local.svg","material-source-commit-start":"material/source-commit-start.svg","material-source-commit":"material/source-commit.svg","material-source-fork":"material/source-fork.svg","material-source-merge":"material/source-merge.svg","material-source-pull":"material/source-pull.svg","material-source-repository-multiple":"material/source-repository-multiple.svg","material-source-repository":"material/source-repository.svg","material-soy-sauce-off":"material/soy-sauce-off.svg","material-soy-sauce":"material/soy-sauce.svg","material-spa-outline":"material/spa-outline.svg","material-spa":"material/spa.svg","material-space-invaders":"material/space-invaders.svg","material-space-station":"material/space-station.svg","material-spade":"material/spade.svg","material-speaker-bluetooth":"material/speaker-bluetooth.svg","material-speaker-message":"material/speaker-message.svg","material-speaker-multiple":"material/speaker-multiple.svg","material-speaker-off":"material/speaker-off.svg","material-speaker-pause":"material/speaker-pause.svg","material-speaker-play":"material/speaker-play.svg","material-speaker-stop":"material/speaker-stop.svg","material-speaker-wireless":"material/speaker-wireless.svg","material-speaker":"material/speaker.svg","material-spear":"material/spear.svg","material-speedometer-medium":"material/speedometer-medium.svg","material-speedometer-slow":"material/speedometer-slow.svg","material-speedometer":"material/speedometer.svg","material-spellcheck":"material/spellcheck.svg","material-sphere-off":"material/sphere-off.svg","material-sphere":"material/sphere.svg","material-spider-thread":"material/spider-thread.svg","material-spider-web":"material/spider-web.svg","material-spider":"material/spider.svg","material-spirit-level":"material/spirit-level.svg","material-spoon-sugar":"material/spoon-sugar.svg","material-spotify":"material/spotify.svg","material-spotlight-beam":"material/spotlight-beam.svg","material-spotlight":"material/spotlight.svg","material-spray-bottle":"material/spray-bottle.svg","material-spray":"material/spray.svg","material-sprinkler-fire":"material/sprinkler-fire.svg","material-sprinkler-variant":"material/sprinkler-variant.svg","material-sprinkler":"material/sprinkler.svg","material-sprout-outline":"material/sprout-outline.svg","material-sprout":"material/sprout.svg","material-square-circle":"material/square-circle.svg","material-square-edit-outline":"material/square-edit-outline.svg","material-square-medium-outline":"material/square-medium-outline.svg","material-square-medium":"material/square-medium.svg","material-square-off-outline":"material/square-off-outline.svg","material-square-off":"material/square-off.svg","material-square-opacity":"material/square-opacity.svg","material-square-outline":"material/square-outline.svg","material-square-root-box":"material/square-root-box.svg","material-square-root":"material/square-root.svg","material-square-rounded-badge-outline":"material/square-rounded-badge-outline.svg","material-square-rounded-badge":"material/square-rounded-badge.svg","material-square-rounded-outline":"material/square-rounded-outline.svg","material-square-rounded":"material/square-rounded.svg","material-square-small":"material/square-small.svg","material-square-wave":"material/square-wave.svg","material-square":"material/square.svg","material-squeegee":"material/squeegee.svg","material-ssh":"material/ssh.svg","material-stack-exchange":"material/stack-exchange.svg","material-stack-overflow":"material/stack-overflow.svg","material-stackpath":"material/stackpath.svg","material-stadium-outline":"material/stadium-outline.svg","material-stadium-variant":"material/stadium-variant.svg","material-stadium":"material/stadium.svg","material-stairs-box":"material/stairs-box.svg","material-stairs-down":"material/stairs-down.svg","material-stairs-up":"material/stairs-up.svg","material-stairs":"material/stairs.svg","material-stamper":"material/stamper.svg","material-standard-definition":"material/standard-definition.svg","material-star-box-multiple-outline":"material/star-box-multiple-outline.svg","material-star-box-multiple":"material/star-box-multiple.svg","material-star-box-outline":"material/star-box-outline.svg","material-star-box":"material/star-box.svg","material-star-check-outline":"material/star-check-outline.svg","material-star-check":"material/star-check.svg","material-star-circle-outline":"material/star-circle-outline.svg","material-star-circle":"material/star-circle.svg","material-star-cog-outline":"material/star-cog-outline.svg","material-star-cog":"material/star-cog.svg","material-star-crescent":"material/star-crescent.svg","material-star-david":"material/star-david.svg","material-star-face":"material/star-face.svg","material-star-four-points-outline":"material/star-four-points-outline.svg","material-star-four-points":"material/star-four-points.svg","material-star-half-full":"material/star-half-full.svg","material-star-half":"material/star-half.svg","material-star-minus-outline":"material/star-minus-outline.svg","material-star-minus":"material/star-minus.svg","material-star-off-outline":"material/star-off-outline.svg","material-star-off":"material/star-off.svg","material-star-outline":"material/star-outline.svg","material-star-plus-outline":"material/star-plus-outline.svg","material-star-plus":"material/star-plus.svg","material-star-remove-outline":"material/star-remove-outline.svg","material-star-remove":"material/star-remove.svg","material-star-settings-outline":"material/star-settings-outline.svg","material-star-settings":"material/star-settings.svg","material-star-shooting-outline":"material/star-shooting-outline.svg","material-star-shooting":"material/star-shooting.svg","material-star-three-points-outline":"material/star-three-points-outline.svg","material-star-three-points":"material/star-three-points.svg","material-star":"material/star.svg","material-state-machine":"material/state-machine.svg","material-steam":"material/steam.svg","material-steering-off":"material/steering-off.svg","material-steering":"material/steering.svg","material-step-backward-2":"material/step-backward-2.svg","material-step-backward":"material/step-backward.svg","material-step-forward-2":"material/step-forward-2.svg","material-step-forward":"material/step-forward.svg","material-stethoscope":"material/stethoscope.svg","material-sticker-alert-outline":"material/sticker-alert-outline.svg","material-sticker-alert":"material/sticker-alert.svg","material-sticker-check-outline":"material/sticker-check-outline.svg","material-sticker-check":"material/sticker-check.svg","material-sticker-circle-outline":"material/sticker-circle-outline.svg","material-sticker-emoji":"material/sticker-emoji.svg","material-sticker-minus-outline":"material/sticker-minus-outline.svg","material-sticker-minus":"material/sticker-minus.svg","material-sticker-outline":"material/sticker-outline.svg","material-sticker-plus-outline":"material/sticker-plus-outline.svg","material-sticker-plus":"material/sticker-plus.svg","material-sticker-remove-outline":"material/sticker-remove-outline.svg","material-sticker-remove":"material/sticker-remove.svg","material-sticker-text-outline":"material/sticker-text-outline.svg","material-sticker-text":"material/sticker-text.svg","material-sticker":"material/sticker.svg","material-stocking":"material/stocking.svg","material-stomach":"material/stomach.svg","material-stool-outline":"material/stool-outline.svg","material-stool":"material/stool.svg","material-stop-circle-outline":"material/stop-circle-outline.svg","material-stop-circle":"material/stop-circle.svg","material-stop":"material/stop.svg","material-storage-tank-outline":"material/storage-tank-outline.svg","material-storage-tank":"material/storage-tank.svg","material-store-24-hour":"material/store-24-hour.svg","material-store-alert-outline":"material/store-alert-outline.svg","material-store-alert":"material/store-alert.svg","material-store-check-outline":"material/store-check-outline.svg","material-store-check":"material/store-check.svg","material-store-clock-outline":"material/store-clock-outline.svg","material-store-clock":"material/store-clock.svg","material-store-cog-outline":"material/store-cog-outline.svg","material-store-cog":"material/store-cog.svg","material-store-edit-outline":"material/store-edit-outline.svg","material-store-edit":"material/store-edit.svg","material-store-marker-outline":"material/store-marker-outline.svg","material-store-marker":"material/store-marker.svg","material-store-minus-outline":"material/store-minus-outline.svg","material-store-minus":"material/store-minus.svg","material-store-off-outline":"material/store-off-outline.svg","material-store-off":"material/store-off.svg","material-store-outline":"material/store-outline.svg","material-store-plus-outline":"material/store-plus-outline.svg","material-store-plus":"material/store-plus.svg","material-store-remove-outline":"material/store-remove-outline.svg","material-store-remove":"material/store-remove.svg","material-store-search-outline":"material/store-search-outline.svg","material-store-search":"material/store-search.svg","material-store-settings-outline":"material/store-settings-outline.svg","material-store-settings":"material/store-settings.svg","material-store":"material/store.svg","material-storefront-check-outline":"material/storefront-check-outline.svg","material-storefront-check":"material/storefront-check.svg","material-storefront-edit-outline":"material/storefront-edit-outline.svg","material-storefront-edit":"material/storefront-edit.svg","material-storefront-minus-outline":"material/storefront-minus-outline.svg","material-storefront-minus":"material/storefront-minus.svg","material-storefront-outline":"material/storefront-outline.svg","material-storefront-plus-outline":"material/storefront-plus-outline.svg","material-storefront-plus":"material/storefront-plus.svg","material-storefront-remove-outline":"material/storefront-remove-outline.svg","material-storefront-remove":"material/storefront-remove.svg","material-storefront":"material/storefront.svg","material-stove":"material/stove.svg","material-strategy":"material/strategy.svg","material-stretch-to-page-outline":"material/stretch-to-page-outline.svg","material-stretch-to-page":"material/stretch-to-page.svg","material-string-lights-off":"material/string-lights-off.svg","material-string-lights":"material/string-lights.svg","material-subdirectory-arrow-left":"material/subdirectory-arrow-left.svg","material-subdirectory-arrow-right":"material/subdirectory-arrow-right.svg","material-submarine":"material/submarine.svg","material-subtitles-outline":"material/subtitles-outline.svg","material-subtitles":"material/subtitles.svg","material-subway-alert-variant":"material/subway-alert-variant.svg","material-subway-variant":"material/subway-variant.svg","material-subway":"material/subway.svg","material-summit":"material/summit.svg","material-sun-angle-outline":"material/sun-angle-outline.svg","material-sun-angle":"material/sun-angle.svg","material-sun-clock-outline":"material/sun-clock-outline.svg","material-sun-clock":"material/sun-clock.svg","material-sun-compass":"material/sun-compass.svg","material-sun-snowflake-variant":"material/sun-snowflake-variant.svg","material-sun-snowflake":"material/sun-snowflake.svg","material-sun-thermometer-outline":"material/sun-thermometer-outline.svg","material-sun-thermometer":"material/sun-thermometer.svg","material-sun-wireless-outline":"material/sun-wireless-outline.svg","material-sun-wireless":"material/sun-wireless.svg","material-sunglasses":"material/sunglasses.svg","material-surfing":"material/surfing.svg","material-surround-sound-2-0":"material/surround-sound-2-0.svg","material-surround-sound-2-1":"material/surround-sound-2-1.svg","material-surround-sound-3-1":"material/surround-sound-3-1.svg","material-surround-sound-5-1-2":"material/surround-sound-5-1-2.svg","material-surround-sound-5-1":"material/surround-sound-5-1.svg","material-surround-sound-7-1":"material/surround-sound-7-1.svg","material-surround-sound":"material/surround-sound.svg","material-svg":"material/svg.svg","material-swap-horizontal-bold":"material/swap-horizontal-bold.svg","material-swap-horizontal-circle-outline":"material/swap-horizontal-circle-outline.svg","material-swap-horizontal-circle":"material/swap-horizontal-circle.svg","material-swap-horizontal-variant":"material/swap-horizontal-variant.svg","material-swap-horizontal":"material/swap-horizontal.svg","material-swap-vertical-bold":"material/swap-vertical-bold.svg","material-swap-vertical-circle-outline":"material/swap-vertical-circle-outline.svg","material-swap-vertical-circle":"material/swap-vertical-circle.svg","material-swap-vertical-variant":"material/swap-vertical-variant.svg","material-swap-vertical":"material/swap-vertical.svg","material-swim":"material/swim.svg","material-switch":"material/switch.svg","material-sword-cross":"material/sword-cross.svg","material-sword":"material/sword.svg","material-syllabary-hangul":"material/syllabary-hangul.svg","material-syllabary-hiragana":"material/syllabary-hiragana.svg","material-syllabary-katakana-halfwidth":"material/syllabary-katakana-halfwidth.svg","material-syllabary-katakana":"material/syllabary-katakana.svg","material-symbol":"material/symbol.svg","material-symfony":"material/symfony.svg","material-synagogue-outline":"material/synagogue-outline.svg","material-synagogue":"material/synagogue.svg","material-sync-alert":"material/sync-alert.svg","material-sync-circle":"material/sync-circle.svg","material-sync-off":"material/sync-off.svg","material-sync":"material/sync.svg","material-tab-minus":"material/tab-minus.svg","material-tab-plus":"material/tab-plus.svg","material-tab-remove":"material/tab-remove.svg","material-tab-search":"material/tab-search.svg","material-tab-unselected":"material/tab-unselected.svg","material-tab":"material/tab.svg","material-table-account":"material/table-account.svg","material-table-alert":"material/table-alert.svg","material-table-arrow-down":"material/table-arrow-down.svg","material-table-arrow-left":"material/table-arrow-left.svg","material-table-arrow-right":"material/table-arrow-right.svg","material-table-arrow-up":"material/table-arrow-up.svg","material-table-border":"material/table-border.svg","material-table-cancel":"material/table-cancel.svg","material-table-chair":"material/table-chair.svg","material-table-check":"material/table-check.svg","material-table-clock":"material/table-clock.svg","material-table-cog":"material/table-cog.svg","material-table-column-plus-after":"material/table-column-plus-after.svg","material-table-column-plus-before":"material/table-column-plus-before.svg","material-table-column-remove":"material/table-column-remove.svg","material-table-column-width":"material/table-column-width.svg","material-table-column":"material/table-column.svg","material-table-edit":"material/table-edit.svg","material-table-eye-off":"material/table-eye-off.svg","material-table-eye":"material/table-eye.svg","material-table-filter":"material/table-filter.svg","material-table-furniture":"material/table-furniture.svg","material-table-headers-eye-off":"material/table-headers-eye-off.svg","material-table-headers-eye":"material/table-headers-eye.svg","material-table-heart":"material/table-heart.svg","material-table-key":"material/table-key.svg","material-table-large-plus":"material/table-large-plus.svg","material-table-large-remove":"material/table-large-remove.svg","material-table-large":"material/table-large.svg","material-table-lock":"material/table-lock.svg","material-table-merge-cells":"material/table-merge-cells.svg","material-table-minus":"material/table-minus.svg","material-table-multiple":"material/table-multiple.svg","material-table-network":"material/table-network.svg","material-table-of-contents":"material/table-of-contents.svg","material-table-off":"material/table-off.svg","material-table-picnic":"material/table-picnic.svg","material-table-pivot":"material/table-pivot.svg","material-table-plus":"material/table-plus.svg","material-table-question":"material/table-question.svg","material-table-refresh":"material/table-refresh.svg","material-table-remove":"material/table-remove.svg","material-table-row-height":"material/table-row-height.svg","material-table-row-plus-after":"material/table-row-plus-after.svg","material-table-row-plus-before":"material/table-row-plus-before.svg","material-table-row-remove":"material/table-row-remove.svg","material-table-row":"material/table-row.svg","material-table-search":"material/table-search.svg","material-table-settings":"material/table-settings.svg","material-table-split-cell":"material/table-split-cell.svg","material-table-star":"material/table-star.svg","material-table-sync":"material/table-sync.svg","material-table-tennis":"material/table-tennis.svg","material-table":"material/table.svg","material-tablet-cellphone":"material/tablet-cellphone.svg","material-tablet-dashboard":"material/tablet-dashboard.svg","material-tablet":"material/tablet.svg","material-taco":"material/taco.svg","material-tag-arrow-down-outline":"material/tag-arrow-down-outline.svg","material-tag-arrow-down":"material/tag-arrow-down.svg","material-tag-arrow-left-outline":"material/tag-arrow-left-outline.svg","material-tag-arrow-left":"material/tag-arrow-left.svg","material-tag-arrow-right-outline":"material/tag-arrow-right-outline.svg","material-tag-arrow-right":"material/tag-arrow-right.svg","material-tag-arrow-up-outline":"material/tag-arrow-up-outline.svg","material-tag-arrow-up":"material/tag-arrow-up.svg","material-tag-check-outline":"material/tag-check-outline.svg","material-tag-check":"material/tag-check.svg","material-tag-faces":"material/tag-faces.svg","material-tag-heart-outline":"material/tag-heart-outline.svg","material-tag-heart":"material/tag-heart.svg","material-tag-minus-outline":"material/tag-minus-outline.svg","material-tag-minus":"material/tag-minus.svg","material-tag-multiple-outline":"material/tag-multiple-outline.svg","material-tag-multiple":"material/tag-multiple.svg","material-tag-off-outline":"material/tag-off-outline.svg","material-tag-off":"material/tag-off.svg","material-tag-outline":"material/tag-outline.svg","material-tag-plus-outline":"material/tag-plus-outline.svg","material-tag-plus":"material/tag-plus.svg","material-tag-remove-outline":"material/tag-remove-outline.svg","material-tag-remove":"material/tag-remove.svg","material-tag-search-outline":"material/tag-search-outline.svg","material-tag-search":"material/tag-search.svg","material-tag-text-outline":"material/tag-text-outline.svg","material-tag-text":"material/tag-text.svg","material-tag":"material/tag.svg","material-tailwind":"material/tailwind.svg","material-tally-mark-1":"material/tally-mark-1.svg","material-tally-mark-2":"material/tally-mark-2.svg","material-tally-mark-3":"material/tally-mark-3.svg","material-tally-mark-4":"material/tally-mark-4.svg","material-tally-mark-5":"material/tally-mark-5.svg","material-tangram":"material/tangram.svg","material-tank":"material/tank.svg","material-tanker-truck":"material/tanker-truck.svg","material-tape-drive":"material/tape-drive.svg","material-tape-measure":"material/tape-measure.svg","material-target-account":"material/target-account.svg","material-target-variant":"material/target-variant.svg","material-target":"material/target.svg","material-taxi":"material/taxi.svg","material-tea-outline":"material/tea-outline.svg","material-tea":"material/tea.svg","material-teamviewer":"material/teamviewer.svg","material-teddy-bear":"material/teddy-bear.svg","material-telescope":"material/telescope.svg","material-television-ambient-light":"material/television-ambient-light.svg","material-television-box":"material/television-box.svg","material-television-classic-off":"material/television-classic-off.svg","material-television-classic":"material/television-classic.svg","material-television-guide":"material/television-guide.svg","material-television-off":"material/television-off.svg","material-television-pause":"material/television-pause.svg","material-television-play":"material/television-play.svg","material-television-shimmer":"material/television-shimmer.svg","material-television-speaker-off":"material/television-speaker-off.svg","material-television-speaker":"material/television-speaker.svg","material-television-stop":"material/television-stop.svg","material-television":"material/television.svg","material-temperature-celsius":"material/temperature-celsius.svg","material-temperature-fahrenheit":"material/temperature-fahrenheit.svg","material-temperature-kelvin":"material/temperature-kelvin.svg","material-temple-buddhist-outline":"material/temple-buddhist-outline.svg","material-temple-buddhist":"material/temple-buddhist.svg","material-temple-hindu-outline":"material/temple-hindu-outline.svg","material-temple-hindu":"material/temple-hindu.svg","material-tennis-ball":"material/tennis-ball.svg","material-tennis":"material/tennis.svg","material-tent":"material/tent.svg","material-terraform":"material/terraform.svg","material-terrain":"material/terrain.svg","material-test-tube-empty":"material/test-tube-empty.svg","material-test-tube-off":"material/test-tube-off.svg","material-test-tube":"material/test-tube.svg","material-text-account":"material/text-account.svg","material-text-box-check-outline":"material/text-box-check-outline.svg","material-text-box-check":"material/text-box-check.svg","material-text-box-edit-outline":"material/text-box-edit-outline.svg","material-text-box-edit":"material/text-box-edit.svg","material-text-box-minus-outline":"material/text-box-minus-outline.svg","material-text-box-minus":"material/text-box-minus.svg","material-text-box-multiple-outline":"material/text-box-multiple-outline.svg","material-text-box-multiple":"material/text-box-multiple.svg","material-text-box-outline":"material/text-box-outline.svg","material-text-box-plus-outline":"material/text-box-plus-outline.svg","material-text-box-plus":"material/text-box-plus.svg","material-text-box-remove-outline":"material/text-box-remove-outline.svg","material-text-box-remove":"material/text-box-remove.svg","material-text-box-search-outline":"material/text-box-search-outline.svg","material-text-box-search":"material/text-box-search.svg","material-text-box":"material/text-box.svg","material-text-long":"material/text-long.svg","material-text-recognition":"material/text-recognition.svg","material-text-search-variant":"material/text-search-variant.svg","material-text-search":"material/text-search.svg","material-text-shadow":"material/text-shadow.svg","material-text-short":"material/text-short.svg","material-text":"material/text.svg","material-texture-box":"material/texture-box.svg","material-texture":"material/texture.svg","material-theater":"material/theater.svg","material-theme-light-dark":"material/theme-light-dark.svg","material-thermometer-alert":"material/thermometer-alert.svg","material-thermometer-auto":"material/thermometer-auto.svg","material-thermometer-bluetooth":"material/thermometer-bluetooth.svg","material-thermometer-check":"material/thermometer-check.svg","material-thermometer-chevron-down":"material/thermometer-chevron-down.svg","material-thermometer-chevron-up":"material/thermometer-chevron-up.svg","material-thermometer-high":"material/thermometer-high.svg","material-thermometer-lines":"material/thermometer-lines.svg","material-thermometer-low":"material/thermometer-low.svg","material-thermometer-minus":"material/thermometer-minus.svg","material-thermometer-off":"material/thermometer-off.svg","material-thermometer-plus":"material/thermometer-plus.svg","material-thermometer-probe-off":"material/thermometer-probe-off.svg","material-thermometer-probe":"material/thermometer-probe.svg","material-thermometer-water":"material/thermometer-water.svg","material-thermometer":"material/thermometer.svg","material-thermostat-auto":"material/thermostat-auto.svg","material-thermostat-box-auto":"material/thermostat-box-auto.svg","material-thermostat-box":"material/thermostat-box.svg","material-thermostat":"material/thermostat.svg","material-thought-bubble-outline":"material/thought-bubble-outline.svg","material-thought-bubble":"material/thought-bubble.svg","material-thumb-down-outline":"material/thumb-down-outline.svg","material-thumb-down":"material/thumb-down.svg","material-thumb-up-outline":"material/thumb-up-outline.svg","material-thumb-up":"material/thumb-up.svg","material-thumbs-up-down-outline":"material/thumbs-up-down-outline.svg","material-thumbs-up-down":"material/thumbs-up-down.svg","material-ticket-account":"material/ticket-account.svg","material-ticket-confirmation-outline":"material/ticket-confirmation-outline.svg","material-ticket-confirmation":"material/ticket-confirmation.svg","material-ticket-outline":"material/ticket-outline.svg","material-ticket-percent-outline":"material/ticket-percent-outline.svg","material-ticket-percent":"material/ticket-percent.svg","material-ticket":"material/ticket.svg","material-tie":"material/tie.svg","material-tilde-off":"material/tilde-off.svg","material-tilde":"material/tilde.svg","material-timelapse":"material/timelapse.svg","material-timeline-alert-outline":"material/timeline-alert-outline.svg","material-timeline-alert":"material/timeline-alert.svg","material-timeline-check-outline":"material/timeline-check-outline.svg","material-timeline-check":"material/timeline-check.svg","material-timeline-clock-outline":"material/timeline-clock-outline.svg","material-timeline-clock":"material/timeline-clock.svg","material-timeline-minus-outline":"material/timeline-minus-outline.svg","material-timeline-minus":"material/timeline-minus.svg","material-timeline-outline":"material/timeline-outline.svg","material-timeline-plus-outline":"material/timeline-plus-outline.svg","material-timeline-plus":"material/timeline-plus.svg","material-timeline-question-outline":"material/timeline-question-outline.svg","material-timeline-question":"material/timeline-question.svg","material-timeline-remove-outline":"material/timeline-remove-outline.svg","material-timeline-remove":"material/timeline-remove.svg","material-timeline-text-outline":"material/timeline-text-outline.svg","material-timeline-text":"material/timeline-text.svg","material-timeline":"material/timeline.svg","material-timer-10":"material/timer-10.svg","material-timer-3":"material/timer-3.svg","material-timer-alert-outline":"material/timer-alert-outline.svg","material-timer-alert":"material/timer-alert.svg","material-timer-cancel-outline":"material/timer-cancel-outline.svg","material-timer-cancel":"material/timer-cancel.svg","material-timer-check-outline":"material/timer-check-outline.svg","material-timer-check":"material/timer-check.svg","material-timer-cog-outline":"material/timer-cog-outline.svg","material-timer-cog":"material/timer-cog.svg","material-timer-edit-outline":"material/timer-edit-outline.svg","material-timer-edit":"material/timer-edit.svg","material-timer-lock-open-outline":"material/timer-lock-open-outline.svg","material-timer-lock-open":"material/timer-lock-open.svg","material-timer-lock-outline":"material/timer-lock-outline.svg","material-timer-lock":"material/timer-lock.svg","material-timer-marker-outline":"material/timer-marker-outline.svg","material-timer-marker":"material/timer-marker.svg","material-timer-minus-outline":"material/timer-minus-outline.svg","material-timer-minus":"material/timer-minus.svg","material-timer-music-outline":"material/timer-music-outline.svg","material-timer-music":"material/timer-music.svg","material-timer-off-outline":"material/timer-off-outline.svg","material-timer-off":"material/timer-off.svg","material-timer-outline":"material/timer-outline.svg","material-timer-pause-outline":"material/timer-pause-outline.svg","material-timer-pause":"material/timer-pause.svg","material-timer-play-outline":"material/timer-play-outline.svg","material-timer-play":"material/timer-play.svg","material-timer-plus-outline":"material/timer-plus-outline.svg","material-timer-plus":"material/timer-plus.svg","material-timer-refresh-outline":"material/timer-refresh-outline.svg","material-timer-refresh":"material/timer-refresh.svg","material-timer-remove-outline":"material/timer-remove-outline.svg","material-timer-remove":"material/timer-remove.svg","material-timer-sand-complete":"material/timer-sand-complete.svg","material-timer-sand-empty":"material/timer-sand-empty.svg","material-timer-sand-full":"material/timer-sand-full.svg","material-timer-sand-paused":"material/timer-sand-paused.svg","material-timer-sand":"material/timer-sand.svg","material-timer-settings-outline":"material/timer-settings-outline.svg","material-timer-settings":"material/timer-settings.svg","material-timer-star-outline":"material/timer-star-outline.svg","material-timer-star":"material/timer-star.svg","material-timer-stop-outline":"material/timer-stop-outline.svg","material-timer-stop":"material/timer-stop.svg","material-timer-sync-outline":"material/timer-sync-outline.svg","material-timer-sync":"material/timer-sync.svg","material-timer":"material/timer.svg","material-timetable":"material/timetable.svg","material-tire":"material/tire.svg","material-toaster-off":"material/toaster-off.svg","material-toaster-oven":"material/toaster-oven.svg","material-toaster":"material/toaster.svg","material-toggle-switch-off-outline":"material/toggle-switch-off-outline.svg","material-toggle-switch-off":"material/toggle-switch-off.svg","material-toggle-switch-outline":"material/toggle-switch-outline.svg","material-toggle-switch-variant-off":"material/toggle-switch-variant-off.svg","material-toggle-switch-variant":"material/toggle-switch-variant.svg","material-toggle-switch":"material/toggle-switch.svg","material-toilet":"material/toilet.svg","material-toolbox-outline":"material/toolbox-outline.svg","material-toolbox":"material/toolbox.svg","material-tools":"material/tools.svg","material-tooltip-account":"material/tooltip-account.svg","material-tooltip-cellphone":"material/tooltip-cellphone.svg","material-tooltip-check-outline":"material/tooltip-check-outline.svg","material-tooltip-check":"material/tooltip-check.svg","material-tooltip-edit-outline":"material/tooltip-edit-outline.svg","material-tooltip-edit":"material/tooltip-edit.svg","material-tooltip-image-outline":"material/tooltip-image-outline.svg","material-tooltip-image":"material/tooltip-image.svg","material-tooltip-minus-outline":"material/tooltip-minus-outline.svg","material-tooltip-minus":"material/tooltip-minus.svg","material-tooltip-outline":"material/tooltip-outline.svg","material-tooltip-plus-outline":"material/tooltip-plus-outline.svg","material-tooltip-plus":"material/tooltip-plus.svg","material-tooltip-remove-outline":"material/tooltip-remove-outline.svg","material-tooltip-remove":"material/tooltip-remove.svg","material-tooltip-text-outline":"material/tooltip-text-outline.svg","material-tooltip-text":"material/tooltip-text.svg","material-tooltip":"material/tooltip.svg","material-tooth-outline":"material/tooth-outline.svg","material-tooth":"material/tooth.svg","material-toothbrush-electric":"material/toothbrush-electric.svg","material-toothbrush-paste":"material/toothbrush-paste.svg","material-toothbrush":"material/toothbrush.svg","material-torch":"material/torch.svg","material-tortoise":"material/tortoise.svg","material-toslink":"material/toslink.svg","material-tournament":"material/tournament.svg","material-tow-truck":"material/tow-truck.svg","material-tower-beach":"material/tower-beach.svg","material-tower-fire":"material/tower-fire.svg","material-town-hall":"material/town-hall.svg","material-toy-brick-marker-outline":"material/toy-brick-marker-outline.svg","material-toy-brick-marker":"material/toy-brick-marker.svg","material-toy-brick-minus-outline":"material/toy-brick-minus-outline.svg","material-toy-brick-minus":"material/toy-brick-minus.svg","material-toy-brick-outline":"material/toy-brick-outline.svg","material-toy-brick-plus-outline":"material/toy-brick-plus-outline.svg","material-toy-brick-plus":"material/toy-brick-plus.svg","material-toy-brick-remove-outline":"material/toy-brick-remove-outline.svg","material-toy-brick-remove":"material/toy-brick-remove.svg","material-toy-brick-search-outline":"material/toy-brick-search-outline.svg","material-toy-brick-search":"material/toy-brick-search.svg","material-toy-brick":"material/toy-brick.svg","material-track-light-off":"material/track-light-off.svg","material-track-light":"material/track-light.svg","material-trackpad-lock":"material/trackpad-lock.svg","material-trackpad":"material/trackpad.svg","material-tractor-variant":"material/tractor-variant.svg","material-tractor":"material/tractor.svg","material-trademark":"material/trademark.svg","material-traffic-cone":"material/traffic-cone.svg","material-traffic-light-outline":"material/traffic-light-outline.svg","material-traffic-light":"material/traffic-light.svg","material-train-car-autorack":"material/train-car-autorack.svg","material-train-car-box-full":"material/train-car-box-full.svg","material-train-car-box-open":"material/train-car-box-open.svg","material-train-car-box":"material/train-car-box.svg","material-train-car-caboose":"material/train-car-caboose.svg","material-train-car-centerbeam-full":"material/train-car-centerbeam-full.svg","material-train-car-centerbeam":"material/train-car-centerbeam.svg","material-train-car-container":"material/train-car-container.svg","material-train-car-flatbed-car":"material/train-car-flatbed-car.svg","material-train-car-flatbed-tank":"material/train-car-flatbed-tank.svg","material-train-car-flatbed":"material/train-car-flatbed.svg","material-train-car-gondola-full":"material/train-car-gondola-full.svg","material-train-car-gondola":"material/train-car-gondola.svg","material-train-car-hopper-covered":"material/train-car-hopper-covered.svg","material-train-car-hopper-full":"material/train-car-hopper-full.svg","material-train-car-hopper":"material/train-car-hopper.svg","material-train-car-intermodal":"material/train-car-intermodal.svg","material-train-car-passenger-door-open":"material/train-car-passenger-door-open.svg","material-train-car-passenger-door":"material/train-car-passenger-door.svg","material-train-car-passenger-variant":"material/train-car-passenger-variant.svg","material-train-car-passenger":"material/train-car-passenger.svg","material-train-car-tank":"material/train-car-tank.svg","material-train-car":"material/train-car.svg","material-train-variant":"material/train-variant.svg","material-train":"material/train.svg","material-tram-side":"material/tram-side.svg","material-tram":"material/tram.svg","material-transcribe-close":"material/transcribe-close.svg","material-transcribe":"material/transcribe.svg","material-transfer-down":"material/transfer-down.svg","material-transfer-left":"material/transfer-left.svg","material-transfer-right":"material/transfer-right.svg","material-transfer-up":"material/transfer-up.svg","material-transfer":"material/transfer.svg","material-transit-connection-horizontal":"material/transit-connection-horizontal.svg","material-transit-connection-variant":"material/transit-connection-variant.svg","material-transit-connection":"material/transit-connection.svg","material-transit-detour":"material/transit-detour.svg","material-transit-skip":"material/transit-skip.svg","material-transit-transfer":"material/transit-transfer.svg","material-transition-masked":"material/transition-masked.svg","material-transition":"material/transition.svg","material-translate-off":"material/translate-off.svg","material-translate-variant":"material/translate-variant.svg","material-translate":"material/translate.svg","material-transmission-tower-export":"material/transmission-tower-export.svg","material-transmission-tower-import":"material/transmission-tower-import.svg","material-transmission-tower-off":"material/transmission-tower-off.svg","material-transmission-tower":"material/transmission-tower.svg","material-trash-can-outline":"material/trash-can-outline.svg","material-trash-can":"material/trash-can.svg","material-tray-alert":"material/tray-alert.svg","material-tray-arrow-down":"material/tray-arrow-down.svg","material-tray-arrow-up":"material/tray-arrow-up.svg","material-tray-full":"material/tray-full.svg","material-tray-minus":"material/tray-minus.svg","material-tray-plus":"material/tray-plus.svg","material-tray-remove":"material/tray-remove.svg","material-tray":"material/tray.svg","material-treasure-chest":"material/treasure-chest.svg","material-tree-outline":"material/tree-outline.svg","material-tree":"material/tree.svg","material-trello":"material/trello.svg","material-trending-down":"material/trending-down.svg","material-trending-neutral":"material/trending-neutral.svg","material-trending-up":"material/trending-up.svg","material-triangle-outline":"material/triangle-outline.svg","material-triangle-small-down":"material/triangle-small-down.svg","material-triangle-small-up":"material/triangle-small-up.svg","material-triangle-wave":"material/triangle-wave.svg","material-triangle":"material/triangle.svg","material-triforce":"material/triforce.svg","material-trophy-award":"material/trophy-award.svg","material-trophy-broken":"material/trophy-broken.svg","material-trophy-outline":"material/trophy-outline.svg","material-trophy-variant-outline":"material/trophy-variant-outline.svg","material-trophy-variant":"material/trophy-variant.svg","material-trophy":"material/trophy.svg","material-truck-alert-outline":"material/truck-alert-outline.svg","material-truck-alert":"material/truck-alert.svg","material-truck-cargo-container":"material/truck-cargo-container.svg","material-truck-check-outline":"material/truck-check-outline.svg","material-truck-check":"material/truck-check.svg","material-truck-delivery-outline":"material/truck-delivery-outline.svg","material-truck-delivery":"material/truck-delivery.svg","material-truck-fast-outline":"material/truck-fast-outline.svg","material-truck-fast":"material/truck-fast.svg","material-truck-flatbed":"material/truck-flatbed.svg","material-truck-minus-outline":"material/truck-minus-outline.svg","material-truck-minus":"material/truck-minus.svg","material-truck-outline":"material/truck-outline.svg","material-truck-plus-outline":"material/truck-plus-outline.svg","material-truck-plus":"material/truck-plus.svg","material-truck-remove-outline":"material/truck-remove-outline.svg","material-truck-remove":"material/truck-remove.svg","material-truck-snowflake":"material/truck-snowflake.svg","material-truck-trailer":"material/truck-trailer.svg","material-truck":"material/truck.svg","material-trumpet":"material/trumpet.svg","material-tshirt-crew-outline":"material/tshirt-crew-outline.svg","material-tshirt-crew":"material/tshirt-crew.svg","material-tshirt-v-outline":"material/tshirt-v-outline.svg","material-tshirt-v":"material/tshirt-v.svg","material-tsunami":"material/tsunami.svg","material-tumble-dryer-alert":"material/tumble-dryer-alert.svg","material-tumble-dryer-off":"material/tumble-dryer-off.svg","material-tumble-dryer":"material/tumble-dryer.svg","material-tune-variant":"material/tune-variant.svg","material-tune-vertical-variant":"material/tune-vertical-variant.svg","material-tune-vertical":"material/tune-vertical.svg","material-tune":"material/tune.svg","material-tunnel-outline":"material/tunnel-outline.svg","material-tunnel":"material/tunnel.svg","material-turbine":"material/turbine.svg","material-turkey":"material/turkey.svg","material-turnstile-outline":"material/turnstile-outline.svg","material-turnstile":"material/turnstile.svg","material-turtle":"material/turtle.svg","material-twitch":"material/twitch.svg","material-twitter":"material/twitter.svg","material-two-factor-authentication":"material/two-factor-authentication.svg","material-typewriter":"material/typewriter.svg","material-ubisoft":"material/ubisoft.svg","material-ubuntu":"material/ubuntu.svg","material-ufo-outline":"material/ufo-outline.svg","material-ufo":"material/ufo.svg","material-ultra-high-definition":"material/ultra-high-definition.svg","material-umbraco":"material/umbraco.svg","material-umbrella-beach-outline":"material/umbrella-beach-outline.svg","material-umbrella-beach":"material/umbrella-beach.svg","material-umbrella-closed-outline":"material/umbrella-closed-outline.svg","material-umbrella-closed-variant":"material/umbrella-closed-variant.svg","material-umbrella-closed":"material/umbrella-closed.svg","material-umbrella-outline":"material/umbrella-outline.svg","material-umbrella":"material/umbrella.svg","material-undo-variant":"material/undo-variant.svg","material-undo":"material/undo.svg","material-unfold-less-horizontal":"material/unfold-less-horizontal.svg","material-unfold-less-vertical":"material/unfold-less-vertical.svg","material-unfold-more-horizontal":"material/unfold-more-horizontal.svg","material-unfold-more-vertical":"material/unfold-more-vertical.svg","material-ungroup":"material/ungroup.svg","material-unicode":"material/unicode.svg","material-unicorn-variant":"material/unicorn-variant.svg","material-unicorn":"material/unicorn.svg","material-unicycle":"material/unicycle.svg","material-unity":"material/unity.svg","material-unreal":"material/unreal.svg","material-update":"material/update.svg","material-upload-lock-outline":"material/upload-lock-outline.svg","material-upload-lock":"material/upload-lock.svg","material-upload-multiple":"material/upload-multiple.svg","material-upload-network-outline":"material/upload-network-outline.svg","material-upload-network":"material/upload-network.svg","material-upload-off-outline":"material/upload-off-outline.svg","material-upload-off":"material/upload-off.svg","material-upload-outline":"material/upload-outline.svg","material-upload":"material/upload.svg","material-usb-flash-drive-outline":"material/usb-flash-drive-outline.svg","material-usb-flash-drive":"material/usb-flash-drive.svg","material-usb-port":"material/usb-port.svg","material-usb":"material/usb.svg","material-vacuum-outline":"material/vacuum-outline.svg","material-vacuum":"material/vacuum.svg","material-valve-closed":"material/valve-closed.svg","material-valve-open":"material/valve-open.svg","material-valve":"material/valve.svg","material-van-passenger":"material/van-passenger.svg","material-van-utility":"material/van-utility.svg","material-vanish-quarter":"material/vanish-quarter.svg","material-vanish":"material/vanish.svg","material-vanity-light":"material/vanity-light.svg","material-variable-box":"material/variable-box.svg","material-variable":"material/variable.svg","material-vector-arrange-above":"material/vector-arrange-above.svg","material-vector-arrange-below":"material/vector-arrange-below.svg","material-vector-bezier":"material/vector-bezier.svg","material-vector-circle-variant":"material/vector-circle-variant.svg","material-vector-circle":"material/vector-circle.svg","material-vector-combine":"material/vector-combine.svg","material-vector-curve":"material/vector-curve.svg","material-vector-difference-ab":"material/vector-difference-ab.svg","material-vector-difference-ba":"material/vector-difference-ba.svg","material-vector-difference":"material/vector-difference.svg","material-vector-ellipse":"material/vector-ellipse.svg","material-vector-intersection":"material/vector-intersection.svg","material-vector-line":"material/vector-line.svg","material-vector-link":"material/vector-link.svg","material-vector-point-edit":"material/vector-point-edit.svg","material-vector-point-minus":"material/vector-point-minus.svg","material-vector-point-plus":"material/vector-point-plus.svg","material-vector-point-select":"material/vector-point-select.svg","material-vector-point":"material/vector-point.svg","material-vector-polygon-variant":"material/vector-polygon-variant.svg","material-vector-polygon":"material/vector-polygon.svg","material-vector-polyline-edit":"material/vector-polyline-edit.svg","material-vector-polyline-minus":"material/vector-polyline-minus.svg","material-vector-polyline-plus":"material/vector-polyline-plus.svg","material-vector-polyline-remove":"material/vector-polyline-remove.svg","material-vector-polyline":"material/vector-polyline.svg","material-vector-radius":"material/vector-radius.svg","material-vector-rectangle":"material/vector-rectangle.svg","material-vector-selection":"material/vector-selection.svg","material-vector-square-close":"material/vector-square-close.svg","material-vector-square-edit":"material/vector-square-edit.svg","material-vector-square-minus":"material/vector-square-minus.svg","material-vector-square-open":"material/vector-square-open.svg","material-vector-square-plus":"material/vector-square-plus.svg","material-vector-square-remove":"material/vector-square-remove.svg","material-vector-square":"material/vector-square.svg","material-vector-triangle":"material/vector-triangle.svg","material-vector-union":"material/vector-union.svg","material-vhs":"material/vhs.svg","material-vibrate-off":"material/vibrate-off.svg","material-vibrate":"material/vibrate.svg","material-video-2d":"material/video-2d.svg","material-video-3d-off":"material/video-3d-off.svg","material-video-3d-variant":"material/video-3d-variant.svg","material-video-3d":"material/video-3d.svg","material-video-4k-box":"material/video-4k-box.svg","material-video-account":"material/video-account.svg","material-video-box-off":"material/video-box-off.svg","material-video-box":"material/video-box.svg","material-video-check-outline":"material/video-check-outline.svg","material-video-check":"material/video-check.svg","material-video-high-definition":"material/video-high-definition.svg","material-video-image":"material/video-image.svg","material-video-input-antenna":"material/video-input-antenna.svg","material-video-input-component":"material/video-input-component.svg","material-video-input-hdmi":"material/video-input-hdmi.svg","material-video-input-scart":"material/video-input-scart.svg","material-video-input-svideo":"material/video-input-svideo.svg","material-video-marker-outline":"material/video-marker-outline.svg","material-video-marker":"material/video-marker.svg","material-video-minus-outline":"material/video-minus-outline.svg","material-video-minus":"material/video-minus.svg","material-video-off-outline":"material/video-off-outline.svg","material-video-off":"material/video-off.svg","material-video-outline":"material/video-outline.svg","material-video-plus-outline":"material/video-plus-outline.svg","material-video-plus":"material/video-plus.svg","material-video-stabilization":"material/video-stabilization.svg","material-video-switch-outline":"material/video-switch-outline.svg","material-video-switch":"material/video-switch.svg","material-video-vintage":"material/video-vintage.svg","material-video-wireless-outline":"material/video-wireless-outline.svg","material-video-wireless":"material/video-wireless.svg","material-video":"material/video.svg","material-view-agenda-outline":"material/view-agenda-outline.svg","material-view-agenda":"material/view-agenda.svg","material-view-array-outline":"material/view-array-outline.svg","material-view-array":"material/view-array.svg","material-view-carousel-outline":"material/view-carousel-outline.svg","material-view-carousel":"material/view-carousel.svg","material-view-column-outline":"material/view-column-outline.svg","material-view-column":"material/view-column.svg","material-view-comfy-outline":"material/view-comfy-outline.svg","material-view-comfy":"material/view-comfy.svg","material-view-compact-outline":"material/view-compact-outline.svg","material-view-compact":"material/view-compact.svg","material-view-dashboard-edit-outline":"material/view-dashboard-edit-outline.svg","material-view-dashboard-edit":"material/view-dashboard-edit.svg","material-view-dashboard-outline":"material/view-dashboard-outline.svg","material-view-dashboard-variant-outline":"material/view-dashboard-variant-outline.svg","material-view-dashboard-variant":"material/view-dashboard-variant.svg","material-view-dashboard":"material/view-dashboard.svg","material-view-day-outline":"material/view-day-outline.svg","material-view-day":"material/view-day.svg","material-view-gallery-outline":"material/view-gallery-outline.svg","material-view-gallery":"material/view-gallery.svg","material-view-grid-outline":"material/view-grid-outline.svg","material-view-grid-plus-outline":"material/view-grid-plus-outline.svg","material-view-grid-plus":"material/view-grid-plus.svg","material-view-grid":"material/view-grid.svg","material-view-headline":"material/view-headline.svg","material-view-list-outline":"material/view-list-outline.svg","material-view-list":"material/view-list.svg","material-view-module-outline":"material/view-module-outline.svg","material-view-module":"material/view-module.svg","material-view-parallel-outline":"material/view-parallel-outline.svg","material-view-parallel":"material/view-parallel.svg","material-view-quilt-outline":"material/view-quilt-outline.svg","material-view-quilt":"material/view-quilt.svg","material-view-sequential-outline":"material/view-sequential-outline.svg","material-view-sequential":"material/view-sequential.svg","material-view-split-horizontal":"material/view-split-horizontal.svg","material-view-split-vertical":"material/view-split-vertical.svg","material-view-stream-outline":"material/view-stream-outline.svg","material-view-stream":"material/view-stream.svg","material-view-week-outline":"material/view-week-outline.svg","material-view-week":"material/view-week.svg","material-vimeo":"material/vimeo.svg","material-violin":"material/violin.svg","material-virtual-reality":"material/virtual-reality.svg","material-virus-off-outline":"material/virus-off-outline.svg","material-virus-off":"material/virus-off.svg","material-virus-outline":"material/virus-outline.svg","material-virus":"material/virus.svg","material-vlc":"material/vlc.svg","material-voicemail":"material/voicemail.svg","material-volcano-outline":"material/volcano-outline.svg","material-volcano":"material/volcano.svg","material-volleyball":"material/volleyball.svg","material-volume-equal":"material/volume-equal.svg","material-volume-high":"material/volume-high.svg","material-volume-low":"material/volume-low.svg","material-volume-medium":"material/volume-medium.svg","material-volume-minus":"material/volume-minus.svg","material-volume-mute":"material/volume-mute.svg","material-volume-off":"material/volume-off.svg","material-volume-plus":"material/volume-plus.svg","material-volume-source":"material/volume-source.svg","material-volume-variant-off":"material/volume-variant-off.svg","material-volume-vibrate":"material/volume-vibrate.svg","material-vote-outline":"material/vote-outline.svg","material-vote":"material/vote.svg","material-vpn":"material/vpn.svg","material-vuejs":"material/vuejs.svg","material-vuetify":"material/vuetify.svg","material-walk":"material/walk.svg","material-wall-fire":"material/wall-fire.svg","material-wall-sconce-flat-outline":"material/wall-sconce-flat-outline.svg","material-wall-sconce-flat-variant-outline":"material/wall-sconce-flat-variant-outline.svg","material-wall-sconce-flat-variant":"material/wall-sconce-flat-variant.svg","material-wall-sconce-flat":"material/wall-sconce-flat.svg","material-wall-sconce-outline":"material/wall-sconce-outline.svg","material-wall-sconce-round-outline":"material/wall-sconce-round-outline.svg","material-wall-sconce-round-variant-outline":"material/wall-sconce-round-variant-outline.svg","material-wall-sconce-round-variant":"material/wall-sconce-round-variant.svg","material-wall-sconce-round":"material/wall-sconce-round.svg","material-wall-sconce":"material/wall-sconce.svg","material-wall":"material/wall.svg","material-wallet-giftcard":"material/wallet-giftcard.svg","material-wallet-membership":"material/wallet-membership.svg","material-wallet-outline":"material/wallet-outline.svg","material-wallet-plus-outline":"material/wallet-plus-outline.svg","material-wallet-plus":"material/wallet-plus.svg","material-wallet-travel":"material/wallet-travel.svg","material-wallet":"material/wallet.svg","material-wallpaper":"material/wallpaper.svg","material-wan":"material/wan.svg","material-wardrobe-outline":"material/wardrobe-outline.svg","material-wardrobe":"material/wardrobe.svg","material-warehouse":"material/warehouse.svg","material-washing-machine-alert":"material/washing-machine-alert.svg","material-washing-machine-off":"material/washing-machine-off.svg","material-washing-machine":"material/washing-machine.svg","material-watch-export-variant":"material/watch-export-variant.svg","material-watch-export":"material/watch-export.svg","material-watch-import-variant":"material/watch-import-variant.svg","material-watch-import":"material/watch-import.svg","material-watch-variant":"material/watch-variant.svg","material-watch-vibrate-off":"material/watch-vibrate-off.svg","material-watch-vibrate":"material/watch-vibrate.svg","material-watch":"material/watch.svg","material-water-alert-outline":"material/water-alert-outline.svg","material-water-alert":"material/water-alert.svg","material-water-boiler-alert":"material/water-boiler-alert.svg","material-water-boiler-auto":"material/water-boiler-auto.svg","material-water-boiler-off":"material/water-boiler-off.svg","material-water-boiler":"material/water-boiler.svg","material-water-check-outline":"material/water-check-outline.svg","material-water-check":"material/water-check.svg","material-water-circle":"material/water-circle.svg","material-water-minus-outline":"material/water-minus-outline.svg","material-water-minus":"material/water-minus.svg","material-water-off-outline":"material/water-off-outline.svg","material-water-off":"material/water-off.svg","material-water-opacity":"material/water-opacity.svg","material-water-outline":"material/water-outline.svg","material-water-percent-alert":"material/water-percent-alert.svg","material-water-percent":"material/water-percent.svg","material-water-plus-outline":"material/water-plus-outline.svg","material-water-plus":"material/water-plus.svg","material-water-polo":"material/water-polo.svg","material-water-pump-off":"material/water-pump-off.svg","material-water-pump":"material/water-pump.svg","material-water-remove-outline":"material/water-remove-outline.svg","material-water-remove":"material/water-remove.svg","material-water-sync":"material/water-sync.svg","material-water-thermometer-outline":"material/water-thermometer-outline.svg","material-water-thermometer":"material/water-thermometer.svg","material-water-well-outline":"material/water-well-outline.svg","material-water-well":"material/water-well.svg","material-water":"material/water.svg","material-waterfall":"material/waterfall.svg","material-watering-can-outline":"material/watering-can-outline.svg","material-watering-can":"material/watering-can.svg","material-watermark":"material/watermark.svg","material-wave":"material/wave.svg","material-waveform":"material/waveform.svg","material-waves-arrow-left":"material/waves-arrow-left.svg","material-waves-arrow-right":"material/waves-arrow-right.svg","material-waves-arrow-up":"material/waves-arrow-up.svg","material-waves":"material/waves.svg","material-waze":"material/waze.svg","material-weather-cloudy-alert":"material/weather-cloudy-alert.svg","material-weather-cloudy-arrow-right":"material/weather-cloudy-arrow-right.svg","material-weather-cloudy-clock":"material/weather-cloudy-clock.svg","material-weather-cloudy":"material/weather-cloudy.svg","material-weather-dust":"material/weather-dust.svg","material-weather-fog":"material/weather-fog.svg","material-weather-hail":"material/weather-hail.svg","material-weather-hazy":"material/weather-hazy.svg","material-weather-hurricane":"material/weather-hurricane.svg","material-weather-lightning-rainy":"material/weather-lightning-rainy.svg","material-weather-lightning":"material/weather-lightning.svg","material-weather-night-partly-cloudy":"material/weather-night-partly-cloudy.svg","material-weather-night":"material/weather-night.svg","material-weather-partly-cloudy":"material/weather-partly-cloudy.svg","material-weather-partly-lightning":"material/weather-partly-lightning.svg","material-weather-partly-rainy":"material/weather-partly-rainy.svg","material-weather-partly-snowy-rainy":"material/weather-partly-snowy-rainy.svg","material-weather-partly-snowy":"material/weather-partly-snowy.svg","material-weather-pouring":"material/weather-pouring.svg","material-weather-rainy":"material/weather-rainy.svg","material-weather-snowy-heavy":"material/weather-snowy-heavy.svg","material-weather-snowy-rainy":"material/weather-snowy-rainy.svg","material-weather-snowy":"material/weather-snowy.svg","material-weather-sunny-alert":"material/weather-sunny-alert.svg","material-weather-sunny-off":"material/weather-sunny-off.svg","material-weather-sunny":"material/weather-sunny.svg","material-weather-sunset-down":"material/weather-sunset-down.svg","material-weather-sunset-up":"material/weather-sunset-up.svg","material-weather-sunset":"material/weather-sunset.svg","material-weather-tornado":"material/weather-tornado.svg","material-weather-windy-variant":"material/weather-windy-variant.svg","material-weather-windy":"material/weather-windy.svg","material-web-box":"material/web-box.svg","material-web-cancel":"material/web-cancel.svg","material-web-check":"material/web-check.svg","material-web-clock":"material/web-clock.svg","material-web-minus":"material/web-minus.svg","material-web-off":"material/web-off.svg","material-web-plus":"material/web-plus.svg","material-web-refresh":"material/web-refresh.svg","material-web-remove":"material/web-remove.svg","material-web-sync":"material/web-sync.svg","material-web":"material/web.svg","material-webcam-off":"material/webcam-off.svg","material-webcam":"material/webcam.svg","material-webhook":"material/webhook.svg","material-webpack":"material/webpack.svg","material-webrtc":"material/webrtc.svg","material-wechat":"material/wechat.svg","material-weight-gram":"material/weight-gram.svg","material-weight-kilogram":"material/weight-kilogram.svg","material-weight-lifter":"material/weight-lifter.svg","material-weight-pound":"material/weight-pound.svg","material-weight":"material/weight.svg","material-whatsapp":"material/whatsapp.svg","material-wheel-barrow":"material/wheel-barrow.svg","material-wheelchair-accessibility":"material/wheelchair-accessibility.svg","material-wheelchair":"material/wheelchair.svg","material-whistle-outline":"material/whistle-outline.svg","material-whistle":"material/whistle.svg","material-white-balance-auto":"material/white-balance-auto.svg","material-white-balance-incandescent":"material/white-balance-incandescent.svg","material-white-balance-iridescent":"material/white-balance-iridescent.svg","material-white-balance-sunny":"material/white-balance-sunny.svg","material-widgets-outline":"material/widgets-outline.svg","material-widgets":"material/widgets.svg","material-wifi-alert":"material/wifi-alert.svg","material-wifi-arrow-down":"material/wifi-arrow-down.svg","material-wifi-arrow-left-right":"material/wifi-arrow-left-right.svg","material-wifi-arrow-left":"material/wifi-arrow-left.svg","material-wifi-arrow-right":"material/wifi-arrow-right.svg","material-wifi-arrow-up-down":"material/wifi-arrow-up-down.svg","material-wifi-arrow-up":"material/wifi-arrow-up.svg","material-wifi-cancel":"material/wifi-cancel.svg","material-wifi-check":"material/wifi-check.svg","material-wifi-cog":"material/wifi-cog.svg","material-wifi-lock-open":"material/wifi-lock-open.svg","material-wifi-lock":"material/wifi-lock.svg","material-wifi-marker":"material/wifi-marker.svg","material-wifi-minus":"material/wifi-minus.svg","material-wifi-off":"material/wifi-off.svg","material-wifi-plus":"material/wifi-plus.svg","material-wifi-refresh":"material/wifi-refresh.svg","material-wifi-remove":"material/wifi-remove.svg","material-wifi-settings":"material/wifi-settings.svg","material-wifi-star":"material/wifi-star.svg","material-wifi-strength-1-alert":"material/wifi-strength-1-alert.svg","material-wifi-strength-1-lock-open":"material/wifi-strength-1-lock-open.svg","material-wifi-strength-1-lock":"material/wifi-strength-1-lock.svg","material-wifi-strength-1":"material/wifi-strength-1.svg","material-wifi-strength-2-alert":"material/wifi-strength-2-alert.svg","material-wifi-strength-2-lock-open":"material/wifi-strength-2-lock-open.svg","material-wifi-strength-2-lock":"material/wifi-strength-2-lock.svg","material-wifi-strength-2":"material/wifi-strength-2.svg","material-wifi-strength-3-alert":"material/wifi-strength-3-alert.svg","material-wifi-strength-3-lock-open":"material/wifi-strength-3-lock-open.svg","material-wifi-strength-3-lock":"material/wifi-strength-3-lock.svg","material-wifi-strength-3":"material/wifi-strength-3.svg","material-wifi-strength-4-alert":"material/wifi-strength-4-alert.svg","material-wifi-strength-4-lock-open":"material/wifi-strength-4-lock-open.svg","material-wifi-strength-4-lock":"material/wifi-strength-4-lock.svg","material-wifi-strength-4":"material/wifi-strength-4.svg","material-wifi-strength-alert-outline":"material/wifi-strength-alert-outline.svg","material-wifi-strength-lock-open-outline":"material/wifi-strength-lock-open-outline.svg","material-wifi-strength-lock-outline":"material/wifi-strength-lock-outline.svg","material-wifi-strength-off-outline":"material/wifi-strength-off-outline.svg","material-wifi-strength-off":"material/wifi-strength-off.svg","material-wifi-strength-outline":"material/wifi-strength-outline.svg","material-wifi-sync":"material/wifi-sync.svg","material-wifi":"material/wifi.svg","material-wikipedia":"material/wikipedia.svg","material-wind-power-outline":"material/wind-power-outline.svg","material-wind-power":"material/wind-power.svg","material-wind-turbine-alert":"material/wind-turbine-alert.svg","material-wind-turbine-check":"material/wind-turbine-check.svg","material-wind-turbine":"material/wind-turbine.svg","material-window-close":"material/window-close.svg","material-window-closed-variant":"material/window-closed-variant.svg","material-window-closed":"material/window-closed.svg","material-window-maximize":"material/window-maximize.svg","material-window-minimize":"material/window-minimize.svg","material-window-open-variant":"material/window-open-variant.svg","material-window-open":"material/window-open.svg","material-window-restore":"material/window-restore.svg","material-window-shutter-alert":"material/window-shutter-alert.svg","material-window-shutter-auto":"material/window-shutter-auto.svg","material-window-shutter-cog":"material/window-shutter-cog.svg","material-window-shutter-open":"material/window-shutter-open.svg","material-window-shutter-settings":"material/window-shutter-settings.svg","material-window-shutter":"material/window-shutter.svg","material-windsock":"material/windsock.svg","material-wiper-wash-alert":"material/wiper-wash-alert.svg","material-wiper-wash":"material/wiper-wash.svg","material-wiper":"material/wiper.svg","material-wizard-hat":"material/wizard-hat.svg","material-wordpress":"material/wordpress.svg","material-wrap-disabled":"material/wrap-disabled.svg","material-wrap":"material/wrap.svg","material-wrench-check-outline":"material/wrench-check-outline.svg","material-wrench-check":"material/wrench-check.svg","material-wrench-clock-outline":"material/wrench-clock-outline.svg","material-wrench-clock":"material/wrench-clock.svg","material-wrench-cog-outline":"material/wrench-cog-outline.svg","material-wrench-cog":"material/wrench-cog.svg","material-wrench-outline":"material/wrench-outline.svg","material-wrench":"material/wrench.svg","material-xamarin":"material/xamarin.svg","material-xml":"material/xml.svg","material-xmpp":"material/xmpp.svg","material-yahoo":"material/yahoo.svg","material-yeast":"material/yeast.svg","material-yin-yang":"material/yin-yang.svg","material-yoga":"material/yoga.svg","material-youtube-gaming":"material/youtube-gaming.svg","material-youtube-studio":"material/youtube-studio.svg","material-youtube-subscription":"material/youtube-subscription.svg","material-youtube-tv":"material/youtube-tv.svg","material-youtube":"material/youtube.svg","material-yurt":"material/yurt.svg","material-z-wave":"material/z-wave.svg","material-zend":"material/zend.svg","material-zigbee":"material/zigbee.svg","material-zip-box-outline":"material/zip-box-outline.svg","material-zip-box":"material/zip-box.svg","material-zip-disk":"material/zip-disk.svg","material-zodiac-aquarius":"material/zodiac-aquarius.svg","material-zodiac-aries":"material/zodiac-aries.svg","material-zodiac-cancer":"material/zodiac-cancer.svg","material-zodiac-capricorn":"material/zodiac-capricorn.svg","material-zodiac-gemini":"material/zodiac-gemini.svg","material-zodiac-leo":"material/zodiac-leo.svg","material-zodiac-libra":"material/zodiac-libra.svg","material-zodiac-pisces":"material/zodiac-pisces.svg","material-zodiac-sagittarius":"material/zodiac-sagittarius.svg","material-zodiac-scorpio":"material/zodiac-scorpio.svg","material-zodiac-taurus":"material/zodiac-taurus.svg","material-zodiac-virgo":"material/zodiac-virgo.svg","octicons-accessibility-16":"octicons/accessibility-16.svg","octicons-alert-16":"octicons/alert-16.svg","octicons-alert-24":"octicons/alert-24.svg","octicons-alert-fill-12":"octicons/alert-fill-12.svg","octicons-apps-16":"octicons/apps-16.svg","octicons-archive-16":"octicons/archive-16.svg","octicons-archive-24":"octicons/archive-24.svg","octicons-arrow-both-16":"octicons/arrow-both-16.svg","octicons-arrow-both-24":"octicons/arrow-both-24.svg","octicons-arrow-down-16":"octicons/arrow-down-16.svg","octicons-arrow-down-24":"octicons/arrow-down-24.svg","octicons-arrow-down-left-24":"octicons/arrow-down-left-24.svg","octicons-arrow-down-right-24":"octicons/arrow-down-right-24.svg","octicons-arrow-left-16":"octicons/arrow-left-16.svg","octicons-arrow-left-24":"octicons/arrow-left-24.svg","octicons-arrow-right-16":"octicons/arrow-right-16.svg","octicons-arrow-right-24":"octicons/arrow-right-24.svg","octicons-arrow-switch-16":"octicons/arrow-switch-16.svg","octicons-arrow-switch-24":"octicons/arrow-switch-24.svg","octicons-arrow-up-16":"octicons/arrow-up-16.svg","octicons-arrow-up-24":"octicons/arrow-up-24.svg","octicons-arrow-up-left-24":"octicons/arrow-up-left-24.svg","octicons-arrow-up-right-24":"octicons/arrow-up-right-24.svg","octicons-beaker-16":"octicons/beaker-16.svg","octicons-beaker-24":"octicons/beaker-24.svg","octicons-bell-16":"octicons/bell-16.svg","octicons-bell-24":"octicons/bell-24.svg","octicons-bell-fill-16":"octicons/bell-fill-16.svg","octicons-bell-fill-24":"octicons/bell-fill-24.svg","octicons-bell-slash-16":"octicons/bell-slash-16.svg","octicons-bell-slash-24":"octicons/bell-slash-24.svg","octicons-blocked-16":"octicons/blocked-16.svg","octicons-blocked-24":"octicons/blocked-24.svg","octicons-bold-16":"octicons/bold-16.svg","octicons-bold-24":"octicons/bold-24.svg","octicons-book-16":"octicons/book-16.svg","octicons-book-24":"octicons/book-24.svg","octicons-bookmark-16":"octicons/bookmark-16.svg","octicons-bookmark-24":"octicons/bookmark-24.svg","octicons-bookmark-fill-24":"octicons/bookmark-fill-24.svg","octicons-bookmark-slash-16":"octicons/bookmark-slash-16.svg","octicons-bookmark-slash-24":"octicons/bookmark-slash-24.svg","octicons-bookmark-slash-fill-24":"octicons/bookmark-slash-fill-24.svg","octicons-briefcase-16":"octicons/briefcase-16.svg","octicons-briefcase-24":"octicons/briefcase-24.svg","octicons-broadcast-16":"octicons/broadcast-16.svg","octicons-broadcast-24":"octicons/broadcast-24.svg","octicons-browser-16":"octicons/browser-16.svg","octicons-browser-24":"octicons/browser-24.svg","octicons-bug-16":"octicons/bug-16.svg","octicons-bug-24":"octicons/bug-24.svg","octicons-calendar-16":"octicons/calendar-16.svg","octicons-calendar-24":"octicons/calendar-24.svg","octicons-check-16":"octicons/check-16.svg","octicons-check-24":"octicons/check-24.svg","octicons-check-circle-16":"octicons/check-circle-16.svg","octicons-check-circle-24":"octicons/check-circle-24.svg","octicons-check-circle-fill-12":"octicons/check-circle-fill-12.svg","octicons-check-circle-fill-16":"octicons/check-circle-fill-16.svg","octicons-check-circle-fill-24":"octicons/check-circle-fill-24.svg","octicons-checklist-16":"octicons/checklist-16.svg","octicons-checklist-24":"octicons/checklist-24.svg","octicons-chevron-down-16":"octicons/chevron-down-16.svg","octicons-chevron-down-24":"octicons/chevron-down-24.svg","octicons-chevron-left-16":"octicons/chevron-left-16.svg","octicons-chevron-left-24":"octicons/chevron-left-24.svg","octicons-chevron-right-16":"octicons/chevron-right-16.svg","octicons-chevron-right-24":"octicons/chevron-right-24.svg","octicons-chevron-up-16":"octicons/chevron-up-16.svg","octicons-chevron-up-24":"octicons/chevron-up-24.svg","octicons-circle-16":"octicons/circle-16.svg","octicons-circle-24":"octicons/circle-24.svg","octicons-circle-slash-16":"octicons/circle-slash-16.svg","octicons-circle-slash-24":"octicons/circle-slash-24.svg","octicons-clock-16":"octicons/clock-16.svg","octicons-clock-24":"octicons/clock-24.svg","octicons-cloud-16":"octicons/cloud-16.svg","octicons-cloud-24":"octicons/cloud-24.svg","octicons-cloud-offline-16":"octicons/cloud-offline-16.svg","octicons-cloud-offline-24":"octicons/cloud-offline-24.svg","octicons-code-16":"octicons/code-16.svg","octicons-code-24":"octicons/code-24.svg","octicons-code-of-conduct-16":"octicons/code-of-conduct-16.svg","octicons-code-of-conduct-24":"octicons/code-of-conduct-24.svg","octicons-code-review-16":"octicons/code-review-16.svg","octicons-code-review-24":"octicons/code-review-24.svg","octicons-code-square-16":"octicons/code-square-16.svg","octicons-code-square-24":"octicons/code-square-24.svg","octicons-codescan-16":"octicons/codescan-16.svg","octicons-codescan-24":"octicons/codescan-24.svg","octicons-codescan-checkmark-16":"octicons/codescan-checkmark-16.svg","octicons-codescan-checkmark-24":"octicons/codescan-checkmark-24.svg","octicons-codespaces-16":"octicons/codespaces-16.svg","octicons-codespaces-24":"octicons/codespaces-24.svg","octicons-columns-16":"octicons/columns-16.svg","octicons-columns-24":"octicons/columns-24.svg","octicons-comment-16":"octicons/comment-16.svg","octicons-comment-24":"octicons/comment-24.svg","octicons-comment-discussion-16":"octicons/comment-discussion-16.svg","octicons-comment-discussion-24":"octicons/comment-discussion-24.svg","octicons-commit-24":"octicons/commit-24.svg","octicons-container-16":"octicons/container-16.svg","octicons-container-24":"octicons/container-24.svg","octicons-copilot-16":"octicons/copilot-16.svg","octicons-copilot-24":"octicons/copilot-24.svg","octicons-copilot-48":"octicons/copilot-48.svg","octicons-copilot-96":"octicons/copilot-96.svg","octicons-copilot-error-16":"octicons/copilot-error-16.svg","octicons-copilot-warning-16":"octicons/copilot-warning-16.svg","octicons-copy-16":"octicons/copy-16.svg","octicons-copy-24":"octicons/copy-24.svg","octicons-cpu-16":"octicons/cpu-16.svg","octicons-cpu-24":"octicons/cpu-24.svg","octicons-credit-card-16":"octicons/credit-card-16.svg","octicons-credit-card-24":"octicons/credit-card-24.svg","octicons-cross-reference-16":"octicons/cross-reference-16.svg","octicons-cross-reference-24":"octicons/cross-reference-24.svg","octicons-dash-16":"octicons/dash-16.svg","octicons-dash-24":"octicons/dash-24.svg","octicons-database-16":"octicons/database-16.svg","octicons-database-24":"octicons/database-24.svg","octicons-dependabot-16":"octicons/dependabot-16.svg","octicons-dependabot-24":"octicons/dependabot-24.svg","octicons-desktop-download-16":"octicons/desktop-download-16.svg","octicons-desktop-download-24":"octicons/desktop-download-24.svg","octicons-device-camera-16":"octicons/device-camera-16.svg","octicons-device-camera-video-16":"octicons/device-camera-video-16.svg","octicons-device-camera-video-24":"octicons/device-camera-video-24.svg","octicons-device-desktop-16":"octicons/device-desktop-16.svg","octicons-device-desktop-24":"octicons/device-desktop-24.svg","octicons-device-mobile-16":"octicons/device-mobile-16.svg","octicons-device-mobile-24":"octicons/device-mobile-24.svg","octicons-diamond-16":"octicons/diamond-16.svg","octicons-diamond-24":"octicons/diamond-24.svg","octicons-diff-16":"octicons/diff-16.svg","octicons-diff-24":"octicons/diff-24.svg","octicons-diff-added-16":"octicons/diff-added-16.svg","octicons-diff-ignored-16":"octicons/diff-ignored-16.svg","octicons-diff-modified-16":"octicons/diff-modified-16.svg","octicons-diff-removed-16":"octicons/diff-removed-16.svg","octicons-diff-renamed-16":"octicons/diff-renamed-16.svg","octicons-dot-16":"octicons/dot-16.svg","octicons-dot-24":"octicons/dot-24.svg","octicons-dot-fill-16":"octicons/dot-fill-16.svg","octicons-dot-fill-24":"octicons/dot-fill-24.svg","octicons-download-16":"octicons/download-16.svg","octicons-download-24":"octicons/download-24.svg","octicons-duplicate-16":"octicons/duplicate-16.svg","octicons-duplicate-24":"octicons/duplicate-24.svg","octicons-ellipsis-16":"octicons/ellipsis-16.svg","octicons-eye-16":"octicons/eye-16.svg","octicons-eye-24":"octicons/eye-24.svg","octicons-eye-closed-16":"octicons/eye-closed-16.svg","octicons-eye-closed-24":"octicons/eye-closed-24.svg","octicons-feed-discussion-16":"octicons/feed-discussion-16.svg","octicons-feed-forked-16":"octicons/feed-forked-16.svg","octicons-feed-heart-16":"octicons/feed-heart-16.svg","octicons-feed-merged-16":"octicons/feed-merged-16.svg","octicons-feed-person-16":"octicons/feed-person-16.svg","octicons-feed-repo-16":"octicons/feed-repo-16.svg","octicons-feed-rocket-16":"octicons/feed-rocket-16.svg","octicons-feed-star-16":"octicons/feed-star-16.svg","octicons-feed-tag-16":"octicons/feed-tag-16.svg","octicons-feed-trophy-16":"octicons/feed-trophy-16.svg","octicons-file-16":"octicons/file-16.svg","octicons-file-24":"octicons/file-24.svg","octicons-file-added-16":"octicons/file-added-16.svg","octicons-file-badge-16":"octicons/file-badge-16.svg","octicons-file-binary-16":"octicons/file-binary-16.svg","octicons-file-binary-24":"octicons/file-binary-24.svg","octicons-file-code-16":"octicons/file-code-16.svg","octicons-file-code-24":"octicons/file-code-24.svg","octicons-file-diff-16":"octicons/file-diff-16.svg","octicons-file-diff-24":"octicons/file-diff-24.svg","octicons-file-directory-16":"octicons/file-directory-16.svg","octicons-file-directory-24":"octicons/file-directory-24.svg","octicons-file-directory-fill-16":"octicons/file-directory-fill-16.svg","octicons-file-directory-fill-24":"octicons/file-directory-fill-24.svg","octicons-file-directory-open-fill-16":"octicons/file-directory-open-fill-16.svg","octicons-file-media-24":"octicons/file-media-24.svg","octicons-file-moved-16":"octicons/file-moved-16.svg","octicons-file-removed-16":"octicons/file-removed-16.svg","octicons-file-submodule-16":"octicons/file-submodule-16.svg","octicons-file-submodule-24":"octicons/file-submodule-24.svg","octicons-file-symlink-file-16":"octicons/file-symlink-file-16.svg","octicons-file-symlink-file-24":"octicons/file-symlink-file-24.svg","octicons-file-zip-16":"octicons/file-zip-16.svg","octicons-file-zip-24":"octicons/file-zip-24.svg","octicons-filter-16":"octicons/filter-16.svg","octicons-filter-24":"octicons/filter-24.svg","octicons-flame-16":"octicons/flame-16.svg","octicons-flame-24":"octicons/flame-24.svg","octicons-fold-16":"octicons/fold-16.svg","octicons-fold-24":"octicons/fold-24.svg","octicons-fold-down-16":"octicons/fold-down-16.svg","octicons-fold-down-24":"octicons/fold-down-24.svg","octicons-fold-up-16":"octicons/fold-up-16.svg","octicons-fold-up-24":"octicons/fold-up-24.svg","octicons-gear-16":"octicons/gear-16.svg","octicons-gear-24":"octicons/gear-24.svg","octicons-gift-16":"octicons/gift-16.svg","octicons-gift-24":"octicons/gift-24.svg","octicons-git-branch-16":"octicons/git-branch-16.svg","octicons-git-branch-24":"octicons/git-branch-24.svg","octicons-git-commit-16":"octicons/git-commit-16.svg","octicons-git-commit-24":"octicons/git-commit-24.svg","octicons-git-compare-16":"octicons/git-compare-16.svg","octicons-git-compare-24":"octicons/git-compare-24.svg","octicons-git-merge-16":"octicons/git-merge-16.svg","octicons-git-merge-24":"octicons/git-merge-24.svg","octicons-git-pull-request-16":"octicons/git-pull-request-16.svg","octicons-git-pull-request-24":"octicons/git-pull-request-24.svg","octicons-git-pull-request-closed-16":"octicons/git-pull-request-closed-16.svg","octicons-git-pull-request-closed-24":"octicons/git-pull-request-closed-24.svg","octicons-git-pull-request-draft-16":"octicons/git-pull-request-draft-16.svg","octicons-git-pull-request-draft-24":"octicons/git-pull-request-draft-24.svg","octicons-globe-16":"octicons/globe-16.svg","octicons-globe-24":"octicons/globe-24.svg","octicons-grabber-16":"octicons/grabber-16.svg","octicons-grabber-24":"octicons/grabber-24.svg","octicons-graph-16":"octicons/graph-16.svg","octicons-graph-24":"octicons/graph-24.svg","octicons-hash-16":"octicons/hash-16.svg","octicons-hash-24":"octicons/hash-24.svg","octicons-heading-16":"octicons/heading-16.svg","octicons-heading-24":"octicons/heading-24.svg","octicons-heart-16":"octicons/heart-16.svg","octicons-heart-24":"octicons/heart-24.svg","octicons-heart-fill-16":"octicons/heart-fill-16.svg","octicons-heart-fill-24":"octicons/heart-fill-24.svg","octicons-history-16":"octicons/history-16.svg","octicons-history-24":"octicons/history-24.svg","octicons-home-16":"octicons/home-16.svg","octicons-home-24":"octicons/home-24.svg","octicons-home-fill-24":"octicons/home-fill-24.svg","octicons-horizontal-rule-16":"octicons/horizontal-rule-16.svg","octicons-horizontal-rule-24":"octicons/horizontal-rule-24.svg","octicons-hourglass-16":"octicons/hourglass-16.svg","octicons-hourglass-24":"octicons/hourglass-24.svg","octicons-hubot-16":"octicons/hubot-16.svg","octicons-hubot-24":"octicons/hubot-24.svg","octicons-id-badge-16":"octicons/id-badge-16.svg","octicons-image-16":"octicons/image-16.svg","octicons-image-24":"octicons/image-24.svg","octicons-inbox-16":"octicons/inbox-16.svg","octicons-inbox-24":"octicons/inbox-24.svg","octicons-infinity-16":"octicons/infinity-16.svg","octicons-infinity-24":"octicons/infinity-24.svg","octicons-info-16":"octicons/info-16.svg","octicons-info-24":"octicons/info-24.svg","octicons-issue-closed-16":"octicons/issue-closed-16.svg","octicons-issue-closed-24":"octicons/issue-closed-24.svg","octicons-issue-draft-16":"octicons/issue-draft-16.svg","octicons-issue-draft-24":"octicons/issue-draft-24.svg","octicons-issue-opened-16":"octicons/issue-opened-16.svg","octicons-issue-opened-24":"octicons/issue-opened-24.svg","octicons-issue-reopened-16":"octicons/issue-reopened-16.svg","octicons-issue-reopened-24":"octicons/issue-reopened-24.svg","octicons-italic-16":"octicons/italic-16.svg","octicons-italic-24":"octicons/italic-24.svg","octicons-iterations-16":"octicons/iterations-16.svg","octicons-iterations-24":"octicons/iterations-24.svg","octicons-kebab-horizontal-16":"octicons/kebab-horizontal-16.svg","octicons-kebab-horizontal-24":"octicons/kebab-horizontal-24.svg","octicons-key-16":"octicons/key-16.svg","octicons-key-24":"octicons/key-24.svg","octicons-key-asterisk-16":"octicons/key-asterisk-16.svg","octicons-law-16":"octicons/law-16.svg","octicons-law-24":"octicons/law-24.svg","octicons-light-bulb-16":"octicons/light-bulb-16.svg","octicons-light-bulb-24":"octicons/light-bulb-24.svg","octicons-link-16":"octicons/link-16.svg","octicons-link-24":"octicons/link-24.svg","octicons-link-external-16":"octicons/link-external-16.svg","octicons-link-external-24":"octicons/link-external-24.svg","octicons-list-ordered-16":"octicons/list-ordered-16.svg","octicons-list-ordered-24":"octicons/list-ordered-24.svg","octicons-list-unordered-16":"octicons/list-unordered-16.svg","octicons-list-unordered-24":"octicons/list-unordered-24.svg","octicons-location-16":"octicons/location-16.svg","octicons-location-24":"octicons/location-24.svg","octicons-lock-16":"octicons/lock-16.svg","octicons-lock-24":"octicons/lock-24.svg","octicons-log-16":"octicons/log-16.svg","octicons-logo-gist-16":"octicons/logo-gist-16.svg","octicons-logo-github-16":"octicons/logo-github-16.svg","octicons-mail-16":"octicons/mail-16.svg","octicons-mail-24":"octicons/mail-24.svg","octicons-mark-github-16":"octicons/mark-github-16.svg","octicons-markdown-16":"octicons/markdown-16.svg","octicons-megaphone-16":"octicons/megaphone-16.svg","octicons-megaphone-24":"octicons/megaphone-24.svg","octicons-mention-16":"octicons/mention-16.svg","octicons-mention-24":"octicons/mention-24.svg","octicons-meter-16":"octicons/meter-16.svg","octicons-milestone-16":"octicons/milestone-16.svg","octicons-milestone-24":"octicons/milestone-24.svg","octicons-mirror-16":"octicons/mirror-16.svg","octicons-mirror-24":"octicons/mirror-24.svg","octicons-moon-16":"octicons/moon-16.svg","octicons-moon-24":"octicons/moon-24.svg","octicons-mortar-board-16":"octicons/mortar-board-16.svg","octicons-mortar-board-24":"octicons/mortar-board-24.svg","octicons-multi-select-16":"octicons/multi-select-16.svg","octicons-multi-select-24":"octicons/multi-select-24.svg","octicons-mute-16":"octicons/mute-16.svg","octicons-mute-24":"octicons/mute-24.svg","octicons-no-entry-16":"octicons/no-entry-16.svg","octicons-no-entry-24":"octicons/no-entry-24.svg","octicons-no-entry-fill-12":"octicons/no-entry-fill-12.svg","octicons-north-star-16":"octicons/north-star-16.svg","octicons-north-star-24":"octicons/north-star-24.svg","octicons-note-16":"octicons/note-16.svg","octicons-note-24":"octicons/note-24.svg","octicons-number-16":"octicons/number-16.svg","octicons-number-24":"octicons/number-24.svg","octicons-organization-16":"octicons/organization-16.svg","octicons-organization-24":"octicons/organization-24.svg","octicons-package-16":"octicons/package-16.svg","octicons-package-24":"octicons/package-24.svg","octicons-package-dependencies-16":"octicons/package-dependencies-16.svg","octicons-package-dependencies-24":"octicons/package-dependencies-24.svg","octicons-package-dependents-16":"octicons/package-dependents-16.svg","octicons-package-dependents-24":"octicons/package-dependents-24.svg","octicons-paintbrush-16":"octicons/paintbrush-16.svg","octicons-paper-airplane-16":"octicons/paper-airplane-16.svg","octicons-paper-airplane-24":"octicons/paper-airplane-24.svg","octicons-paste-16":"octicons/paste-16.svg","octicons-paste-24":"octicons/paste-24.svg","octicons-pencil-16":"octicons/pencil-16.svg","octicons-pencil-24":"octicons/pencil-24.svg","octicons-people-16":"octicons/people-16.svg","octicons-people-24":"octicons/people-24.svg","octicons-person-16":"octicons/person-16.svg","octicons-person-24":"octicons/person-24.svg","octicons-person-add-16":"octicons/person-add-16.svg","octicons-person-add-24":"octicons/person-add-24.svg","octicons-person-fill-16":"octicons/person-fill-16.svg","octicons-person-fill-24":"octicons/person-fill-24.svg","octicons-pin-16":"octicons/pin-16.svg","octicons-pin-24":"octicons/pin-24.svg","octicons-play-16":"octicons/play-16.svg","octicons-play-24":"octicons/play-24.svg","octicons-plug-16":"octicons/plug-16.svg","octicons-plug-24":"octicons/plug-24.svg","octicons-plus-16":"octicons/plus-16.svg","octicons-plus-24":"octicons/plus-24.svg","octicons-plus-circle-16":"octicons/plus-circle-16.svg","octicons-plus-circle-24":"octicons/plus-circle-24.svg","octicons-project-16":"octicons/project-16.svg","octicons-project-24":"octicons/project-24.svg","octicons-pulse-16":"octicons/pulse-16.svg","octicons-pulse-24":"octicons/pulse-24.svg","octicons-question-16":"octicons/question-16.svg","octicons-question-24":"octicons/question-24.svg","octicons-quote-16":"octicons/quote-16.svg","octicons-quote-24":"octicons/quote-24.svg","octicons-reply-16":"octicons/reply-16.svg","octicons-reply-24":"octicons/reply-24.svg","octicons-repo-16":"octicons/repo-16.svg","octicons-repo-24":"octicons/repo-24.svg","octicons-repo-clone-16":"octicons/repo-clone-16.svg","octicons-repo-deleted-16":"octicons/repo-deleted-16.svg","octicons-repo-forked-16":"octicons/repo-forked-16.svg","octicons-repo-forked-24":"octicons/repo-forked-24.svg","octicons-repo-locked-16":"octicons/repo-locked-16.svg","octicons-repo-locked-24":"octicons/repo-locked-24.svg","octicons-repo-pull-16":"octicons/repo-pull-16.svg","octicons-repo-push-16":"octicons/repo-push-16.svg","octicons-repo-push-24":"octicons/repo-push-24.svg","octicons-repo-template-16":"octicons/repo-template-16.svg","octicons-repo-template-24":"octicons/repo-template-24.svg","octicons-report-16":"octicons/report-16.svg","octicons-report-24":"octicons/report-24.svg","octicons-rocket-16":"octicons/rocket-16.svg","octicons-rocket-24":"octicons/rocket-24.svg","octicons-rows-16":"octicons/rows-16.svg","octicons-rows-24":"octicons/rows-24.svg","octicons-rss-16":"octicons/rss-16.svg","octicons-rss-24":"octicons/rss-24.svg","octicons-ruby-16":"octicons/ruby-16.svg","octicons-ruby-24":"octicons/ruby-24.svg","octicons-screen-full-16":"octicons/screen-full-16.svg","octicons-screen-full-24":"octicons/screen-full-24.svg","octicons-screen-normal-16":"octicons/screen-normal-16.svg","octicons-screen-normal-24":"octicons/screen-normal-24.svg","octicons-search-16":"octicons/search-16.svg","octicons-search-24":"octicons/search-24.svg","octicons-server-16":"octicons/server-16.svg","octicons-server-24":"octicons/server-24.svg","octicons-share-16":"octicons/share-16.svg","octicons-share-24":"octicons/share-24.svg","octicons-share-android-16":"octicons/share-android-16.svg","octicons-share-android-24":"octicons/share-android-24.svg","octicons-shield-16":"octicons/shield-16.svg","octicons-shield-24":"octicons/shield-24.svg","octicons-shield-check-16":"octicons/shield-check-16.svg","octicons-shield-check-24":"octicons/shield-check-24.svg","octicons-shield-lock-16":"octicons/shield-lock-16.svg","octicons-shield-lock-24":"octicons/shield-lock-24.svg","octicons-shield-x-16":"octicons/shield-x-16.svg","octicons-shield-x-24":"octicons/shield-x-24.svg","octicons-sidebar-collapse-16":"octicons/sidebar-collapse-16.svg","octicons-sidebar-collapse-24":"octicons/sidebar-collapse-24.svg","octicons-sidebar-expand-16":"octicons/sidebar-expand-16.svg","octicons-sidebar-expand-24":"octicons/sidebar-expand-24.svg","octicons-sign-in-16":"octicons/sign-in-16.svg","octicons-sign-in-24":"octicons/sign-in-24.svg","octicons-sign-out-16":"octicons/sign-out-16.svg","octicons-sign-out-24":"octicons/sign-out-24.svg","octicons-single-select-16":"octicons/single-select-16.svg","octicons-single-select-24":"octicons/single-select-24.svg","octicons-skip-16":"octicons/skip-16.svg","octicons-skip-24":"octicons/skip-24.svg","octicons-sliders-16":"octicons/sliders-16.svg","octicons-smiley-16":"octicons/smiley-16.svg","octicons-smiley-24":"octicons/smiley-24.svg","octicons-sort-asc-16":"octicons/sort-asc-16.svg","octicons-sort-asc-24":"octicons/sort-asc-24.svg","octicons-sort-desc-16":"octicons/sort-desc-16.svg","octicons-sort-desc-24":"octicons/sort-desc-24.svg","octicons-square-16":"octicons/square-16.svg","octicons-square-24":"octicons/square-24.svg","octicons-square-fill-16":"octicons/square-fill-16.svg","octicons-square-fill-24":"octicons/square-fill-24.svg","octicons-squirrel-16":"octicons/squirrel-16.svg","octicons-squirrel-24":"octicons/squirrel-24.svg","octicons-stack-16":"octicons/stack-16.svg","octicons-stack-24":"octicons/stack-24.svg","octicons-star-16":"octicons/star-16.svg","octicons-star-24":"octicons/star-24.svg","octicons-star-fill-16":"octicons/star-fill-16.svg","octicons-star-fill-24":"octicons/star-fill-24.svg","octicons-stop-16":"octicons/stop-16.svg","octicons-stop-24":"octicons/stop-24.svg","octicons-stopwatch-16":"octicons/stopwatch-16.svg","octicons-stopwatch-24":"octicons/stopwatch-24.svg","octicons-strikethrough-16":"octicons/strikethrough-16.svg","octicons-strikethrough-24":"octicons/strikethrough-24.svg","octicons-sun-16":"octicons/sun-16.svg","octicons-sun-24":"octicons/sun-24.svg","octicons-sync-16":"octicons/sync-16.svg","octicons-sync-24":"octicons/sync-24.svg","octicons-tab-24":"octicons/tab-24.svg","octicons-tab-external-16":"octicons/tab-external-16.svg","octicons-table-16":"octicons/table-16.svg","octicons-table-24":"octicons/table-24.svg","octicons-tag-16":"octicons/tag-16.svg","octicons-tag-24":"octicons/tag-24.svg","octicons-tasklist-16":"octicons/tasklist-16.svg","octicons-tasklist-24":"octicons/tasklist-24.svg","octicons-telescope-16":"octicons/telescope-16.svg","octicons-telescope-24":"octicons/telescope-24.svg","octicons-telescope-fill-16":"octicons/telescope-fill-16.svg","octicons-telescope-fill-24":"octicons/telescope-fill-24.svg","octicons-terminal-16":"octicons/terminal-16.svg","octicons-terminal-24":"octicons/terminal-24.svg","octicons-three-bars-16":"octicons/three-bars-16.svg","octicons-thumbsdown-16":"octicons/thumbsdown-16.svg","octicons-thumbsdown-24":"octicons/thumbsdown-24.svg","octicons-thumbsup-16":"octicons/thumbsup-16.svg","octicons-thumbsup-24":"octicons/thumbsup-24.svg","octicons-tools-16":"octicons/tools-16.svg","octicons-tools-24":"octicons/tools-24.svg","octicons-trash-16":"octicons/trash-16.svg","octicons-trash-24":"octicons/trash-24.svg","octicons-triangle-down-16":"octicons/triangle-down-16.svg","octicons-triangle-down-24":"octicons/triangle-down-24.svg","octicons-triangle-left-16":"octicons/triangle-left-16.svg","octicons-triangle-left-24":"octicons/triangle-left-24.svg","octicons-triangle-right-16":"octicons/triangle-right-16.svg","octicons-triangle-right-24":"octicons/triangle-right-24.svg","octicons-triangle-up-16":"octicons/triangle-up-16.svg","octicons-triangle-up-24":"octicons/triangle-up-24.svg","octicons-trophy-16":"octicons/trophy-16.svg","octicons-trophy-24":"octicons/trophy-24.svg","octicons-typography-16":"octicons/typography-16.svg","octicons-typography-24":"octicons/typography-24.svg","octicons-unfold-16":"octicons/unfold-16.svg","octicons-unfold-24":"octicons/unfold-24.svg","octicons-unlock-16":"octicons/unlock-16.svg","octicons-unlock-24":"octicons/unlock-24.svg","octicons-unmute-16":"octicons/unmute-16.svg","octicons-unmute-24":"octicons/unmute-24.svg","octicons-unverified-16":"octicons/unverified-16.svg","octicons-unverified-24":"octicons/unverified-24.svg","octicons-upload-16":"octicons/upload-16.svg","octicons-upload-24":"octicons/upload-24.svg","octicons-verified-16":"octicons/verified-16.svg","octicons-verified-24":"octicons/verified-24.svg","octicons-versions-16":"octicons/versions-16.svg","octicons-versions-24":"octicons/versions-24.svg","octicons-video-16":"octicons/video-16.svg","octicons-video-24":"octicons/video-24.svg","octicons-webhook-16":"octicons/webhook-16.svg","octicons-workflow-16":"octicons/workflow-16.svg","octicons-workflow-24":"octicons/workflow-24.svg","octicons-x-16":"octicons/x-16.svg","octicons-x-24":"octicons/x-24.svg","octicons-x-circle-16":"octicons/x-circle-16.svg","octicons-x-circle-24":"octicons/x-circle-24.svg","octicons-x-circle-fill-12":"octicons/x-circle-fill-12.svg","octicons-x-circle-fill-16":"octicons/x-circle-fill-16.svg","octicons-x-circle-fill-24":"octicons/x-circle-fill-24.svg","octicons-zap-16":"octicons/zap-16.svg","octicons-zap-24":"octicons/zap-24.svg"}},"emojis":{"base":"https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/","data":{"100":"1f4af.svg","1234":"1f522.svg","8ball":"1f3b1.svg","a":"1f170.svg","ab":"1f18e.svg","abacus":"1f9ee.svg","abc":"1f524.svg","abcd":"1f521.svg","accept":"1f251.svg","accordion":"1fa97.svg","adhesive_bandage":"1fa79.svg","adult":"1f9d1.svg","adult_tone1":"1f9d1-1f3fb.svg","adult_tone2":"1f9d1-1f3fc.svg","adult_tone3":"1f9d1-1f3fd.svg","adult_tone4":"1f9d1-1f3fe.svg","adult_tone5":"1f9d1-1f3ff.svg","aerial_tramway":"1f6a1.svg","airplane":"2708.svg","airplane_arriving":"1f6ec.svg","airplane_departure":"1f6eb.svg","airplane_small":"1f6e9.svg","alarm_clock":"23f0.svg","alembic":"2697.svg","alien":"1f47d.svg","ambulance":"1f691.svg","amphora":"1f3fa.svg","anatomical_heart":"1fac0.svg","anchor":"2693.svg","angel":"1f47c.svg","angel_tone1":"1f47c-1f3fb.svg","angel_tone2":"1f47c-1f3fc.svg","angel_tone3":"1f47c-1f3fd.svg","angel_tone4":"1f47c-1f3fe.svg","angel_tone5":"1f47c-1f3ff.svg","anger":"1f4a2.svg","anger_right":"1f5ef.svg","angry":"1f620.svg","anguished":"1f627.svg","ant":"1f41c.svg","apple":"1f34e.svg","aquarius":"2652.svg","aries":"2648.svg","arrow_backward":"25c0.svg","arrow_double_down":"23ec.svg","arrow_double_up":"23eb.svg","arrow_down":"2b07.svg","arrow_down_small":"1f53d.svg","arrow_forward":"25b6.svg","arrow_heading_down":"2935.svg","arrow_heading_up":"2934.svg","arrow_left":"2b05.svg","arrow_lower_left":"2199.svg","arrow_lower_right":"2198.svg","arrow_right":"27a1.svg","arrow_right_hook":"21aa.svg","arrow_up":"2b06.svg","arrow_up_down":"2195.svg","arrow_up_small":"1f53c.svg","arrow_upper_left":"2196.svg","arrow_upper_right":"2197.svg","arrows_clockwise":"1f503.svg","arrows_counterclockwise":"1f504.svg","art":"1f3a8.svg","articulated_lorry":"1f69b.svg","artist":"1f9d1-200d-1f3a8.svg","artist_tone1":"1f9d1-1f3fb-200d-1f3a8.svg","artist_tone2":"1f9d1-1f3fc-200d-1f3a8.svg","artist_tone3":"1f9d1-1f3fd-200d-1f3a8.svg","artist_tone4":"1f9d1-1f3fe-200d-1f3a8.svg","artist_tone5":"1f9d1-1f3ff-200d-1f3a8.svg","asterisk":"2a-20e3.svg","astonished":"1f632.svg","astronaut":"1f9d1-200d-1f680.svg","astronaut_tone1":"1f9d1-1f3fb-200d-1f680.svg","astronaut_tone2":"1f9d1-1f3fc-200d-1f680.svg","astronaut_tone3":"1f9d1-1f3fd-200d-1f680.svg","astronaut_tone4":"1f9d1-1f3fe-200d-1f680.svg","astronaut_tone5":"1f9d1-1f3ff-200d-1f680.svg","athletic_shoe":"1f45f.svg","atm":"1f3e7.svg","atom":"269b.svg","auto_rickshaw":"1f6fa.svg","avocado":"1f951.svg","axe":"1fa93.svg","b":"1f171.svg","baby":"1f476.svg","baby_bottle":"1f37c.svg","baby_chick":"1f424.svg","baby_symbol":"1f6bc.svg","baby_tone1":"1f476-1f3fb.svg","baby_tone2":"1f476-1f3fc.svg","baby_tone3":"1f476-1f3fd.svg","baby_tone4":"1f476-1f3fe.svg","baby_tone5":"1f476-1f3ff.svg","back":"1f519.svg","bacon":"1f953.svg","badger":"1f9a1.svg","badminton":"1f3f8.svg","bagel":"1f96f.svg","baggage_claim":"1f6c4.svg","bald":"1f9b2.svg","ballet_shoes":"1fa70.svg","balloon":"1f388.svg","ballot_box":"1f5f3.svg","ballot_box_with_check":"2611.svg","bamboo":"1f38d.svg","banana":"1f34c.svg","bangbang":"203c.svg","banjo":"1fa95.svg","bank":"1f3e6.svg","bar_chart":"1f4ca.svg","barber":"1f488.svg","baseball":"26be.svg","basket":"1f9fa.svg","basketball":"1f3c0.svg","bat":"1f987.svg","bath":"1f6c0.svg","bath_tone1":"1f6c0-1f3fb.svg","bath_tone2":"1f6c0-1f3fc.svg","bath_tone3":"1f6c0-1f3fd.svg","bath_tone4":"1f6c0-1f3fe.svg","bath_tone5":"1f6c0-1f3ff.svg","bathtub":"1f6c1.svg","battery":"1f50b.svg","beach":"1f3d6.svg","beach_umbrella":"26f1.svg","bear":"1f43b.svg","bearded_person":"1f9d4.svg","bearded_person_tone1":"1f9d4-1f3fb.svg","bearded_person_tone2":"1f9d4-1f3fc.svg","bearded_person_tone3":"1f9d4-1f3fd.svg","bearded_person_tone4":"1f9d4-1f3fe.svg","bearded_person_tone5":"1f9d4-1f3ff.svg","beaver":"1f9ab.svg","bed":"1f6cf.svg","bee":"1f41d.svg","beer":"1f37a.svg","beers":"1f37b.svg","beetle":"1fab2.svg","beginner":"1f530.svg","bell":"1f514.svg","bell_pepper":"1fad1.svg","bellhop":"1f6ce.svg","bento":"1f371.svg","beverage_box":"1f9c3.svg","bike":"1f6b2.svg","bikini":"1f459.svg","billed_cap":"1f9e2.svg","biohazard":"2623.svg","bird":"1f426.svg","birthday":"1f382.svg","bison":"1f9ac.svg","black_cat":"1f408-200d-2b1b.svg","black_circle":"26ab.svg","black_heart":"1f5a4.svg","black_joker":"1f0cf.svg","black_large_square":"2b1b.svg","black_medium_small_square":"25fe.svg","black_medium_square":"25fc.svg","black_nib":"2712.svg","black_small_square":"25aa.svg","black_square_button":"1f532.svg","blond-haired_man":"1f471-200d-2642-fe0f.svg","blond-haired_man_tone1":"1f471-1f3fb-200d-2642-fe0f.svg","blond-haired_man_tone2":"1f471-1f3fc-200d-2642-fe0f.svg","blond-haired_man_tone3":"1f471-1f3fd-200d-2642-fe0f.svg","blond-haired_man_tone4":"1f471-1f3fe-200d-2642-fe0f.svg","blond-haired_man_tone5":"1f471-1f3ff-200d-2642-fe0f.svg","blond-haired_woman":"1f471-200d-2640-fe0f.svg","blond-haired_woman_tone1":"1f471-1f3fb-200d-2640-fe0f.svg","blond-haired_woman_tone2":"1f471-1f3fc-200d-2640-fe0f.svg","blond-haired_woman_tone3":"1f471-1f3fd-200d-2640-fe0f.svg","blond-haired_woman_tone4":"1f471-1f3fe-200d-2640-fe0f.svg","blond-haired_woman_tone5":"1f471-1f3ff-200d-2640-fe0f.svg","blond_haired_person":"1f471.svg","blond_haired_person_tone1":"1f471-1f3fb.svg","blond_haired_person_tone2":"1f471-1f3fc.svg","blond_haired_person_tone3":"1f471-1f3fd.svg","blond_haired_person_tone4":"1f471-1f3fe.svg","blond_haired_person_tone5":"1f471-1f3ff.svg","blossom":"1f33c.svg","blowfish":"1f421.svg","blue_book":"1f4d8.svg","blue_car":"1f699.svg","blue_circle":"1f535.svg","blue_heart":"1f499.svg","blue_square":"1f7e6.svg","blueberries":"1fad0.svg","blush":"1f60a.svg","boar":"1f417.svg","bomb":"1f4a3.svg","bone":"1f9b4.svg","book":"1f4d6.svg","bookmark":"1f516.svg","bookmark_tabs":"1f4d1.svg","books":"1f4da.svg","boom":"1f4a5.svg","boomerang":"1fa83.svg","boot":"1f462.svg","bouquet":"1f490.svg","bow_and_arrow":"1f3f9.svg","bowl_with_spoon":"1f963.svg","bowling":"1f3b3.svg","boxing_glove":"1f94a.svg","boy":"1f466.svg","boy_tone1":"1f466-1f3fb.svg","boy_tone2":"1f466-1f3fc.svg","boy_tone3":"1f466-1f3fd.svg","boy_tone4":"1f466-1f3fe.svg","boy_tone5":"1f466-1f3ff.svg","brain":"1f9e0.svg","bread":"1f35e.svg","breast_feeding":"1f931.svg","breast_feeding_tone1":"1f931-1f3fb.svg","breast_feeding_tone2":"1f931-1f3fc.svg","breast_feeding_tone3":"1f931-1f3fd.svg","breast_feeding_tone4":"1f931-1f3fe.svg","breast_feeding_tone5":"1f931-1f3ff.svg","bricks":"1f9f1.svg","bridge_at_night":"1f309.svg","briefcase":"1f4bc.svg","briefs":"1fa72.svg","broccoli":"1f966.svg","broken_heart":"1f494.svg","broom":"1f9f9.svg","brown_circle":"1f7e4.svg","brown_heart":"1f90e.svg","brown_square":"1f7eb.svg","bubble_tea":"1f9cb.svg","bucket":"1faa3.svg","bug":"1f41b.svg","bulb":"1f4a1.svg","bullettrain_front":"1f685.svg","bullettrain_side":"1f684.svg","burrito":"1f32f.svg","bus":"1f68c.svg","busstop":"1f68f.svg","bust_in_silhouette":"1f464.svg","busts_in_silhouette":"1f465.svg","butter":"1f9c8.svg","butterfly":"1f98b.svg","cactus":"1f335.svg","cake":"1f370.svg","calendar":"1f4c6.svg","calendar_spiral":"1f5d3.svg","call_me":"1f919.svg","call_me_tone1":"1f919-1f3fb.svg","call_me_tone2":"1f919-1f3fc.svg","call_me_tone3":"1f919-1f3fd.svg","call_me_tone4":"1f919-1f3fe.svg","call_me_tone5":"1f919-1f3ff.svg","calling":"1f4f2.svg","camel":"1f42b.svg","camera":"1f4f7.svg","camera_with_flash":"1f4f8.svg","camping":"1f3d5.svg","cancer":"264b.svg","candle":"1f56f.svg","candy":"1f36c.svg","canned_food":"1f96b.svg","canoe":"1f6f6.svg","capital_abcd":"1f520.svg","capricorn":"2651.svg","card_box":"1f5c3.svg","card_index":"1f4c7.svg","carousel_horse":"1f3a0.svg","carpentry_saw":"1fa9a.svg","carrot":"1f955.svg","cat2":"1f408.svg","cat":"1f431.svg","cd":"1f4bf.svg","chains":"26d3.svg","chair":"1fa91.svg","champagne":"1f37e.svg","champagne_glass":"1f942.svg","chart":"1f4b9.svg","chart_with_downwards_trend":"1f4c9.svg","chart_with_upwards_trend":"1f4c8.svg","checkered_flag":"1f3c1.svg","cheese":"1f9c0.svg","cherries":"1f352.svg","cherry_blossom":"1f338.svg","chess_pawn":"265f.svg","chestnut":"1f330.svg","chicken":"1f414.svg","child":"1f9d2.svg","child_tone1":"1f9d2-1f3fb.svg","child_tone2":"1f9d2-1f3fc.svg","child_tone3":"1f9d2-1f3fd.svg","child_tone4":"1f9d2-1f3fe.svg","child_tone5":"1f9d2-1f3ff.svg","children_crossing":"1f6b8.svg","chipmunk":"1f43f.svg","chocolate_bar":"1f36b.svg","chopsticks":"1f962.svg","christmas_tree":"1f384.svg","church":"26ea.svg","cinema":"1f3a6.svg","circus_tent":"1f3aa.svg","city_dusk":"1f306.svg","city_sunset":"1f307.svg","cityscape":"1f3d9.svg","cl":"1f191.svg","clap":"1f44f.svg","clap_tone1":"1f44f-1f3fb.svg","clap_tone2":"1f44f-1f3fc.svg","clap_tone3":"1f44f-1f3fd.svg","clap_tone4":"1f44f-1f3fe.svg","clap_tone5":"1f44f-1f3ff.svg","clapper":"1f3ac.svg","classical_building":"1f3db.svg","clipboard":"1f4cb.svg","clock1030":"1f565.svg","clock10":"1f559.svg","clock1130":"1f566.svg","clock11":"1f55a.svg","clock1230":"1f567.svg","clock12":"1f55b.svg","clock130":"1f55c.svg","clock1":"1f550.svg","clock230":"1f55d.svg","clock2":"1f551.svg","clock330":"1f55e.svg","clock3":"1f552.svg","clock430":"1f55f.svg","clock4":"1f553.svg","clock530":"1f560.svg","clock5":"1f554.svg","clock630":"1f561.svg","clock6":"1f555.svg","clock730":"1f562.svg","clock7":"1f556.svg","clock830":"1f563.svg","clock8":"1f557.svg","clock930":"1f564.svg","clock9":"1f558.svg","clock":"1f570.svg","closed_book":"1f4d5.svg","closed_lock_with_key":"1f510.svg","closed_umbrella":"1f302.svg","cloud":"2601.svg","cloud_lightning":"1f329.svg","cloud_rain":"1f327.svg","cloud_snow":"1f328.svg","cloud_tornado":"1f32a.svg","clown":"1f921.svg","clubs":"2663.svg","coat":"1f9e5.svg","cockroach":"1fab3.svg","cocktail":"1f378.svg","coconut":"1f965.svg","coffee":"2615.svg","coffin":"26b0.svg","coin":"1fa99.svg","cold_face":"1f976.svg","cold_sweat":"1f630.svg","comet":"2604.svg","compass":"1f9ed.svg","compression":"1f5dc.svg","computer":"1f4bb.svg","confetti_ball":"1f38a.svg","confounded":"1f616.svg","confused":"1f615.svg","congratulations":"3297.svg","construction":"1f6a7.svg","construction_site":"1f3d7.svg","construction_worker":"1f477.svg","construction_worker_tone1":"1f477-1f3fb.svg","construction_worker_tone2":"1f477-1f3fc.svg","construction_worker_tone3":"1f477-1f3fd.svg","construction_worker_tone4":"1f477-1f3fe.svg","construction_worker_tone5":"1f477-1f3ff.svg","control_knobs":"1f39b.svg","convenience_store":"1f3ea.svg","cook":"1f9d1-200d-1f373.svg","cook_tone1":"1f9d1-1f3fb-200d-1f373.svg","cook_tone2":"1f9d1-1f3fc-200d-1f373.svg","cook_tone3":"1f9d1-1f3fd-200d-1f373.svg","cook_tone4":"1f9d1-1f3fe-200d-1f373.svg","cook_tone5":"1f9d1-1f3ff-200d-1f373.svg","cookie":"1f36a.svg","cooking":"1f373.svg","cool":"1f192.svg","copyright":"a9.svg","corn":"1f33d.svg","couch":"1f6cb.svg","couple":"1f46b.svg","couple_mm":"1f468-200d-2764-fe0f-200d-1f468.svg","couple_with_heart":"1f491.svg","couple_with_heart_man_man_tone1":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_man_man_tone1_tone2":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_man_man_tone1_tone3":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_man_man_tone1_tone4":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_man_man_tone1_tone5":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_man_man_tone2":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_man_man_tone2_tone1":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_man_man_tone2_tone3":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_man_man_tone2_tone4":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_man_man_tone2_tone5":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_man_man_tone3":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_man_man_tone3_tone1":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_man_man_tone3_tone2":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_man_man_tone3_tone4":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_man_man_tone3_tone5":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_man_man_tone4":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_man_man_tone4_tone1":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_man_man_tone4_tone2":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_man_man_tone4_tone3":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_man_man_tone4_tone5":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_man_man_tone5":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_man_man_tone5_tone1":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_man_man_tone5_tone2":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_man_man_tone5_tone3":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_man_man_tone5_tone4":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_person_person_tone1_tone2":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc.svg","couple_with_heart_person_person_tone1_tone3":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd.svg","couple_with_heart_person_person_tone1_tone4":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe.svg","couple_with_heart_person_person_tone1_tone5":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff.svg","couple_with_heart_person_person_tone2_tone1":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb.svg","couple_with_heart_person_person_tone2_tone3":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd.svg","couple_with_heart_person_person_tone2_tone4":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe.svg","couple_with_heart_person_person_tone2_tone5":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff.svg","couple_with_heart_person_person_tone3_tone1":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb.svg","couple_with_heart_person_person_tone3_tone2":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc.svg","couple_with_heart_person_person_tone3_tone4":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe.svg","couple_with_heart_person_person_tone3_tone5":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff.svg","couple_with_heart_person_person_tone4_tone1":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb.svg","couple_with_heart_person_person_tone4_tone2":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc.svg","couple_with_heart_person_person_tone4_tone3":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd.svg","couple_with_heart_person_person_tone4_tone5":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff.svg","couple_with_heart_person_person_tone5_tone1":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb.svg","couple_with_heart_person_person_tone5_tone2":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc.svg","couple_with_heart_person_person_tone5_tone3":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd.svg","couple_with_heart_person_person_tone5_tone4":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe.svg","couple_with_heart_tone1":"1f491-1f3fb.svg","couple_with_heart_tone2":"1f491-1f3fc.svg","couple_with_heart_tone3":"1f491-1f3fd.svg","couple_with_heart_tone4":"1f491-1f3fe.svg","couple_with_heart_tone5":"1f491-1f3ff.svg","couple_with_heart_woman_man":"1f469-200d-2764-fe0f-200d-1f468.svg","couple_with_heart_woman_man_tone1":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_woman_man_tone1_tone2":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_woman_man_tone1_tone3":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_woman_man_tone1_tone4":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_woman_man_tone1_tone5":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_woman_man_tone2":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_woman_man_tone2_tone1":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_woman_man_tone2_tone3":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_woman_man_tone2_tone4":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_woman_man_tone2_tone5":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_woman_man_tone3":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_woman_man_tone3_tone1":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_woman_man_tone3_tone2":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_woman_man_tone3_tone4":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_woman_man_tone3_tone5":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_woman_man_tone4":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_woman_man_tone4_tone1":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_woman_man_tone4_tone2":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_woman_man_tone4_tone3":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_woman_man_tone4_tone5":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_woman_man_tone5":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff.svg","couple_with_heart_woman_man_tone5_tone1":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb.svg","couple_with_heart_woman_man_tone5_tone2":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc.svg","couple_with_heart_woman_man_tone5_tone3":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd.svg","couple_with_heart_woman_man_tone5_tone4":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe.svg","couple_with_heart_woman_woman_tone1":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb.svg","couple_with_heart_woman_woman_tone1_tone2":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc.svg","couple_with_heart_woman_woman_tone1_tone3":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd.svg","couple_with_heart_woman_woman_tone1_tone4":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe.svg","couple_with_heart_woman_woman_tone1_tone5":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff.svg","couple_with_heart_woman_woman_tone2":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc.svg","couple_with_heart_woman_woman_tone2_tone1":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb.svg","couple_with_heart_woman_woman_tone2_tone3":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd.svg","couple_with_heart_woman_woman_tone2_tone4":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe.svg","couple_with_heart_woman_woman_tone2_tone5":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff.svg","couple_with_heart_woman_woman_tone3":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd.svg","couple_with_heart_woman_woman_tone3_tone1":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb.svg","couple_with_heart_woman_woman_tone3_tone2":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc.svg","couple_with_heart_woman_woman_tone3_tone4":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe.svg","couple_with_heart_woman_woman_tone3_tone5":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff.svg","couple_with_heart_woman_woman_tone4":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe.svg","couple_with_heart_woman_woman_tone4_tone1":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb.svg","couple_with_heart_woman_woman_tone4_tone2":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc.svg","couple_with_heart_woman_woman_tone4_tone3":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd.svg","couple_with_heart_woman_woman_tone4_tone5":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff.svg","couple_with_heart_woman_woman_tone5":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff.svg","couple_with_heart_woman_woman_tone5_tone1":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb.svg","couple_with_heart_woman_woman_tone5_tone2":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc.svg","couple_with_heart_woman_woman_tone5_tone3":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd.svg","couple_with_heart_woman_woman_tone5_tone4":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe.svg","couple_ww":"1f469-200d-2764-fe0f-200d-1f469.svg","couplekiss":"1f48f.svg","cow2":"1f404.svg","cow":"1f42e.svg","cowboy":"1f920.svg","crab":"1f980.svg","crayon":"1f58d.svg","credit_card":"1f4b3.svg","crescent_moon":"1f319.svg","cricket":"1f997.svg","cricket_game":"1f3cf.svg","crocodile":"1f40a.svg","croissant":"1f950.svg","cross":"271d.svg","crossed_flags":"1f38c.svg","crossed_swords":"2694.svg","crown":"1f451.svg","cruise_ship":"1f6f3.svg","cry":"1f622.svg","crying_cat_face":"1f63f.svg","crystal_ball":"1f52e.svg","cucumber":"1f952.svg","cup_with_straw":"1f964.svg","cupcake":"1f9c1.svg","cupid":"1f498.svg","curling_stone":"1f94c.svg","curly_haired":"1f9b1.svg","curly_loop":"27b0.svg","currency_exchange":"1f4b1.svg","curry":"1f35b.svg","custard":"1f36e.svg","customs":"1f6c3.svg","cut_of_meat":"1f969.svg","cyclone":"1f300.svg","dagger":"1f5e1.svg","dancer":"1f483.svg","dancer_tone1":"1f483-1f3fb.svg","dancer_tone2":"1f483-1f3fc.svg","dancer_tone3":"1f483-1f3fd.svg","dancer_tone4":"1f483-1f3fe.svg","dancer_tone5":"1f483-1f3ff.svg","dango":"1f361.svg","dark_sunglasses":"1f576.svg","dart":"1f3af.svg","dash":"1f4a8.svg","date":"1f4c5.svg","deaf_man":"1f9cf-200d-2642-fe0f.svg","deaf_man_tone1":"1f9cf-1f3fb-200d-2642-fe0f.svg","deaf_man_tone2":"1f9cf-1f3fc-200d-2642-fe0f.svg","deaf_man_tone3":"1f9cf-1f3fd-200d-2642-fe0f.svg","deaf_man_tone4":"1f9cf-1f3fe-200d-2642-fe0f.svg","deaf_man_tone5":"1f9cf-1f3ff-200d-2642-fe0f.svg","deaf_person":"1f9cf.svg","deaf_person_tone1":"1f9cf-1f3fb.svg","deaf_person_tone2":"1f9cf-1f3fc.svg","deaf_person_tone3":"1f9cf-1f3fd.svg","deaf_person_tone4":"1f9cf-1f3fe.svg","deaf_person_tone5":"1f9cf-1f3ff.svg","deaf_woman":"1f9cf-200d-2640-fe0f.svg","deaf_woman_tone1":"1f9cf-1f3fb-200d-2640-fe0f.svg","deaf_woman_tone2":"1f9cf-1f3fc-200d-2640-fe0f.svg","deaf_woman_tone3":"1f9cf-1f3fd-200d-2640-fe0f.svg","deaf_woman_tone4":"1f9cf-1f3fe-200d-2640-fe0f.svg","deaf_woman_tone5":"1f9cf-1f3ff-200d-2640-fe0f.svg","deciduous_tree":"1f333.svg","deer":"1f98c.svg","department_store":"1f3ec.svg","desert":"1f3dc.svg","desktop":"1f5a5.svg","detective":"1f575.svg","detective_tone1":"1f575-1f3fb.svg","detective_tone2":"1f575-1f3fc.svg","detective_tone3":"1f575-1f3fd.svg","detective_tone4":"1f575-1f3fe.svg","detective_tone5":"1f575-1f3ff.svg","diamond_shape_with_a_dot_inside":"1f4a0.svg","diamonds":"2666.svg","disappointed":"1f61e.svg","disappointed_relieved":"1f625.svg","disguised_face":"1f978.svg","dividers":"1f5c2.svg","diving_mask":"1f93f.svg","diya_lamp":"1fa94.svg","dizzy":"1f4ab.svg","dizzy_face":"1f635.svg","dna":"1f9ec.svg","do_not_litter":"1f6af.svg","dodo":"1f9a4.svg","dog2":"1f415.svg","dog":"1f436.svg","dollar":"1f4b5.svg","dolls":"1f38e.svg","dolphin":"1f42c.svg","door":"1f6aa.svg","doughnut":"1f369.svg","dove":"1f54a.svg","dragon":"1f409.svg","dragon_face":"1f432.svg","dress":"1f457.svg","dromedary_camel":"1f42a.svg","drooling_face":"1f924.svg","drop_of_blood":"1fa78.svg","droplet":"1f4a7.svg","drum":"1f941.svg","duck":"1f986.svg","dumpling":"1f95f.svg","dvd":"1f4c0.svg","e-mail":"1f4e7.svg","eagle":"1f985.svg","ear":"1f442.svg","ear_of_rice":"1f33e.svg","ear_tone1":"1f442-1f3fb.svg","ear_tone2":"1f442-1f3fc.svg","ear_tone3":"1f442-1f3fd.svg","ear_tone4":"1f442-1f3fe.svg","ear_tone5":"1f442-1f3ff.svg","ear_with_hearing_aid":"1f9bb.svg","ear_with_hearing_aid_tone1":"1f9bb-1f3fb.svg","ear_with_hearing_aid_tone2":"1f9bb-1f3fc.svg","ear_with_hearing_aid_tone3":"1f9bb-1f3fd.svg","ear_with_hearing_aid_tone4":"1f9bb-1f3fe.svg","ear_with_hearing_aid_tone5":"1f9bb-1f3ff.svg","earth_africa":"1f30d.svg","earth_americas":"1f30e.svg","earth_asia":"1f30f.svg","egg":"1f95a.svg","eggplant":"1f346.svg","eight":"38-20e3.svg","eight_pointed_black_star":"2734.svg","eight_spoked_asterisk":"2733.svg","eject":"23cf.svg","electric_plug":"1f50c.svg","elephant":"1f418.svg","elevator":"1f6d7.svg","elf":"1f9dd.svg","elf_tone1":"1f9dd-1f3fb.svg","elf_tone2":"1f9dd-1f3fc.svg","elf_tone3":"1f9dd-1f3fd.svg","elf_tone4":"1f9dd-1f3fe.svg","elf_tone5":"1f9dd-1f3ff.svg","end":"1f51a.svg","england":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.svg","envelope":"2709.svg","envelope_with_arrow":"1f4e9.svg","euro":"1f4b6.svg","european_castle":"1f3f0.svg","european_post_office":"1f3e4.svg","evergreen_tree":"1f332.svg","exclamation":"2757.svg","exploding_head":"1f92f.svg","expressionless":"1f611.svg","eye":"1f441.svg","eye_in_speech_bubble":"1f441-200d-1f5e8.svg","eyeglasses":"1f453.svg","eyes":"1f440.svg","face_exhaling":"1f62e-200d-1f4a8.svg","face_in_clouds":"1f636-200d-1f32b-fe0f.svg","face_vomiting":"1f92e.svg","face_with_hand_over_mouth":"1f92d.svg","face_with_monocle":"1f9d0.svg","face_with_raised_eyebrow":"1f928.svg","face_with_spiral_eyes":"1f635-200d-1f4ab.svg","face_with_symbols_over_mouth":"1f92c.svg","factory":"1f3ed.svg","factory_worker":"1f9d1-200d-1f3ed.svg","factory_worker_tone1":"1f9d1-1f3fb-200d-1f3ed.svg","factory_worker_tone2":"1f9d1-1f3fc-200d-1f3ed.svg","factory_worker_tone3":"1f9d1-1f3fd-200d-1f3ed.svg","factory_worker_tone4":"1f9d1-1f3fe-200d-1f3ed.svg","factory_worker_tone5":"1f9d1-1f3ff-200d-1f3ed.svg","fairy":"1f9da.svg","fairy_tone1":"1f9da-1f3fb.svg","fairy_tone2":"1f9da-1f3fc.svg","fairy_tone3":"1f9da-1f3fd.svg","fairy_tone4":"1f9da-1f3fe.svg","fairy_tone5":"1f9da-1f3ff.svg","falafel":"1f9c6.svg","fallen_leaf":"1f342.svg","family":"1f46a.svg","family_man_boy":"1f468-200d-1f466.svg","family_man_boy_boy":"1f468-200d-1f466-200d-1f466.svg","family_man_girl":"1f468-200d-1f467.svg","family_man_girl_boy":"1f468-200d-1f467-200d-1f466.svg","family_man_girl_girl":"1f468-200d-1f467-200d-1f467.svg","family_man_woman_boy":"1f468-200d-1f469-200d-1f466.svg","family_mmb":"1f468-200d-1f468-200d-1f466.svg","family_mmbb":"1f468-200d-1f468-200d-1f466-200d-1f466.svg","family_mmg":"1f468-200d-1f468-200d-1f467.svg","family_mmgb":"1f468-200d-1f468-200d-1f467-200d-1f466.svg","family_mmgg":"1f468-200d-1f468-200d-1f467-200d-1f467.svg","family_mwbb":"1f468-200d-1f469-200d-1f466-200d-1f466.svg","family_mwg":"1f468-200d-1f469-200d-1f467.svg","family_mwgb":"1f468-200d-1f469-200d-1f467-200d-1f466.svg","family_mwgg":"1f468-200d-1f469-200d-1f467-200d-1f467.svg","family_woman_boy":"1f469-200d-1f466.svg","family_woman_boy_boy":"1f469-200d-1f466-200d-1f466.svg","family_woman_girl":"1f469-200d-1f467.svg","family_woman_girl_boy":"1f469-200d-1f467-200d-1f466.svg","family_woman_girl_girl":"1f469-200d-1f467-200d-1f467.svg","family_wwb":"1f469-200d-1f469-200d-1f466.svg","family_wwbb":"1f469-200d-1f469-200d-1f466-200d-1f466.svg","family_wwg":"1f469-200d-1f469-200d-1f467.svg","family_wwgb":"1f469-200d-1f469-200d-1f467-200d-1f466.svg","family_wwgg":"1f469-200d-1f469-200d-1f467-200d-1f467.svg","farmer":"1f9d1-200d-1f33e.svg","farmer_tone1":"1f9d1-1f3fb-200d-1f33e.svg","farmer_tone2":"1f9d1-1f3fc-200d-1f33e.svg","farmer_tone3":"1f9d1-1f3fd-200d-1f33e.svg","farmer_tone4":"1f9d1-1f3fe-200d-1f33e.svg","farmer_tone5":"1f9d1-1f3ff-200d-1f33e.svg","fast_forward":"23e9.svg","fax":"1f4e0.svg","fearful":"1f628.svg","feather":"1fab6.svg","feet":"1f43e.svg","female_sign":"2640.svg","ferris_wheel":"1f3a1.svg","ferry":"26f4.svg","field_hockey":"1f3d1.svg","file_cabinet":"1f5c4.svg","file_folder":"1f4c1.svg","film_frames":"1f39e.svg","fingers_crossed":"1f91e.svg","fingers_crossed_tone1":"1f91e-1f3fb.svg","fingers_crossed_tone2":"1f91e-1f3fc.svg","fingers_crossed_tone3":"1f91e-1f3fd.svg","fingers_crossed_tone4":"1f91e-1f3fe.svg","fingers_crossed_tone5":"1f91e-1f3ff.svg","fire":"1f525.svg","fire_engine":"1f692.svg","fire_extinguisher":"1f9ef.svg","firecracker":"1f9e8.svg","firefighter":"1f9d1-200d-1f692.svg","firefighter_tone1":"1f9d1-1f3fb-200d-1f692.svg","firefighter_tone2":"1f9d1-1f3fc-200d-1f692.svg","firefighter_tone3":"1f9d1-1f3fd-200d-1f692.svg","firefighter_tone4":"1f9d1-1f3fe-200d-1f692.svg","firefighter_tone5":"1f9d1-1f3ff-200d-1f692.svg","fireworks":"1f386.svg","first_place":"1f947.svg","first_quarter_moon":"1f313.svg","first_quarter_moon_with_face":"1f31b.svg","fish":"1f41f.svg","fish_cake":"1f365.svg","fishing_pole_and_fish":"1f3a3.svg","fist":"270a.svg","fist_tone1":"270a-1f3fb.svg","fist_tone2":"270a-1f3fc.svg","fist_tone3":"270a-1f3fd.svg","fist_tone4":"270a-1f3fe.svg","fist_tone5":"270a-1f3ff.svg","five":"35-20e3.svg","flag_ac":"1f1e6-1f1e8.svg","flag_ad":"1f1e6-1f1e9.svg","flag_ae":"1f1e6-1f1ea.svg","flag_af":"1f1e6-1f1eb.svg","flag_ag":"1f1e6-1f1ec.svg","flag_ai":"1f1e6-1f1ee.svg","flag_al":"1f1e6-1f1f1.svg","flag_am":"1f1e6-1f1f2.svg","flag_ao":"1f1e6-1f1f4.svg","flag_aq":"1f1e6-1f1f6.svg","flag_ar":"1f1e6-1f1f7.svg","flag_as":"1f1e6-1f1f8.svg","flag_at":"1f1e6-1f1f9.svg","flag_au":"1f1e6-1f1fa.svg","flag_aw":"1f1e6-1f1fc.svg","flag_ax":"1f1e6-1f1fd.svg","flag_az":"1f1e6-1f1ff.svg","flag_ba":"1f1e7-1f1e6.svg","flag_bb":"1f1e7-1f1e7.svg","flag_bd":"1f1e7-1f1e9.svg","flag_be":"1f1e7-1f1ea.svg","flag_bf":"1f1e7-1f1eb.svg","flag_bg":"1f1e7-1f1ec.svg","flag_bh":"1f1e7-1f1ed.svg","flag_bi":"1f1e7-1f1ee.svg","flag_bj":"1f1e7-1f1ef.svg","flag_bl":"1f1e7-1f1f1.svg","flag_black":"1f3f4.svg","flag_bm":"1f1e7-1f1f2.svg","flag_bn":"1f1e7-1f1f3.svg","flag_bo":"1f1e7-1f1f4.svg","flag_bq":"1f1e7-1f1f6.svg","flag_br":"1f1e7-1f1f7.svg","flag_bs":"1f1e7-1f1f8.svg","flag_bt":"1f1e7-1f1f9.svg","flag_bv":"1f1e7-1f1fb.svg","flag_bw":"1f1e7-1f1fc.svg","flag_by":"1f1e7-1f1fe.svg","flag_bz":"1f1e7-1f1ff.svg","flag_ca":"1f1e8-1f1e6.svg","flag_cc":"1f1e8-1f1e8.svg","flag_cd":"1f1e8-1f1e9.svg","flag_cf":"1f1e8-1f1eb.svg","flag_cg":"1f1e8-1f1ec.svg","flag_ch":"1f1e8-1f1ed.svg","flag_ci":"1f1e8-1f1ee.svg","flag_ck":"1f1e8-1f1f0.svg","flag_cl":"1f1e8-1f1f1.svg","flag_cm":"1f1e8-1f1f2.svg","flag_cn":"1f1e8-1f1f3.svg","flag_co":"1f1e8-1f1f4.svg","flag_cp":"1f1e8-1f1f5.svg","flag_cr":"1f1e8-1f1f7.svg","flag_cu":"1f1e8-1f1fa.svg","flag_cv":"1f1e8-1f1fb.svg","flag_cw":"1f1e8-1f1fc.svg","flag_cx":"1f1e8-1f1fd.svg","flag_cy":"1f1e8-1f1fe.svg","flag_cz":"1f1e8-1f1ff.svg","flag_de":"1f1e9-1f1ea.svg","flag_dg":"1f1e9-1f1ec.svg","flag_dj":"1f1e9-1f1ef.svg","flag_dk":"1f1e9-1f1f0.svg","flag_dm":"1f1e9-1f1f2.svg","flag_do":"1f1e9-1f1f4.svg","flag_dz":"1f1e9-1f1ff.svg","flag_ea":"1f1ea-1f1e6.svg","flag_ec":"1f1ea-1f1e8.svg","flag_ee":"1f1ea-1f1ea.svg","flag_eg":"1f1ea-1f1ec.svg","flag_eh":"1f1ea-1f1ed.svg","flag_er":"1f1ea-1f1f7.svg","flag_es":"1f1ea-1f1f8.svg","flag_et":"1f1ea-1f1f9.svg","flag_eu":"1f1ea-1f1fa.svg","flag_fi":"1f1eb-1f1ee.svg","flag_fj":"1f1eb-1f1ef.svg","flag_fk":"1f1eb-1f1f0.svg","flag_fm":"1f1eb-1f1f2.svg","flag_fo":"1f1eb-1f1f4.svg","flag_fr":"1f1eb-1f1f7.svg","flag_ga":"1f1ec-1f1e6.svg","flag_gb":"1f1ec-1f1e7.svg","flag_gd":"1f1ec-1f1e9.svg","flag_ge":"1f1ec-1f1ea.svg","flag_gf":"1f1ec-1f1eb.svg","flag_gg":"1f1ec-1f1ec.svg","flag_gh":"1f1ec-1f1ed.svg","flag_gi":"1f1ec-1f1ee.svg","flag_gl":"1f1ec-1f1f1.svg","flag_gm":"1f1ec-1f1f2.svg","flag_gn":"1f1ec-1f1f3.svg","flag_gp":"1f1ec-1f1f5.svg","flag_gq":"1f1ec-1f1f6.svg","flag_gr":"1f1ec-1f1f7.svg","flag_gs":"1f1ec-1f1f8.svg","flag_gt":"1f1ec-1f1f9.svg","flag_gu":"1f1ec-1f1fa.svg","flag_gw":"1f1ec-1f1fc.svg","flag_gy":"1f1ec-1f1fe.svg","flag_hk":"1f1ed-1f1f0.svg","flag_hm":"1f1ed-1f1f2.svg","flag_hn":"1f1ed-1f1f3.svg","flag_hr":"1f1ed-1f1f7.svg","flag_ht":"1f1ed-1f1f9.svg","flag_hu":"1f1ed-1f1fa.svg","flag_ic":"1f1ee-1f1e8.svg","flag_id":"1f1ee-1f1e9.svg","flag_ie":"1f1ee-1f1ea.svg","flag_il":"1f1ee-1f1f1.svg","flag_im":"1f1ee-1f1f2.svg","flag_in":"1f1ee-1f1f3.svg","flag_io":"1f1ee-1f1f4.svg","flag_iq":"1f1ee-1f1f6.svg","flag_ir":"1f1ee-1f1f7.svg","flag_is":"1f1ee-1f1f8.svg","flag_it":"1f1ee-1f1f9.svg","flag_je":"1f1ef-1f1ea.svg","flag_jm":"1f1ef-1f1f2.svg","flag_jo":"1f1ef-1f1f4.svg","flag_jp":"1f1ef-1f1f5.svg","flag_ke":"1f1f0-1f1ea.svg","flag_kg":"1f1f0-1f1ec.svg","flag_kh":"1f1f0-1f1ed.svg","flag_ki":"1f1f0-1f1ee.svg","flag_km":"1f1f0-1f1f2.svg","flag_kn":"1f1f0-1f1f3.svg","flag_kp":"1f1f0-1f1f5.svg","flag_kr":"1f1f0-1f1f7.svg","flag_kw":"1f1f0-1f1fc.svg","flag_ky":"1f1f0-1f1fe.svg","flag_kz":"1f1f0-1f1ff.svg","flag_la":"1f1f1-1f1e6.svg","flag_lb":"1f1f1-1f1e7.svg","flag_lc":"1f1f1-1f1e8.svg","flag_li":"1f1f1-1f1ee.svg","flag_lk":"1f1f1-1f1f0.svg","flag_lr":"1f1f1-1f1f7.svg","flag_ls":"1f1f1-1f1f8.svg","flag_lt":"1f1f1-1f1f9.svg","flag_lu":"1f1f1-1f1fa.svg","flag_lv":"1f1f1-1f1fb.svg","flag_ly":"1f1f1-1f1fe.svg","flag_ma":"1f1f2-1f1e6.svg","flag_mc":"1f1f2-1f1e8.svg","flag_md":"1f1f2-1f1e9.svg","flag_me":"1f1f2-1f1ea.svg","flag_mf":"1f1f2-1f1eb.svg","flag_mg":"1f1f2-1f1ec.svg","flag_mh":"1f1f2-1f1ed.svg","flag_mk":"1f1f2-1f1f0.svg","flag_ml":"1f1f2-1f1f1.svg","flag_mm":"1f1f2-1f1f2.svg","flag_mn":"1f1f2-1f1f3.svg","flag_mo":"1f1f2-1f1f4.svg","flag_mp":"1f1f2-1f1f5.svg","flag_mq":"1f1f2-1f1f6.svg","flag_mr":"1f1f2-1f1f7.svg","flag_ms":"1f1f2-1f1f8.svg","flag_mt":"1f1f2-1f1f9.svg","flag_mu":"1f1f2-1f1fa.svg","flag_mv":"1f1f2-1f1fb.svg","flag_mw":"1f1f2-1f1fc.svg","flag_mx":"1f1f2-1f1fd.svg","flag_my":"1f1f2-1f1fe.svg","flag_mz":"1f1f2-1f1ff.svg","flag_na":"1f1f3-1f1e6.svg","flag_nc":"1f1f3-1f1e8.svg","flag_ne":"1f1f3-1f1ea.svg","flag_nf":"1f1f3-1f1eb.svg","flag_ng":"1f1f3-1f1ec.svg","flag_ni":"1f1f3-1f1ee.svg","flag_nl":"1f1f3-1f1f1.svg","flag_no":"1f1f3-1f1f4.svg","flag_np":"1f1f3-1f1f5.svg","flag_nr":"1f1f3-1f1f7.svg","flag_nu":"1f1f3-1f1fa.svg","flag_nz":"1f1f3-1f1ff.svg","flag_om":"1f1f4-1f1f2.svg","flag_pa":"1f1f5-1f1e6.svg","flag_pe":"1f1f5-1f1ea.svg","flag_pf":"1f1f5-1f1eb.svg","flag_pg":"1f1f5-1f1ec.svg","flag_ph":"1f1f5-1f1ed.svg","flag_pk":"1f1f5-1f1f0.svg","flag_pl":"1f1f5-1f1f1.svg","flag_pm":"1f1f5-1f1f2.svg","flag_pn":"1f1f5-1f1f3.svg","flag_pr":"1f1f5-1f1f7.svg","flag_ps":"1f1f5-1f1f8.svg","flag_pt":"1f1f5-1f1f9.svg","flag_pw":"1f1f5-1f1fc.svg","flag_py":"1f1f5-1f1fe.svg","flag_qa":"1f1f6-1f1e6.svg","flag_re":"1f1f7-1f1ea.svg","flag_ro":"1f1f7-1f1f4.svg","flag_rs":"1f1f7-1f1f8.svg","flag_ru":"1f1f7-1f1fa.svg","flag_rw":"1f1f7-1f1fc.svg","flag_sa":"1f1f8-1f1e6.svg","flag_sb":"1f1f8-1f1e7.svg","flag_sc":"1f1f8-1f1e8.svg","flag_sd":"1f1f8-1f1e9.svg","flag_se":"1f1f8-1f1ea.svg","flag_sg":"1f1f8-1f1ec.svg","flag_sh":"1f1f8-1f1ed.svg","flag_si":"1f1f8-1f1ee.svg","flag_sj":"1f1f8-1f1ef.svg","flag_sk":"1f1f8-1f1f0.svg","flag_sl":"1f1f8-1f1f1.svg","flag_sm":"1f1f8-1f1f2.svg","flag_sn":"1f1f8-1f1f3.svg","flag_so":"1f1f8-1f1f4.svg","flag_sr":"1f1f8-1f1f7.svg","flag_ss":"1f1f8-1f1f8.svg","flag_st":"1f1f8-1f1f9.svg","flag_sv":"1f1f8-1f1fb.svg","flag_sx":"1f1f8-1f1fd.svg","flag_sy":"1f1f8-1f1fe.svg","flag_sz":"1f1f8-1f1ff.svg","flag_ta":"1f1f9-1f1e6.svg","flag_tc":"1f1f9-1f1e8.svg","flag_td":"1f1f9-1f1e9.svg","flag_tf":"1f1f9-1f1eb.svg","flag_tg":"1f1f9-1f1ec.svg","flag_th":"1f1f9-1f1ed.svg","flag_tj":"1f1f9-1f1ef.svg","flag_tk":"1f1f9-1f1f0.svg","flag_tl":"1f1f9-1f1f1.svg","flag_tm":"1f1f9-1f1f2.svg","flag_tn":"1f1f9-1f1f3.svg","flag_to":"1f1f9-1f1f4.svg","flag_tr":"1f1f9-1f1f7.svg","flag_tt":"1f1f9-1f1f9.svg","flag_tv":"1f1f9-1f1fb.svg","flag_tw":"1f1f9-1f1fc.svg","flag_tz":"1f1f9-1f1ff.svg","flag_ua":"1f1fa-1f1e6.svg","flag_ug":"1f1fa-1f1ec.svg","flag_um":"1f1fa-1f1f2.svg","flag_us":"1f1fa-1f1f8.svg","flag_uy":"1f1fa-1f1fe.svg","flag_uz":"1f1fa-1f1ff.svg","flag_va":"1f1fb-1f1e6.svg","flag_vc":"1f1fb-1f1e8.svg","flag_ve":"1f1fb-1f1ea.svg","flag_vg":"1f1fb-1f1ec.svg","flag_vi":"1f1fb-1f1ee.svg","flag_vn":"1f1fb-1f1f3.svg","flag_vu":"1f1fb-1f1fa.svg","flag_wf":"1f1fc-1f1eb.svg","flag_white":"1f3f3.svg","flag_ws":"1f1fc-1f1f8.svg","flag_xk":"1f1fd-1f1f0.svg","flag_ye":"1f1fe-1f1ea.svg","flag_yt":"1f1fe-1f1f9.svg","flag_za":"1f1ff-1f1e6.svg","flag_zm":"1f1ff-1f1f2.svg","flag_zw":"1f1ff-1f1fc.svg","flags":"1f38f.svg","flamingo":"1f9a9.svg","flashlight":"1f526.svg","flatbread":"1fad3.svg","fleur-de-lis":"269c.svg","floppy_disk":"1f4be.svg","flower_playing_cards":"1f3b4.svg","flushed":"1f633.svg","fly":"1fab0.svg","flying_disc":"1f94f.svg","flying_saucer":"1f6f8.svg","fog":"1f32b.svg","foggy":"1f301.svg","fondue":"1fad5.svg","foot":"1f9b6.svg","foot_tone1":"1f9b6-1f3fb.svg","foot_tone2":"1f9b6-1f3fc.svg","foot_tone3":"1f9b6-1f3fd.svg","foot_tone4":"1f9b6-1f3fe.svg","foot_tone5":"1f9b6-1f3ff.svg","football":"1f3c8.svg","footprints":"1f463.svg","fork_and_knife":"1f374.svg","fork_knife_plate":"1f37d.svg","fortune_cookie":"1f960.svg","fountain":"26f2.svg","four":"34-20e3.svg","four_leaf_clover":"1f340.svg","fox":"1f98a.svg","frame_photo":"1f5bc.svg","free":"1f193.svg","french_bread":"1f956.svg","fried_shrimp":"1f364.svg","fries":"1f35f.svg","frog":"1f438.svg","frowning2":"2639.svg","frowning":"1f626.svg","fuelpump":"26fd.svg","full_moon":"1f315.svg","full_moon_with_face":"1f31d.svg","game_die":"1f3b2.svg","garlic":"1f9c4.svg","gear":"2699.svg","gem":"1f48e.svg","gemini":"264a.svg","genie":"1f9de.svg","ghost":"1f47b.svg","gift":"1f381.svg","gift_heart":"1f49d.svg","giraffe":"1f992.svg","girl":"1f467.svg","girl_tone1":"1f467-1f3fb.svg","girl_tone2":"1f467-1f3fc.svg","girl_tone3":"1f467-1f3fd.svg","girl_tone4":"1f467-1f3fe.svg","girl_tone5":"1f467-1f3ff.svg","globe_with_meridians":"1f310.svg","gloves":"1f9e4.svg","goal":"1f945.svg","goat":"1f410.svg","goggles":"1f97d.svg","golf":"26f3.svg","gorilla":"1f98d.svg","grapes":"1f347.svg","green_apple":"1f34f.svg","green_book":"1f4d7.svg","green_circle":"1f7e2.svg","green_heart":"1f49a.svg","green_square":"1f7e9.svg","grey_exclamation":"2755.svg","grey_question":"2754.svg","grimacing":"1f62c.svg","grin":"1f601.svg","grinning":"1f600.svg","guard":"1f482.svg","guard_tone1":"1f482-1f3fb.svg","guard_tone2":"1f482-1f3fc.svg","guard_tone3":"1f482-1f3fd.svg","guard_tone4":"1f482-1f3fe.svg","guard_tone5":"1f482-1f3ff.svg","guide_dog":"1f9ae.svg","guitar":"1f3b8.svg","gun":"1f52b.svg","hamburger":"1f354.svg","hammer":"1f528.svg","hammer_pick":"2692.svg","hamster":"1f439.svg","hand_splayed":"1f590.svg","hand_splayed_tone1":"1f590-1f3fb.svg","hand_splayed_tone2":"1f590-1f3fc.svg","hand_splayed_tone3":"1f590-1f3fd.svg","hand_splayed_tone4":"1f590-1f3fe.svg","hand_splayed_tone5":"1f590-1f3ff.svg","handbag":"1f45c.svg","handshake":"1f91d.svg","hash":"23-20e3.svg","hatched_chick":"1f425.svg","hatching_chick":"1f423.svg","head_bandage":"1f915.svg","headphones":"1f3a7.svg","headstone":"1faa6.svg","health_worker":"1f9d1-200d-2695-fe0f.svg","health_worker_tone1":"1f9d1-1f3fb-200d-2695-fe0f.svg","health_worker_tone2":"1f9d1-1f3fc-200d-2695-fe0f.svg","health_worker_tone3":"1f9d1-1f3fd-200d-2695-fe0f.svg","health_worker_tone4":"1f9d1-1f3fe-200d-2695-fe0f.svg","health_worker_tone5":"1f9d1-1f3ff-200d-2695-fe0f.svg","hear_no_evil":"1f649.svg","heart":"2764.svg","heart_decoration":"1f49f.svg","heart_exclamation":"2763.svg","heart_eyes":"1f60d.svg","heart_eyes_cat":"1f63b.svg","heart_on_fire":"2764-fe0f-200d-1f525.svg","heartbeat":"1f493.svg","heartpulse":"1f497.svg","hearts":"2665.svg","heavy_check_mark":"2714.svg","heavy_division_sign":"2797.svg","heavy_dollar_sign":"1f4b2.svg","heavy_minus_sign":"2796.svg","heavy_multiplication_x":"2716.svg","heavy_plus_sign":"2795.svg","hedgehog":"1f994.svg","helicopter":"1f681.svg","helmet_with_cross":"26d1.svg","herb":"1f33f.svg","hibiscus":"1f33a.svg","high_brightness":"1f506.svg","high_heel":"1f460.svg","hiking_boot":"1f97e.svg","hindu_temple":"1f6d5.svg","hippopotamus":"1f99b.svg","hockey":"1f3d2.svg","hole":"1f573.svg","homes":"1f3d8.svg","honey_pot":"1f36f.svg","hook":"1fa9d.svg","horse":"1f434.svg","horse_racing":"1f3c7.svg","horse_racing_tone1":"1f3c7-1f3fb.svg","horse_racing_tone2":"1f3c7-1f3fc.svg","horse_racing_tone3":"1f3c7-1f3fd.svg","horse_racing_tone4":"1f3c7-1f3fe.svg","horse_racing_tone5":"1f3c7-1f3ff.svg","hospital":"1f3e5.svg","hot_face":"1f975.svg","hot_pepper":"1f336.svg","hotdog":"1f32d.svg","hotel":"1f3e8.svg","hotsprings":"2668.svg","hourglass":"231b.svg","hourglass_flowing_sand":"23f3.svg","house":"1f3e0.svg","house_abandoned":"1f3da.svg","house_with_garden":"1f3e1.svg","hugging":"1f917.svg","hushed":"1f62f.svg","hut":"1f6d6.svg","ice_cream":"1f368.svg","ice_cube":"1f9ca.svg","ice_skate":"26f8.svg","icecream":"1f366.svg","id":"1f194.svg","ideograph_advantage":"1f250.svg","imp":"1f47f.svg","inbox_tray":"1f4e5.svg","incoming_envelope":"1f4e8.svg","infinity":"267e.svg","information_source":"2139.svg","innocent":"1f607.svg","interrobang":"2049.svg","island":"1f3dd.svg","izakaya_lantern":"1f3ee.svg","jack_o_lantern":"1f383.svg","japan":"1f5fe.svg","japanese_castle":"1f3ef.svg","japanese_goblin":"1f47a.svg","japanese_ogre":"1f479.svg","jeans":"1f456.svg","jigsaw":"1f9e9.svg","joy":"1f602.svg","joy_cat":"1f639.svg","joystick":"1f579.svg","judge":"1f9d1-200d-2696-fe0f.svg","judge_tone1":"1f9d1-1f3fb-200d-2696-fe0f.svg","judge_tone2":"1f9d1-1f3fc-200d-2696-fe0f.svg","judge_tone3":"1f9d1-1f3fd-200d-2696-fe0f.svg","judge_tone4":"1f9d1-1f3fe-200d-2696-fe0f.svg","judge_tone5":"1f9d1-1f3ff-200d-2696-fe0f.svg","kaaba":"1f54b.svg","kangaroo":"1f998.svg","key2":"1f5dd.svg","key":"1f511.svg","keyboard":"2328.svg","keycap_ten":"1f51f.svg","kimono":"1f458.svg","kiss":"1f48b.svg","kiss_man_man_tone1":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_man_man_tone1_tone2":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_man_man_tone1_tone3":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_man_man_tone1_tone4":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_man_man_tone1_tone5":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_man_man_tone2":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_man_man_tone2_tone1":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_man_man_tone2_tone3":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_man_man_tone2_tone4":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_man_man_tone2_tone5":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_man_man_tone3":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_man_man_tone3_tone1":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_man_man_tone3_tone2":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_man_man_tone3_tone4":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_man_man_tone3_tone5":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_man_man_tone4":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_man_man_tone4_tone1":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_man_man_tone4_tone2":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_man_man_tone4_tone3":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_man_man_tone4_tone5":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_man_man_tone5":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_man_man_tone5_tone1":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_man_man_tone5_tone2":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_man_man_tone5_tone3":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_man_man_tone5_tone4":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_mm":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.svg","kiss_person_person_tone1_tone2":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc.svg","kiss_person_person_tone1_tone3":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd.svg","kiss_person_person_tone1_tone4":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe.svg","kiss_person_person_tone1_tone5":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff.svg","kiss_person_person_tone2_tone1":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb.svg","kiss_person_person_tone2_tone3":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd.svg","kiss_person_person_tone2_tone4":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe.svg","kiss_person_person_tone2_tone5":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff.svg","kiss_person_person_tone3_tone1":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb.svg","kiss_person_person_tone3_tone2":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc.svg","kiss_person_person_tone3_tone4":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe.svg","kiss_person_person_tone3_tone5":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff.svg","kiss_person_person_tone4_tone1":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb.svg","kiss_person_person_tone4_tone2":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc.svg","kiss_person_person_tone4_tone3":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd.svg","kiss_person_person_tone4_tone5":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff.svg","kiss_person_person_tone5_tone1":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb.svg","kiss_person_person_tone5_tone2":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc.svg","kiss_person_person_tone5_tone3":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd.svg","kiss_person_person_tone5_tone4":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe.svg","kiss_tone1":"1f48f-1f3fb.svg","kiss_tone2":"1f48f-1f3fc.svg","kiss_tone3":"1f48f-1f3fd.svg","kiss_tone4":"1f48f-1f3fe.svg","kiss_tone5":"1f48f-1f3ff.svg","kiss_woman_man":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.svg","kiss_woman_man_tone1":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_woman_man_tone1_tone2":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_woman_man_tone1_tone3":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_woman_man_tone1_tone4":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_woman_man_tone1_tone5":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_woman_man_tone2":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_woman_man_tone2_tone1":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_woman_man_tone2_tone3":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_woman_man_tone2_tone4":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_woman_man_tone2_tone5":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_woman_man_tone3":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_woman_man_tone3_tone1":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_woman_man_tone3_tone2":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_woman_man_tone3_tone4":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_woman_man_tone3_tone5":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_woman_man_tone4":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_woman_man_tone4_tone1":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_woman_man_tone4_tone2":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_woman_man_tone4_tone3":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_woman_man_tone4_tone5":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_woman_man_tone5":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.svg","kiss_woman_man_tone5_tone1":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.svg","kiss_woman_man_tone5_tone2":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.svg","kiss_woman_man_tone5_tone3":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.svg","kiss_woman_man_tone5_tone4":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.svg","kiss_woman_woman_tone1":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.svg","kiss_woman_woman_tone1_tone2":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.svg","kiss_woman_woman_tone1_tone3":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.svg","kiss_woman_woman_tone1_tone4":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.svg","kiss_woman_woman_tone1_tone5":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.svg","kiss_woman_woman_tone2":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.svg","kiss_woman_woman_tone2_tone1":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.svg","kiss_woman_woman_tone2_tone3":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.svg","kiss_woman_woman_tone2_tone4":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.svg","kiss_woman_woman_tone2_tone5":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.svg","kiss_woman_woman_tone3":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.svg","kiss_woman_woman_tone3_tone1":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.svg","kiss_woman_woman_tone3_tone2":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.svg","kiss_woman_woman_tone3_tone4":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.svg","kiss_woman_woman_tone3_tone5":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.svg","kiss_woman_woman_tone4":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.svg","kiss_woman_woman_tone4_tone1":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.svg","kiss_woman_woman_tone4_tone2":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.svg","kiss_woman_woman_tone4_tone3":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.svg","kiss_woman_woman_tone4_tone5":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.svg","kiss_woman_woman_tone5":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.svg","kiss_woman_woman_tone5_tone1":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.svg","kiss_woman_woman_tone5_tone2":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.svg","kiss_woman_woman_tone5_tone3":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.svg","kiss_woman_woman_tone5_tone4":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.svg","kiss_ww":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.svg","kissing":"1f617.svg","kissing_cat":"1f63d.svg","kissing_closed_eyes":"1f61a.svg","kissing_heart":"1f618.svg","kissing_smiling_eyes":"1f619.svg","kite":"1fa81.svg","kiwi":"1f95d.svg","knife":"1f52a.svg","knot":"1faa2.svg","koala":"1f428.svg","koko":"1f201.svg","lab_coat":"1f97c.svg","label":"1f3f7.svg","lacrosse":"1f94d.svg","ladder":"1fa9c.svg","lady_beetle":"1f41e.svg","large_blue_diamond":"1f537.svg","large_orange_diamond":"1f536.svg","last_quarter_moon":"1f317.svg","last_quarter_moon_with_face":"1f31c.svg","laughing":"1f606.svg","leafy_green":"1f96c.svg","leaves":"1f343.svg","ledger":"1f4d2.svg","left_facing_fist":"1f91b.svg","left_facing_fist_tone1":"1f91b-1f3fb.svg","left_facing_fist_tone2":"1f91b-1f3fc.svg","left_facing_fist_tone3":"1f91b-1f3fd.svg","left_facing_fist_tone4":"1f91b-1f3fe.svg","left_facing_fist_tone5":"1f91b-1f3ff.svg","left_luggage":"1f6c5.svg","left_right_arrow":"2194.svg","leftwards_arrow_with_hook":"21a9.svg","leg":"1f9b5.svg","leg_tone1":"1f9b5-1f3fb.svg","leg_tone2":"1f9b5-1f3fc.svg","leg_tone3":"1f9b5-1f3fd.svg","leg_tone4":"1f9b5-1f3fe.svg","leg_tone5":"1f9b5-1f3ff.svg","lemon":"1f34b.svg","leo":"264c.svg","leopard":"1f406.svg","level_slider":"1f39a.svg","levitate":"1f574.svg","levitate_tone1":"1f574-1f3fb.svg","levitate_tone2":"1f574-1f3fc.svg","levitate_tone3":"1f574-1f3fd.svg","levitate_tone4":"1f574-1f3fe.svg","levitate_tone5":"1f574-1f3ff.svg","libra":"264e.svg","light_rail":"1f688.svg","link":"1f517.svg","lion_face":"1f981.svg","lips":"1f444.svg","lipstick":"1f484.svg","lizard":"1f98e.svg","llama":"1f999.svg","lobster":"1f99e.svg","lock":"1f512.svg","lock_with_ink_pen":"1f50f.svg","lollipop":"1f36d.svg","long_drum":"1fa98.svg","loop":"27bf.svg","loud_sound":"1f50a.svg","loudspeaker":"1f4e2.svg","love_hotel":"1f3e9.svg","love_letter":"1f48c.svg","love_you_gesture":"1f91f.svg","love_you_gesture_tone1":"1f91f-1f3fb.svg","love_you_gesture_tone2":"1f91f-1f3fc.svg","love_you_gesture_tone3":"1f91f-1f3fd.svg","love_you_gesture_tone4":"1f91f-1f3fe.svg","love_you_gesture_tone5":"1f91f-1f3ff.svg","low_brightness":"1f505.svg","luggage":"1f9f3.svg","lungs":"1fac1.svg","lying_face":"1f925.svg","m":"24c2.svg","mag":"1f50d.svg","mag_right":"1f50e.svg","mage":"1f9d9.svg","mage_tone1":"1f9d9-1f3fb.svg","mage_tone2":"1f9d9-1f3fc.svg","mage_tone3":"1f9d9-1f3fd.svg","mage_tone4":"1f9d9-1f3fe.svg","mage_tone5":"1f9d9-1f3ff.svg","magic_wand":"1fa84.svg","magnet":"1f9f2.svg","mahjong":"1f004.svg","mailbox":"1f4eb.svg","mailbox_closed":"1f4ea.svg","mailbox_with_mail":"1f4ec.svg","mailbox_with_no_mail":"1f4ed.svg","male_sign":"2642.svg","mammoth":"1f9a3.svg","man":"1f468.svg","man_artist":"1f468-200d-1f3a8.svg","man_artist_tone1":"1f468-1f3fb-200d-1f3a8.svg","man_artist_tone2":"1f468-1f3fc-200d-1f3a8.svg","man_artist_tone3":"1f468-1f3fd-200d-1f3a8.svg","man_artist_tone4":"1f468-1f3fe-200d-1f3a8.svg","man_artist_tone5":"1f468-1f3ff-200d-1f3a8.svg","man_astronaut":"1f468-200d-1f680.svg","man_astronaut_tone1":"1f468-1f3fb-200d-1f680.svg","man_astronaut_tone2":"1f468-1f3fc-200d-1f680.svg","man_astronaut_tone3":"1f468-1f3fd-200d-1f680.svg","man_astronaut_tone4":"1f468-1f3fe-200d-1f680.svg","man_astronaut_tone5":"1f468-1f3ff-200d-1f680.svg","man_bald":"1f468-200d-1f9b2.svg","man_bald_tone1":"1f468-1f3fb-200d-1f9b2.svg","man_bald_tone2":"1f468-1f3fc-200d-1f9b2.svg","man_bald_tone3":"1f468-1f3fd-200d-1f9b2.svg","man_bald_tone4":"1f468-1f3fe-200d-1f9b2.svg","man_bald_tone5":"1f468-1f3ff-200d-1f9b2.svg","man_beard":"1f9d4-200d-2642-fe0f.svg","man_biking":"1f6b4-200d-2642-fe0f.svg","man_biking_tone1":"1f6b4-1f3fb-200d-2642-fe0f.svg","man_biking_tone2":"1f6b4-1f3fc-200d-2642-fe0f.svg","man_biking_tone3":"1f6b4-1f3fd-200d-2642-fe0f.svg","man_biking_tone4":"1f6b4-1f3fe-200d-2642-fe0f.svg","man_biking_tone5":"1f6b4-1f3ff-200d-2642-fe0f.svg","man_bouncing_ball":"26f9-fe0f-200d-2642-fe0f.svg","man_bouncing_ball_tone1":"26f9-1f3fb-200d-2642-fe0f.svg","man_bouncing_ball_tone2":"26f9-1f3fc-200d-2642-fe0f.svg","man_bouncing_ball_tone3":"26f9-1f3fd-200d-2642-fe0f.svg","man_bouncing_ball_tone4":"26f9-1f3fe-200d-2642-fe0f.svg","man_bouncing_ball_tone5":"26f9-1f3ff-200d-2642-fe0f.svg","man_bowing":"1f647-200d-2642-fe0f.svg","man_bowing_tone1":"1f647-1f3fb-200d-2642-fe0f.svg","man_bowing_tone2":"1f647-1f3fc-200d-2642-fe0f.svg","man_bowing_tone3":"1f647-1f3fd-200d-2642-fe0f.svg","man_bowing_tone4":"1f647-1f3fe-200d-2642-fe0f.svg","man_bowing_tone5":"1f647-1f3ff-200d-2642-fe0f.svg","man_cartwheeling":"1f938-200d-2642-fe0f.svg","man_cartwheeling_tone1":"1f938-1f3fb-200d-2642-fe0f.svg","man_cartwheeling_tone2":"1f938-1f3fc-200d-2642-fe0f.svg","man_cartwheeling_tone3":"1f938-1f3fd-200d-2642-fe0f.svg","man_cartwheeling_tone4":"1f938-1f3fe-200d-2642-fe0f.svg","man_cartwheeling_tone5":"1f938-1f3ff-200d-2642-fe0f.svg","man_climbing":"1f9d7-200d-2642-fe0f.svg","man_climbing_tone1":"1f9d7-1f3fb-200d-2642-fe0f.svg","man_climbing_tone2":"1f9d7-1f3fc-200d-2642-fe0f.svg","man_climbing_tone3":"1f9d7-1f3fd-200d-2642-fe0f.svg","man_climbing_tone4":"1f9d7-1f3fe-200d-2642-fe0f.svg","man_climbing_tone5":"1f9d7-1f3ff-200d-2642-fe0f.svg","man_construction_worker":"1f477-200d-2642-fe0f.svg","man_construction_worker_tone1":"1f477-1f3fb-200d-2642-fe0f.svg","man_construction_worker_tone2":"1f477-1f3fc-200d-2642-fe0f.svg","man_construction_worker_tone3":"1f477-1f3fd-200d-2642-fe0f.svg","man_construction_worker_tone4":"1f477-1f3fe-200d-2642-fe0f.svg","man_construction_worker_tone5":"1f477-1f3ff-200d-2642-fe0f.svg","man_cook":"1f468-200d-1f373.svg","man_cook_tone1":"1f468-1f3fb-200d-1f373.svg","man_cook_tone2":"1f468-1f3fc-200d-1f373.svg","man_cook_tone3":"1f468-1f3fd-200d-1f373.svg","man_cook_tone4":"1f468-1f3fe-200d-1f373.svg","man_cook_tone5":"1f468-1f3ff-200d-1f373.svg","man_curly_haired":"1f468-200d-1f9b1.svg","man_curly_haired_tone1":"1f468-1f3fb-200d-1f9b1.svg","man_curly_haired_tone2":"1f468-1f3fc-200d-1f9b1.svg","man_curly_haired_tone3":"1f468-1f3fd-200d-1f9b1.svg","man_curly_haired_tone4":"1f468-1f3fe-200d-1f9b1.svg","man_curly_haired_tone5":"1f468-1f3ff-200d-1f9b1.svg","man_dancing":"1f57a.svg","man_dancing_tone1":"1f57a-1f3fb.svg","man_dancing_tone2":"1f57a-1f3fc.svg","man_dancing_tone3":"1f57a-1f3fd.svg","man_dancing_tone4":"1f57a-1f3fe.svg","man_dancing_tone5":"1f57a-1f3ff.svg","man_detective":"1f575-fe0f-200d-2642-fe0f.svg","man_detective_tone1":"1f575-1f3fb-200d-2642-fe0f.svg","man_detective_tone2":"1f575-1f3fc-200d-2642-fe0f.svg","man_detective_tone3":"1f575-1f3fd-200d-2642-fe0f.svg","man_detective_tone4":"1f575-1f3fe-200d-2642-fe0f.svg","man_detective_tone5":"1f575-1f3ff-200d-2642-fe0f.svg","man_elf":"1f9dd-200d-2642-fe0f.svg","man_elf_tone1":"1f9dd-1f3fb-200d-2642-fe0f.svg","man_elf_tone2":"1f9dd-1f3fc-200d-2642-fe0f.svg","man_elf_tone3":"1f9dd-1f3fd-200d-2642-fe0f.svg","man_elf_tone4":"1f9dd-1f3fe-200d-2642-fe0f.svg","man_elf_tone5":"1f9dd-1f3ff-200d-2642-fe0f.svg","man_facepalming":"1f926-200d-2642-fe0f.svg","man_facepalming_tone1":"1f926-1f3fb-200d-2642-fe0f.svg","man_facepalming_tone2":"1f926-1f3fc-200d-2642-fe0f.svg","man_facepalming_tone3":"1f926-1f3fd-200d-2642-fe0f.svg","man_facepalming_tone4":"1f926-1f3fe-200d-2642-fe0f.svg","man_facepalming_tone5":"1f926-1f3ff-200d-2642-fe0f.svg","man_factory_worker":"1f468-200d-1f3ed.svg","man_factory_worker_tone1":"1f468-1f3fb-200d-1f3ed.svg","man_factory_worker_tone2":"1f468-1f3fc-200d-1f3ed.svg","man_factory_worker_tone3":"1f468-1f3fd-200d-1f3ed.svg","man_factory_worker_tone4":"1f468-1f3fe-200d-1f3ed.svg","man_factory_worker_tone5":"1f468-1f3ff-200d-1f3ed.svg","man_fairy":"1f9da-200d-2642-fe0f.svg","man_fairy_tone1":"1f9da-1f3fb-200d-2642-fe0f.svg","man_fairy_tone2":"1f9da-1f3fc-200d-2642-fe0f.svg","man_fairy_tone3":"1f9da-1f3fd-200d-2642-fe0f.svg","man_fairy_tone4":"1f9da-1f3fe-200d-2642-fe0f.svg","man_fairy_tone5":"1f9da-1f3ff-200d-2642-fe0f.svg","man_farmer":"1f468-200d-1f33e.svg","man_farmer_tone1":"1f468-1f3fb-200d-1f33e.svg","man_farmer_tone2":"1f468-1f3fc-200d-1f33e.svg","man_farmer_tone3":"1f468-1f3fd-200d-1f33e.svg","man_farmer_tone4":"1f468-1f3fe-200d-1f33e.svg","man_farmer_tone5":"1f468-1f3ff-200d-1f33e.svg","man_feeding_baby":"1f468-200d-1f37c.svg","man_feeding_baby_tone1":"1f468-1f3fb-200d-1f37c.svg","man_feeding_baby_tone2":"1f468-1f3fc-200d-1f37c.svg","man_feeding_baby_tone3":"1f468-1f3fd-200d-1f37c.svg","man_feeding_baby_tone4":"1f468-1f3fe-200d-1f37c.svg","man_feeding_baby_tone5":"1f468-1f3ff-200d-1f37c.svg","man_firefighter":"1f468-200d-1f692.svg","man_firefighter_tone1":"1f468-1f3fb-200d-1f692.svg","man_firefighter_tone2":"1f468-1f3fc-200d-1f692.svg","man_firefighter_tone3":"1f468-1f3fd-200d-1f692.svg","man_firefighter_tone4":"1f468-1f3fe-200d-1f692.svg","man_firefighter_tone5":"1f468-1f3ff-200d-1f692.svg","man_frowning":"1f64d-200d-2642-fe0f.svg","man_frowning_tone1":"1f64d-1f3fb-200d-2642-fe0f.svg","man_frowning_tone2":"1f64d-1f3fc-200d-2642-fe0f.svg","man_frowning_tone3":"1f64d-1f3fd-200d-2642-fe0f.svg","man_frowning_tone4":"1f64d-1f3fe-200d-2642-fe0f.svg","man_frowning_tone5":"1f64d-1f3ff-200d-2642-fe0f.svg","man_genie":"1f9de-200d-2642-fe0f.svg","man_gesturing_no":"1f645-200d-2642-fe0f.svg","man_gesturing_no_tone1":"1f645-1f3fb-200d-2642-fe0f.svg","man_gesturing_no_tone2":"1f645-1f3fc-200d-2642-fe0f.svg","man_gesturing_no_tone3":"1f645-1f3fd-200d-2642-fe0f.svg","man_gesturing_no_tone4":"1f645-1f3fe-200d-2642-fe0f.svg","man_gesturing_no_tone5":"1f645-1f3ff-200d-2642-fe0f.svg","man_gesturing_ok":"1f646-200d-2642-fe0f.svg","man_gesturing_ok_tone1":"1f646-1f3fb-200d-2642-fe0f.svg","man_gesturing_ok_tone2":"1f646-1f3fc-200d-2642-fe0f.svg","man_gesturing_ok_tone3":"1f646-1f3fd-200d-2642-fe0f.svg","man_gesturing_ok_tone4":"1f646-1f3fe-200d-2642-fe0f.svg","man_gesturing_ok_tone5":"1f646-1f3ff-200d-2642-fe0f.svg","man_getting_face_massage":"1f486-200d-2642-fe0f.svg","man_getting_face_massage_tone1":"1f486-1f3fb-200d-2642-fe0f.svg","man_getting_face_massage_tone2":"1f486-1f3fc-200d-2642-fe0f.svg","man_getting_face_massage_tone3":"1f486-1f3fd-200d-2642-fe0f.svg","man_getting_face_massage_tone4":"1f486-1f3fe-200d-2642-fe0f.svg","man_getting_face_massage_tone5":"1f486-1f3ff-200d-2642-fe0f.svg","man_getting_haircut":"1f487-200d-2642-fe0f.svg","man_getting_haircut_tone1":"1f487-1f3fb-200d-2642-fe0f.svg","man_getting_haircut_tone2":"1f487-1f3fc-200d-2642-fe0f.svg","man_getting_haircut_tone3":"1f487-1f3fd-200d-2642-fe0f.svg","man_getting_haircut_tone4":"1f487-1f3fe-200d-2642-fe0f.svg","man_getting_haircut_tone5":"1f487-1f3ff-200d-2642-fe0f.svg","man_golfing":"1f3cc-fe0f-200d-2642-fe0f.svg","man_golfing_tone1":"1f3cc-1f3fb-200d-2642-fe0f.svg","man_golfing_tone2":"1f3cc-1f3fc-200d-2642-fe0f.svg","man_golfing_tone3":"1f3cc-1f3fd-200d-2642-fe0f.svg","man_golfing_tone4":"1f3cc-1f3fe-200d-2642-fe0f.svg","man_golfing_tone5":"1f3cc-1f3ff-200d-2642-fe0f.svg","man_guard":"1f482-200d-2642-fe0f.svg","man_guard_tone1":"1f482-1f3fb-200d-2642-fe0f.svg","man_guard_tone2":"1f482-1f3fc-200d-2642-fe0f.svg","man_guard_tone3":"1f482-1f3fd-200d-2642-fe0f.svg","man_guard_tone4":"1f482-1f3fe-200d-2642-fe0f.svg","man_guard_tone5":"1f482-1f3ff-200d-2642-fe0f.svg","man_health_worker":"1f468-200d-2695-fe0f.svg","man_health_worker_tone1":"1f468-1f3fb-200d-2695-fe0f.svg","man_health_worker_tone2":"1f468-1f3fc-200d-2695-fe0f.svg","man_health_worker_tone3":"1f468-1f3fd-200d-2695-fe0f.svg","man_health_worker_tone4":"1f468-1f3fe-200d-2695-fe0f.svg","man_health_worker_tone5":"1f468-1f3ff-200d-2695-fe0f.svg","man_in_lotus_position":"1f9d8-200d-2642-fe0f.svg","man_in_lotus_position_tone1":"1f9d8-1f3fb-200d-2642-fe0f.svg","man_in_lotus_position_tone2":"1f9d8-1f3fc-200d-2642-fe0f.svg","man_in_lotus_position_tone3":"1f9d8-1f3fd-200d-2642-fe0f.svg","man_in_lotus_position_tone4":"1f9d8-1f3fe-200d-2642-fe0f.svg","man_in_lotus_position_tone5":"1f9d8-1f3ff-200d-2642-fe0f.svg","man_in_manual_wheelchair":"1f468-200d-1f9bd.svg","man_in_manual_wheelchair_tone1":"1f468-1f3fb-200d-1f9bd.svg","man_in_manual_wheelchair_tone2":"1f468-1f3fc-200d-1f9bd.svg","man_in_manual_wheelchair_tone3":"1f468-1f3fd-200d-1f9bd.svg","man_in_manual_wheelchair_tone4":"1f468-1f3fe-200d-1f9bd.svg","man_in_manual_wheelchair_tone5":"1f468-1f3ff-200d-1f9bd.svg","man_in_motorized_wheelchair":"1f468-200d-1f9bc.svg","man_in_motorized_wheelchair_tone1":"1f468-1f3fb-200d-1f9bc.svg","man_in_motorized_wheelchair_tone2":"1f468-1f3fc-200d-1f9bc.svg","man_in_motorized_wheelchair_tone3":"1f468-1f3fd-200d-1f9bc.svg","man_in_motorized_wheelchair_tone4":"1f468-1f3fe-200d-1f9bc.svg","man_in_motorized_wheelchair_tone5":"1f468-1f3ff-200d-1f9bc.svg","man_in_santa_hat":"1f468-200d-1f384.svg","man_in_santa_hat_tone1":"1f468-1f3fb-200d-1f384.svg","man_in_santa_hat_tone2":"1f468-1f3fc-200d-1f384.svg","man_in_santa_hat_tone3":"1f468-1f3fd-200d-1f384.svg","man_in_santa_hat_tone4":"1f468-1f3fe-200d-1f384.svg","man_in_santa_hat_tone5":"1f469-1f3ff-200d-1f384.svg","man_in_steamy_room":"1f9d6-200d-2642-fe0f.svg","man_in_steamy_room_tone1":"1f9d6-1f3fb-200d-2642-fe0f.svg","man_in_steamy_room_tone2":"1f9d6-1f3fc-200d-2642-fe0f.svg","man_in_steamy_room_tone3":"1f9d6-1f3fd-200d-2642-fe0f.svg","man_in_steamy_room_tone4":"1f9d6-1f3fe-200d-2642-fe0f.svg","man_in_steamy_room_tone5":"1f9d6-1f3ff-200d-2642-fe0f.svg","man_in_tuxedo":"1f935-200d-2642-fe0f.svg","man_in_tuxedo_tone1":"1f935-1f3fb-200d-2642-fe0f.svg","man_in_tuxedo_tone2":"1f935-1f3fc-200d-2642-fe0f.svg","man_in_tuxedo_tone3":"1f935-1f3fd-200d-2642-fe0f.svg","man_in_tuxedo_tone4":"1f935-1f3fe-200d-2642-fe0f.svg","man_in_tuxedo_tone5":"1f935-1f3ff-200d-2642-fe0f.svg","man_judge":"1f468-200d-2696-fe0f.svg","man_judge_tone1":"1f468-1f3fb-200d-2696-fe0f.svg","man_judge_tone2":"1f468-1f3fc-200d-2696-fe0f.svg","man_judge_tone3":"1f468-1f3fd-200d-2696-fe0f.svg","man_judge_tone4":"1f468-1f3fe-200d-2696-fe0f.svg","man_judge_tone5":"1f468-1f3ff-200d-2696-fe0f.svg","man_juggling":"1f939-200d-2642-fe0f.svg","man_juggling_tone1":"1f939-1f3fb-200d-2642-fe0f.svg","man_juggling_tone2":"1f939-1f3fc-200d-2642-fe0f.svg","man_juggling_tone3":"1f939-1f3fd-200d-2642-fe0f.svg","man_juggling_tone4":"1f939-1f3fe-200d-2642-fe0f.svg","man_juggling_tone5":"1f939-1f3ff-200d-2642-fe0f.svg","man_kneeling":"1f9ce-200d-2642-fe0f.svg","man_kneeling_tone1":"1f9ce-1f3fb-200d-2642-fe0f.svg","man_kneeling_tone2":"1f9ce-1f3fc-200d-2642-fe0f.svg","man_kneeling_tone3":"1f9ce-1f3fd-200d-2642-fe0f.svg","man_kneeling_tone4":"1f9ce-1f3fe-200d-2642-fe0f.svg","man_kneeling_tone5":"1f9ce-1f3ff-200d-2642-fe0f.svg","man_lifting_weights":"1f3cb-fe0f-200d-2642-fe0f.svg","man_lifting_weights_tone1":"1f3cb-1f3fb-200d-2642-fe0f.svg","man_lifting_weights_tone2":"1f3cb-1f3fc-200d-2642-fe0f.svg","man_lifting_weights_tone3":"1f3cb-1f3fd-200d-2642-fe0f.svg","man_lifting_weights_tone4":"1f3cb-1f3fe-200d-2642-fe0f.svg","man_lifting_weights_tone5":"1f3cb-1f3ff-200d-2642-fe0f.svg","man_mage":"1f9d9-200d-2642-fe0f.svg","man_mage_tone1":"1f9d9-1f3fb-200d-2642-fe0f.svg","man_mage_tone2":"1f9d9-1f3fc-200d-2642-fe0f.svg","man_mage_tone3":"1f9d9-1f3fd-200d-2642-fe0f.svg","man_mage_tone4":"1f9d9-1f3fe-200d-2642-fe0f.svg","man_mage_tone5":"1f9d9-1f3ff-200d-2642-fe0f.svg","man_mechanic":"1f468-200d-1f527.svg","man_mechanic_tone1":"1f468-1f3fb-200d-1f527.svg","man_mechanic_tone2":"1f468-1f3fc-200d-1f527.svg","man_mechanic_tone3":"1f468-1f3fd-200d-1f527.svg","man_mechanic_tone4":"1f468-1f3fe-200d-1f527.svg","man_mechanic_tone5":"1f468-1f3ff-200d-1f527.svg","man_mountain_biking":"1f6b5-200d-2642-fe0f.svg","man_mountain_biking_tone1":"1f6b5-1f3fb-200d-2642-fe0f.svg","man_mountain_biking_tone2":"1f6b5-1f3fc-200d-2642-fe0f.svg","man_mountain_biking_tone3":"1f6b5-1f3fd-200d-2642-fe0f.svg","man_mountain_biking_tone4":"1f6b5-1f3fe-200d-2642-fe0f.svg","man_mountain_biking_tone5":"1f6b5-1f3ff-200d-2642-fe0f.svg","man_office_worker":"1f468-200d-1f4bc.svg","man_office_worker_tone1":"1f468-1f3fb-200d-1f4bc.svg","man_office_worker_tone2":"1f468-1f3fc-200d-1f4bc.svg","man_office_worker_tone3":"1f468-1f3fd-200d-1f4bc.svg","man_office_worker_tone4":"1f468-1f3fe-200d-1f4bc.svg","man_office_worker_tone5":"1f468-1f3ff-200d-1f4bc.svg","man_pilot":"1f468-200d-2708-fe0f.svg","man_pilot_tone1":"1f468-1f3fb-200d-2708-fe0f.svg","man_pilot_tone2":"1f468-1f3fc-200d-2708-fe0f.svg","man_pilot_tone3":"1f468-1f3fd-200d-2708-fe0f.svg","man_pilot_tone4":"1f468-1f3fe-200d-2708-fe0f.svg","man_pilot_tone5":"1f468-1f3ff-200d-2708-fe0f.svg","man_playing_handball":"1f93e-200d-2642-fe0f.svg","man_playing_handball_tone1":"1f93e-1f3fb-200d-2642-fe0f.svg","man_playing_handball_tone2":"1f93e-1f3fc-200d-2642-fe0f.svg","man_playing_handball_tone3":"1f93e-1f3fd-200d-2642-fe0f.svg","man_playing_handball_tone4":"1f93e-1f3fe-200d-2642-fe0f.svg","man_playing_handball_tone5":"1f93e-1f3ff-200d-2642-fe0f.svg","man_playing_water_polo":"1f93d-200d-2642-fe0f.svg","man_playing_water_polo_tone1":"1f93d-1f3fb-200d-2642-fe0f.svg","man_playing_water_polo_tone2":"1f93d-1f3fc-200d-2642-fe0f.svg","man_playing_water_polo_tone3":"1f93d-1f3fd-200d-2642-fe0f.svg","man_playing_water_polo_tone4":"1f93d-1f3fe-200d-2642-fe0f.svg","man_playing_water_polo_tone5":"1f93d-1f3ff-200d-2642-fe0f.svg","man_police_officer":"1f46e-200d-2642-fe0f.svg","man_police_officer_tone1":"1f46e-1f3fb-200d-2642-fe0f.svg","man_police_officer_tone2":"1f46e-1f3fc-200d-2642-fe0f.svg","man_police_officer_tone3":"1f46e-1f3fd-200d-2642-fe0f.svg","man_police_officer_tone4":"1f46e-1f3fe-200d-2642-fe0f.svg","man_police_officer_tone5":"1f46e-1f3ff-200d-2642-fe0f.svg","man_pouting":"1f64e-200d-2642-fe0f.svg","man_pouting_tone1":"1f64e-1f3fb-200d-2642-fe0f.svg","man_pouting_tone2":"1f64e-1f3fc-200d-2642-fe0f.svg","man_pouting_tone3":"1f64e-1f3fd-200d-2642-fe0f.svg","man_pouting_tone4":"1f64e-1f3fe-200d-2642-fe0f.svg","man_pouting_tone5":"1f64e-1f3ff-200d-2642-fe0f.svg","man_raising_hand":"1f64b-200d-2642-fe0f.svg","man_raising_hand_tone1":"1f64b-1f3fb-200d-2642-fe0f.svg","man_raising_hand_tone2":"1f64b-1f3fc-200d-2642-fe0f.svg","man_raising_hand_tone3":"1f64b-1f3fd-200d-2642-fe0f.svg","man_raising_hand_tone4":"1f64b-1f3fe-200d-2642-fe0f.svg","man_raising_hand_tone5":"1f64b-1f3ff-200d-2642-fe0f.svg","man_red_haired":"1f468-200d-1f9b0.svg","man_red_haired_tone1":"1f468-1f3fb-200d-1f9b0.svg","man_red_haired_tone2":"1f468-1f3fc-200d-1f9b0.svg","man_red_haired_tone3":"1f468-1f3fd-200d-1f9b0.svg","man_red_haired_tone4":"1f468-1f3fe-200d-1f9b0.svg","man_red_haired_tone5":"1f468-1f3ff-200d-1f9b0.svg","man_rowing_boat":"1f6a3-200d-2642-fe0f.svg","man_rowing_boat_tone1":"1f6a3-1f3fb-200d-2642-fe0f.svg","man_rowing_boat_tone2":"1f6a3-1f3fc-200d-2642-fe0f.svg","man_rowing_boat_tone3":"1f6a3-1f3fd-200d-2642-fe0f.svg","man_rowing_boat_tone4":"1f6a3-1f3fe-200d-2642-fe0f.svg","man_rowing_boat_tone5":"1f6a3-1f3ff-200d-2642-fe0f.svg","man_running":"1f3c3-200d-2642-fe0f.svg","man_running_tone1":"1f3c3-1f3fb-200d-2642-fe0f.svg","man_running_tone2":"1f3c3-1f3fc-200d-2642-fe0f.svg","man_running_tone3":"1f3c3-1f3fd-200d-2642-fe0f.svg","man_running_tone4":"1f3c3-1f3fe-200d-2642-fe0f.svg","man_running_tone5":"1f3c3-1f3ff-200d-2642-fe0f.svg","man_scientist":"1f468-200d-1f52c.svg","man_scientist_tone1":"1f468-1f3fb-200d-1f52c.svg","man_scientist_tone2":"1f468-1f3fc-200d-1f52c.svg","man_scientist_tone3":"1f468-1f3fd-200d-1f52c.svg","man_scientist_tone4":"1f468-1f3fe-200d-1f52c.svg","man_scientist_tone5":"1f468-1f3ff-200d-1f52c.svg","man_shrugging":"1f937-200d-2642-fe0f.svg","man_shrugging_tone1":"1f937-1f3fb-200d-2642-fe0f.svg","man_shrugging_tone2":"1f937-1f3fc-200d-2642-fe0f.svg","man_shrugging_tone3":"1f937-1f3fd-200d-2642-fe0f.svg","man_shrugging_tone4":"1f937-1f3fe-200d-2642-fe0f.svg","man_shrugging_tone5":"1f937-1f3ff-200d-2642-fe0f.svg","man_singer":"1f468-200d-1f3a4.svg","man_singer_tone1":"1f468-1f3fb-200d-1f3a4.svg","man_singer_tone2":"1f468-1f3fc-200d-1f3a4.svg","man_singer_tone3":"1f468-1f3fd-200d-1f3a4.svg","man_singer_tone4":"1f468-1f3fe-200d-1f3a4.svg","man_singer_tone5":"1f468-1f3ff-200d-1f3a4.svg","man_standing":"1f9cd-200d-2642-fe0f.svg","man_standing_tone1":"1f9cd-1f3fb-200d-2642-fe0f.svg","man_standing_tone2":"1f9cd-1f3fc-200d-2642-fe0f.svg","man_standing_tone3":"1f9cd-1f3fd-200d-2642-fe0f.svg","man_standing_tone4":"1f9cd-1f3fe-200d-2642-fe0f.svg","man_standing_tone5":"1f9cd-1f3ff-200d-2642-fe0f.svg","man_student":"1f468-200d-1f393.svg","man_student_tone1":"1f468-1f3fb-200d-1f393.svg","man_student_tone2":"1f468-1f3fc-200d-1f393.svg","man_student_tone3":"1f468-1f3fd-200d-1f393.svg","man_student_tone4":"1f468-1f3fe-200d-1f393.svg","man_student_tone5":"1f468-1f3ff-200d-1f393.svg","man_superhero":"1f9b8-200d-2642-fe0f.svg","man_superhero_tone1":"1f9b8-1f3fb-200d-2642-fe0f.svg","man_superhero_tone2":"1f9b8-1f3fc-200d-2642-fe0f.svg","man_superhero_tone3":"1f9b8-1f3fd-200d-2642-fe0f.svg","man_superhero_tone4":"1f9b8-1f3fe-200d-2642-fe0f.svg","man_superhero_tone5":"1f9b8-1f3ff-200d-2642-fe0f.svg","man_supervillain":"1f9b9-200d-2642-fe0f.svg","man_supervillain_tone1":"1f9b9-1f3fb-200d-2642-fe0f.svg","man_supervillain_tone2":"1f9b9-1f3fc-200d-2642-fe0f.svg","man_supervillain_tone3":"1f9b9-1f3fd-200d-2642-fe0f.svg","man_supervillain_tone4":"1f9b9-1f3fe-200d-2642-fe0f.svg","man_supervillain_tone5":"1f9b9-1f3ff-200d-2642-fe0f.svg","man_surfing":"1f3c4-200d-2642-fe0f.svg","man_surfing_tone1":"1f3c4-1f3fb-200d-2642-fe0f.svg","man_surfing_tone2":"1f3c4-1f3fc-200d-2642-fe0f.svg","man_surfing_tone3":"1f3c4-1f3fd-200d-2642-fe0f.svg","man_surfing_tone4":"1f3c4-1f3fe-200d-2642-fe0f.svg","man_surfing_tone5":"1f3c4-1f3ff-200d-2642-fe0f.svg","man_swimming":"1f3ca-200d-2642-fe0f.svg","man_swimming_tone1":"1f3ca-1f3fb-200d-2642-fe0f.svg","man_swimming_tone2":"1f3ca-1f3fc-200d-2642-fe0f.svg","man_swimming_tone3":"1f3ca-1f3fd-200d-2642-fe0f.svg","man_swimming_tone4":"1f3ca-1f3fe-200d-2642-fe0f.svg","man_swimming_tone5":"1f3ca-1f3ff-200d-2642-fe0f.svg","man_teacher":"1f468-200d-1f3eb.svg","man_teacher_tone1":"1f468-1f3fb-200d-1f3eb.svg","man_teacher_tone2":"1f468-1f3fc-200d-1f3eb.svg","man_teacher_tone3":"1f468-1f3fd-200d-1f3eb.svg","man_teacher_tone4":"1f468-1f3fe-200d-1f3eb.svg","man_teacher_tone5":"1f468-1f3ff-200d-1f3eb.svg","man_technologist":"1f468-200d-1f4bb.svg","man_technologist_tone1":"1f468-1f3fb-200d-1f4bb.svg","man_technologist_tone2":"1f468-1f3fc-200d-1f4bb.svg","man_technologist_tone3":"1f468-1f3fd-200d-1f4bb.svg","man_technologist_tone4":"1f468-1f3fe-200d-1f4bb.svg","man_technologist_tone5":"1f468-1f3ff-200d-1f4bb.svg","man_tipping_hand":"1f481-200d-2642-fe0f.svg","man_tipping_hand_tone1":"1f481-1f3fb-200d-2642-fe0f.svg","man_tipping_hand_tone2":"1f481-1f3fc-200d-2642-fe0f.svg","man_tipping_hand_tone3":"1f481-1f3fd-200d-2642-fe0f.svg","man_tipping_hand_tone4":"1f481-1f3fe-200d-2642-fe0f.svg","man_tipping_hand_tone5":"1f481-1f3ff-200d-2642-fe0f.svg","man_tone1":"1f468-1f3fb.svg","man_tone1_beard":"1f9d4-1f3fb-200d-2642-fe0f.svg","man_tone2":"1f468-1f3fc.svg","man_tone2_beard":"1f9d4-1f3fc-200d-2642-fe0f.svg","man_tone3":"1f468-1f3fd.svg","man_tone3_beard":"1f9d4-1f3fd-200d-2642-fe0f.svg","man_tone4":"1f468-1f3fe.svg","man_tone4_beard":"1f9d4-1f3fe-200d-2642-fe0f.svg","man_tone5":"1f468-1f3ff.svg","man_tone5_beard":"1f9d4-1f3ff-200d-2642-fe0f.svg","man_vampire":"1f9db-200d-2642-fe0f.svg","man_vampire_tone1":"1f9db-1f3fb-200d-2642-fe0f.svg","man_vampire_tone2":"1f9db-1f3fc-200d-2642-fe0f.svg","man_vampire_tone3":"1f9db-1f3fd-200d-2642-fe0f.svg","man_vampire_tone4":"1f9db-1f3fe-200d-2642-fe0f.svg","man_vampire_tone5":"1f9db-1f3ff-200d-2642-fe0f.svg","man_walking":"1f6b6-200d-2642-fe0f.svg","man_walking_tone1":"1f6b6-1f3fb-200d-2642-fe0f.svg","man_walking_tone2":"1f6b6-1f3fc-200d-2642-fe0f.svg","man_walking_tone3":"1f6b6-1f3fd-200d-2642-fe0f.svg","man_walking_tone4":"1f6b6-1f3fe-200d-2642-fe0f.svg","man_walking_tone5":"1f6b6-1f3ff-200d-2642-fe0f.svg","man_wearing_turban":"1f473-200d-2642-fe0f.svg","man_wearing_turban_tone1":"1f473-1f3fb-200d-2642-fe0f.svg","man_wearing_turban_tone2":"1f473-1f3fc-200d-2642-fe0f.svg","man_wearing_turban_tone3":"1f473-1f3fd-200d-2642-fe0f.svg","man_wearing_turban_tone4":"1f473-1f3fe-200d-2642-fe0f.svg","man_wearing_turban_tone5":"1f473-1f3ff-200d-2642-fe0f.svg","man_white_haired":"1f468-200d-1f9b3.svg","man_white_haired_tone1":"1f468-1f3fb-200d-1f9b3.svg","man_white_haired_tone2":"1f468-1f3fc-200d-1f9b3.svg","man_white_haired_tone3":"1f468-1f3fd-200d-1f9b3.svg","man_white_haired_tone4":"1f468-1f3fe-200d-1f9b3.svg","man_white_haired_tone5":"1f468-1f3ff-200d-1f9b3.svg","man_with_chinese_cap":"1f472.svg","man_with_chinese_cap_tone1":"1f472-1f3fb.svg","man_with_chinese_cap_tone2":"1f472-1f3fc.svg","man_with_chinese_cap_tone3":"1f472-1f3fd.svg","man_with_chinese_cap_tone4":"1f472-1f3fe.svg","man_with_chinese_cap_tone5":"1f472-1f3ff.svg","man_with_probing_cane":"1f468-200d-1f9af.svg","man_with_probing_cane_tone1":"1f468-1f3fb-200d-1f9af.svg","man_with_probing_cane_tone2":"1f468-1f3fc-200d-1f9af.svg","man_with_probing_cane_tone3":"1f468-1f3fd-200d-1f9af.svg","man_with_probing_cane_tone4":"1f468-1f3fe-200d-1f9af.svg","man_with_probing_cane_tone5":"1f468-1f3ff-200d-1f9af.svg","man_with_veil":"1f470-200d-2642-fe0f.svg","man_with_veil_tone1":"1f470-1f3fb-200d-2642-fe0f.svg","man_with_veil_tone2":"1f470-1f3fc-200d-2642-fe0f.svg","man_with_veil_tone3":"1f470-1f3fd-200d-2642-fe0f.svg","man_with_veil_tone4":"1f470-1f3fe-200d-2642-fe0f.svg","man_with_veil_tone5":"1f470-1f3ff-200d-2642-fe0f.svg","man_zombie":"1f9df-200d-2642-fe0f.svg","mango":"1f96d.svg","mans_shoe":"1f45e.svg","manual_wheelchair":"1f9bd.svg","map":"1f5fa.svg","maple_leaf":"1f341.svg","martial_arts_uniform":"1f94b.svg","mask":"1f637.svg","mate":"1f9c9.svg","meat_on_bone":"1f356.svg","mechanic":"1f9d1-200d-1f527.svg","mechanic_tone1":"1f9d1-1f3fb-200d-1f527.svg","mechanic_tone2":"1f9d1-1f3fc-200d-1f527.svg","mechanic_tone3":"1f9d1-1f3fd-200d-1f527.svg","mechanic_tone4":"1f9d1-1f3fe-200d-1f527.svg","mechanic_tone5":"1f9d1-1f3ff-200d-1f527.svg","mechanical_arm":"1f9be.svg","mechanical_leg":"1f9bf.svg","medal":"1f3c5.svg","medical_symbol":"2695.svg","mega":"1f4e3.svg","melon":"1f348.svg","men_holding_hands_tone1":"1f46c-1f3fb.svg","men_holding_hands_tone1_tone2":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc.svg","men_holding_hands_tone1_tone3":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd.svg","men_holding_hands_tone1_tone4":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe.svg","men_holding_hands_tone1_tone5":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff.svg","men_holding_hands_tone2":"1f46c-1f3fc.svg","men_holding_hands_tone2_tone1":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb.svg","men_holding_hands_tone2_tone3":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd.svg","men_holding_hands_tone2_tone4":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe.svg","men_holding_hands_tone2_tone5":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff.svg","men_holding_hands_tone3":"1f46c-1f3fd.svg","men_holding_hands_tone3_tone1":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb.svg","men_holding_hands_tone3_tone2":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc.svg","men_holding_hands_tone3_tone4":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe.svg","men_holding_hands_tone3_tone5":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff.svg","men_holding_hands_tone4":"1f46c-1f3fe.svg","men_holding_hands_tone4_tone1":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb.svg","men_holding_hands_tone4_tone2":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc.svg","men_holding_hands_tone4_tone3":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd.svg","men_holding_hands_tone4_tone5":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff.svg","men_holding_hands_tone5":"1f46c-1f3ff.svg","men_holding_hands_tone5_tone1":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb.svg","men_holding_hands_tone5_tone2":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc.svg","men_holding_hands_tone5_tone3":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd.svg","men_holding_hands_tone5_tone4":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe.svg","men_with_bunny_ears_partying":"1f46f-200d-2642-fe0f.svg","men_wrestling":"1f93c-200d-2642-fe0f.svg","mending_heart":"2764-fe0f-200d-1fa79.svg","menorah":"1f54e.svg","mens":"1f6b9.svg","mermaid":"1f9dc-200d-2640-fe0f.svg","mermaid_tone1":"1f9dc-1f3fb-200d-2640-fe0f.svg","mermaid_tone2":"1f9dc-1f3fc-200d-2640-fe0f.svg","mermaid_tone3":"1f9dc-1f3fd-200d-2640-fe0f.svg","mermaid_tone4":"1f9dc-1f3fe-200d-2640-fe0f.svg","mermaid_tone5":"1f9dc-1f3ff-200d-2640-fe0f.svg","merman":"1f9dc-200d-2642-fe0f.svg","merman_tone1":"1f9dc-1f3fb-200d-2642-fe0f.svg","merman_tone2":"1f9dc-1f3fc-200d-2642-fe0f.svg","merman_tone3":"1f9dc-1f3fd-200d-2642-fe0f.svg","merman_tone4":"1f9dc-1f3fe-200d-2642-fe0f.svg","merman_tone5":"1f9dc-1f3ff-200d-2642-fe0f.svg","merperson":"1f9dc.svg","merperson_tone1":"1f9dc-1f3fb.svg","merperson_tone2":"1f9dc-1f3fc.svg","merperson_tone3":"1f9dc-1f3fd.svg","merperson_tone4":"1f9dc-1f3fe.svg","merperson_tone5":"1f9dc-1f3ff.svg","metal":"1f918.svg","metal_tone1":"1f918-1f3fb.svg","metal_tone2":"1f918-1f3fc.svg","metal_tone3":"1f918-1f3fd.svg","metal_tone4":"1f918-1f3fe.svg","metal_tone5":"1f918-1f3ff.svg","metro":"1f687.svg","microbe":"1f9a0.svg","microphone2":"1f399.svg","microphone":"1f3a4.svg","microscope":"1f52c.svg","middle_finger":"1f595.svg","middle_finger_tone1":"1f595-1f3fb.svg","middle_finger_tone2":"1f595-1f3fc.svg","middle_finger_tone3":"1f595-1f3fd.svg","middle_finger_tone4":"1f595-1f3fe.svg","middle_finger_tone5":"1f595-1f3ff.svg","military_helmet":"1fa96.svg","military_medal":"1f396.svg","milk":"1f95b.svg","milky_way":"1f30c.svg","minibus":"1f690.svg","minidisc":"1f4bd.svg","mirror":"1fa9e.svg","mobile_phone":"1f4f1.svg","mobile_phone_off":"1f4f4.svg","money_mouth":"1f911.svg","money_with_wings":"1f4b8.svg","moneybag":"1f4b0.svg","monkey":"1f412.svg","monkey_face":"1f435.svg","monorail":"1f69d.svg","moon_cake":"1f96e.svg","mortar_board":"1f393.svg","mosque":"1f54c.svg","mosquito":"1f99f.svg","motor_scooter":"1f6f5.svg","motorboat":"1f6e5.svg","motorcycle":"1f3cd.svg","motorized_wheelchair":"1f9bc.svg","motorway":"1f6e3.svg","mount_fuji":"1f5fb.svg","mountain":"26f0.svg","mountain_cableway":"1f6a0.svg","mountain_railway":"1f69e.svg","mountain_snow":"1f3d4.svg","mouse2":"1f401.svg","mouse":"1f42d.svg","mouse_three_button":"1f5b1.svg","mouse_trap":"1faa4.svg","movie_camera":"1f3a5.svg","moyai":"1f5ff.svg","mrs_claus":"1f936.svg","mrs_claus_tone1":"1f936-1f3fb.svg","mrs_claus_tone2":"1f936-1f3fc.svg","mrs_claus_tone3":"1f936-1f3fd.svg","mrs_claus_tone4":"1f936-1f3fe.svg","mrs_claus_tone5":"1f936-1f3ff.svg","muscle":"1f4aa.svg","muscle_tone1":"1f4aa-1f3fb.svg","muscle_tone2":"1f4aa-1f3fc.svg","muscle_tone3":"1f4aa-1f3fd.svg","muscle_tone4":"1f4aa-1f3fe.svg","muscle_tone5":"1f4aa-1f3ff.svg","mushroom":"1f344.svg","musical_keyboard":"1f3b9.svg","musical_note":"1f3b5.svg","musical_score":"1f3bc.svg","mute":"1f507.svg","mx_claus":"1f9d1-200d-1f384.svg","mx_claus_tone1":"1f9d1-1f3fb-200d-1f384.svg","mx_claus_tone2":"1f9d1-1f3fc-200d-1f384.svg","mx_claus_tone3":"1f9d1-1f3fd-200d-1f384.svg","mx_claus_tone4":"1f9d1-1f3fe-200d-1f384.svg","mx_claus_tone5":"1f9d1-1f3ff-200d-1f384.svg","nail_care":"1f485.svg","nail_care_tone1":"1f485-1f3fb.svg","nail_care_tone2":"1f485-1f3fc.svg","nail_care_tone3":"1f485-1f3fd.svg","nail_care_tone4":"1f485-1f3fe.svg","nail_care_tone5":"1f485-1f3ff.svg","name_badge":"1f4db.svg","nauseated_face":"1f922.svg","nazar_amulet":"1f9ff.svg","necktie":"1f454.svg","negative_squared_cross_mark":"274e.svg","nerd":"1f913.svg","nesting_dolls":"1fa86.svg","neutral_face":"1f610.svg","new":"1f195.svg","new_moon":"1f311.svg","new_moon_with_face":"1f31a.svg","newspaper2":"1f5de.svg","newspaper":"1f4f0.svg","ng":"1f196.svg","night_with_stars":"1f303.svg","nine":"39-20e3.svg","ninja":"1f977.svg","ninja_tone1":"1f977-1f3fb.svg","ninja_tone2":"1f977-1f3fc.svg","ninja_tone3":"1f977-1f3fd.svg","ninja_tone4":"1f977-1f3fe.svg","ninja_tone5":"1f977-1f3ff.svg","no_bell":"1f515.svg","no_bicycles":"1f6b3.svg","no_entry":"26d4.svg","no_entry_sign":"1f6ab.svg","no_mobile_phones":"1f4f5.svg","no_mouth":"1f636.svg","no_pedestrians":"1f6b7.svg","no_smoking":"1f6ad.svg","non-potable_water":"1f6b1.svg","nose":"1f443.svg","nose_tone1":"1f443-1f3fb.svg","nose_tone2":"1f443-1f3fc.svg","nose_tone3":"1f443-1f3fd.svg","nose_tone4":"1f443-1f3fe.svg","nose_tone5":"1f443-1f3ff.svg","notebook":"1f4d3.svg","notebook_with_decorative_cover":"1f4d4.svg","notepad_spiral":"1f5d2.svg","notes":"1f3b6.svg","nut_and_bolt":"1f529.svg","o2":"1f17e.svg","o":"2b55.svg","ocean":"1f30a.svg","octagonal_sign":"1f6d1.svg","octopus":"1f419.svg","oden":"1f362.svg","office":"1f3e2.svg","office_worker":"1f9d1-200d-1f4bc.svg","office_worker_tone1":"1f9d1-1f3fb-200d-1f4bc.svg","office_worker_tone2":"1f9d1-1f3fc-200d-1f4bc.svg","office_worker_tone3":"1f9d1-1f3fd-200d-1f4bc.svg","office_worker_tone4":"1f9d1-1f3fe-200d-1f4bc.svg","office_worker_tone5":"1f9d1-1f3ff-200d-1f4bc.svg","oil":"1f6e2.svg","ok":"1f197.svg","ok_hand":"1f44c.svg","ok_hand_tone1":"1f44c-1f3fb.svg","ok_hand_tone2":"1f44c-1f3fc.svg","ok_hand_tone3":"1f44c-1f3fd.svg","ok_hand_tone4":"1f44c-1f3fe.svg","ok_hand_tone5":"1f44c-1f3ff.svg","older_adult":"1f9d3.svg","older_adult_tone1":"1f9d3-1f3fb.svg","older_adult_tone2":"1f9d3-1f3fc.svg","older_adult_tone3":"1f9d3-1f3fd.svg","older_adult_tone4":"1f9d3-1f3fe.svg","older_adult_tone5":"1f9d3-1f3ff.svg","older_man":"1f474.svg","older_man_tone1":"1f474-1f3fb.svg","older_man_tone2":"1f474-1f3fc.svg","older_man_tone3":"1f474-1f3fd.svg","older_man_tone4":"1f474-1f3fe.svg","older_man_tone5":"1f474-1f3ff.svg","older_woman":"1f475.svg","older_woman_tone1":"1f475-1f3fb.svg","older_woman_tone2":"1f475-1f3fc.svg","older_woman_tone3":"1f475-1f3fd.svg","older_woman_tone4":"1f475-1f3fe.svg","older_woman_tone5":"1f475-1f3ff.svg","olive":"1fad2.svg","om_symbol":"1f549.svg","on":"1f51b.svg","oncoming_automobile":"1f698.svg","oncoming_bus":"1f68d.svg","oncoming_police_car":"1f694.svg","oncoming_taxi":"1f696.svg","one":"31-20e3.svg","one_piece_swimsuit":"1fa71.svg","onion":"1f9c5.svg","open_file_folder":"1f4c2.svg","open_hands":"1f450.svg","open_hands_tone1":"1f450-1f3fb.svg","open_hands_tone2":"1f450-1f3fc.svg","open_hands_tone3":"1f450-1f3fd.svg","open_hands_tone4":"1f450-1f3fe.svg","open_hands_tone5":"1f450-1f3ff.svg","open_mouth":"1f62e.svg","ophiuchus":"26ce.svg","orange_book":"1f4d9.svg","orange_circle":"1f7e0.svg","orange_heart":"1f9e1.svg","orange_square":"1f7e7.svg","orangutan":"1f9a7.svg","orthodox_cross":"2626.svg","otter":"1f9a6.svg","outbox_tray":"1f4e4.svg","owl":"1f989.svg","ox":"1f402.svg","oyster":"1f9aa.svg","package":"1f4e6.svg","page_facing_up":"1f4c4.svg","page_with_curl":"1f4c3.svg","pager":"1f4df.svg","paintbrush":"1f58c.svg","palm_tree":"1f334.svg","palms_up_together":"1f932.svg","palms_up_together_tone1":"1f932-1f3fb.svg","palms_up_together_tone2":"1f932-1f3fc.svg","palms_up_together_tone3":"1f932-1f3fd.svg","palms_up_together_tone4":"1f932-1f3fe.svg","palms_up_together_tone5":"1f932-1f3ff.svg","pancakes":"1f95e.svg","panda_face":"1f43c.svg","paperclip":"1f4ce.svg","paperclips":"1f587.svg","parachute":"1fa82.svg","park":"1f3de.svg","parking":"1f17f.svg","parrot":"1f99c.svg","part_alternation_mark":"303d.svg","partly_sunny":"26c5.svg","partying_face":"1f973.svg","passport_control":"1f6c2.svg","pause_button":"23f8.svg","peace":"262e.svg","peach":"1f351.svg","peacock":"1f99a.svg","peanuts":"1f95c.svg","pear":"1f350.svg","pen_ballpoint":"1f58a.svg","pen_fountain":"1f58b.svg","pencil2":"270f.svg","pencil":"1f4dd.svg","penguin":"1f427.svg","pensive":"1f614.svg","people_holding_hands":"1f9d1-200d-1f91d-200d-1f9d1.svg","people_holding_hands_tone1":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb.svg","people_holding_hands_tone1_tone2":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc.svg","people_holding_hands_tone1_tone3":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd.svg","people_holding_hands_tone1_tone4":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe.svg","people_holding_hands_tone1_tone5":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff.svg","people_holding_hands_tone2":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc.svg","people_holding_hands_tone2_tone1":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb.svg","people_holding_hands_tone2_tone3":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd.svg","people_holding_hands_tone2_tone4":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe.svg","people_holding_hands_tone2_tone5":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff.svg","people_holding_hands_tone3":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd.svg","people_holding_hands_tone3_tone1":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb.svg","people_holding_hands_tone3_tone2":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc.svg","people_holding_hands_tone3_tone4":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe.svg","people_holding_hands_tone3_tone5":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff.svg","people_holding_hands_tone4":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe.svg","people_holding_hands_tone4_tone1":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb.svg","people_holding_hands_tone4_tone2":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc.svg","people_holding_hands_tone4_tone3":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd.svg","people_holding_hands_tone4_tone5":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff.svg","people_holding_hands_tone5":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff.svg","people_holding_hands_tone5_tone1":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb.svg","people_holding_hands_tone5_tone2":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc.svg","people_holding_hands_tone5_tone3":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd.svg","people_holding_hands_tone5_tone4":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe.svg","people_hugging":"1fac2.svg","people_with_bunny_ears_partying":"1f46f.svg","people_wrestling":"1f93c.svg","performing_arts":"1f3ad.svg","persevere":"1f623.svg","person_bald":"1f9d1-200d-1f9b2.svg","person_biking":"1f6b4.svg","person_biking_tone1":"1f6b4-1f3fb.svg","person_biking_tone2":"1f6b4-1f3fc.svg","person_biking_tone3":"1f6b4-1f3fd.svg","person_biking_tone4":"1f6b4-1f3fe.svg","person_biking_tone5":"1f6b4-1f3ff.svg","person_bouncing_ball":"26f9.svg","person_bouncing_ball_tone1":"26f9-1f3fb.svg","person_bouncing_ball_tone2":"26f9-1f3fc.svg","person_bouncing_ball_tone3":"26f9-1f3fd.svg","person_bouncing_ball_tone4":"26f9-1f3fe.svg","person_bouncing_ball_tone5":"26f9-1f3ff.svg","person_bowing":"1f647.svg","person_bowing_tone1":"1f647-1f3fb.svg","person_bowing_tone2":"1f647-1f3fc.svg","person_bowing_tone3":"1f647-1f3fd.svg","person_bowing_tone4":"1f647-1f3fe.svg","person_bowing_tone5":"1f647-1f3ff.svg","person_climbing":"1f9d7.svg","person_climbing_tone1":"1f9d7-1f3fb.svg","person_climbing_tone2":"1f9d7-1f3fc.svg","person_climbing_tone3":"1f9d7-1f3fd.svg","person_climbing_tone4":"1f9d7-1f3fe.svg","person_climbing_tone5":"1f9d7-1f3ff.svg","person_curly_hair":"1f9d1-200d-1f9b1.svg","person_doing_cartwheel":"1f938.svg","person_doing_cartwheel_tone1":"1f938-1f3fb.svg","person_doing_cartwheel_tone2":"1f938-1f3fc.svg","person_doing_cartwheel_tone3":"1f938-1f3fd.svg","person_doing_cartwheel_tone4":"1f938-1f3fe.svg","person_doing_cartwheel_tone5":"1f938-1f3ff.svg","person_facepalming":"1f926.svg","person_facepalming_tone1":"1f926-1f3fb.svg","person_facepalming_tone2":"1f926-1f3fc.svg","person_facepalming_tone3":"1f926-1f3fd.svg","person_facepalming_tone4":"1f926-1f3fe.svg","person_facepalming_tone5":"1f926-1f3ff.svg","person_feeding_baby":"1f9d1-200d-1f37c.svg","person_feeding_baby_tone1":"1f9d1-1f3fb-200d-1f37c.svg","person_feeding_baby_tone2":"1f9d1-1f3fc-200d-1f37c.svg","person_feeding_baby_tone3":"1f9d1-1f3fd-200d-1f37c.svg","person_feeding_baby_tone4":"1f9d1-1f3fe-200d-1f37c.svg","person_feeding_baby_tone5":"1f9d1-1f3ff-200d-1f37c.svg","person_fencing":"1f93a.svg","person_frowning":"1f64d.svg","person_frowning_tone1":"1f64d-1f3fb.svg","person_frowning_tone2":"1f64d-1f3fc.svg","person_frowning_tone3":"1f64d-1f3fd.svg","person_frowning_tone4":"1f64d-1f3fe.svg","person_frowning_tone5":"1f64d-1f3ff.svg","person_gesturing_no":"1f645.svg","person_gesturing_no_tone1":"1f645-1f3fb.svg","person_gesturing_no_tone2":"1f645-1f3fc.svg","person_gesturing_no_tone3":"1f645-1f3fd.svg","person_gesturing_no_tone4":"1f645-1f3fe.svg","person_gesturing_no_tone5":"1f645-1f3ff.svg","person_gesturing_ok":"1f646.svg","person_gesturing_ok_tone1":"1f646-1f3fb.svg","person_gesturing_ok_tone2":"1f646-1f3fc.svg","person_gesturing_ok_tone3":"1f646-1f3fd.svg","person_gesturing_ok_tone4":"1f646-1f3fe.svg","person_gesturing_ok_tone5":"1f646-1f3ff.svg","person_getting_haircut":"1f487.svg","person_getting_haircut_tone1":"1f487-1f3fb.svg","person_getting_haircut_tone2":"1f487-1f3fc.svg","person_getting_haircut_tone3":"1f487-1f3fd.svg","person_getting_haircut_tone4":"1f487-1f3fe.svg","person_getting_haircut_tone5":"1f487-1f3ff.svg","person_getting_massage":"1f486.svg","person_getting_massage_tone1":"1f486-1f3fb.svg","person_getting_massage_tone2":"1f486-1f3fc.svg","person_getting_massage_tone3":"1f486-1f3fd.svg","person_getting_massage_tone4":"1f486-1f3fe.svg","person_getting_massage_tone5":"1f486-1f3ff.svg","person_golfing":"1f3cc.svg","person_golfing_tone1":"1f3cc-1f3fb.svg","person_golfing_tone2":"1f3cc-1f3fc.svg","person_golfing_tone3":"1f3cc-1f3fd.svg","person_golfing_tone4":"1f3cc-1f3fe.svg","person_golfing_tone5":"1f3cc-1f3ff.svg","person_in_bed_tone1":"1f6cc-1f3fb.svg","person_in_bed_tone2":"1f6cc-1f3fc.svg","person_in_bed_tone3":"1f6cc-1f3fd.svg","person_in_bed_tone4":"1f6cc-1f3fe.svg","person_in_bed_tone5":"1f6cc-1f3ff.svg","person_in_lotus_position":"1f9d8.svg","person_in_lotus_position_tone1":"1f9d8-1f3fb.svg","person_in_lotus_position_tone2":"1f9d8-1f3fc.svg","person_in_lotus_position_tone3":"1f9d8-1f3fd.svg","person_in_lotus_position_tone4":"1f9d8-1f3fe.svg","person_in_lotus_position_tone5":"1f9d8-1f3ff.svg","person_in_manual_wheelchair":"1f9d1-200d-1f9bd.svg","person_in_manual_wheelchair_tone1":"1f9d1-1f3fb-200d-1f9bd.svg","person_in_manual_wheelchair_tone2":"1f9d1-1f3fc-200d-1f9bd.svg","person_in_manual_wheelchair_tone3":"1f9d1-1f3fd-200d-1f9bd.svg","person_in_manual_wheelchair_tone4":"1f9d1-1f3fe-200d-1f9bd.svg","person_in_manual_wheelchair_tone5":"1f9d1-1f3ff-200d-1f9bd.svg","person_in_motorized_wheelchair":"1f9d1-200d-1f9bc.svg","person_in_motorized_wheelchair_tone1":"1f9d1-1f3fb-200d-1f9bc.svg","person_in_motorized_wheelchair_tone2":"1f9d1-1f3fc-200d-1f9bc.svg","person_in_motorized_wheelchair_tone3":"1f9d1-1f3fd-200d-1f9bc.svg","person_in_motorized_wheelchair_tone4":"1f9d1-1f3fe-200d-1f9bc.svg","person_in_motorized_wheelchair_tone5":"1f9d1-1f3ff-200d-1f9bc.svg","person_in_steamy_room":"1f9d6.svg","person_in_steamy_room_tone1":"1f9d6-1f3fb.svg","person_in_steamy_room_tone2":"1f9d6-1f3fc.svg","person_in_steamy_room_tone3":"1f9d6-1f3fd.svg","person_in_steamy_room_tone4":"1f9d6-1f3fe.svg","person_in_steamy_room_tone5":"1f9d6-1f3ff.svg","person_in_tuxedo":"1f935.svg","person_in_tuxedo_tone1":"1f935-1f3fb.svg","person_in_tuxedo_tone2":"1f935-1f3fc.svg","person_in_tuxedo_tone3":"1f935-1f3fd.svg","person_in_tuxedo_tone4":"1f935-1f3fe.svg","person_in_tuxedo_tone5":"1f935-1f3ff.svg","person_juggling":"1f939.svg","person_juggling_tone1":"1f939-1f3fb.svg","person_juggling_tone2":"1f939-1f3fc.svg","person_juggling_tone3":"1f939-1f3fd.svg","person_juggling_tone4":"1f939-1f3fe.svg","person_juggling_tone5":"1f939-1f3ff.svg","person_kneeling":"1f9ce.svg","person_kneeling_tone1":"1f9ce-1f3fb.svg","person_kneeling_tone2":"1f9ce-1f3fc.svg","person_kneeling_tone3":"1f9ce-1f3fd.svg","person_kneeling_tone4":"1f9ce-1f3fe.svg","person_kneeling_tone5":"1f9ce-1f3ff.svg","person_lifting_weights":"1f3cb.svg","person_lifting_weights_tone1":"1f3cb-1f3fb.svg","person_lifting_weights_tone2":"1f3cb-1f3fc.svg","person_lifting_weights_tone3":"1f3cb-1f3fd.svg","person_lifting_weights_tone4":"1f3cb-1f3fe.svg","person_lifting_weights_tone5":"1f3cb-1f3ff.svg","person_mountain_biking":"1f6b5.svg","person_mountain_biking_tone1":"1f6b5-1f3fb.svg","person_mountain_biking_tone2":"1f6b5-1f3fc.svg","person_mountain_biking_tone3":"1f6b5-1f3fd.svg","person_mountain_biking_tone4":"1f6b5-1f3fe.svg","person_mountain_biking_tone5":"1f6b5-1f3ff.svg","person_playing_handball":"1f93e.svg","person_playing_handball_tone1":"1f93e-1f3fb.svg","person_playing_handball_tone2":"1f93e-1f3fc.svg","person_playing_handball_tone3":"1f93e-1f3fd.svg","person_playing_handball_tone4":"1f93e-1f3fe.svg","person_playing_handball_tone5":"1f93e-1f3ff.svg","person_playing_water_polo":"1f93d.svg","person_playing_water_polo_tone1":"1f93d-1f3fb.svg","person_playing_water_polo_tone2":"1f93d-1f3fc.svg","person_playing_water_polo_tone3":"1f93d-1f3fd.svg","person_playing_water_polo_tone4":"1f93d-1f3fe.svg","person_playing_water_polo_tone5":"1f93d-1f3ff.svg","person_pouting":"1f64e.svg","person_pouting_tone1":"1f64e-1f3fb.svg","person_pouting_tone2":"1f64e-1f3fc.svg","person_pouting_tone3":"1f64e-1f3fd.svg","person_pouting_tone4":"1f64e-1f3fe.svg","person_pouting_tone5":"1f64e-1f3ff.svg","person_raising_hand":"1f64b.svg","person_raising_hand_tone1":"1f64b-1f3fb.svg","person_raising_hand_tone2":"1f64b-1f3fc.svg","person_raising_hand_tone3":"1f64b-1f3fd.svg","person_raising_hand_tone4":"1f64b-1f3fe.svg","person_raising_hand_tone5":"1f64b-1f3ff.svg","person_red_hair":"1f9d1-200d-1f9b0.svg","person_rowing_boat":"1f6a3.svg","person_rowing_boat_tone1":"1f6a3-1f3fb.svg","person_rowing_boat_tone2":"1f6a3-1f3fc.svg","person_rowing_boat_tone3":"1f6a3-1f3fd.svg","person_rowing_boat_tone4":"1f6a3-1f3fe.svg","person_rowing_boat_tone5":"1f6a3-1f3ff.svg","person_running":"1f3c3.svg","person_running_tone1":"1f3c3-1f3fb.svg","person_running_tone2":"1f3c3-1f3fc.svg","person_running_tone3":"1f3c3-1f3fd.svg","person_running_tone4":"1f3c3-1f3fe.svg","person_running_tone5":"1f3c3-1f3ff.svg","person_shrugging":"1f937.svg","person_shrugging_tone1":"1f937-1f3fb.svg","person_shrugging_tone2":"1f937-1f3fc.svg","person_shrugging_tone3":"1f937-1f3fd.svg","person_shrugging_tone4":"1f937-1f3fe.svg","person_shrugging_tone5":"1f937-1f3ff.svg","person_standing":"1f9cd.svg","person_standing_tone1":"1f9cd-1f3fb.svg","person_standing_tone2":"1f9cd-1f3fc.svg","person_standing_tone3":"1f9cd-1f3fd.svg","person_standing_tone4":"1f9cd-1f3fe.svg","person_standing_tone5":"1f9cd-1f3ff.svg","person_surfing":"1f3c4.svg","person_surfing_tone1":"1f3c4-1f3fb.svg","person_surfing_tone2":"1f3c4-1f3fc.svg","person_surfing_tone3":"1f3c4-1f3fd.svg","person_surfing_tone4":"1f3c4-1f3fe.svg","person_surfing_tone5":"1f3c4-1f3ff.svg","person_swimming":"1f3ca.svg","person_swimming_tone1":"1f3ca-1f3fb.svg","person_swimming_tone2":"1f3ca-1f3fc.svg","person_swimming_tone3":"1f3ca-1f3fd.svg","person_swimming_tone4":"1f3ca-1f3fe.svg","person_swimming_tone5":"1f3ca-1f3ff.svg","person_tipping_hand":"1f481.svg","person_tipping_hand_tone1":"1f481-1f3fb.svg","person_tipping_hand_tone2":"1f481-1f3fc.svg","person_tipping_hand_tone3":"1f481-1f3fd.svg","person_tipping_hand_tone4":"1f481-1f3fe.svg","person_tipping_hand_tone5":"1f481-1f3ff.svg","person_tone1_bald":"1f9d1-1f3fb-200d-1f9b2.svg","person_tone1_curly_hair":"1f9d1-1f3fb-200d-1f9b1.svg","person_tone1_red_hair":"1f9d1-1f3fb-200d-1f9b0.svg","person_tone1_white_hair":"1f9d1-1f3fb-200d-1f9b3.svg","person_tone2_bald":"1f9d1-1f3fc-200d-1f9b2.svg","person_tone2_curly_hair":"1f9d1-1f3fc-200d-1f9b1.svg","person_tone2_red_hair":"1f9d1-1f3fc-200d-1f9b0.svg","person_tone2_white_hair":"1f9d1-1f3fc-200d-1f9b3.svg","person_tone3_bald":"1f9d1-1f3fd-200d-1f9b2.svg","person_tone3_curly_hair":"1f9d1-1f3fd-200d-1f9b1.svg","person_tone3_red_hair":"1f9d1-1f3fd-200d-1f9b0.svg","person_tone3_white_hair":"1f9d1-1f3fd-200d-1f9b3.svg","person_tone4_bald":"1f9d1-1f3fe-200d-1f9b2.svg","person_tone4_curly_hair":"1f9d1-1f3fe-200d-1f9b1.svg","person_tone4_red_hair":"1f9d1-1f3fe-200d-1f9b0.svg","person_tone4_white_hair":"1f9d1-1f3fe-200d-1f9b3.svg","person_tone5_bald":"1f9d1-1f3ff-200d-1f9b2.svg","person_tone5_curly_hair":"1f9d1-1f3ff-200d-1f9b1.svg","person_tone5_red_hair":"1f9d1-1f3ff-200d-1f9b0.svg","person_tone5_white_hair":"1f9d1-1f3ff-200d-1f9b3.svg","person_walking":"1f6b6.svg","person_walking_tone1":"1f6b6-1f3fb.svg","person_walking_tone2":"1f6b6-1f3fc.svg","person_walking_tone3":"1f6b6-1f3fd.svg","person_walking_tone4":"1f6b6-1f3fe.svg","person_walking_tone5":"1f6b6-1f3ff.svg","person_wearing_turban":"1f473.svg","person_wearing_turban_tone1":"1f473-1f3fb.svg","person_wearing_turban_tone2":"1f473-1f3fc.svg","person_wearing_turban_tone3":"1f473-1f3fd.svg","person_wearing_turban_tone4":"1f473-1f3fe.svg","person_wearing_turban_tone5":"1f473-1f3ff.svg","person_white_hair":"1f9d1-200d-1f9b3.svg","person_with_probing_cane":"1f9d1-200d-1f9af.svg","person_with_probing_cane_tone1":"1f9d1-1f3fb-200d-1f9af.svg","person_with_probing_cane_tone2":"1f9d1-1f3fc-200d-1f9af.svg","person_with_probing_cane_tone3":"1f9d1-1f3fd-200d-1f9af.svg","person_with_probing_cane_tone4":"1f9d1-1f3fe-200d-1f9af.svg","person_with_probing_cane_tone5":"1f9d1-1f3ff-200d-1f9af.svg","person_with_veil":"1f470.svg","person_with_veil_tone1":"1f470-1f3fb.svg","person_with_veil_tone2":"1f470-1f3fc.svg","person_with_veil_tone3":"1f470-1f3fd.svg","person_with_veil_tone4":"1f470-1f3fe.svg","person_with_veil_tone5":"1f470-1f3ff.svg","petri_dish":"1f9eb.svg","pick":"26cf.svg","pickup_truck":"1f6fb.svg","pie":"1f967.svg","pig2":"1f416.svg","pig":"1f437.svg","pig_nose":"1f43d.svg","pill":"1f48a.svg","pilot":"1f9d1-200d-2708-fe0f.svg","pilot_tone1":"1f9d1-1f3fb-200d-2708-fe0f.svg","pilot_tone2":"1f9d1-1f3fc-200d-2708-fe0f.svg","pilot_tone3":"1f9d1-1f3fd-200d-2708-fe0f.svg","pilot_tone4":"1f9d1-1f3fe-200d-2708-fe0f.svg","pilot_tone5":"1f9d1-1f3ff-200d-2708-fe0f.svg","pinched_fingers":"1f90c.svg","pinched_fingers_tone1":"1f90c-1f3fb.svg","pinched_fingers_tone2":"1f90c-1f3fc.svg","pinched_fingers_tone3":"1f90c-1f3fd.svg","pinched_fingers_tone4":"1f90c-1f3fe.svg","pinched_fingers_tone5":"1f90c-1f3ff.svg","pinching_hand":"1f90f.svg","pinching_hand_tone1":"1f90f-1f3fb.svg","pinching_hand_tone2":"1f90f-1f3fc.svg","pinching_hand_tone3":"1f90f-1f3fd.svg","pinching_hand_tone4":"1f90f-1f3fe.svg","pinching_hand_tone5":"1f90f-1f3ff.svg","pineapple":"1f34d.svg","ping_pong":"1f3d3.svg","pirate_flag":"1f3f4-200d-2620-fe0f.svg","pisces":"2653.svg","pizza":"1f355.svg","piñata":"1fa85.svg","placard":"1faa7.svg","place_of_worship":"1f6d0.svg","play_pause":"23ef.svg","pleading_face":"1f97a.svg","plunger":"1faa0.svg","point_down":"1f447.svg","point_down_tone1":"1f447-1f3fb.svg","point_down_tone2":"1f447-1f3fc.svg","point_down_tone3":"1f447-1f3fd.svg","point_down_tone4":"1f447-1f3fe.svg","point_down_tone5":"1f447-1f3ff.svg","point_left":"1f448.svg","point_left_tone1":"1f448-1f3fb.svg","point_left_tone2":"1f448-1f3fc.svg","point_left_tone3":"1f448-1f3fd.svg","point_left_tone4":"1f448-1f3fe.svg","point_left_tone5":"1f448-1f3ff.svg","point_right":"1f449.svg","point_right_tone1":"1f449-1f3fb.svg","point_right_tone2":"1f449-1f3fc.svg","point_right_tone3":"1f449-1f3fd.svg","point_right_tone4":"1f449-1f3fe.svg","point_right_tone5":"1f449-1f3ff.svg","point_up":"261d.svg","point_up_2":"1f446.svg","point_up_2_tone1":"1f446-1f3fb.svg","point_up_2_tone2":"1f446-1f3fc.svg","point_up_2_tone3":"1f446-1f3fd.svg","point_up_2_tone4":"1f446-1f3fe.svg","point_up_2_tone5":"1f446-1f3ff.svg","point_up_tone1":"261d-1f3fb.svg","point_up_tone2":"261d-1f3fc.svg","point_up_tone3":"261d-1f3fd.svg","point_up_tone4":"261d-1f3fe.svg","point_up_tone5":"261d-1f3ff.svg","polar_bear":"1f43b-200d-2744-fe0f.svg","police_car":"1f693.svg","police_officer":"1f46e.svg","police_officer_tone1":"1f46e-1f3fb.svg","police_officer_tone2":"1f46e-1f3fc.svg","police_officer_tone3":"1f46e-1f3fd.svg","police_officer_tone4":"1f46e-1f3fe.svg","police_officer_tone5":"1f46e-1f3ff.svg","poodle":"1f429.svg","poop":"1f4a9.svg","popcorn":"1f37f.svg","post_office":"1f3e3.svg","postal_horn":"1f4ef.svg","postbox":"1f4ee.svg","potable_water":"1f6b0.svg","potato":"1f954.svg","potted_plant":"1fab4.svg","pouch":"1f45d.svg","poultry_leg":"1f357.svg","pound":"1f4b7.svg","pouting_cat":"1f63e.svg","pray":"1f64f.svg","pray_tone1":"1f64f-1f3fb.svg","pray_tone2":"1f64f-1f3fc.svg","pray_tone3":"1f64f-1f3fd.svg","pray_tone4":"1f64f-1f3fe.svg","pray_tone5":"1f64f-1f3ff.svg","prayer_beads":"1f4ff.svg","pregnant_woman":"1f930.svg","pregnant_woman_tone1":"1f930-1f3fb.svg","pregnant_woman_tone2":"1f930-1f3fc.svg","pregnant_woman_tone3":"1f930-1f3fd.svg","pregnant_woman_tone4":"1f930-1f3fe.svg","pregnant_woman_tone5":"1f930-1f3ff.svg","pretzel":"1f968.svg","prince":"1f934.svg","prince_tone1":"1f934-1f3fb.svg","prince_tone2":"1f934-1f3fc.svg","prince_tone3":"1f934-1f3fd.svg","prince_tone4":"1f934-1f3fe.svg","prince_tone5":"1f934-1f3ff.svg","princess":"1f478.svg","princess_tone1":"1f478-1f3fb.svg","princess_tone2":"1f478-1f3fc.svg","princess_tone3":"1f478-1f3fd.svg","princess_tone4":"1f478-1f3fe.svg","princess_tone5":"1f478-1f3ff.svg","printer":"1f5a8.svg","probing_cane":"1f9af.svg","projector":"1f4fd.svg","punch":"1f44a.svg","punch_tone1":"1f44a-1f3fb.svg","punch_tone2":"1f44a-1f3fc.svg","punch_tone3":"1f44a-1f3fd.svg","punch_tone4":"1f44a-1f3fe.svg","punch_tone5":"1f44a-1f3ff.svg","purple_circle":"1f7e3.svg","purple_heart":"1f49c.svg","purple_square":"1f7ea.svg","purse":"1f45b.svg","pushpin":"1f4cc.svg","put_litter_in_its_place":"1f6ae.svg","question":"2753.svg","rabbit2":"1f407.svg","rabbit":"1f430.svg","raccoon":"1f99d.svg","race_car":"1f3ce.svg","racehorse":"1f40e.svg","radio":"1f4fb.svg","radio_button":"1f518.svg","radioactive":"2622.svg","rage":"1f621.svg","railway_car":"1f683.svg","railway_track":"1f6e4.svg","rainbow":"1f308.svg","rainbow_flag":"1f3f3-fe0f-200d-1f308.svg","raised_back_of_hand":"1f91a.svg","raised_back_of_hand_tone1":"1f91a-1f3fb.svg","raised_back_of_hand_tone2":"1f91a-1f3fc.svg","raised_back_of_hand_tone3":"1f91a-1f3fd.svg","raised_back_of_hand_tone4":"1f91a-1f3fe.svg","raised_back_of_hand_tone5":"1f91a-1f3ff.svg","raised_hand":"270b.svg","raised_hand_tone1":"270b-1f3fb.svg","raised_hand_tone2":"270b-1f3fc.svg","raised_hand_tone3":"270b-1f3fd.svg","raised_hand_tone4":"270b-1f3fe.svg","raised_hand_tone5":"270b-1f3ff.svg","raised_hands":"1f64c.svg","raised_hands_tone1":"1f64c-1f3fb.svg","raised_hands_tone2":"1f64c-1f3fc.svg","raised_hands_tone3":"1f64c-1f3fd.svg","raised_hands_tone4":"1f64c-1f3fe.svg","raised_hands_tone5":"1f64c-1f3ff.svg","ram":"1f40f.svg","ramen":"1f35c.svg","rat":"1f400.svg","razor":"1fa92.svg","receipt":"1f9fe.svg","record_button":"23fa.svg","recycle":"267b.svg","red_car":"1f697.svg","red_circle":"1f534.svg","red_envelope":"1f9e7.svg","red_haired":"1f9b0.svg","red_square":"1f7e5.svg","regional_indicator_a":"1f1e6.svg","regional_indicator_b":"1f1e7.svg","regional_indicator_c":"1f1e8.svg","regional_indicator_d":"1f1e9.svg","regional_indicator_e":"1f1ea.svg","regional_indicator_f":"1f1eb.svg","regional_indicator_g":"1f1ec.svg","regional_indicator_h":"1f1ed.svg","regional_indicator_i":"1f1ee.svg","regional_indicator_j":"1f1ef.svg","regional_indicator_k":"1f1f0.svg","regional_indicator_l":"1f1f1.svg","regional_indicator_m":"1f1f2.svg","regional_indicator_n":"1f1f3.svg","regional_indicator_o":"1f1f4.svg","regional_indicator_p":"1f1f5.svg","regional_indicator_q":"1f1f6.svg","regional_indicator_r":"1f1f7.svg","regional_indicator_s":"1f1f8.svg","regional_indicator_t":"1f1f9.svg","regional_indicator_u":"1f1fa.svg","regional_indicator_v":"1f1fb.svg","regional_indicator_w":"1f1fc.svg","regional_indicator_x":"1f1fd.svg","regional_indicator_y":"1f1fe.svg","regional_indicator_z":"1f1ff.svg","registered":"ae.svg","relaxed":"263a.svg","relieved":"1f60c.svg","reminder_ribbon":"1f397.svg","repeat":"1f501.svg","repeat_one":"1f502.svg","restroom":"1f6bb.svg","revolving_hearts":"1f49e.svg","rewind":"23ea.svg","rhino":"1f98f.svg","ribbon":"1f380.svg","rice":"1f35a.svg","rice_ball":"1f359.svg","rice_cracker":"1f358.svg","rice_scene":"1f391.svg","right_facing_fist":"1f91c.svg","right_facing_fist_tone1":"1f91c-1f3fb.svg","right_facing_fist_tone2":"1f91c-1f3fc.svg","right_facing_fist_tone3":"1f91c-1f3fd.svg","right_facing_fist_tone4":"1f91c-1f3fe.svg","right_facing_fist_tone5":"1f91c-1f3ff.svg","ring":"1f48d.svg","ringed_planet":"1fa90.svg","robot":"1f916.svg","rock":"1faa8.svg","rocket":"1f680.svg","rofl":"1f923.svg","roll_of_paper":"1f9fb.svg","roller_coaster":"1f3a2.svg","roller_skate":"1f6fc.svg","rolling_eyes":"1f644.svg","rooster":"1f413.svg","rose":"1f339.svg","rosette":"1f3f5.svg","rotating_light":"1f6a8.svg","round_pushpin":"1f4cd.svg","rugby_football":"1f3c9.svg","running_shirt_with_sash":"1f3bd.svg","sa":"1f202.svg","safety_pin":"1f9f7.svg","safety_vest":"1f9ba.svg","sagittarius":"2650.svg","sailboat":"26f5.svg","sake":"1f376.svg","salad":"1f957.svg","salt":"1f9c2.svg","sandal":"1f461.svg","sandwich":"1f96a.svg","santa":"1f385.svg","santa_tone1":"1f385-1f3fb.svg","santa_tone2":"1f385-1f3fc.svg","santa_tone3":"1f385-1f3fd.svg","santa_tone4":"1f385-1f3fe.svg","santa_tone5":"1f385-1f3ff.svg","sari":"1f97b.svg","satellite":"1f4e1.svg","satellite_orbital":"1f6f0.svg","sauropod":"1f995.svg","saxophone":"1f3b7.svg","scales":"2696.svg","scarf":"1f9e3.svg","school":"1f3eb.svg","school_satchel":"1f392.svg","scientist":"1f9d1-200d-1f52c.svg","scientist_tone1":"1f9d1-1f3fb-200d-1f52c.svg","scientist_tone2":"1f9d1-1f3fc-200d-1f52c.svg","scientist_tone3":"1f9d1-1f3fd-200d-1f52c.svg","scientist_tone4":"1f9d1-1f3fe-200d-1f52c.svg","scientist_tone5":"1f9d1-1f3ff-200d-1f52c.svg","scissors":"2702.svg","scooter":"1f6f4.svg","scorpion":"1f982.svg","scorpius":"264f.svg","scotland":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.svg","scream":"1f631.svg","scream_cat":"1f640.svg","screwdriver":"1fa9b.svg","scroll":"1f4dc.svg","seal":"1f9ad.svg","seat":"1f4ba.svg","second_place":"1f948.svg","secret":"3299.svg","see_no_evil":"1f648.svg","seedling":"1f331.svg","selfie":"1f933.svg","selfie_tone1":"1f933-1f3fb.svg","selfie_tone2":"1f933-1f3fc.svg","selfie_tone3":"1f933-1f3fd.svg","selfie_tone4":"1f933-1f3fe.svg","selfie_tone5":"1f933-1f3ff.svg","service_dog":"1f415-200d-1f9ba.svg","seven":"37-20e3.svg","sewing_needle":"1faa1.svg","shallow_pan_of_food":"1f958.svg","shamrock":"2618.svg","shark":"1f988.svg","shaved_ice":"1f367.svg","sheep":"1f411.svg","shell":"1f41a.svg","shibuya":"e50a.svg","shield":"1f6e1.svg","shinto_shrine":"26e9.svg","ship":"1f6a2.svg","shirt":"1f455.svg","shopping_bags":"1f6cd.svg","shopping_cart":"1f6d2.svg","shorts":"1fa73.svg","shower":"1f6bf.svg","shrimp":"1f990.svg","shushing_face":"1f92b.svg","signal_strength":"1f4f6.svg","singer":"1f9d1-200d-1f3a4.svg","singer_tone1":"1f9d1-1f3fb-200d-1f3a4.svg","singer_tone2":"1f9d1-1f3fc-200d-1f3a4.svg","singer_tone3":"1f9d1-1f3fd-200d-1f3a4.svg","singer_tone4":"1f9d1-1f3fe-200d-1f3a4.svg","singer_tone5":"1f9d1-1f3ff-200d-1f3a4.svg","six":"36-20e3.svg","six_pointed_star":"1f52f.svg","skateboard":"1f6f9.svg","ski":"1f3bf.svg","skier":"26f7.svg","skier_tone1":"26f7-1f3fb.svg","skier_tone2":"26f7-1f3fc.svg","skier_tone3":"26f7-1f3fd.svg","skier_tone4":"26f7-1f3fe.svg","skier_tone5":"26f7-1f3ff.svg","skull":"1f480.svg","skull_crossbones":"2620.svg","skunk":"1f9a8.svg","sled":"1f6f7.svg","sleeping":"1f634.svg","sleeping_accommodation":"1f6cc.svg","sleepy":"1f62a.svg","slight_frown":"1f641.svg","slight_smile":"1f642.svg","slot_machine":"1f3b0.svg","sloth":"1f9a5.svg","small_blue_diamond":"1f539.svg","small_orange_diamond":"1f538.svg","small_red_triangle":"1f53a.svg","small_red_triangle_down":"1f53b.svg","smile":"1f604.svg","smile_cat":"1f638.svg","smiley":"1f603.svg","smiley_cat":"1f63a.svg","smiling_face_with_3_hearts":"1f970.svg","smiling_face_with_tear":"1f972.svg","smiling_imp":"1f608.svg","smirk":"1f60f.svg","smirk_cat":"1f63c.svg","smoking":"1f6ac.svg","snail":"1f40c.svg","snake":"1f40d.svg","sneezing_face":"1f927.svg","snowboarder":"1f3c2.svg","snowboarder_tone1":"1f3c2-1f3fb.svg","snowboarder_tone2":"1f3c2-1f3fc.svg","snowboarder_tone3":"1f3c2-1f3fd.svg","snowboarder_tone4":"1f3c2-1f3fe.svg","snowboarder_tone5":"1f3c2-1f3ff.svg","snowflake":"2744.svg","snowman2":"2603.svg","snowman":"26c4.svg","soap":"1f9fc.svg","sob":"1f62d.svg","soccer":"26bd.svg","socks":"1f9e6.svg","softball":"1f94e.svg","soon":"1f51c.svg","sos":"1f198.svg","sound":"1f509.svg","space_invader":"1f47e.svg","spades":"2660.svg","spaghetti":"1f35d.svg","sparkle":"2747.svg","sparkler":"1f387.svg","sparkles":"2728.svg","sparkling_heart":"1f496.svg","speak_no_evil":"1f64a.svg","speaker":"1f508.svg","speaking_head":"1f5e3.svg","speech_balloon":"1f4ac.svg","speech_left":"1f5e8.svg","speedboat":"1f6a4.svg","spider":"1f577.svg","spider_web":"1f578.svg","sponge":"1f9fd.svg","spoon":"1f944.svg","squeeze_bottle":"1f9f4.svg","squid":"1f991.svg","stadium":"1f3df.svg","star2":"1f31f.svg","star":"2b50.svg","star_and_crescent":"262a.svg","star_of_david":"2721.svg","star_struck":"1f929.svg","stars":"1f320.svg","station":"1f689.svg","statue_of_liberty":"1f5fd.svg","steam_locomotive":"1f682.svg","stethoscope":"1fa7a.svg","stew":"1f372.svg","stop_button":"23f9.svg","stopwatch":"23f1.svg","straight_ruler":"1f4cf.svg","strawberry":"1f353.svg","stuck_out_tongue":"1f61b.svg","stuck_out_tongue_closed_eyes":"1f61d.svg","stuck_out_tongue_winking_eye":"1f61c.svg","student":"1f9d1-200d-1f393.svg","student_tone1":"1f9d1-1f3fb-200d-1f393.svg","student_tone2":"1f9d1-1f3fc-200d-1f393.svg","student_tone3":"1f9d1-1f3fd-200d-1f393.svg","student_tone4":"1f9d1-1f3fe-200d-1f393.svg","student_tone5":"1f9d1-1f3ff-200d-1f393.svg","stuffed_flatbread":"1f959.svg","sun_with_face":"1f31e.svg","sunflower":"1f33b.svg","sunglasses":"1f60e.svg","sunny":"2600.svg","sunrise":"1f305.svg","sunrise_over_mountains":"1f304.svg","superhero":"1f9b8.svg","superhero_tone1":"1f9b8-1f3fb.svg","superhero_tone2":"1f9b8-1f3fc.svg","superhero_tone3":"1f9b8-1f3fd.svg","superhero_tone4":"1f9b8-1f3fe.svg","superhero_tone5":"1f9b8-1f3ff.svg","supervillain":"1f9b9.svg","supervillain_tone1":"1f9b9-1f3fb.svg","supervillain_tone2":"1f9b9-1f3fc.svg","supervillain_tone3":"1f9b9-1f3fd.svg","supervillain_tone4":"1f9b9-1f3fe.svg","supervillain_tone5":"1f9b9-1f3ff.svg","sushi":"1f363.svg","suspension_railway":"1f69f.svg","swan":"1f9a2.svg","sweat":"1f613.svg","sweat_drops":"1f4a6.svg","sweat_smile":"1f605.svg","sweet_potato":"1f360.svg","symbols":"1f523.svg","synagogue":"1f54d.svg","syringe":"1f489.svg","t_rex":"1f996.svg","taco":"1f32e.svg","tada":"1f389.svg","takeout_box":"1f961.svg","tamale":"1fad4.svg","tanabata_tree":"1f38b.svg","tangerine":"1f34a.svg","taurus":"2649.svg","taxi":"1f695.svg","tea":"1f375.svg","teacher":"1f9d1-200d-1f3eb.svg","teacher_tone1":"1f9d1-1f3fb-200d-1f3eb.svg","teacher_tone2":"1f9d1-1f3fc-200d-1f3eb.svg","teacher_tone3":"1f9d1-1f3fd-200d-1f3eb.svg","teacher_tone4":"1f9d1-1f3fe-200d-1f3eb.svg","teacher_tone5":"1f9d1-1f3ff-200d-1f3eb.svg","teapot":"1fad6.svg","technologist":"1f9d1-200d-1f4bb.svg","technologist_tone1":"1f9d1-1f3fb-200d-1f4bb.svg","technologist_tone2":"1f9d1-1f3fc-200d-1f4bb.svg","technologist_tone3":"1f9d1-1f3fd-200d-1f4bb.svg","technologist_tone4":"1f9d1-1f3fe-200d-1f4bb.svg","technologist_tone5":"1f9d1-1f3ff-200d-1f4bb.svg","teddy_bear":"1f9f8.svg","telephone":"260e.svg","telephone_receiver":"1f4de.svg","telescope":"1f52d.svg","tennis":"1f3be.svg","tent":"26fa.svg","test_tube":"1f9ea.svg","thermometer":"1f321.svg","thermometer_face":"1f912.svg","thinking":"1f914.svg","third_place":"1f949.svg","thong_sandal":"1fa74.svg","thought_balloon":"1f4ad.svg","thread":"1f9f5.svg","three":"33-20e3.svg","thumbsdown":"1f44e.svg","thumbsdown_tone1":"1f44e-1f3fb.svg","thumbsdown_tone2":"1f44e-1f3fc.svg","thumbsdown_tone3":"1f44e-1f3fd.svg","thumbsdown_tone4":"1f44e-1f3fe.svg","thumbsdown_tone5":"1f44e-1f3ff.svg","thumbsup":"1f44d.svg","thumbsup_tone1":"1f44d-1f3fb.svg","thumbsup_tone2":"1f44d-1f3fc.svg","thumbsup_tone3":"1f44d-1f3fd.svg","thumbsup_tone4":"1f44d-1f3fe.svg","thumbsup_tone5":"1f44d-1f3ff.svg","thunder_cloud_rain":"26c8.svg","ticket":"1f3ab.svg","tickets":"1f39f.svg","tiger2":"1f405.svg","tiger":"1f42f.svg","timer":"23f2.svg","tired_face":"1f62b.svg","tm":"2122.svg","toilet":"1f6bd.svg","tokyo_tower":"1f5fc.svg","tomato":"1f345.svg","tone1":"1f3fb.svg","tone2":"1f3fc.svg","tone3":"1f3fd.svg","tone4":"1f3fe.svg","tone5":"1f3ff.svg","tongue":"1f445.svg","toolbox":"1f9f0.svg","tools":"1f6e0.svg","tooth":"1f9b7.svg","toothbrush":"1faa5.svg","top":"1f51d.svg","tophat":"1f3a9.svg","track_next":"23ed.svg","track_previous":"23ee.svg","trackball":"1f5b2.svg","tractor":"1f69c.svg","traffic_light":"1f6a5.svg","train2":"1f686.svg","train":"1f68b.svg","tram":"1f68a.svg","transgender_flag":"1f3f3-fe0f-200d-26a7-fe0f.svg","transgender_symbol":"26a7.svg","triangular_flag_on_post":"1f6a9.svg","triangular_ruler":"1f4d0.svg","trident":"1f531.svg","triumph":"1f624.svg","trolleybus":"1f68e.svg","trophy":"1f3c6.svg","tropical_drink":"1f379.svg","tropical_fish":"1f420.svg","truck":"1f69a.svg","trumpet":"1f3ba.svg","tulip":"1f337.svg","tumbler_glass":"1f943.svg","turkey":"1f983.svg","turtle":"1f422.svg","tv":"1f4fa.svg","twisted_rightwards_arrows":"1f500.svg","two":"32-20e3.svg","two_hearts":"1f495.svg","two_men_holding_hands":"1f46c.svg","two_women_holding_hands":"1f46d.svg","u5272":"1f239.svg","u5408":"1f234.svg","u55b6":"1f23a.svg","u6307":"1f22f.svg","u6708":"1f237.svg","u6709":"1f236.svg","u6e80":"1f235.svg","u7121":"1f21a.svg","u7533":"1f238.svg","u7981":"1f232.svg","u7a7a":"1f233.svg","umbrella2":"2602.svg","umbrella":"2614.svg","unamused":"1f612.svg","underage":"1f51e.svg","unicorn":"1f984.svg","united_nations":"1f1fa-1f1f3.svg","unlock":"1f513.svg","up":"1f199.svg","upside_down":"1f643.svg","urn":"26b1.svg","v":"270c.svg","v_tone1":"270c-1f3fb.svg","v_tone2":"270c-1f3fc.svg","v_tone3":"270c-1f3fd.svg","v_tone4":"270c-1f3fe.svg","v_tone5":"270c-1f3ff.svg","vampire":"1f9db.svg","vampire_tone1":"1f9db-1f3fb.svg","vampire_tone2":"1f9db-1f3fc.svg","vampire_tone3":"1f9db-1f3fd.svg","vampire_tone4":"1f9db-1f3fe.svg","vampire_tone5":"1f9db-1f3ff.svg","vertical_traffic_light":"1f6a6.svg","vhs":"1f4fc.svg","vibration_mode":"1f4f3.svg","video_camera":"1f4f9.svg","video_game":"1f3ae.svg","violin":"1f3bb.svg","virgo":"264d.svg","volcano":"1f30b.svg","volleyball":"1f3d0.svg","vs":"1f19a.svg","vulcan":"1f596.svg","vulcan_tone1":"1f596-1f3fb.svg","vulcan_tone2":"1f596-1f3fc.svg","vulcan_tone3":"1f596-1f3fd.svg","vulcan_tone4":"1f596-1f3fe.svg","vulcan_tone5":"1f596-1f3ff.svg","waffle":"1f9c7.svg","wales":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.svg","waning_crescent_moon":"1f318.svg","waning_gibbous_moon":"1f316.svg","warning":"26a0.svg","wastebasket":"1f5d1.svg","watch":"231a.svg","water_buffalo":"1f403.svg","watermelon":"1f349.svg","wave":"1f44b.svg","wave_tone1":"1f44b-1f3fb.svg","wave_tone2":"1f44b-1f3fc.svg","wave_tone3":"1f44b-1f3fd.svg","wave_tone4":"1f44b-1f3fe.svg","wave_tone5":"1f44b-1f3ff.svg","wavy_dash":"3030.svg","waxing_crescent_moon":"1f312.svg","waxing_gibbous_moon":"1f314.svg","wc":"1f6be.svg","weary":"1f629.svg","wedding":"1f492.svg","whale2":"1f40b.svg","whale":"1f433.svg","wheel_of_dharma":"2638.svg","wheelchair":"267f.svg","white_check_mark":"2705.svg","white_circle":"26aa.svg","white_flower":"1f4ae.svg","white_haired":"1f9b3.svg","white_heart":"1f90d.svg","white_large_square":"2b1c.svg","white_medium_small_square":"25fd.svg","white_medium_square":"25fb.svg","white_small_square":"25ab.svg","white_square_button":"1f533.svg","white_sun_cloud":"1f325.svg","white_sun_rain_cloud":"1f326.svg","white_sun_small_cloud":"1f324.svg","wilted_rose":"1f940.svg","wind_blowing_face":"1f32c.svg","wind_chime":"1f390.svg","window":"1fa9f.svg","wine_glass":"1f377.svg","wink":"1f609.svg","wolf":"1f43a.svg","woman":"1f469.svg","woman_and_man_holding_hands_tone1":"1f46b-1f3fb.svg","woman_and_man_holding_hands_tone1_tone2":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc.svg","woman_and_man_holding_hands_tone1_tone3":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd.svg","woman_and_man_holding_hands_tone1_tone4":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe.svg","woman_and_man_holding_hands_tone1_tone5":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff.svg","woman_and_man_holding_hands_tone2":"1f46b-1f3fc.svg","woman_and_man_holding_hands_tone2_tone1":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb.svg","woman_and_man_holding_hands_tone2_tone3":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd.svg","woman_and_man_holding_hands_tone2_tone4":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe.svg","woman_and_man_holding_hands_tone2_tone5":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff.svg","woman_and_man_holding_hands_tone3":"1f46b-1f3fd.svg","woman_and_man_holding_hands_tone3_tone1":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb.svg","woman_and_man_holding_hands_tone3_tone2":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc.svg","woman_and_man_holding_hands_tone3_tone4":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe.svg","woman_and_man_holding_hands_tone3_tone5":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff.svg","woman_and_man_holding_hands_tone4":"1f46b-1f3fe.svg","woman_and_man_holding_hands_tone4_tone1":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb.svg","woman_and_man_holding_hands_tone4_tone2":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc.svg","woman_and_man_holding_hands_tone4_tone3":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd.svg","woman_and_man_holding_hands_tone4_tone5":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff.svg","woman_and_man_holding_hands_tone5":"1f46b-1f3ff.svg","woman_and_man_holding_hands_tone5_tone1":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb.svg","woman_and_man_holding_hands_tone5_tone2":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc.svg","woman_and_man_holding_hands_tone5_tone3":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd.svg","woman_and_man_holding_hands_tone5_tone4":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe.svg","woman_artist":"1f469-200d-1f3a8.svg","woman_artist_tone1":"1f469-1f3fb-200d-1f3a8.svg","woman_artist_tone2":"1f469-1f3fc-200d-1f3a8.svg","woman_artist_tone3":"1f469-1f3fd-200d-1f3a8.svg","woman_artist_tone4":"1f469-1f3fe-200d-1f3a8.svg","woman_artist_tone5":"1f469-1f3ff-200d-1f3a8.svg","woman_astronaut":"1f469-200d-1f680.svg","woman_astronaut_tone1":"1f469-1f3fb-200d-1f680.svg","woman_astronaut_tone2":"1f469-1f3fc-200d-1f680.svg","woman_astronaut_tone3":"1f469-1f3fd-200d-1f680.svg","woman_astronaut_tone4":"1f469-1f3fe-200d-1f680.svg","woman_astronaut_tone5":"1f469-1f3ff-200d-1f680.svg","woman_bald":"1f469-200d-1f9b2.svg","woman_bald_tone1":"1f469-1f3fb-200d-1f9b2.svg","woman_bald_tone2":"1f469-1f3fc-200d-1f9b2.svg","woman_bald_tone3":"1f469-1f3fd-200d-1f9b2.svg","woman_bald_tone4":"1f469-1f3fe-200d-1f9b2.svg","woman_bald_tone5":"1f469-1f3ff-200d-1f9b2.svg","woman_beard":"1f9d4-200d-2640-fe0f.svg","woman_biking":"1f6b4-200d-2640-fe0f.svg","woman_biking_tone1":"1f6b4-1f3fb-200d-2640-fe0f.svg","woman_biking_tone2":"1f6b4-1f3fc-200d-2640-fe0f.svg","woman_biking_tone3":"1f6b4-1f3fd-200d-2640-fe0f.svg","woman_biking_tone4":"1f6b4-1f3fe-200d-2640-fe0f.svg","woman_biking_tone5":"1f6b4-1f3ff-200d-2640-fe0f.svg","woman_bouncing_ball":"26f9-fe0f-200d-2640-fe0f.svg","woman_bouncing_ball_tone1":"26f9-1f3fb-200d-2640-fe0f.svg","woman_bouncing_ball_tone2":"26f9-1f3fc-200d-2640-fe0f.svg","woman_bouncing_ball_tone3":"26f9-1f3fd-200d-2640-fe0f.svg","woman_bouncing_ball_tone4":"26f9-1f3fe-200d-2640-fe0f.svg","woman_bouncing_ball_tone5":"26f9-1f3ff-200d-2640-fe0f.svg","woman_bowing":"1f647-200d-2640-fe0f.svg","woman_bowing_tone1":"1f647-1f3fb-200d-2640-fe0f.svg","woman_bowing_tone2":"1f647-1f3fc-200d-2640-fe0f.svg","woman_bowing_tone3":"1f647-1f3fd-200d-2640-fe0f.svg","woman_bowing_tone4":"1f647-1f3fe-200d-2640-fe0f.svg","woman_bowing_tone5":"1f647-1f3ff-200d-2640-fe0f.svg","woman_cartwheeling":"1f938-200d-2640-fe0f.svg","woman_cartwheeling_tone1":"1f938-1f3fb-200d-2640-fe0f.svg","woman_cartwheeling_tone2":"1f938-1f3fc-200d-2640-fe0f.svg","woman_cartwheeling_tone3":"1f938-1f3fd-200d-2640-fe0f.svg","woman_cartwheeling_tone4":"1f938-1f3fe-200d-2640-fe0f.svg","woman_cartwheeling_tone5":"1f938-1f3ff-200d-2640-fe0f.svg","woman_climbing":"1f9d7-200d-2640-fe0f.svg","woman_climbing_tone1":"1f9d7-1f3fb-200d-2640-fe0f.svg","woman_climbing_tone2":"1f9d7-1f3fc-200d-2640-fe0f.svg","woman_climbing_tone3":"1f9d7-1f3fd-200d-2640-fe0f.svg","woman_climbing_tone4":"1f9d7-1f3fe-200d-2640-fe0f.svg","woman_climbing_tone5":"1f9d7-1f3ff-200d-2640-fe0f.svg","woman_construction_worker":"1f477-200d-2640-fe0f.svg","woman_construction_worker_tone1":"1f477-1f3fb-200d-2640-fe0f.svg","woman_construction_worker_tone2":"1f477-1f3fc-200d-2640-fe0f.svg","woman_construction_worker_tone3":"1f477-1f3fd-200d-2640-fe0f.svg","woman_construction_worker_tone4":"1f477-1f3fe-200d-2640-fe0f.svg","woman_construction_worker_tone5":"1f477-1f3ff-200d-2640-fe0f.svg","woman_cook":"1f469-200d-1f373.svg","woman_cook_tone1":"1f469-1f3fb-200d-1f373.svg","woman_cook_tone2":"1f469-1f3fc-200d-1f373.svg","woman_cook_tone3":"1f469-1f3fd-200d-1f373.svg","woman_cook_tone4":"1f469-1f3fe-200d-1f373.svg","woman_cook_tone5":"1f469-1f3ff-200d-1f373.svg","woman_curly_haired":"1f469-200d-1f9b1.svg","woman_curly_haired_tone1":"1f469-1f3fb-200d-1f9b1.svg","woman_curly_haired_tone2":"1f469-1f3fc-200d-1f9b1.svg","woman_curly_haired_tone3":"1f469-1f3fd-200d-1f9b1.svg","woman_curly_haired_tone4":"1f469-1f3fe-200d-1f9b1.svg","woman_curly_haired_tone5":"1f469-1f3ff-200d-1f9b1.svg","woman_detective":"1f575-fe0f-200d-2640-fe0f.svg","woman_detective_tone1":"1f575-1f3fb-200d-2640-fe0f.svg","woman_detective_tone2":"1f575-1f3fc-200d-2640-fe0f.svg","woman_detective_tone3":"1f575-1f3fd-200d-2640-fe0f.svg","woman_detective_tone4":"1f575-1f3fe-200d-2640-fe0f.svg","woman_detective_tone5":"1f575-1f3ff-200d-2640-fe0f.svg","woman_elf":"1f9dd-200d-2640-fe0f.svg","woman_elf_tone1":"1f9dd-1f3fb-200d-2640-fe0f.svg","woman_elf_tone2":"1f9dd-1f3fc-200d-2640-fe0f.svg","woman_elf_tone3":"1f9dd-1f3fd-200d-2640-fe0f.svg","woman_elf_tone4":"1f9dd-1f3fe-200d-2640-fe0f.svg","woman_elf_tone5":"1f9dd-1f3ff-200d-2640-fe0f.svg","woman_facepalming":"1f926-200d-2640-fe0f.svg","woman_facepalming_tone1":"1f926-1f3fb-200d-2640-fe0f.svg","woman_facepalming_tone2":"1f926-1f3fc-200d-2640-fe0f.svg","woman_facepalming_tone3":"1f926-1f3fd-200d-2640-fe0f.svg","woman_facepalming_tone4":"1f926-1f3fe-200d-2640-fe0f.svg","woman_facepalming_tone5":"1f926-1f3ff-200d-2640-fe0f.svg","woman_factory_worker":"1f469-200d-1f3ed.svg","woman_factory_worker_tone1":"1f469-1f3fb-200d-1f3ed.svg","woman_factory_worker_tone2":"1f469-1f3fc-200d-1f3ed.svg","woman_factory_worker_tone3":"1f469-1f3fd-200d-1f3ed.svg","woman_factory_worker_tone4":"1f469-1f3fe-200d-1f3ed.svg","woman_factory_worker_tone5":"1f469-1f3ff-200d-1f3ed.svg","woman_fairy":"1f9da-200d-2640-fe0f.svg","woman_fairy_tone1":"1f9da-1f3fb-200d-2640-fe0f.svg","woman_fairy_tone2":"1f9da-1f3fc-200d-2640-fe0f.svg","woman_fairy_tone3":"1f9da-1f3fd-200d-2640-fe0f.svg","woman_fairy_tone4":"1f9da-1f3fe-200d-2640-fe0f.svg","woman_fairy_tone5":"1f9da-1f3ff-200d-2640-fe0f.svg","woman_farmer":"1f469-200d-1f33e.svg","woman_farmer_tone1":"1f469-1f3fb-200d-1f33e.svg","woman_farmer_tone2":"1f469-1f3fc-200d-1f33e.svg","woman_farmer_tone3":"1f469-1f3fd-200d-1f33e.svg","woman_farmer_tone4":"1f469-1f3fe-200d-1f33e.svg","woman_farmer_tone5":"1f469-1f3ff-200d-1f33e.svg","woman_feeding_baby":"1f469-200d-1f37c.svg","woman_feeding_baby_tone1":"1f469-1f3fb-200d-1f37c.svg","woman_feeding_baby_tone2":"1f469-1f3fc-200d-1f37c.svg","woman_feeding_baby_tone3":"1f469-1f3fd-200d-1f37c.svg","woman_feeding_baby_tone4":"1f469-1f3fe-200d-1f37c.svg","woman_feeding_baby_tone5":"1f469-1f3ff-200d-1f37c.svg","woman_firefighter":"1f469-200d-1f692.svg","woman_firefighter_tone1":"1f469-1f3fb-200d-1f692.svg","woman_firefighter_tone2":"1f469-1f3fc-200d-1f692.svg","woman_firefighter_tone3":"1f469-1f3fd-200d-1f692.svg","woman_firefighter_tone4":"1f469-1f3fe-200d-1f692.svg","woman_firefighter_tone5":"1f469-1f3ff-200d-1f692.svg","woman_frowning":"1f64d-200d-2640-fe0f.svg","woman_frowning_tone1":"1f64d-1f3fb-200d-2640-fe0f.svg","woman_frowning_tone2":"1f64d-1f3fc-200d-2640-fe0f.svg","woman_frowning_tone3":"1f64d-1f3fd-200d-2640-fe0f.svg","woman_frowning_tone4":"1f64d-1f3fe-200d-2640-fe0f.svg","woman_frowning_tone5":"1f64d-1f3ff-200d-2640-fe0f.svg","woman_genie":"1f9de-200d-2640-fe0f.svg","woman_gesturing_no":"1f645-200d-2640-fe0f.svg","woman_gesturing_no_tone1":"1f645-1f3fb-200d-2640-fe0f.svg","woman_gesturing_no_tone2":"1f645-1f3fc-200d-2640-fe0f.svg","woman_gesturing_no_tone3":"1f645-1f3fd-200d-2640-fe0f.svg","woman_gesturing_no_tone4":"1f645-1f3fe-200d-2640-fe0f.svg","woman_gesturing_no_tone5":"1f645-1f3ff-200d-2640-fe0f.svg","woman_gesturing_ok":"1f646-200d-2640-fe0f.svg","woman_gesturing_ok_tone1":"1f646-1f3fb-200d-2640-fe0f.svg","woman_gesturing_ok_tone2":"1f646-1f3fc-200d-2640-fe0f.svg","woman_gesturing_ok_tone3":"1f646-1f3fd-200d-2640-fe0f.svg","woman_gesturing_ok_tone4":"1f646-1f3fe-200d-2640-fe0f.svg","woman_gesturing_ok_tone5":"1f646-1f3ff-200d-2640-fe0f.svg","woman_getting_face_massage":"1f486-200d-2640-fe0f.svg","woman_getting_face_massage_tone1":"1f486-1f3fb-200d-2640-fe0f.svg","woman_getting_face_massage_tone2":"1f486-1f3fc-200d-2640-fe0f.svg","woman_getting_face_massage_tone3":"1f486-1f3fd-200d-2640-fe0f.svg","woman_getting_face_massage_tone4":"1f486-1f3fe-200d-2640-fe0f.svg","woman_getting_face_massage_tone5":"1f486-1f3ff-200d-2640-fe0f.svg","woman_getting_haircut":"1f487-200d-2640-fe0f.svg","woman_getting_haircut_tone1":"1f487-1f3fb-200d-2640-fe0f.svg","woman_getting_haircut_tone2":"1f487-1f3fc-200d-2640-fe0f.svg","woman_getting_haircut_tone3":"1f487-1f3fd-200d-2640-fe0f.svg","woman_getting_haircut_tone4":"1f487-1f3fe-200d-2640-fe0f.svg","woman_getting_haircut_tone5":"1f487-1f3ff-200d-2640-fe0f.svg","woman_golfing":"1f3cc-fe0f-200d-2640-fe0f.svg","woman_golfing_tone1":"1f3cc-1f3fb-200d-2640-fe0f.svg","woman_golfing_tone2":"1f3cc-1f3fc-200d-2640-fe0f.svg","woman_golfing_tone3":"1f3cc-1f3fd-200d-2640-fe0f.svg","woman_golfing_tone4":"1f3cc-1f3fe-200d-2640-fe0f.svg","woman_golfing_tone5":"1f3cc-1f3ff-200d-2640-fe0f.svg","woman_guard":"1f482-200d-2640-fe0f.svg","woman_guard_tone1":"1f482-1f3fb-200d-2640-fe0f.svg","woman_guard_tone2":"1f482-1f3fc-200d-2640-fe0f.svg","woman_guard_tone3":"1f482-1f3fd-200d-2640-fe0f.svg","woman_guard_tone4":"1f482-1f3fe-200d-2640-fe0f.svg","woman_guard_tone5":"1f482-1f3ff-200d-2640-fe0f.svg","woman_health_worker":"1f469-200d-2695-fe0f.svg","woman_health_worker_tone1":"1f469-1f3fb-200d-2695-fe0f.svg","woman_health_worker_tone2":"1f469-1f3fc-200d-2695-fe0f.svg","woman_health_worker_tone3":"1f469-1f3fd-200d-2695-fe0f.svg","woman_health_worker_tone4":"1f469-1f3fe-200d-2695-fe0f.svg","woman_health_worker_tone5":"1f469-1f3ff-200d-2695-fe0f.svg","woman_in_lotus_position":"1f9d8-200d-2640-fe0f.svg","woman_in_lotus_position_tone1":"1f9d8-1f3fb-200d-2640-fe0f.svg","woman_in_lotus_position_tone2":"1f9d8-1f3fc-200d-2640-fe0f.svg","woman_in_lotus_position_tone3":"1f9d8-1f3fd-200d-2640-fe0f.svg","woman_in_lotus_position_tone4":"1f9d8-1f3fe-200d-2640-fe0f.svg","woman_in_lotus_position_tone5":"1f9d8-1f3ff-200d-2640-fe0f.svg","woman_in_manual_wheelchair":"1f469-200d-1f9bd.svg","woman_in_manual_wheelchair_tone1":"1f469-1f3fb-200d-1f9bd.svg","woman_in_manual_wheelchair_tone2":"1f469-1f3fc-200d-1f9bd.svg","woman_in_manual_wheelchair_tone3":"1f469-1f3fd-200d-1f9bd.svg","woman_in_manual_wheelchair_tone4":"1f469-1f3fe-200d-1f9bd.svg","woman_in_manual_wheelchair_tone5":"1f469-1f3ff-200d-1f9bd.svg","woman_in_motorized_wheelchair":"1f469-200d-1f9bc.svg","woman_in_motorized_wheelchair_tone1":"1f469-1f3fb-200d-1f9bc.svg","woman_in_motorized_wheelchair_tone2":"1f469-1f3fc-200d-1f9bc.svg","woman_in_motorized_wheelchair_tone3":"1f469-1f3fd-200d-1f9bc.svg","woman_in_motorized_wheelchair_tone4":"1f469-1f3fe-200d-1f9bc.svg","woman_in_motorized_wheelchair_tone5":"1f469-1f3ff-200d-1f9bc.svg","woman_in_santa_hat":"1f469-200d-1f384.svg","woman_in_santa_hat_tone1":"1f469-1f3fb-200d-1f384.svg","woman_in_santa_hat_tone2":"1f468-1f3ff-200d-1f384.svg","woman_in_santa_hat_tone3":"1f469-1f3fe-200d-1f384.svg","woman_in_santa_hat_tone4":"1f469-1f3fd-200d-1f384.svg","woman_in_santa_hat_tone5":"1f469-1f3fc-200d-1f384.svg","woman_in_steamy_room":"1f9d6-200d-2640-fe0f.svg","woman_in_steamy_room_tone1":"1f9d6-1f3fb-200d-2640-fe0f.svg","woman_in_steamy_room_tone2":"1f9d6-1f3fc-200d-2640-fe0f.svg","woman_in_steamy_room_tone3":"1f9d6-1f3fd-200d-2640-fe0f.svg","woman_in_steamy_room_tone4":"1f9d6-1f3fe-200d-2640-fe0f.svg","woman_in_steamy_room_tone5":"1f9d6-1f3ff-200d-2640-fe0f.svg","woman_in_tuxedo":"1f935-200d-2640-fe0f.svg","woman_in_tuxedo_tone1":"1f935-1f3fb-200d-2640-fe0f.svg","woman_in_tuxedo_tone2":"1f935-1f3fc-200d-2640-fe0f.svg","woman_in_tuxedo_tone3":"1f935-1f3fd-200d-2640-fe0f.svg","woman_in_tuxedo_tone4":"1f935-1f3fe-200d-2640-fe0f.svg","woman_in_tuxedo_tone5":"1f935-1f3ff-200d-2640-fe0f.svg","woman_judge":"1f469-200d-2696-fe0f.svg","woman_judge_tone1":"1f469-1f3fb-200d-2696-fe0f.svg","woman_judge_tone2":"1f469-1f3fc-200d-2696-fe0f.svg","woman_judge_tone3":"1f469-1f3fd-200d-2696-fe0f.svg","woman_judge_tone4":"1f469-1f3fe-200d-2696-fe0f.svg","woman_judge_tone5":"1f469-1f3ff-200d-2696-fe0f.svg","woman_juggling":"1f939-200d-2640-fe0f.svg","woman_juggling_tone1":"1f939-1f3fb-200d-2640-fe0f.svg","woman_juggling_tone2":"1f939-1f3fc-200d-2640-fe0f.svg","woman_juggling_tone3":"1f939-1f3fd-200d-2640-fe0f.svg","woman_juggling_tone4":"1f939-1f3fe-200d-2640-fe0f.svg","woman_juggling_tone5":"1f939-1f3ff-200d-2640-fe0f.svg","woman_kneeling":"1f9ce-200d-2640-fe0f.svg","woman_kneeling_tone1":"1f9ce-1f3fb-200d-2640-fe0f.svg","woman_kneeling_tone2":"1f9ce-1f3fc-200d-2640-fe0f.svg","woman_kneeling_tone3":"1f9ce-1f3fd-200d-2640-fe0f.svg","woman_kneeling_tone4":"1f9ce-1f3fe-200d-2640-fe0f.svg","woman_kneeling_tone5":"1f9ce-1f3ff-200d-2640-fe0f.svg","woman_leviate_tone2":"1f574-1f3fc-200d-2640-fe0f.svg","woman_leviate_tone3":"1f574-1f3fd-200d-2640-fe0f.svg","woman_leviate_tone4":"1f574-1f3fe-200d-2640-fe0f.svg","woman_leviate_tone5":"1f574-1f3ff-200d-2640-fe0f.svg","woman_levitate":"1f574-fe0f-200d-2640-fe0f.svg","woman_levitate_tone1":"1f574-1f3fb-200d-2640-fe0f.svg","woman_lifting_weights":"1f3cb-fe0f-200d-2640-fe0f.svg","woman_lifting_weights_tone1":"1f3cb-1f3fb-200d-2640-fe0f.svg","woman_lifting_weights_tone2":"1f3cb-1f3fc-200d-2640-fe0f.svg","woman_lifting_weights_tone3":"1f3cb-1f3fd-200d-2640-fe0f.svg","woman_lifting_weights_tone4":"1f3cb-1f3fe-200d-2640-fe0f.svg","woman_lifting_weights_tone5":"1f3cb-1f3ff-200d-2640-fe0f.svg","woman_mage":"1f9d9-200d-2640-fe0f.svg","woman_mage_tone1":"1f9d9-1f3fb-200d-2640-fe0f.svg","woman_mage_tone2":"1f9d9-1f3fc-200d-2640-fe0f.svg","woman_mage_tone3":"1f9d9-1f3fd-200d-2640-fe0f.svg","woman_mage_tone4":"1f9d9-1f3fe-200d-2640-fe0f.svg","woman_mage_tone5":"1f9d9-1f3ff-200d-2640-fe0f.svg","woman_mechanic":"1f469-200d-1f527.svg","woman_mechanic_tone1":"1f469-1f3fb-200d-1f527.svg","woman_mechanic_tone2":"1f469-1f3fc-200d-1f527.svg","woman_mechanic_tone3":"1f469-1f3fd-200d-1f527.svg","woman_mechanic_tone4":"1f469-1f3fe-200d-1f527.svg","woman_mechanic_tone5":"1f469-1f3ff-200d-1f527.svg","woman_mountain_biking":"1f6b5-200d-2640-fe0f.svg","woman_mountain_biking_tone1":"1f6b5-1f3fb-200d-2640-fe0f.svg","woman_mountain_biking_tone2":"1f6b5-1f3fc-200d-2640-fe0f.svg","woman_mountain_biking_tone3":"1f6b5-1f3fd-200d-2640-fe0f.svg","woman_mountain_biking_tone4":"1f6b5-1f3fe-200d-2640-fe0f.svg","woman_mountain_biking_tone5":"1f6b5-1f3ff-200d-2640-fe0f.svg","woman_office_worker":"1f469-200d-1f4bc.svg","woman_office_worker_tone1":"1f469-1f3fb-200d-1f4bc.svg","woman_office_worker_tone2":"1f469-1f3fc-200d-1f4bc.svg","woman_office_worker_tone3":"1f469-1f3fd-200d-1f4bc.svg","woman_office_worker_tone4":"1f469-1f3fe-200d-1f4bc.svg","woman_office_worker_tone5":"1f469-1f3ff-200d-1f4bc.svg","woman_pilot":"1f469-200d-2708-fe0f.svg","woman_pilot_tone1":"1f469-1f3fb-200d-2708-fe0f.svg","woman_pilot_tone2":"1f469-1f3fc-200d-2708-fe0f.svg","woman_pilot_tone3":"1f469-1f3fd-200d-2708-fe0f.svg","woman_pilot_tone4":"1f469-1f3fe-200d-2708-fe0f.svg","woman_pilot_tone5":"1f469-1f3ff-200d-2708-fe0f.svg","woman_playing_handball":"1f93e-200d-2640-fe0f.svg","woman_playing_handball_tone1":"1f93e-1f3fb-200d-2640-fe0f.svg","woman_playing_handball_tone2":"1f93e-1f3fc-200d-2640-fe0f.svg","woman_playing_handball_tone3":"1f93e-1f3fd-200d-2640-fe0f.svg","woman_playing_handball_tone4":"1f93e-1f3fe-200d-2640-fe0f.svg","woman_playing_handball_tone5":"1f93e-1f3ff-200d-2640-fe0f.svg","woman_playing_water_polo":"1f93d-200d-2640-fe0f.svg","woman_playing_water_polo_tone1":"1f93d-1f3fb-200d-2640-fe0f.svg","woman_playing_water_polo_tone2":"1f93d-1f3fc-200d-2640-fe0f.svg","woman_playing_water_polo_tone3":"1f93d-1f3fd-200d-2640-fe0f.svg","woman_playing_water_polo_tone4":"1f93d-1f3fe-200d-2640-fe0f.svg","woman_playing_water_polo_tone5":"1f93d-1f3ff-200d-2640-fe0f.svg","woman_police_officer":"1f46e-200d-2640-fe0f.svg","woman_police_officer_tone1":"1f46e-1f3fb-200d-2640-fe0f.svg","woman_police_officer_tone2":"1f46e-1f3fc-200d-2640-fe0f.svg","woman_police_officer_tone3":"1f46e-1f3fd-200d-2640-fe0f.svg","woman_police_officer_tone4":"1f46e-1f3fe-200d-2640-fe0f.svg","woman_police_officer_tone5":"1f46e-1f3ff-200d-2640-fe0f.svg","woman_pouting":"1f64e-200d-2640-fe0f.svg","woman_pouting_tone1":"1f64e-1f3fb-200d-2640-fe0f.svg","woman_pouting_tone2":"1f64e-1f3fc-200d-2640-fe0f.svg","woman_pouting_tone3":"1f64e-1f3fd-200d-2640-fe0f.svg","woman_pouting_tone4":"1f64e-1f3fe-200d-2640-fe0f.svg","woman_pouting_tone5":"1f64e-1f3ff-200d-2640-fe0f.svg","woman_raising_hand":"1f64b-200d-2640-fe0f.svg","woman_raising_hand_tone1":"1f64b-1f3fb-200d-2640-fe0f.svg","woman_raising_hand_tone2":"1f64b-1f3fc-200d-2640-fe0f.svg","woman_raising_hand_tone3":"1f64b-1f3fd-200d-2640-fe0f.svg","woman_raising_hand_tone4":"1f64b-1f3fe-200d-2640-fe0f.svg","woman_raising_hand_tone5":"1f64b-1f3ff-200d-2640-fe0f.svg","woman_red_haired":"1f469-200d-1f9b0.svg","woman_red_haired_tone1":"1f469-1f3fb-200d-1f9b0.svg","woman_red_haired_tone2":"1f469-1f3fc-200d-1f9b0.svg","woman_red_haired_tone3":"1f469-1f3fd-200d-1f9b0.svg","woman_red_haired_tone4":"1f469-1f3fe-200d-1f9b0.svg","woman_red_haired_tone5":"1f469-1f3ff-200d-1f9b0.svg","woman_rowing_boat":"1f6a3-200d-2640-fe0f.svg","woman_rowing_boat_tone1":"1f6a3-1f3fb-200d-2640-fe0f.svg","woman_rowing_boat_tone2":"1f6a3-1f3fc-200d-2640-fe0f.svg","woman_rowing_boat_tone3":"1f6a3-1f3fd-200d-2640-fe0f.svg","woman_rowing_boat_tone4":"1f6a3-1f3fe-200d-2640-fe0f.svg","woman_rowing_boat_tone5":"1f6a3-1f3ff-200d-2640-fe0f.svg","woman_running":"1f3c3-200d-2640-fe0f.svg","woman_running_tone1":"1f3c3-1f3fb-200d-2640-fe0f.svg","woman_running_tone2":"1f3c3-1f3fc-200d-2640-fe0f.svg","woman_running_tone3":"1f3c3-1f3fd-200d-2640-fe0f.svg","woman_running_tone4":"1f3c3-1f3fe-200d-2640-fe0f.svg","woman_running_tone5":"1f3c3-1f3ff-200d-2640-fe0f.svg","woman_scientist":"1f469-200d-1f52c.svg","woman_scientist_tone1":"1f469-1f3fb-200d-1f52c.svg","woman_scientist_tone2":"1f469-1f3fc-200d-1f52c.svg","woman_scientist_tone3":"1f469-1f3fd-200d-1f52c.svg","woman_scientist_tone4":"1f469-1f3fe-200d-1f52c.svg","woman_scientist_tone5":"1f469-1f3ff-200d-1f52c.svg","woman_shrugging":"1f937-200d-2640-fe0f.svg","woman_shrugging_tone1":"1f937-1f3fb-200d-2640-fe0f.svg","woman_shrugging_tone2":"1f937-1f3fc-200d-2640-fe0f.svg","woman_shrugging_tone3":"1f937-1f3fd-200d-2640-fe0f.svg","woman_shrugging_tone4":"1f937-1f3fe-200d-2640-fe0f.svg","woman_shrugging_tone5":"1f937-1f3ff-200d-2640-fe0f.svg","woman_singer":"1f469-200d-1f3a4.svg","woman_singer_tone1":"1f469-1f3fb-200d-1f3a4.svg","woman_singer_tone2":"1f469-1f3fc-200d-1f3a4.svg","woman_singer_tone3":"1f469-1f3fd-200d-1f3a4.svg","woman_singer_tone4":"1f469-1f3fe-200d-1f3a4.svg","woman_singer_tone5":"1f469-1f3ff-200d-1f3a4.svg","woman_standing":"1f9cd-200d-2640-fe0f.svg","woman_standing_tone1":"1f9cd-1f3fb-200d-2640-fe0f.svg","woman_standing_tone2":"1f9cd-1f3fc-200d-2640-fe0f.svg","woman_standing_tone3":"1f9cd-1f3fd-200d-2640-fe0f.svg","woman_standing_tone4":"1f9cd-1f3fe-200d-2640-fe0f.svg","woman_standing_tone5":"1f9cd-1f3ff-200d-2640-fe0f.svg","woman_student":"1f469-200d-1f393.svg","woman_student_tone1":"1f469-1f3fb-200d-1f393.svg","woman_student_tone2":"1f469-1f3fc-200d-1f393.svg","woman_student_tone3":"1f469-1f3fd-200d-1f393.svg","woman_student_tone4":"1f469-1f3fe-200d-1f393.svg","woman_student_tone5":"1f469-1f3ff-200d-1f393.svg","woman_superhero":"1f9b8-200d-2640-fe0f.svg","woman_superhero_tone1":"1f9b8-1f3fb-200d-2640-fe0f.svg","woman_superhero_tone2":"1f9b8-1f3fc-200d-2640-fe0f.svg","woman_superhero_tone3":"1f9b8-1f3fd-200d-2640-fe0f.svg","woman_superhero_tone4":"1f9b8-1f3fe-200d-2640-fe0f.svg","woman_superhero_tone5":"1f9b8-1f3ff-200d-2640-fe0f.svg","woman_supervillain":"1f9b9-200d-2640-fe0f.svg","woman_supervillain_tone1":"1f9b9-1f3fb-200d-2640-fe0f.svg","woman_supervillain_tone2":"1f9b9-1f3fc-200d-2640-fe0f.svg","woman_supervillain_tone3":"1f9b9-1f3fd-200d-2640-fe0f.svg","woman_supervillain_tone4":"1f9b9-1f3fe-200d-2640-fe0f.svg","woman_supervillain_tone5":"1f9b9-1f3ff-200d-2640-fe0f.svg","woman_surfing":"1f3c4-200d-2640-fe0f.svg","woman_surfing_tone1":"1f3c4-1f3fb-200d-2640-fe0f.svg","woman_surfing_tone2":"1f3c4-1f3fc-200d-2640-fe0f.svg","woman_surfing_tone3":"1f3c4-1f3fd-200d-2640-fe0f.svg","woman_surfing_tone4":"1f3c4-1f3fe-200d-2640-fe0f.svg","woman_surfing_tone5":"1f3c4-1f3ff-200d-2640-fe0f.svg","woman_swimming":"1f3ca-200d-2640-fe0f.svg","woman_swimming_tone1":"1f3ca-1f3fb-200d-2640-fe0f.svg","woman_swimming_tone2":"1f3ca-1f3fc-200d-2640-fe0f.svg","woman_swimming_tone3":"1f3ca-1f3fd-200d-2640-fe0f.svg","woman_swimming_tone4":"1f3ca-1f3fe-200d-2640-fe0f.svg","woman_swimming_tone5":"1f3ca-1f3ff-200d-2640-fe0f.svg","woman_teacher":"1f469-200d-1f3eb.svg","woman_teacher_tone1":"1f469-1f3fb-200d-1f3eb.svg","woman_teacher_tone2":"1f469-1f3fc-200d-1f3eb.svg","woman_teacher_tone3":"1f469-1f3fd-200d-1f3eb.svg","woman_teacher_tone4":"1f469-1f3fe-200d-1f3eb.svg","woman_teacher_tone5":"1f469-1f3ff-200d-1f3eb.svg","woman_technologist":"1f469-200d-1f4bb.svg","woman_technologist_tone1":"1f469-1f3fb-200d-1f4bb.svg","woman_technologist_tone2":"1f469-1f3fc-200d-1f4bb.svg","woman_technologist_tone3":"1f469-1f3fd-200d-1f4bb.svg","woman_technologist_tone4":"1f469-1f3fe-200d-1f4bb.svg","woman_technologist_tone5":"1f469-1f3ff-200d-1f4bb.svg","woman_tipping_hand":"1f481-200d-2640-fe0f.svg","woman_tipping_hand_tone1":"1f481-1f3fb-200d-2640-fe0f.svg","woman_tipping_hand_tone2":"1f481-1f3fc-200d-2640-fe0f.svg","woman_tipping_hand_tone3":"1f481-1f3fd-200d-2640-fe0f.svg","woman_tipping_hand_tone4":"1f481-1f3fe-200d-2640-fe0f.svg","woman_tipping_hand_tone5":"1f481-1f3ff-200d-2640-fe0f.svg","woman_tone1":"1f469-1f3fb.svg","woman_tone1_beard":"1f9d4-1f3fb-200d-2640-fe0f.svg","woman_tone2":"1f469-1f3fc.svg","woman_tone2_beard":"1f9d4-1f3fc-200d-2640-fe0f.svg","woman_tone3":"1f469-1f3fd.svg","woman_tone3_beard":"1f9d4-1f3fd-200d-2640-fe0f.svg","woman_tone4":"1f469-1f3fe.svg","woman_tone4_beard":"1f9d4-1f3fe-200d-2640-fe0f.svg","woman_tone5":"1f469-1f3ff.svg","woman_tone5_beard":"1f9d4-1f3ff-200d-2640-fe0f.svg","woman_vampire":"1f9db-200d-2640-fe0f.svg","woman_vampire_tone1":"1f9db-1f3fb-200d-2640-fe0f.svg","woman_vampire_tone2":"1f9db-1f3fc-200d-2640-fe0f.svg","woman_vampire_tone3":"1f9db-1f3fd-200d-2640-fe0f.svg","woman_vampire_tone4":"1f9db-1f3fe-200d-2640-fe0f.svg","woman_vampire_tone5":"1f9db-1f3ff-200d-2640-fe0f.svg","woman_walking":"1f6b6-200d-2640-fe0f.svg","woman_walking_tone1":"1f6b6-1f3fb-200d-2640-fe0f.svg","woman_walking_tone2":"1f6b6-1f3fc-200d-2640-fe0f.svg","woman_walking_tone3":"1f6b6-1f3fd-200d-2640-fe0f.svg","woman_walking_tone4":"1f6b6-1f3fe-200d-2640-fe0f.svg","woman_walking_tone5":"1f6b6-1f3ff-200d-2640-fe0f.svg","woman_wearing_turban":"1f473-200d-2640-fe0f.svg","woman_wearing_turban_tone1":"1f473-1f3fb-200d-2640-fe0f.svg","woman_wearing_turban_tone2":"1f473-1f3fc-200d-2640-fe0f.svg","woman_wearing_turban_tone3":"1f473-1f3fd-200d-2640-fe0f.svg","woman_wearing_turban_tone4":"1f473-1f3fe-200d-2640-fe0f.svg","woman_wearing_turban_tone5":"1f473-1f3ff-200d-2640-fe0f.svg","woman_white_haired":"1f469-200d-1f9b3.svg","woman_white_haired_tone1":"1f469-1f3fb-200d-1f9b3.svg","woman_white_haired_tone2":"1f469-1f3fc-200d-1f9b3.svg","woman_white_haired_tone3":"1f469-1f3fd-200d-1f9b3.svg","woman_white_haired_tone4":"1f469-1f3fe-200d-1f9b3.svg","woman_white_haired_tone5":"1f469-1f3ff-200d-1f9b3.svg","woman_with_headscarf":"1f9d5.svg","woman_with_headscarf_tone1":"1f9d5-1f3fb.svg","woman_with_headscarf_tone2":"1f9d5-1f3fc.svg","woman_with_headscarf_tone3":"1f9d5-1f3fd.svg","woman_with_headscarf_tone4":"1f9d5-1f3fe.svg","woman_with_headscarf_tone5":"1f9d5-1f3ff.svg","woman_with_probing_cane":"1f469-200d-1f9af.svg","woman_with_probing_cane_tone1":"1f469-1f3fb-200d-1f9af.svg","woman_with_probing_cane_tone2":"1f469-1f3fc-200d-1f9af.svg","woman_with_probing_cane_tone3":"1f469-1f3fd-200d-1f9af.svg","woman_with_probing_cane_tone4":"1f469-1f3fe-200d-1f9af.svg","woman_with_probing_cane_tone5":"1f469-1f3ff-200d-1f9af.svg","woman_with_veil":"1f470-200d-2640-fe0f.svg","woman_with_veil_tone1":"1f470-1f3fb-200d-2640-fe0f.svg","woman_with_veil_tone2":"1f470-1f3fc-200d-2640-fe0f.svg","woman_with_veil_tone3":"1f470-1f3fd-200d-2640-fe0f.svg","woman_with_veil_tone4":"1f470-1f3fe-200d-2640-fe0f.svg","woman_with_veil_tone5":"1f470-1f3ff-200d-2640-fe0f.svg","woman_zombie":"1f9df-200d-2640-fe0f.svg","womans_clothes":"1f45a.svg","womans_flat_shoe":"1f97f.svg","womans_hat":"1f452.svg","women_holding_hands_tone1":"1f46d-1f3fb.svg","women_holding_hands_tone1_tone2":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc.svg","women_holding_hands_tone1_tone3":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd.svg","women_holding_hands_tone1_tone4":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe.svg","women_holding_hands_tone1_tone5":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff.svg","women_holding_hands_tone2":"1f46d-1f3fc.svg","women_holding_hands_tone2_tone1":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb.svg","women_holding_hands_tone2_tone3":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd.svg","women_holding_hands_tone2_tone4":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe.svg","women_holding_hands_tone2_tone5":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff.svg","women_holding_hands_tone3":"1f46d-1f3fd.svg","women_holding_hands_tone3_tone1":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb.svg","women_holding_hands_tone3_tone2":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc.svg","women_holding_hands_tone3_tone4":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe.svg","women_holding_hands_tone3_tone5":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff.svg","women_holding_hands_tone4":"1f46d-1f3fe.svg","women_holding_hands_tone4_tone1":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb.svg","women_holding_hands_tone4_tone2":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc.svg","women_holding_hands_tone4_tone3":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd.svg","women_holding_hands_tone4_tone5":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff.svg","women_holding_hands_tone5":"1f46d-1f3ff.svg","women_holding_hands_tone5_tone1":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb.svg","women_holding_hands_tone5_tone2":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc.svg","women_holding_hands_tone5_tone3":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd.svg","women_holding_hands_tone5_tone4":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe.svg","women_with_bunny_ears_partying":"1f46f-200d-2640-fe0f.svg","women_wrestling":"1f93c-200d-2640-fe0f.svg","womens":"1f6ba.svg","wood":"1fab5.svg","woozy_face":"1f974.svg","worm":"1fab1.svg","worried":"1f61f.svg","wrench":"1f527.svg","writing_hand":"270d.svg","writing_hand_tone1":"270d-1f3fb.svg","writing_hand_tone2":"270d-1f3fc.svg","writing_hand_tone3":"270d-1f3fd.svg","writing_hand_tone4":"270d-1f3fe.svg","writing_hand_tone5":"270d-1f3ff.svg","x":"274c.svg","yarn":"1f9f6.svg","yawning_face":"1f971.svg","yellow_circle":"1f7e1.svg","yellow_heart":"1f49b.svg","yellow_square":"1f7e8.svg","yen":"1f4b4.svg","yin_yang":"262f.svg","yo_yo":"1fa80.svg","yum":"1f60b.svg","zany_face":"1f92a.svg","zap":"26a1.svg","zebra":"1f993.svg","zero":"30-20e3.svg","zipper_mouth":"1f910.svg","zombie":"1f9df.svg","zzz":"1f4a4.svg"}}} \ No newline at end of file diff --git a/mkdocs-overrides/assets/stylesheets/main.82a244a8.min.css b/mkdocs-overrides/assets/stylesheets/main.82a244a8.min.css deleted file mode 100644 index 80b19530a..000000000 --- a/mkdocs-overrides/assets/stylesheets/main.82a244a8.min.css +++ /dev/null @@ -1 +0,0 @@ -@-webkit-keyframes heart{0%,40%,80%,to{transform:scale(1)}20%,60%{transform:scale(1.15)}}@keyframes heart{0%,40%,80%,to{transform:scale(1)}20%,60%{transform:scale(1.15)}}.md-typeset .twitter{color:#00acee}.md-typeset .mdx-video{width:auto}.md-typeset .mdx-video__inner{height:0;padding-bottom:56.138%;position:relative;width:100%}.md-typeset .mdx-video iframe{border:none;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.md-typeset .mdx-heart{-webkit-animation:heart 1s infinite;animation:heart 1s infinite}.md-typeset .mdx-insiders{color:#e91e63}.md-typeset .mdx-switch button{cursor:pointer;transition:opacity .25s}.md-typeset .mdx-switch button:focus,.md-typeset .mdx-switch button:hover{opacity:.75}.md-typeset .mdx-switch button>code{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block}.md-typeset .mdx-deprecated{opacity:.5;transition:opacity .25s}.md-typeset .mdx-deprecated:focus-within,.md-typeset .mdx-deprecated:hover{opacity:1}.md-typeset .mdx-columns ol,.md-typeset .mdx-columns ul{column-count:2}@media screen and (max-width:29.9375em){.md-typeset .mdx-columns ol,.md-typeset .mdx-columns ul{columns:initial}}.md-typeset .mdx-columns li{break-inside:avoid}.md-typeset .mdx-author{display:flex;font-size:.68rem}.md-typeset .mdx-author img{border-radius:100%;height:2rem}.md-typeset .mdx-author p:first-child{flex-shrink:0;margin-right:.8rem}.md-typeset .mdx-author p>span{display:block}.md-banner a,.md-banner a:focus,.md-banner a:hover{color:currentcolor}.md-banner strong{white-space:nowrap}[dir=ltr] .md-banner .twitter{margin-left:.2em}[dir=rtl] .md-banner .twitter{margin-right:.2em}.mdx-container{background:url("data:image/svg+xml;utf8,") no-repeat bottom,linear-gradient(to bottom,var(--md-primary-fg-color),#a63fd9 99%,var(--md-default-bg-color) 99%);padding-top:1rem}[data-md-color-scheme=slate] .mdx-container{background:url("data:image/svg+xml;utf8,") no-repeat bottom,linear-gradient(to bottom,var(--md-primary-fg-color),#a63fd9 99%,var(--md-default-bg-color) 99%)}.mdx-hero{color:var(--md-primary-bg-color);margin:0 .8rem}.mdx-hero h1{color:currentcolor;font-weight:700;margin-bottom:1rem}@media screen and (max-width:29.9375em){.mdx-hero h1{font-size:1.4rem}}.mdx-hero__content{padding-bottom:6rem}@media screen and (min-width:60em){.mdx-hero{align-items:stretch;display:flex}.mdx-hero__content{margin-top:3.5rem;max-width:19rem;padding-bottom:14vw}.mdx-hero__image{order:1;transform:translateX(4rem);width:38rem}}@media screen and (min-width:76.25em){.mdx-hero__image{transform:translateX(8rem)}}.mdx-hero .md-button{color:var(--md-primary-bg-color);margin-right:.5rem;margin-top:.5rem}.mdx-hero .md-button:focus,.mdx-hero .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.mdx-hero .md-button--primary{background-color:var(--md-primary-bg-color);border-color:var(--md-primary-bg-color);color:#894da8}.md-typeset .mdx-iconsearch{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z1);position:relative;transition:box-shadow 125ms}.md-typeset .mdx-iconsearch:focus-within,.md-typeset .mdx-iconsearch:hover{box-shadow:var(--md-shadow-z2)}.md-typeset .mdx-iconsearch .md-input{background:var(--md-default-bg-color);box-shadow:none}[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch .md-input{background:var(--md-code-bg-color)}.md-typeset .mdx-iconsearch-result{-webkit-backface-visibility:hidden;backface-visibility:hidden;max-height:50vh;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin;touch-action:pan-y}.md-tooltip .md-typeset .mdx-iconsearch-result{max-height:10.25rem}.md-typeset .mdx-iconsearch-result::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset .mdx-iconsearch-result__meta{color:var(--md-default-fg-color--lighter);font-size:.64rem;position:absolute;right:.6rem;top:.4rem}[dir=ltr] .md-typeset .mdx-iconsearch-result__list{margin-left:0}[dir=rtl] .md-typeset .mdx-iconsearch-result__list{margin-right:0}.md-typeset .mdx-iconsearch-result__list{list-style:none;margin:0;padding:0}[dir=ltr] .md-typeset .mdx-iconsearch-result__item{margin-left:0}[dir=rtl] .md-typeset .mdx-iconsearch-result__item{margin-right:0}.md-typeset .mdx-iconsearch-result__item{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin:0;padding:.2rem .6rem}.md-typeset .mdx-iconsearch-result__item:last-child{border-bottom:none}.md-typeset .mdx-iconsearch-result__item>*{margin-right:.6rem}.md-typeset .mdx-iconsearch-result__item img{height:.9rem;width:.9rem}[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch-result__item img[src*=squidfunk]{filter:invert(1)}.md-typeset .mdx-premium p{margin:2em 0;text-align:center}.md-typeset .mdx-premium img{height:3.25rem}.md-typeset .mdx-premium p:last-child{display:flex;flex-wrap:wrap;justify-content:center}.md-typeset .mdx-premium p:last-child>a{display:block;flex-shrink:0}.md-typeset .mdx-sponsorship__list{margin:2em 0}.md-typeset .mdx-sponsorship__list:after{clear:both;content:"";display:block}.md-typeset .mdx-sponsorship__item{border-radius:100%;display:block;float:left;height:1.6rem;margin:.2rem;overflow:hidden;transform:scale(1);transition:color 125ms,transform 125ms;width:1.6rem}.md-typeset .mdx-sponsorship__item:focus,.md-typeset .mdx-sponsorship__item:hover{transform:scale(1.1)}.md-typeset .mdx-sponsorship__item:focus img,.md-typeset .mdx-sponsorship__item:hover img{filter:grayscale(0)}.md-typeset .mdx-sponsorship__item--private{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:.6rem;font-weight:700;line-height:1.6rem;text-align:center}.md-typeset .mdx-sponsorship__item img{display:block;filter:grayscale(100%) opacity(75%);height:auto;transition:filter 125ms;width:100%}.md-typeset .mdx-sponsorship-button{font-weight:400}.md-typeset .mdx-sponsorship-count,.md-typeset .mdx-sponsorship-total{font-weight:700} \ No newline at end of file diff --git a/mkdocs-overrides/assets/stylesheets/main.82a244a8.min.css.map b/mkdocs-overrides/assets/stylesheets/main.82a244a8.min.css.map deleted file mode 100644 index a1f0f161e..000000000 --- a/mkdocs-overrides/assets/stylesheets/main.82a244a8.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/overrides/assets/stylesheets/main/_typeset.scss","../../../../src/overrides/assets/stylesheets/main.scss","src/assets/stylesheets/utilities/_break.scss","src/overrides/assets/stylesheets/main/layout/_banner.scss","src/overrides/assets/stylesheets/main/layout/_hero.scss","src/overrides/assets/stylesheets/main/layout/_iconsearch.scss","src/overrides/assets/stylesheets/main/layout/_sponsorship.scss"],"names":[],"mappings":"AA2BA,yBACE,cAIE,kBC7BF,CDgCA,QAEE,qBC/BF,CACF,CDoBA,iBACE,cAIE,kBC7BF,CDgCA,QAEE,qBC/BF,CACF,CD0CE,qBACE,aCxCJ,CD4CE,uBACE,UC1CJ,CD6CI,8BAGE,QAAA,CACA,sBAAA,CAHA,iBAAA,CACA,UCzCN,CD+CI,8BAOE,WAAA,CAFA,WAAA,CAFA,MAAA,CAGA,eAAA,CALA,iBAAA,CACA,KAAA,CAEA,UC1CN,CDkDE,uBACE,mCAAA,CAAA,2BChDJ,CDoDE,0BACE,aClDJ,CDsDE,+BACE,cAAA,CACA,uBCpDJ,CDuDI,0EAEE,WCtDN,CD0DI,oCAGE,2CAAA,CADA,gCAAA,CADA,aCtDN,CD6DE,4BACE,UAAA,CACA,uBC3DJ,CD8DI,2EAEE,SC7DN,CDqEI,wDAEE,cCnEN,CC2JI,wCF1FA,wDAMI,eClEN,CACF,CDsEI,4BACE,kBCpEN,CDyEE,wBACE,YAAA,CACA,gBCvEJ,CD0EI,4BAEE,kBAAA,CADA,WCvEN,CD+EM,sCACE,aAAA,CACA,kBC7ER,CDiFM,+BACE,aC/ER,CEnDE,mDAGE,kBFsDJ,CElDE,kBACE,kBFoDJ,CEhDE,8BACE,gBFkDJ,CEnDE,8BACE,iBFkDJ,CGlEA,eAEE,uYACE,CAFF,gBHsEF,CG3DE,4CACE,yYH6DJ,CGjDA,UAEE,gCAAA,CADA,cHqDF,CGjDE,aAEE,kBAAA,CACA,eAAA,CAFA,kBHqDJ,CCqGI,wCE3JF,aAOI,gBHmDJ,CACF,CG/CE,mBACE,mBHiDJ,CC0EI,mCE7IJ,UAwBI,mBAAA,CADA,YHiDF,CG7CE,mBAEE,iBAAA,CADA,eAAA,CAEA,mBH+CJ,CG3CE,iBACE,OAAA,CAEA,0BAAA,CADA,WH8CJ,CACF,CC0DI,sCEhGA,iBACE,0BHyCJ,CACF,CGrCE,qBAGE,gCAAA,CADA,kBAAA,CADA,gBHyCJ,CGpCI,sDAGE,0CAAA,CACA,sCAAA,CAFA,+BHuCN,CGjCI,8BAEE,2CAAA,CACA,uCAAA,CAFA,aHqCN,CI7HE,4BAEE,2CAAA,CACA,mBAAA,CACA,8BAAA,CAHA,iBAAA,CAIA,2BJgIJ,CI7HI,2EAEE,8BJ8HN,CI1HI,sCACE,qCAAA,CACA,eJ4HN,CIzHM,mEACE,kCJ2HR,CIrHE,mCAIE,kCAAA,CAAA,0BAAA,CAHA,eAAA,CACA,eAAA,CAKA,+DAAA,CADA,oBAAA,CADA,kBJwHJ,CInHI,+CACE,mBJqHN,CIjHI,sDAEE,YAAA,CADA,WJoHN,CI/GI,4DACE,oDJiHN,CI9GM,kEACE,0CJgHR,CI3GI,yCAIE,yCAAA,CACA,gBAAA,CAJA,iBAAA,CAEA,WAAA,CADA,SJgHN,CIzGI,mDAIE,aJ2GN,CI/GI,mDAIE,cJ2GN,CI/GI,yCAME,eAAA,CALA,QAAA,CAIA,SJ0GN,CIrGI,mDAIE,aJuGN,CI3GI,mDAIE,cJuGN,CI3GI,yCAME,+DAAA,CALA,QAAA,CAIA,mBJsGN,CIlGM,oDACE,kBJoGR,CIhGM,2CACE,kBJkGR,CI9FM,6CAEE,YAAA,CADA,WJiGR,CI7FQ,0FACE,gBJ+FV,CKjMI,2BACE,YAAA,CACA,iBLoMN,CKhMI,6BACE,cLkMN,CK9LI,sCACE,YAAA,CACA,cAAA,CACA,sBLgMN,CK7LM,wCACE,aAAA,CACA,aL+LR,CKtLI,mCACE,YLwLN,CKrLM,yCAEE,UAAA,CACA,UAAA,CAFA,aLyLR,CKlLI,mCAOE,kBAAA,CANA,aAAA,CACA,UAAA,CAEA,aAAA,CACA,YAAA,CACA,eAAA,CAEA,kBAAA,CACA,sCACE,CAPF,YL0LN,CK/KM,kFAEE,oBLgLR,CK7KQ,0FACE,mBL+KV,CK1KM,4CAME,+CAAA,CALA,yCAAA,CAEA,eAAA,CADA,eAAA,CAEA,kBAAA,CACA,iBL6KR,CKxKM,uCACE,aAAA,CAGA,mCAAA,CADA,WAAA,CAEA,uBAAA,CAHA,UL6KR,CKpKE,oCACE,eLsKJ,CKlKE,sEAEE,eLoKJ","file":"main.css"} \ No newline at end of file diff --git a/mkdocs-overrides/blog.html b/mkdocs-overrides/blog.html deleted file mode 100644 index 00f72bb94..000000000 --- a/mkdocs-overrides/blog.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "main.html" %} -{% block content %} - {{ super() }} -

    {{ lang.t("meta.comments") }}

    - - -{% endblock %} diff --git a/mkdocs-overrides/home.html b/mkdocs-overrides/home.html deleted file mode 100644 index ea3c7c111..000000000 --- a/mkdocs-overrides/home.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "main.html" %} -{% block tabs %} - {{ super() }} - -
    -
    -
    -
    - -
    -
    -

    Technical documentation that just works

    -

    {{ config.site_description }}. Set up in 5 minutes.

    - - Quick start - - - Get Insiders - -
    -
    -
    -
    -{% endblock %} -{% block content %}{% endblock %} -{% block footer %}{% endblock %} diff --git a/mkdocs-overrides/main.html b/mkdocs-overrides/main.html deleted file mode 100644 index 7247d6cec..000000000 --- a/mkdocs-overrides/main.html +++ /dev/null @@ -1,19 +0,0 @@ -{#- - This file was automatically generated - do not edit --#} -{% extends "base.html" %} -{% block extrahead %} - -{% endblock %} -{% block announce %} - - Follow me on LinkedIn - -{% endblock %} -{% block content %} - {% include "partials/content.html" %} -{% endblock %} -{% block scripts %} - {{ super() }} - -{% endblock %} diff --git a/mkdocs-overrides/partials/content.html b/mkdocs-overrides/partials/content.html deleted file mode 100644 index 12f24ee04..000000000 --- a/mkdocs-overrides/partials/content.html +++ /dev/null @@ -1,23 +0,0 @@ -{% if page.edit_url %} - {% set edit = "https://github.com/leandromonaco/leandromonaco.github.io/edit" %} - {% set view = "https://raw.githubusercontent.com/squidfunk/mkdocs-material" %} - - {% include ".icons/material/file-edit-outline.svg" %} - - - {% include ".icons/material/file-eye-outline.svg" %} - -{% endif %} -{% if "tags" in config.plugins %} - {% include "partials/tags.html" %} -{% endif %} -{% if not "\x3ch1" in page.content %} -

    {{ page.title | d(config.site_name, true)}}

    -{% endif %} -{{ page.content }} -{% if page.meta and ( - page.meta.git_revision_date_localized or - page.meta.revision_date -) %} - {% include "partials/source-file.html" %} -{% endif %} diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index 4454ed3ea..000000000 --- a/mkdocs.yml +++ /dev/null @@ -1,147 +0,0 @@ -site_name: Digital Knowledge Garden -site_url: https://leandromonaco.github.io/digital-knowledge-garden/ -site_description: Digital Knowledge Garden -site_author: Leandro Monaco - -nav: - - Home: index - - Learning: - - Books: 'pages/Books' - - Training: 'pages/Training' - - Tooling: - - 'Playwright': 'pages/Playwright' - - 'Docker': 'pages/Docker' - - 'Git': 'pages/Git' - - 'Development Machine Setup': 'pages/Development Environment Setup' - - '.NET': - - 'Configuration': 'pages/Configuration' - - 'ASP.NET': 'pages/ASP.NET' - - 'Entity Framework': 'pages/EntityFramework' - - Infrastructure: - - 'AWS': 'pages/AWS' - - 'Azure': 'pages/Azure' - - 'SSL': 'pages/SSL Certificate' - - Data: - - 'SQL Server': 'pages/Sql Server' - - 'Entity Framework': 'pages/EntityFramework' - - 'Front-end': - - 'Angular': 'pages/Angular' - - Management: - - '1:1 Guidelines': 'pages/1on1s' - - 'Metrics': 'pages/Metrics' - - 'Ways of Working': 'pages/Ways of Working' - - 'Software Development Strategy': 'pages/Software Development Strategy' - - 'Goals': - - 'OKRs': 'pages/Goals' - - 'Quality': 'pages/Quality' - - 'Continous Improvement': 'pages/Continous Improvement' - - 'Knowledge Sharing': 'pages/Knowledge Sharing' - - -repo_name: digital-knowledge-garden -repo_url: https://github.com/leandromonaco/digital-knowledge-garden/ -edit_uri: "edit/main/docs" - -theme: - name: material - custom_dir: mkdocs-overrides - palette: - # Palette toggle for automatic mode - - media: "(prefers-color-scheme)" - toggle: - icon: material/brightness-auto - name: Switch to light mode - - # Palette toggle for light mode - - media: "(prefers-color-scheme: light)" - scheme: default - toggle: - icon: material/brightness-7 - name: Switch to dark mode - - # Palette toggle for dark mode - - media: "(prefers-color-scheme: dark)" - scheme: slate - toggle: - icon: material/brightness-4 - name: Switch to system preference - - # Static files - static_templates: - - 404.html - - # Don't include MkDocs' JavaScript - include_search_page: false - search_index_only: true - -plugins: - - search - - git-revision-date-localized - -# Default values, taken from mkdocs_theme.yml -language: en - -features: - - content.code.annotate - # - content.tabs.link - - content.tooltips - # - header.autohide - # - navigation.expand - - navigation.indexes - # - navigation.instant - # - navigation.prune - - navigation.sections - - navigation.tabs - # - navigation.tabs.sticky - - navigation.top - - navigation.tracking - - search.highlight - - search.share - - search.suggest - - toc.follow - # - toc.integrate - -font: - text: Roboto - code: Roboto Mono - -# Extensions -markdown_extensions: - - abbr - - admonition - - attr_list - - def_list - - footnotes - - meta - - md_in_html - - toc: - permalink: true - - pymdownx.arithmatex: - generic: true - - pymdownx.betterem: - smart_enable: all - - pymdownx.caret - - pymdownx.details - - pymdownx.emoji: - emoji_generator: !!python/name:materialx.emoji.to_svg - emoji_index: !!python/name:materialx.emoji.twemoji - - pymdownx.highlight: - anchor_linenums: true - - pymdownx.inlinehilite - - pymdownx.keys - - pymdownx.magiclink: - repo_url_shorthand: true - user: squidfunk - repo: mkdocs-material - - pymdownx.mark - - pymdownx.smartsymbols - - pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format - - pymdownx.tabbed: - alternate_style: true - - pymdownx.tasklist: - custom_checkbox: true - - pymdownx.tilde diff --git a/Obsidian/.NET Logging.md b/src/.NET Logging.md similarity index 100% rename from Obsidian/.NET Logging.md rename to src/.NET Logging.md diff --git a/Obsidian/.NET Upgrade.md b/src/.NET Upgrade.md similarity index 100% rename from Obsidian/.NET Upgrade.md rename to src/.NET Upgrade.md diff --git a/Obsidian/.NET.md b/src/.NET.md similarity index 100% rename from Obsidian/.NET.md rename to src/.NET.md diff --git a/Obsidian/.obsidian/app.json b/src/.obsidian/app.json similarity index 100% rename from Obsidian/.obsidian/app.json rename to src/.obsidian/app.json diff --git a/Obsidian/.obsidian/appearance.json b/src/.obsidian/appearance.json similarity index 100% rename from Obsidian/.obsidian/appearance.json rename to src/.obsidian/appearance.json diff --git a/src/.obsidian/community-plugins.json b/src/.obsidian/community-plugins.json new file mode 100644 index 000000000..7be372243 --- /dev/null +++ b/src/.obsidian/community-plugins.json @@ -0,0 +1,3 @@ +[ + "webpage-html-export" +] \ No newline at end of file diff --git a/Obsidian/.obsidian/core-plugins-migration.json b/src/.obsidian/core-plugins-migration.json similarity index 100% rename from Obsidian/.obsidian/core-plugins-migration.json rename to src/.obsidian/core-plugins-migration.json diff --git a/Obsidian/.obsidian/core-plugins.json b/src/.obsidian/core-plugins.json similarity index 100% rename from Obsidian/.obsidian/core-plugins.json rename to src/.obsidian/core-plugins.json diff --git a/Obsidian/.obsidian/graph.json b/src/.obsidian/graph.json similarity index 100% rename from Obsidian/.obsidian/graph.json rename to src/.obsidian/graph.json diff --git a/Obsidian/.obsidian/hotkeys.json b/src/.obsidian/hotkeys.json similarity index 100% rename from Obsidian/.obsidian/hotkeys.json rename to src/.obsidian/hotkeys.json diff --git a/src/.obsidian/plugins/webpage-html-export/data.json b/src/.obsidian/plugins/webpage-html-export/data.json new file mode 100644 index 000000000..209cd8ee8 --- /dev/null +++ b/src/.obsidian/plugins/webpage-html-export/data.json @@ -0,0 +1,31 @@ +{ + "inlineCSS": false, + "inlineJS": false, + "inlineImages": false, + "includePluginCSS": "", + "includeSvelteCSS": true, + "makeNamesWebStyle": true, + "allowFoldingHeadings": true, + "addFilenameTitle": true, + "beautifyHTML": false, + "customLineWidth": "", + "contentWidth": "", + "sidebarWidth": "", + "startOutlineCollapsed": false, + "dataviewBlockWaitTime": 700, + "showWarningsInExportLog": true, + "addDarkModeToggle": true, + "includeOutline": true, + "includeGraphView": true, + "includeFileTree": true, + "exportPreset": "website", + "openAfterExport": true, + "graphAttractionForce": 1, + "graphLinkLength": 10, + "graphRepulsionForce": 150, + "graphCentralForce": 3, + "graphEdgePruning": 100, + "graphMinNodeSize": 3, + "graphMaxNodeSize": 7, + "lastExportPath": "C:\\Dev\\GitHub\\workbench\\digital-knowledge-garden\\Website" +} \ No newline at end of file diff --git a/src/.obsidian/plugins/webpage-html-export/main.js b/src/.obsidian/plugins/webpage-html-export/main.js new file mode 100644 index 000000000..280fcb95d --- /dev/null +++ b/src/.obsidian/plugins/webpage-html-export/main.js @@ -0,0 +1,11899 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateAdd = (obj, member, value) => { + if (member.has(obj)) + throw TypeError("Cannot add the same private member more than once"); + member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; +var __toBinary = /* @__PURE__ */ (() => { + var table = new Uint8Array(128); + for (var i = 0; i < 64; i++) + table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i; + return (base64) => { + var n = base64.length, bytes = new Uint8Array((n - (base64[n - 1] == "=") - (base64[n - 2] == "=")) * 3 / 4 | 0); + for (var i2 = 0, j = 0; i2 < n; ) { + var c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)]; + var c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)]; + bytes[j++] = c0 << 2 | c1 >> 4; + bytes[j++] = c1 << 4 | c2 >> 2; + bytes[j++] = c2 << 6 | c3; + } + return bytes; + }; +})(); + +// node_modules/upath/build/code/upath.js +var require_upath = __commonJS({ + "node_modules/upath/build/code/upath.js"(exports) { + var VERSION = "2.0.1"; + var extraFn; + var extraFunctions; + var isFunction; + var isString; + var isValidExt; + var name; + var path; + var propName; + var propValue; + var toUnix; + var upath; + var slice = [].slice; + var indexOf = [].indexOf || function(item) { + for (var i = 0, l = this.length; i < l; i++) { + if (i in this && this[i] === item) + return i; + } + return -1; + }; + var hasProp = {}.hasOwnProperty; + path = require("path"); + isFunction = function(val) { + return typeof val === "function"; + }; + isString = function(val) { + return typeof val === "string" || !!val && typeof val === "object" && Object.prototype.toString.call(val) === "[object String]"; + }; + upath = exports; + upath.VERSION = typeof VERSION !== "undefined" && VERSION !== null ? VERSION : "NO-VERSION"; + toUnix = function(p) { + p = p.replace(/\\/g, "/"); + p = p.replace(/(? 0) { + p0 = toUnix(p[0]); + if (p0.startsWith("./") && !result.startsWith("./") && !result.startsWith("..")) { + result = "./" + result; + } else if (p0.startsWith("//") && !result.startsWith("//")) { + if (p0.startsWith("//./")) { + result = "//." + result; + } else { + result = "/" + result; + } + } + } + return result; + }, + addExt: function(file, ext) { + if (!ext) { + return file; + } else { + if (ext[0] !== ".") { + ext = "." + ext; + } + return file + (file.endsWith(ext) ? "" : ext); + } + }, + trimExt: function(filename, ignoreExts, maxSize) { + var oldExt; + if (maxSize == null) { + maxSize = 7; + } + oldExt = upath.extname(filename); + if (isValidExt(oldExt, ignoreExts, maxSize)) { + return filename.slice(0, +(filename.length - oldExt.length - 1) + 1 || 9e9); + } else { + return filename; + } + }, + removeExt: function(filename, ext) { + if (!ext) { + return filename; + } else { + ext = ext[0] === "." ? ext : "." + ext; + if (upath.extname(filename) === ext) { + return upath.trimExt(filename, [], ext.length); + } else { + return filename; + } + } + }, + changeExt: function(filename, ext, ignoreExts, maxSize) { + if (maxSize == null) { + maxSize = 7; + } + return upath.trimExt(filename, ignoreExts, maxSize) + (!ext ? "" : ext[0] === "." ? ext : "." + ext); + }, + defaultExt: function(filename, ext, ignoreExts, maxSize) { + var oldExt; + if (maxSize == null) { + maxSize = 7; + } + oldExt = upath.extname(filename); + if (isValidExt(oldExt, ignoreExts, maxSize)) { + return filename; + } else { + return upath.addExt(filename, ext); + } + } + }; + isValidExt = function(ext, ignoreExts, maxSize) { + if (ignoreExts == null) { + ignoreExts = []; + } + return ext && ext.length <= maxSize && indexOf.call(ignoreExts.map(function(e) { + return (e && e[0] !== "." ? "." : "") + e; + }), ext) < 0; + }; + for (name in extraFunctions) { + if (!hasProp.call(extraFunctions, name)) + continue; + extraFn = extraFunctions[name]; + if (upath[name] !== void 0) { + throw new Error("path." + name + " already exists."); + } else { + upath[name] = extraFn; + } + } + } +}); + +// node_modules/js-beautify/js/src/core/output.js +var require_output = __commonJS({ + "node_modules/js-beautify/js/src/core/output.js"(exports, module2) { + "use strict"; + function OutputLine(parent) { + this.__parent = parent; + this.__character_count = 0; + this.__indent_count = -1; + this.__alignment_count = 0; + this.__wrap_point_index = 0; + this.__wrap_point_character_count = 0; + this.__wrap_point_indent_count = -1; + this.__wrap_point_alignment_count = 0; + this.__items = []; + } + OutputLine.prototype.clone_empty = function() { + var line = new OutputLine(this.__parent); + line.set_indent(this.__indent_count, this.__alignment_count); + return line; + }; + OutputLine.prototype.item = function(index) { + if (index < 0) { + return this.__items[this.__items.length + index]; + } else { + return this.__items[index]; + } + }; + OutputLine.prototype.has_match = function(pattern) { + for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) { + if (this.__items[lastCheckedOutput].match(pattern)) { + return true; + } + } + return false; + }; + OutputLine.prototype.set_indent = function(indent, alignment) { + if (this.is_empty()) { + this.__indent_count = indent || 0; + this.__alignment_count = alignment || 0; + this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count); + } + }; + OutputLine.prototype._set_wrap_point = function() { + if (this.__parent.wrap_line_length) { + this.__wrap_point_index = this.__items.length; + this.__wrap_point_character_count = this.__character_count; + this.__wrap_point_indent_count = this.__parent.next_line.__indent_count; + this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count; + } + }; + OutputLine.prototype._should_wrap = function() { + return this.__wrap_point_index && this.__character_count > this.__parent.wrap_line_length && this.__wrap_point_character_count > this.__parent.next_line.__character_count; + }; + OutputLine.prototype._allow_wrap = function() { + if (this._should_wrap()) { + this.__parent.add_new_line(); + var next = this.__parent.current_line; + next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count); + next.__items = this.__items.slice(this.__wrap_point_index); + this.__items = this.__items.slice(0, this.__wrap_point_index); + next.__character_count += this.__character_count - this.__wrap_point_character_count; + this.__character_count = this.__wrap_point_character_count; + if (next.__items[0] === " ") { + next.__items.splice(0, 1); + next.__character_count -= 1; + } + return true; + } + return false; + }; + OutputLine.prototype.is_empty = function() { + return this.__items.length === 0; + }; + OutputLine.prototype.last = function() { + if (!this.is_empty()) { + return this.__items[this.__items.length - 1]; + } else { + return null; + } + }; + OutputLine.prototype.push = function(item) { + this.__items.push(item); + var last_newline_index = item.lastIndexOf("\n"); + if (last_newline_index !== -1) { + this.__character_count = item.length - last_newline_index; + } else { + this.__character_count += item.length; + } + }; + OutputLine.prototype.pop = function() { + var item = null; + if (!this.is_empty()) { + item = this.__items.pop(); + this.__character_count -= item.length; + } + return item; + }; + OutputLine.prototype._remove_indent = function() { + if (this.__indent_count > 0) { + this.__indent_count -= 1; + this.__character_count -= this.__parent.indent_size; + } + }; + OutputLine.prototype._remove_wrap_indent = function() { + if (this.__wrap_point_indent_count > 0) { + this.__wrap_point_indent_count -= 1; + } + }; + OutputLine.prototype.trim = function() { + while (this.last() === " ") { + this.__items.pop(); + this.__character_count -= 1; + } + }; + OutputLine.prototype.toString = function() { + var result = ""; + if (this.is_empty()) { + if (this.__parent.indent_empty_lines) { + result = this.__parent.get_indent_string(this.__indent_count); + } + } else { + result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count); + result += this.__items.join(""); + } + return result; + }; + function IndentStringCache(options, baseIndentString) { + this.__cache = [""]; + this.__indent_size = options.indent_size; + this.__indent_string = options.indent_char; + if (!options.indent_with_tabs) { + this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char); + } + baseIndentString = baseIndentString || ""; + if (options.indent_level > 0) { + baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string); + } + this.__base_string = baseIndentString; + this.__base_string_length = baseIndentString.length; + } + IndentStringCache.prototype.get_indent_size = function(indent, column) { + var result = this.__base_string_length; + column = column || 0; + if (indent < 0) { + result = 0; + } + result += indent * this.__indent_size; + result += column; + return result; + }; + IndentStringCache.prototype.get_indent_string = function(indent_level, column) { + var result = this.__base_string; + column = column || 0; + if (indent_level < 0) { + indent_level = 0; + result = ""; + } + column += indent_level * this.__indent_size; + this.__ensure_cache(column); + result += this.__cache[column]; + return result; + }; + IndentStringCache.prototype.__ensure_cache = function(column) { + while (column >= this.__cache.length) { + this.__add_column(); + } + }; + IndentStringCache.prototype.__add_column = function() { + var column = this.__cache.length; + var indent = 0; + var result = ""; + if (this.__indent_size && column >= this.__indent_size) { + indent = Math.floor(column / this.__indent_size); + column -= indent * this.__indent_size; + result = new Array(indent + 1).join(this.__indent_string); + } + if (column) { + result += new Array(column + 1).join(" "); + } + this.__cache.push(result); + }; + function Output(options, baseIndentString) { + this.__indent_cache = new IndentStringCache(options, baseIndentString); + this.raw = false; + this._end_with_newline = options.end_with_newline; + this.indent_size = options.indent_size; + this.wrap_line_length = options.wrap_line_length; + this.indent_empty_lines = options.indent_empty_lines; + this.__lines = []; + this.previous_line = null; + this.current_line = null; + this.next_line = new OutputLine(this); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; + this.__add_outputline(); + } + Output.prototype.__add_outputline = function() { + this.previous_line = this.current_line; + this.current_line = this.next_line.clone_empty(); + this.__lines.push(this.current_line); + }; + Output.prototype.get_line_number = function() { + return this.__lines.length; + }; + Output.prototype.get_indent_string = function(indent, column) { + return this.__indent_cache.get_indent_string(indent, column); + }; + Output.prototype.get_indent_size = function(indent, column) { + return this.__indent_cache.get_indent_size(indent, column); + }; + Output.prototype.is_empty = function() { + return !this.previous_line && this.current_line.is_empty(); + }; + Output.prototype.add_new_line = function(force_newline) { + if (this.is_empty() || !force_newline && this.just_added_newline()) { + return false; + } + if (!this.raw) { + this.__add_outputline(); + } + return true; + }; + Output.prototype.get_code = function(eol) { + this.trim(true); + var last_item = this.current_line.pop(); + if (last_item) { + if (last_item[last_item.length - 1] === "\n") { + last_item = last_item.replace(/\n+$/g, ""); + } + this.current_line.push(last_item); + } + if (this._end_with_newline) { + this.__add_outputline(); + } + var sweet_code = this.__lines.join("\n"); + if (eol !== "\n") { + sweet_code = sweet_code.replace(/[\n]/g, eol); + } + return sweet_code; + }; + Output.prototype.set_wrap_point = function() { + this.current_line._set_wrap_point(); + }; + Output.prototype.set_indent = function(indent, alignment) { + indent = indent || 0; + alignment = alignment || 0; + this.next_line.set_indent(indent, alignment); + if (this.__lines.length > 1) { + this.current_line.set_indent(indent, alignment); + return true; + } + this.current_line.set_indent(); + return false; + }; + Output.prototype.add_raw_token = function(token) { + for (var x = 0; x < token.newlines; x++) { + this.__add_outputline(); + } + this.current_line.set_indent(-1); + this.current_line.push(token.whitespace_before); + this.current_line.push(token.text); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; + }; + Output.prototype.add_token = function(printable_token) { + this.__add_space_before_token(); + this.current_line.push(printable_token); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = this.current_line._allow_wrap(); + }; + Output.prototype.__add_space_before_token = function() { + if (this.space_before_token && !this.just_added_newline()) { + if (!this.non_breaking_space) { + this.set_wrap_point(); + } + this.current_line.push(" "); + } + }; + Output.prototype.remove_indent = function(index) { + var output_length = this.__lines.length; + while (index < output_length) { + this.__lines[index]._remove_indent(); + index++; + } + this.current_line._remove_wrap_indent(); + }; + Output.prototype.trim = function(eat_newlines) { + eat_newlines = eat_newlines === void 0 ? false : eat_newlines; + this.current_line.trim(); + while (eat_newlines && this.__lines.length > 1 && this.current_line.is_empty()) { + this.__lines.pop(); + this.current_line = this.__lines[this.__lines.length - 1]; + this.current_line.trim(); + } + this.previous_line = this.__lines.length > 1 ? this.__lines[this.__lines.length - 2] : null; + }; + Output.prototype.just_added_newline = function() { + return this.current_line.is_empty(); + }; + Output.prototype.just_added_blankline = function() { + return this.is_empty() || this.current_line.is_empty() && this.previous_line.is_empty(); + }; + Output.prototype.ensure_empty_line_above = function(starts_with, ends_with) { + var index = this.__lines.length - 2; + while (index >= 0) { + var potentialEmptyLine = this.__lines[index]; + if (potentialEmptyLine.is_empty()) { + break; + } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 && potentialEmptyLine.item(-1) !== ends_with) { + this.__lines.splice(index + 1, 0, new OutputLine(this)); + this.previous_line = this.__lines[this.__lines.length - 2]; + break; + } + index--; + } + }; + module2.exports.Output = Output; + } +}); + +// node_modules/js-beautify/js/src/core/token.js +var require_token = __commonJS({ + "node_modules/js-beautify/js/src/core/token.js"(exports, module2) { + "use strict"; + function Token(type, text, newlines, whitespace_before) { + this.type = type; + this.text = text; + this.comments_before = null; + this.newlines = newlines || 0; + this.whitespace_before = whitespace_before || ""; + this.parent = null; + this.next = null; + this.previous = null; + this.opened = null; + this.closed = null; + this.directives = null; + } + module2.exports.Token = Token; + } +}); + +// node_modules/js-beautify/js/src/javascript/acorn.js +var require_acorn = __commonJS({ + "node_modules/js-beautify/js/src/javascript/acorn.js"(exports) { + "use strict"; + var baseASCIIidentifierStartChars = "\\x23\\x24\\x40\\x41-\\x5a\\x5f\\x61-\\x7a"; + var baseASCIIidentifierChars = "\\x24\\x30-\\x39\\x41-\\x5a\\x5f\\x61-\\x7a"; + var nonASCIIidentifierStartChars = "\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc"; + var nonASCIIidentifierChars = "\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u0620-\\u0649\\u0672-\\u06d3\\u06e7-\\u06e8\\u06fb-\\u06fc\\u0730-\\u074a\\u0800-\\u0814\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0840-\\u0857\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962-\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09d7\\u09df-\\u09e0\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2-\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b5f-\\u0b60\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62-\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2-\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d46-\\u0d48\\u0d57\\u0d62-\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e34-\\u0e3a\\u0e40-\\u0e45\\u0e50-\\u0e59\\u0eb4-\\u0eb9\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f41-\\u0f47\\u0f71-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u1000-\\u1029\\u1040-\\u1049\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u170e-\\u1710\\u1720-\\u1730\\u1740-\\u1750\\u1772\\u1773\\u1780-\\u17b2\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u1920-\\u192b\\u1930-\\u193b\\u1951-\\u196d\\u19b0-\\u19c0\\u19c8-\\u19c9\\u19d0-\\u19d9\\u1a00-\\u1a15\\u1a20-\\u1a53\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b46-\\u1b4b\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c00-\\u1c22\\u1c40-\\u1c49\\u1c5b-\\u1c7d\\u1cd0-\\u1cd2\\u1d00-\\u1dbe\\u1e01-\\u1f15\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2d81-\\u2d96\\u2de0-\\u2dff\\u3021-\\u3028\\u3099\\u309a\\ua640-\\ua66d\\ua674-\\ua67d\\ua69f\\ua6f0-\\ua6f1\\ua7f8-\\ua800\\ua806\\ua80b\\ua823-\\ua827\\ua880-\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8f3-\\ua8f7\\ua900-\\ua909\\ua926-\\ua92d\\ua930-\\ua945\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa00-\\uaa27\\uaa40-\\uaa41\\uaa4c-\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaae0-\\uaae9\\uaaf2-\\uaaf3\\uabc0-\\uabe1\\uabec\\uabed\\uabf0-\\uabf9\\ufb20-\\ufb28\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f"; + var identifierStart = "(?:\\\\u[0-9a-fA-F]{4}|[" + baseASCIIidentifierStartChars + nonASCIIidentifierStartChars + "])"; + var identifierChars = "(?:\\\\u[0-9a-fA-F]{4}|[" + baseASCIIidentifierChars + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "])*"; + exports.identifier = new RegExp(identifierStart + identifierChars, "g"); + exports.identifierStart = new RegExp(identifierStart); + exports.identifierMatch = new RegExp("(?:\\\\u[0-9a-fA-F]{4}|[" + baseASCIIidentifierChars + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "])+"); + exports.newline = /[\n\r\u2028\u2029]/; + exports.lineBreak = new RegExp("\r\n|" + exports.newline.source); + exports.allLineBreaks = new RegExp(exports.lineBreak.source, "g"); + } +}); + +// node_modules/js-beautify/js/src/core/options.js +var require_options = __commonJS({ + "node_modules/js-beautify/js/src/core/options.js"(exports, module2) { + "use strict"; + function Options(options, merge_child_field) { + this.raw_options = _mergeOpts(options, merge_child_field); + this.disabled = this._get_boolean("disabled"); + this.eol = this._get_characters("eol", "auto"); + this.end_with_newline = this._get_boolean("end_with_newline"); + this.indent_size = this._get_number("indent_size", 4); + this.indent_char = this._get_characters("indent_char", " "); + this.indent_level = this._get_number("indent_level"); + this.preserve_newlines = this._get_boolean("preserve_newlines", true); + this.max_preserve_newlines = this._get_number("max_preserve_newlines", 32786); + if (!this.preserve_newlines) { + this.max_preserve_newlines = 0; + } + this.indent_with_tabs = this._get_boolean("indent_with_tabs", this.indent_char === " "); + if (this.indent_with_tabs) { + this.indent_char = " "; + if (this.indent_size === 1) { + this.indent_size = 4; + } + } + this.wrap_line_length = this._get_number("wrap_line_length", this._get_number("max_char")); + this.indent_empty_lines = this._get_boolean("indent_empty_lines"); + this.templating = this._get_selection_list("templating", ["auto", "none", "django", "erb", "handlebars", "php", "smarty"], ["auto"]); + } + Options.prototype._get_array = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || []; + if (typeof option_value === "object") { + if (option_value !== null && typeof option_value.concat === "function") { + result = option_value.concat(); + } + } else if (typeof option_value === "string") { + result = option_value.split(/[^a-zA-Z0-9_\/\-]+/); + } + return result; + }; + Options.prototype._get_boolean = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = option_value === void 0 ? !!default_value : !!option_value; + return result; + }; + Options.prototype._get_characters = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || ""; + if (typeof option_value === "string") { + result = option_value.replace(/\\r/, "\r").replace(/\\n/, "\n").replace(/\\t/, " "); + } + return result; + }; + Options.prototype._get_number = function(name, default_value) { + var option_value = this.raw_options[name]; + default_value = parseInt(default_value, 10); + if (isNaN(default_value)) { + default_value = 0; + } + var result = parseInt(option_value, 10); + if (isNaN(result)) { + result = default_value; + } + return result; + }; + Options.prototype._get_selection = function(name, selection_list, default_value) { + var result = this._get_selection_list(name, selection_list, default_value); + if (result.length !== 1) { + throw new Error("Invalid Option Value: The option '" + name + "' can only be one of the following values:\n" + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + return result[0]; + }; + Options.prototype._get_selection_list = function(name, selection_list, default_value) { + if (!selection_list || selection_list.length === 0) { + throw new Error("Selection list cannot be empty."); + } + default_value = default_value || [selection_list[0]]; + if (!this._is_valid_selection(default_value, selection_list)) { + throw new Error("Invalid Default Value!"); + } + var result = this._get_array(name, default_value); + if (!this._is_valid_selection(result, selection_list)) { + throw new Error("Invalid Option Value: The option '" + name + "' can contain only the following values:\n" + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + return result; + }; + Options.prototype._is_valid_selection = function(result, selection_list) { + return result.length && selection_list.length && !result.some(function(item) { + return selection_list.indexOf(item) === -1; + }); + }; + function _mergeOpts(allOptions, childFieldName) { + var finalOpts = {}; + allOptions = _normalizeOpts(allOptions); + var name; + for (name in allOptions) { + if (name !== childFieldName) { + finalOpts[name] = allOptions[name]; + } + } + if (childFieldName && allOptions[childFieldName]) { + for (name in allOptions[childFieldName]) { + finalOpts[name] = allOptions[childFieldName][name]; + } + } + return finalOpts; + } + function _normalizeOpts(options) { + var convertedOpts = {}; + var key; + for (key in options) { + var newKey = key.replace(/-/g, "_"); + convertedOpts[newKey] = options[key]; + } + return convertedOpts; + } + module2.exports.Options = Options; + module2.exports.normalizeOpts = _normalizeOpts; + module2.exports.mergeOpts = _mergeOpts; + } +}); + +// node_modules/js-beautify/js/src/javascript/options.js +var require_options2 = __commonJS({ + "node_modules/js-beautify/js/src/javascript/options.js"(exports, module2) { + "use strict"; + var BaseOptions = require_options().Options; + var validPositionValues = ["before-newline", "after-newline", "preserve-newline"]; + function Options(options) { + BaseOptions.call(this, options, "js"); + var raw_brace_style = this.raw_options.brace_style || null; + if (raw_brace_style === "expand-strict") { + this.raw_options.brace_style = "expand"; + } else if (raw_brace_style === "collapse-preserve-inline") { + this.raw_options.brace_style = "collapse,preserve-inline"; + } else if (this.raw_options.braces_on_own_line !== void 0) { + this.raw_options.brace_style = this.raw_options.braces_on_own_line ? "expand" : "collapse"; + } + var brace_style_split = this._get_selection_list("brace_style", ["collapse", "expand", "end-expand", "none", "preserve-inline"]); + this.brace_preserve_inline = false; + this.brace_style = "collapse"; + for (var bs = 0; bs < brace_style_split.length; bs++) { + if (brace_style_split[bs] === "preserve-inline") { + this.brace_preserve_inline = true; + } else { + this.brace_style = brace_style_split[bs]; + } + } + this.unindent_chained_methods = this._get_boolean("unindent_chained_methods"); + this.break_chained_methods = this._get_boolean("break_chained_methods"); + this.space_in_paren = this._get_boolean("space_in_paren"); + this.space_in_empty_paren = this._get_boolean("space_in_empty_paren"); + this.jslint_happy = this._get_boolean("jslint_happy"); + this.space_after_anon_function = this._get_boolean("space_after_anon_function"); + this.space_after_named_function = this._get_boolean("space_after_named_function"); + this.keep_array_indentation = this._get_boolean("keep_array_indentation"); + this.space_before_conditional = this._get_boolean("space_before_conditional", true); + this.unescape_strings = this._get_boolean("unescape_strings"); + this.e4x = this._get_boolean("e4x"); + this.comma_first = this._get_boolean("comma_first"); + this.operator_position = this._get_selection("operator_position", validPositionValues); + this.test_output_raw = this._get_boolean("test_output_raw"); + if (this.jslint_happy) { + this.space_after_anon_function = true; + } + } + Options.prototype = new BaseOptions(); + module2.exports.Options = Options; + } +}); + +// node_modules/js-beautify/js/src/core/inputscanner.js +var require_inputscanner = __commonJS({ + "node_modules/js-beautify/js/src/core/inputscanner.js"(exports, module2) { + "use strict"; + var regexp_has_sticky = RegExp.prototype.hasOwnProperty("sticky"); + function InputScanner(input_string) { + this.__input = input_string || ""; + this.__input_length = this.__input.length; + this.__position = 0; + } + InputScanner.prototype.restart = function() { + this.__position = 0; + }; + InputScanner.prototype.back = function() { + if (this.__position > 0) { + this.__position -= 1; + } + }; + InputScanner.prototype.hasNext = function() { + return this.__position < this.__input_length; + }; + InputScanner.prototype.next = function() { + var val = null; + if (this.hasNext()) { + val = this.__input.charAt(this.__position); + this.__position += 1; + } + return val; + }; + InputScanner.prototype.peek = function(index) { + var val = null; + index = index || 0; + index += this.__position; + if (index >= 0 && index < this.__input_length) { + val = this.__input.charAt(index); + } + return val; + }; + InputScanner.prototype.__match = function(pattern, index) { + pattern.lastIndex = index; + var pattern_match = pattern.exec(this.__input); + if (pattern_match && !(regexp_has_sticky && pattern.sticky)) { + if (pattern_match.index !== index) { + pattern_match = null; + } + } + return pattern_match; + }; + InputScanner.prototype.test = function(pattern, index) { + index = index || 0; + index += this.__position; + if (index >= 0 && index < this.__input_length) { + return !!this.__match(pattern, index); + } else { + return false; + } + }; + InputScanner.prototype.testChar = function(pattern, index) { + var val = this.peek(index); + pattern.lastIndex = 0; + return val !== null && pattern.test(val); + }; + InputScanner.prototype.match = function(pattern) { + var pattern_match = this.__match(pattern, this.__position); + if (pattern_match) { + this.__position += pattern_match[0].length; + } else { + pattern_match = null; + } + return pattern_match; + }; + InputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) { + var val = ""; + var match; + if (starting_pattern) { + match = this.match(starting_pattern); + if (match) { + val += match[0]; + } + } + if (until_pattern && (match || !starting_pattern)) { + val += this.readUntil(until_pattern, until_after); + } + return val; + }; + InputScanner.prototype.readUntil = function(pattern, until_after) { + var val = ""; + var match_index = this.__position; + pattern.lastIndex = this.__position; + var pattern_match = pattern.exec(this.__input); + if (pattern_match) { + match_index = pattern_match.index; + if (until_after) { + match_index += pattern_match[0].length; + } + } else { + match_index = this.__input_length; + } + val = this.__input.substring(this.__position, match_index); + this.__position = match_index; + return val; + }; + InputScanner.prototype.readUntilAfter = function(pattern) { + return this.readUntil(pattern, true); + }; + InputScanner.prototype.get_regexp = function(pattern, match_from) { + var result = null; + var flags = "g"; + if (match_from && regexp_has_sticky) { + flags = "y"; + } + if (typeof pattern === "string" && pattern !== "") { + result = new RegExp(pattern, flags); + } else if (pattern) { + result = new RegExp(pattern.source, flags); + } + return result; + }; + InputScanner.prototype.get_literal_regexp = function(literal_string) { + return RegExp(literal_string.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")); + }; + InputScanner.prototype.peekUntilAfter = function(pattern) { + var start = this.__position; + var val = this.readUntilAfter(pattern); + this.__position = start; + return val; + }; + InputScanner.prototype.lookBack = function(testVal) { + var start = this.__position - 1; + return start >= testVal.length && this.__input.substring(start - testVal.length, start).toLowerCase() === testVal; + }; + module2.exports.InputScanner = InputScanner; + } +}); + +// node_modules/js-beautify/js/src/core/tokenstream.js +var require_tokenstream = __commonJS({ + "node_modules/js-beautify/js/src/core/tokenstream.js"(exports, module2) { + "use strict"; + function TokenStream(parent_token) { + this.__tokens = []; + this.__tokens_length = this.__tokens.length; + this.__position = 0; + this.__parent_token = parent_token; + } + TokenStream.prototype.restart = function() { + this.__position = 0; + }; + TokenStream.prototype.isEmpty = function() { + return this.__tokens_length === 0; + }; + TokenStream.prototype.hasNext = function() { + return this.__position < this.__tokens_length; + }; + TokenStream.prototype.next = function() { + var val = null; + if (this.hasNext()) { + val = this.__tokens[this.__position]; + this.__position += 1; + } + return val; + }; + TokenStream.prototype.peek = function(index) { + var val = null; + index = index || 0; + index += this.__position; + if (index >= 0 && index < this.__tokens_length) { + val = this.__tokens[index]; + } + return val; + }; + TokenStream.prototype.add = function(token) { + if (this.__parent_token) { + token.parent = this.__parent_token; + } + this.__tokens.push(token); + this.__tokens_length += 1; + }; + module2.exports.TokenStream = TokenStream; + } +}); + +// node_modules/js-beautify/js/src/core/pattern.js +var require_pattern = __commonJS({ + "node_modules/js-beautify/js/src/core/pattern.js"(exports, module2) { + "use strict"; + function Pattern(input_scanner, parent) { + this._input = input_scanner; + this._starting_pattern = null; + this._match_pattern = null; + this._until_pattern = null; + this._until_after = false; + if (parent) { + this._starting_pattern = this._input.get_regexp(parent._starting_pattern, true); + this._match_pattern = this._input.get_regexp(parent._match_pattern, true); + this._until_pattern = this._input.get_regexp(parent._until_pattern); + this._until_after = parent._until_after; + } + } + Pattern.prototype.read = function() { + var result = this._input.read(this._starting_pattern); + if (!this._starting_pattern || result) { + result += this._input.read(this._match_pattern, this._until_pattern, this._until_after); + } + return result; + }; + Pattern.prototype.read_match = function() { + return this._input.match(this._match_pattern); + }; + Pattern.prototype.until_after = function(pattern) { + var result = this._create(); + result._until_after = true; + result._until_pattern = this._input.get_regexp(pattern); + result._update(); + return result; + }; + Pattern.prototype.until = function(pattern) { + var result = this._create(); + result._until_after = false; + result._until_pattern = this._input.get_regexp(pattern); + result._update(); + return result; + }; + Pattern.prototype.starting_with = function(pattern) { + var result = this._create(); + result._starting_pattern = this._input.get_regexp(pattern, true); + result._update(); + return result; + }; + Pattern.prototype.matching = function(pattern) { + var result = this._create(); + result._match_pattern = this._input.get_regexp(pattern, true); + result._update(); + return result; + }; + Pattern.prototype._create = function() { + return new Pattern(this._input, this); + }; + Pattern.prototype._update = function() { + }; + module2.exports.Pattern = Pattern; + } +}); + +// node_modules/js-beautify/js/src/core/whitespacepattern.js +var require_whitespacepattern = __commonJS({ + "node_modules/js-beautify/js/src/core/whitespacepattern.js"(exports, module2) { + "use strict"; + var Pattern = require_pattern().Pattern; + function WhitespacePattern(input_scanner, parent) { + Pattern.call(this, input_scanner, parent); + if (parent) { + this._line_regexp = this._input.get_regexp(parent._line_regexp); + } else { + this.__set_whitespace_patterns("", ""); + } + this.newline_count = 0; + this.whitespace_before_token = ""; + } + WhitespacePattern.prototype = new Pattern(); + WhitespacePattern.prototype.__set_whitespace_patterns = function(whitespace_chars, newline_chars) { + whitespace_chars += "\\t "; + newline_chars += "\\n\\r"; + this._match_pattern = this._input.get_regexp("[" + whitespace_chars + newline_chars + "]+", true); + this._newline_regexp = this._input.get_regexp("\\r\\n|[" + newline_chars + "]"); + }; + WhitespacePattern.prototype.read = function() { + this.newline_count = 0; + this.whitespace_before_token = ""; + var resulting_string = this._input.read(this._match_pattern); + if (resulting_string === " ") { + this.whitespace_before_token = " "; + } else if (resulting_string) { + var matches = this.__split(this._newline_regexp, resulting_string); + this.newline_count = matches.length - 1; + this.whitespace_before_token = matches[this.newline_count]; + } + return resulting_string; + }; + WhitespacePattern.prototype.matching = function(whitespace_chars, newline_chars) { + var result = this._create(); + result.__set_whitespace_patterns(whitespace_chars, newline_chars); + result._update(); + return result; + }; + WhitespacePattern.prototype._create = function() { + return new WhitespacePattern(this._input, this); + }; + WhitespacePattern.prototype.__split = function(regexp, input_string) { + regexp.lastIndex = 0; + var start_index = 0; + var result = []; + var next_match = regexp.exec(input_string); + while (next_match) { + result.push(input_string.substring(start_index, next_match.index)); + start_index = next_match.index + next_match[0].length; + next_match = regexp.exec(input_string); + } + if (start_index < input_string.length) { + result.push(input_string.substring(start_index, input_string.length)); + } else { + result.push(""); + } + return result; + }; + module2.exports.WhitespacePattern = WhitespacePattern; + } +}); + +// node_modules/js-beautify/js/src/core/tokenizer.js +var require_tokenizer = __commonJS({ + "node_modules/js-beautify/js/src/core/tokenizer.js"(exports, module2) { + "use strict"; + var InputScanner = require_inputscanner().InputScanner; + var Token = require_token().Token; + var TokenStream = require_tokenstream().TokenStream; + var WhitespacePattern = require_whitespacepattern().WhitespacePattern; + var TOKEN = { + START: "TK_START", + RAW: "TK_RAW", + EOF: "TK_EOF" + }; + var Tokenizer = function(input_string, options) { + this._input = new InputScanner(input_string); + this._options = options || {}; + this.__tokens = null; + this._patterns = {}; + this._patterns.whitespace = new WhitespacePattern(this._input); + }; + Tokenizer.prototype.tokenize = function() { + this._input.restart(); + this.__tokens = new TokenStream(); + this._reset(); + var current; + var previous = new Token(TOKEN.START, ""); + var open_token = null; + var open_stack = []; + var comments = new TokenStream(); + while (previous.type !== TOKEN.EOF) { + current = this._get_next_token(previous, open_token); + while (this._is_comment(current)) { + comments.add(current); + current = this._get_next_token(previous, open_token); + } + if (!comments.isEmpty()) { + current.comments_before = comments; + comments = new TokenStream(); + } + current.parent = open_token; + if (this._is_opening(current)) { + open_stack.push(open_token); + open_token = current; + } else if (open_token && this._is_closing(current, open_token)) { + current.opened = open_token; + open_token.closed = current; + open_token = open_stack.pop(); + current.parent = open_token; + } + current.previous = previous; + previous.next = current; + this.__tokens.add(current); + previous = current; + } + return this.__tokens; + }; + Tokenizer.prototype._is_first_token = function() { + return this.__tokens.isEmpty(); + }; + Tokenizer.prototype._reset = function() { + }; + Tokenizer.prototype._get_next_token = function(previous_token, open_token) { + this._readWhitespace(); + var resulting_string = this._input.read(/.+/g); + if (resulting_string) { + return this._create_token(TOKEN.RAW, resulting_string); + } else { + return this._create_token(TOKEN.EOF, ""); + } + }; + Tokenizer.prototype._is_comment = function(current_token) { + return false; + }; + Tokenizer.prototype._is_opening = function(current_token) { + return false; + }; + Tokenizer.prototype._is_closing = function(current_token, open_token) { + return false; + }; + Tokenizer.prototype._create_token = function(type, text) { + var token = new Token(type, text, this._patterns.whitespace.newline_count, this._patterns.whitespace.whitespace_before_token); + return token; + }; + Tokenizer.prototype._readWhitespace = function() { + return this._patterns.whitespace.read(); + }; + module2.exports.Tokenizer = Tokenizer; + module2.exports.TOKEN = TOKEN; + } +}); + +// node_modules/js-beautify/js/src/core/directives.js +var require_directives = __commonJS({ + "node_modules/js-beautify/js/src/core/directives.js"(exports, module2) { + "use strict"; + function Directives(start_block_pattern, end_block_pattern) { + start_block_pattern = typeof start_block_pattern === "string" ? start_block_pattern : start_block_pattern.source; + end_block_pattern = typeof end_block_pattern === "string" ? end_block_pattern : end_block_pattern.source; + this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \w+[:]\w+)+ /.source + end_block_pattern, "g"); + this.__directive_pattern = / (\w+)[:](\w+)/g; + this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\sbeautify\signore:end\s/.source + end_block_pattern, "g"); + } + Directives.prototype.get_directives = function(text) { + if (!text.match(this.__directives_block_pattern)) { + return null; + } + var directives = {}; + this.__directive_pattern.lastIndex = 0; + var directive_match = this.__directive_pattern.exec(text); + while (directive_match) { + directives[directive_match[1]] = directive_match[2]; + directive_match = this.__directive_pattern.exec(text); + } + return directives; + }; + Directives.prototype.readIgnored = function(input) { + return input.readUntilAfter(this.__directives_end_ignore_pattern); + }; + module2.exports.Directives = Directives; + } +}); + +// node_modules/js-beautify/js/src/core/templatablepattern.js +var require_templatablepattern = __commonJS({ + "node_modules/js-beautify/js/src/core/templatablepattern.js"(exports, module2) { + "use strict"; + var Pattern = require_pattern().Pattern; + var template_names = { + django: false, + erb: false, + handlebars: false, + php: false, + smarty: false + }; + function TemplatablePattern(input_scanner, parent) { + Pattern.call(this, input_scanner, parent); + this.__template_pattern = null; + this._disabled = Object.assign({}, template_names); + this._excluded = Object.assign({}, template_names); + if (parent) { + this.__template_pattern = this._input.get_regexp(parent.__template_pattern); + this._excluded = Object.assign(this._excluded, parent._excluded); + this._disabled = Object.assign(this._disabled, parent._disabled); + } + var pattern = new Pattern(input_scanner); + this.__patterns = { + handlebars_comment: pattern.starting_with(/{{!--/).until_after(/--}}/), + handlebars_unescaped: pattern.starting_with(/{{{/).until_after(/}}}/), + handlebars: pattern.starting_with(/{{/).until_after(/}}/), + php: pattern.starting_with(/<\?(?:[= ]|php)/).until_after(/\?>/), + erb: pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/), + django: pattern.starting_with(/{%/).until_after(/%}/), + django_value: pattern.starting_with(/{{/).until_after(/}}/), + django_comment: pattern.starting_with(/{#/).until_after(/#}/), + smarty: pattern.starting_with(/{(?=[^}{\s\n])/).until_after(/[^\s\n]}/), + smarty_comment: pattern.starting_with(/{\*/).until_after(/\*}/), + smarty_literal: pattern.starting_with(/{literal}/).until_after(/{\/literal}/) + }; + } + TemplatablePattern.prototype = new Pattern(); + TemplatablePattern.prototype._create = function() { + return new TemplatablePattern(this._input, this); + }; + TemplatablePattern.prototype._update = function() { + this.__set_templated_pattern(); + }; + TemplatablePattern.prototype.disable = function(language) { + var result = this._create(); + result._disabled[language] = true; + result._update(); + return result; + }; + TemplatablePattern.prototype.read_options = function(options) { + var result = this._create(); + for (var language in template_names) { + result._disabled[language] = options.templating.indexOf(language) === -1; + } + result._update(); + return result; + }; + TemplatablePattern.prototype.exclude = function(language) { + var result = this._create(); + result._excluded[language] = true; + result._update(); + return result; + }; + TemplatablePattern.prototype.read = function() { + var result = ""; + if (this._match_pattern) { + result = this._input.read(this._starting_pattern); + } else { + result = this._input.read(this._starting_pattern, this.__template_pattern); + } + var next = this._read_template(); + while (next) { + if (this._match_pattern) { + next += this._input.read(this._match_pattern); + } else { + next += this._input.readUntil(this.__template_pattern); + } + result += next; + next = this._read_template(); + } + if (this._until_after) { + result += this._input.readUntilAfter(this._until_pattern); + } + return result; + }; + TemplatablePattern.prototype.__set_templated_pattern = function() { + var items = []; + if (!this._disabled.php) { + items.push(this.__patterns.php._starting_pattern.source); + } + if (!this._disabled.handlebars) { + items.push(this.__patterns.handlebars._starting_pattern.source); + } + if (!this._disabled.erb) { + items.push(this.__patterns.erb._starting_pattern.source); + } + if (!this._disabled.django) { + items.push(this.__patterns.django._starting_pattern.source); + items.push(this.__patterns.django_value._starting_pattern.source); + items.push(this.__patterns.django_comment._starting_pattern.source); + } + if (!this._disabled.smarty) { + items.push(this.__patterns.smarty._starting_pattern.source); + } + if (this._until_pattern) { + items.push(this._until_pattern.source); + } + this.__template_pattern = this._input.get_regexp("(?:" + items.join("|") + ")"); + }; + TemplatablePattern.prototype._read_template = function() { + var resulting_string = ""; + var c = this._input.peek(); + if (c === "<") { + var peek1 = this._input.peek(1); + if (!this._disabled.php && !this._excluded.php && peek1 === "?") { + resulting_string = resulting_string || this.__patterns.php.read(); + } + if (!this._disabled.erb && !this._excluded.erb && peek1 === "%") { + resulting_string = resulting_string || this.__patterns.erb.read(); + } + } else if (c === "{") { + if (!this._disabled.handlebars && !this._excluded.handlebars) { + resulting_string = resulting_string || this.__patterns.handlebars_comment.read(); + resulting_string = resulting_string || this.__patterns.handlebars_unescaped.read(); + resulting_string = resulting_string || this.__patterns.handlebars.read(); + } + if (!this._disabled.django) { + if (!this._excluded.django && !this._excluded.handlebars) { + resulting_string = resulting_string || this.__patterns.django_value.read(); + } + if (!this._excluded.django) { + resulting_string = resulting_string || this.__patterns.django_comment.read(); + resulting_string = resulting_string || this.__patterns.django.read(); + } + } + if (!this._disabled.smarty) { + if (this._disabled.django && this._disabled.handlebars) { + resulting_string = resulting_string || this.__patterns.smarty_comment.read(); + resulting_string = resulting_string || this.__patterns.smarty_literal.read(); + resulting_string = resulting_string || this.__patterns.smarty.read(); + } + } + } + return resulting_string; + }; + module2.exports.TemplatablePattern = TemplatablePattern; + } +}); + +// node_modules/js-beautify/js/src/javascript/tokenizer.js +var require_tokenizer2 = __commonJS({ + "node_modules/js-beautify/js/src/javascript/tokenizer.js"(exports, module2) { + "use strict"; + var InputScanner = require_inputscanner().InputScanner; + var BaseTokenizer = require_tokenizer().Tokenizer; + var BASETOKEN = require_tokenizer().TOKEN; + var Directives = require_directives().Directives; + var acorn = require_acorn(); + var Pattern = require_pattern().Pattern; + var TemplatablePattern = require_templatablepattern().TemplatablePattern; + function in_array(what, arr) { + return arr.indexOf(what) !== -1; + } + var TOKEN = { + START_EXPR: "TK_START_EXPR", + END_EXPR: "TK_END_EXPR", + START_BLOCK: "TK_START_BLOCK", + END_BLOCK: "TK_END_BLOCK", + WORD: "TK_WORD", + RESERVED: "TK_RESERVED", + SEMICOLON: "TK_SEMICOLON", + STRING: "TK_STRING", + EQUALS: "TK_EQUALS", + OPERATOR: "TK_OPERATOR", + COMMA: "TK_COMMA", + BLOCK_COMMENT: "TK_BLOCK_COMMENT", + COMMENT: "TK_COMMENT", + DOT: "TK_DOT", + UNKNOWN: "TK_UNKNOWN", + START: BASETOKEN.START, + RAW: BASETOKEN.RAW, + EOF: BASETOKEN.EOF + }; + var directives_core = new Directives(/\/\*/, /\*\//); + var number_pattern = /0[xX][0123456789abcdefABCDEF_]*n?|0[oO][01234567_]*n?|0[bB][01_]*n?|\d[\d_]*n|(?:\.\d[\d_]*|\d[\d_]*\.?[\d_]*)(?:[eE][+-]?[\d_]+)?/; + var digit = /[0-9]/; + var dot_pattern = /[^\d\.]/; + var positionable_operators = ">>> === !== &&= ??= ||= << && >= ** != == <= >> || ?? |> < / - + > : & % ? ^ | *".split(" "); + var punct = ">>>= ... >>= <<= === >>> !== **= &&= ??= ||= => ^= :: /= << <= == && -= >= >> != -- += ** || ?? ++ %= &= *= |= |> = ! ? > < : / ^ - + * & % ~ |"; + punct = punct.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&"); + punct = "\\?\\.(?!\\d) " + punct; + punct = punct.replace(/ /g, "|"); + var punct_pattern = new RegExp(punct); + var line_starters = "continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,import,export".split(","); + var reserved_words = line_starters.concat(["do", "in", "of", "else", "get", "set", "new", "catch", "finally", "typeof", "yield", "async", "await", "from", "as", "class", "extends"]); + var reserved_word_pattern = new RegExp("^(?:" + reserved_words.join("|") + ")$"); + var in_html_comment; + var Tokenizer = function(input_string, options) { + BaseTokenizer.call(this, input_string, options); + this._patterns.whitespace = this._patterns.whitespace.matching(/\u00A0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff/.source, /\u2028\u2029/.source); + var pattern_reader = new Pattern(this._input); + var templatable = new TemplatablePattern(this._input).read_options(this._options); + this.__patterns = { + template: templatable, + identifier: templatable.starting_with(acorn.identifier).matching(acorn.identifierMatch), + number: pattern_reader.matching(number_pattern), + punct: pattern_reader.matching(punct_pattern), + comment: pattern_reader.starting_with(/\/\//).until(/[\n\r\u2028\u2029]/), + block_comment: pattern_reader.starting_with(/\/\*/).until_after(/\*\//), + html_comment_start: pattern_reader.matching(//), + include: pattern_reader.starting_with(/#include/).until_after(acorn.lineBreak), + shebang: pattern_reader.starting_with(/#!/).until_after(acorn.lineBreak), + xml: pattern_reader.matching(/[\s\S]*?<(\/?)([-a-zA-Z:0-9_.]+|{[^}]+?}|!\[CDATA\[[^\]]*?\]\]|)(\s*{[^}]+?}|\s+[-a-zA-Z:0-9_.]+|\s+[-a-zA-Z:0-9_.]+\s*=\s*('[^']*'|"[^"]*"|{([^{}]|{[^}]+?})+?}))*\s*(\/?)\s*>/), + single_quote: templatable.until(/['\\\n\r\u2028\u2029]/), + double_quote: templatable.until(/["\\\n\r\u2028\u2029]/), + template_text: templatable.until(/[`\\$]/), + template_expression: templatable.until(/[`}\\]/) + }; + }; + Tokenizer.prototype = new BaseTokenizer(); + Tokenizer.prototype._is_comment = function(current_token) { + return current_token.type === TOKEN.COMMENT || current_token.type === TOKEN.BLOCK_COMMENT || current_token.type === TOKEN.UNKNOWN; + }; + Tokenizer.prototype._is_opening = function(current_token) { + return current_token.type === TOKEN.START_BLOCK || current_token.type === TOKEN.START_EXPR; + }; + Tokenizer.prototype._is_closing = function(current_token, open_token) { + return (current_token.type === TOKEN.END_BLOCK || current_token.type === TOKEN.END_EXPR) && (open_token && (current_token.text === "]" && open_token.text === "[" || current_token.text === ")" && open_token.text === "(" || current_token.text === "}" && open_token.text === "{")); + }; + Tokenizer.prototype._reset = function() { + in_html_comment = false; + }; + Tokenizer.prototype._get_next_token = function(previous_token, open_token) { + var token = null; + this._readWhitespace(); + var c = this._input.peek(); + if (c === null) { + return this._create_token(TOKEN.EOF, ""); + } + token = token || this._read_non_javascript(c); + token = token || this._read_string(c); + token = token || this._read_word(previous_token); + token = token || this._read_singles(c); + token = token || this._read_comment(c); + token = token || this._read_regexp(c, previous_token); + token = token || this._read_xml(c, previous_token); + token = token || this._read_punctuation(); + token = token || this._create_token(TOKEN.UNKNOWN, this._input.next()); + return token; + }; + Tokenizer.prototype._read_word = function(previous_token) { + var resulting_string; + resulting_string = this.__patterns.identifier.read(); + if (resulting_string !== "") { + resulting_string = resulting_string.replace(acorn.allLineBreaks, "\n"); + if (!(previous_token.type === TOKEN.DOT || previous_token.type === TOKEN.RESERVED && (previous_token.text === "set" || previous_token.text === "get")) && reserved_word_pattern.test(resulting_string)) { + if ((resulting_string === "in" || resulting_string === "of") && (previous_token.type === TOKEN.WORD || previous_token.type === TOKEN.STRING)) { + return this._create_token(TOKEN.OPERATOR, resulting_string); + } + return this._create_token(TOKEN.RESERVED, resulting_string); + } + return this._create_token(TOKEN.WORD, resulting_string); + } + resulting_string = this.__patterns.number.read(); + if (resulting_string !== "") { + return this._create_token(TOKEN.WORD, resulting_string); + } + }; + Tokenizer.prototype._read_singles = function(c) { + var token = null; + if (c === "(" || c === "[") { + token = this._create_token(TOKEN.START_EXPR, c); + } else if (c === ")" || c === "]") { + token = this._create_token(TOKEN.END_EXPR, c); + } else if (c === "{") { + token = this._create_token(TOKEN.START_BLOCK, c); + } else if (c === "}") { + token = this._create_token(TOKEN.END_BLOCK, c); + } else if (c === ";") { + token = this._create_token(TOKEN.SEMICOLON, c); + } else if (c === "." && dot_pattern.test(this._input.peek(1))) { + token = this._create_token(TOKEN.DOT, c); + } else if (c === ",") { + token = this._create_token(TOKEN.COMMA, c); + } + if (token) { + this._input.next(); + } + return token; + }; + Tokenizer.prototype._read_punctuation = function() { + var resulting_string = this.__patterns.punct.read(); + if (resulting_string !== "") { + if (resulting_string === "=") { + return this._create_token(TOKEN.EQUALS, resulting_string); + } else if (resulting_string === "?.") { + return this._create_token(TOKEN.DOT, resulting_string); + } else { + return this._create_token(TOKEN.OPERATOR, resulting_string); + } + } + }; + Tokenizer.prototype._read_non_javascript = function(c) { + var resulting_string = ""; + if (c === "#") { + if (this._is_first_token()) { + resulting_string = this.__patterns.shebang.read(); + if (resulting_string) { + return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + "\n"); + } + } + resulting_string = this.__patterns.include.read(); + if (resulting_string) { + return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + "\n"); + } + c = this._input.next(); + var sharp = "#"; + if (this._input.hasNext() && this._input.testChar(digit)) { + do { + c = this._input.next(); + sharp += c; + } while (this._input.hasNext() && c !== "#" && c !== "="); + if (c === "#") { + } else if (this._input.peek() === "[" && this._input.peek(1) === "]") { + sharp += "[]"; + this._input.next(); + this._input.next(); + } else if (this._input.peek() === "{" && this._input.peek(1) === "}") { + sharp += "{}"; + this._input.next(); + this._input.next(); + } + return this._create_token(TOKEN.WORD, sharp); + } + this._input.back(); + } else if (c === "<" && this._is_first_token()) { + resulting_string = this.__patterns.html_comment_start.read(); + if (resulting_string) { + while (this._input.hasNext() && !this._input.testChar(acorn.newline)) { + resulting_string += this._input.next(); + } + in_html_comment = true; + return this._create_token(TOKEN.COMMENT, resulting_string); + } + } else if (in_html_comment && c === "-") { + resulting_string = this.__patterns.html_comment_end.read(); + if (resulting_string) { + in_html_comment = false; + return this._create_token(TOKEN.COMMENT, resulting_string); + } + } + return null; + }; + Tokenizer.prototype._read_comment = function(c) { + var token = null; + if (c === "/") { + var comment = ""; + if (this._input.peek(1) === "*") { + comment = this.__patterns.block_comment.read(); + var directives = directives_core.get_directives(comment); + if (directives && directives.ignore === "start") { + comment += directives_core.readIgnored(this._input); + } + comment = comment.replace(acorn.allLineBreaks, "\n"); + token = this._create_token(TOKEN.BLOCK_COMMENT, comment); + token.directives = directives; + } else if (this._input.peek(1) === "/") { + comment = this.__patterns.comment.read(); + token = this._create_token(TOKEN.COMMENT, comment); + } + } + return token; + }; + Tokenizer.prototype._read_string = function(c) { + if (c === "`" || c === "'" || c === '"') { + var resulting_string = this._input.next(); + this.has_char_escapes = false; + if (c === "`") { + resulting_string += this._read_string_recursive("`", true, "${"); + } else { + resulting_string += this._read_string_recursive(c); + } + if (this.has_char_escapes && this._options.unescape_strings) { + resulting_string = unescape_string(resulting_string); + } + if (this._input.peek() === c) { + resulting_string += this._input.next(); + } + resulting_string = resulting_string.replace(acorn.allLineBreaks, "\n"); + return this._create_token(TOKEN.STRING, resulting_string); + } + return null; + }; + Tokenizer.prototype._allow_regexp_or_xml = function(previous_token) { + return previous_token.type === TOKEN.RESERVED && in_array(previous_token.text, ["return", "case", "throw", "else", "do", "typeof", "yield"]) || previous_token.type === TOKEN.END_EXPR && previous_token.text === ")" && previous_token.opened.previous.type === TOKEN.RESERVED && in_array(previous_token.opened.previous.text, ["if", "while", "for"]) || in_array(previous_token.type, [ + TOKEN.COMMENT, + TOKEN.START_EXPR, + TOKEN.START_BLOCK, + TOKEN.START, + TOKEN.END_BLOCK, + TOKEN.OPERATOR, + TOKEN.EQUALS, + TOKEN.EOF, + TOKEN.SEMICOLON, + TOKEN.COMMA + ]); + }; + Tokenizer.prototype._read_regexp = function(c, previous_token) { + if (c === "/" && this._allow_regexp_or_xml(previous_token)) { + var resulting_string = this._input.next(); + var esc = false; + var in_char_class = false; + while (this._input.hasNext() && ((esc || in_char_class || this._input.peek() !== c) && !this._input.testChar(acorn.newline))) { + resulting_string += this._input.peek(); + if (!esc) { + esc = this._input.peek() === "\\"; + if (this._input.peek() === "[") { + in_char_class = true; + } else if (this._input.peek() === "]") { + in_char_class = false; + } + } else { + esc = false; + } + this._input.next(); + } + if (this._input.peek() === c) { + resulting_string += this._input.next(); + resulting_string += this._input.read(acorn.identifier); + } + return this._create_token(TOKEN.STRING, resulting_string); + } + return null; + }; + Tokenizer.prototype._read_xml = function(c, previous_token) { + if (this._options.e4x && c === "<" && this._allow_regexp_or_xml(previous_token)) { + var xmlStr = ""; + var match = this.__patterns.xml.read_match(); + if (match) { + var rootTag = match[2].replace(/^{\s+/, "{").replace(/\s+}$/, "}"); + var isCurlyRoot = rootTag.indexOf("{") === 0; + var depth = 0; + while (match) { + var isEndTag = !!match[1]; + var tagName = match[2]; + var isSingletonTag = !!match[match.length - 1] || tagName.slice(0, 8) === "![CDATA["; + if (!isSingletonTag && (tagName === rootTag || isCurlyRoot && tagName.replace(/^{\s+/, "{").replace(/\s+}$/, "}"))) { + if (isEndTag) { + --depth; + } else { + ++depth; + } + } + xmlStr += match[0]; + if (depth <= 0) { + break; + } + match = this.__patterns.xml.read_match(); + } + if (!match) { + xmlStr += this._input.match(/[\s\S]*/g)[0]; + } + xmlStr = xmlStr.replace(acorn.allLineBreaks, "\n"); + return this._create_token(TOKEN.STRING, xmlStr); + } + } + return null; + }; + function unescape_string(s) { + var out = "", escaped = 0; + var input_scan = new InputScanner(s); + var matched = null; + while (input_scan.hasNext()) { + matched = input_scan.match(/([\s]|[^\\]|\\\\)+/g); + if (matched) { + out += matched[0]; + } + if (input_scan.peek() === "\\") { + input_scan.next(); + if (input_scan.peek() === "x") { + matched = input_scan.match(/x([0-9A-Fa-f]{2})/g); + } else if (input_scan.peek() === "u") { + matched = input_scan.match(/u([0-9A-Fa-f]{4})/g); + } else { + out += "\\"; + if (input_scan.hasNext()) { + out += input_scan.next(); + } + continue; + } + if (!matched) { + return s; + } + escaped = parseInt(matched[1], 16); + if (escaped > 126 && escaped <= 255 && matched[0].indexOf("x") === 0) { + return s; + } else if (escaped >= 0 && escaped < 32) { + out += "\\" + matched[0]; + continue; + } else if (escaped === 34 || escaped === 39 || escaped === 92) { + out += "\\" + String.fromCharCode(escaped); + } else { + out += String.fromCharCode(escaped); + } + } + } + return out; + } + Tokenizer.prototype._read_string_recursive = function(delimiter, allow_unescaped_newlines, start_sub) { + var current_char; + var pattern; + if (delimiter === "'") { + pattern = this.__patterns.single_quote; + } else if (delimiter === '"') { + pattern = this.__patterns.double_quote; + } else if (delimiter === "`") { + pattern = this.__patterns.template_text; + } else if (delimiter === "}") { + pattern = this.__patterns.template_expression; + } + var resulting_string = pattern.read(); + var next = ""; + while (this._input.hasNext()) { + next = this._input.next(); + if (next === delimiter || !allow_unescaped_newlines && acorn.newline.test(next)) { + this._input.back(); + break; + } else if (next === "\\" && this._input.hasNext()) { + current_char = this._input.peek(); + if (current_char === "x" || current_char === "u") { + this.has_char_escapes = true; + } else if (current_char === "\r" && this._input.peek(1) === "\n") { + this._input.next(); + } + next += this._input.next(); + } else if (start_sub) { + if (start_sub === "${" && next === "$" && this._input.peek() === "{") { + next += this._input.next(); + } + if (start_sub === next) { + if (delimiter === "`") { + next += this._read_string_recursive("}", allow_unescaped_newlines, "`"); + } else { + next += this._read_string_recursive("`", allow_unescaped_newlines, "${"); + } + if (this._input.hasNext()) { + next += this._input.next(); + } + } + } + next += pattern.read(); + resulting_string += next; + } + return resulting_string; + }; + module2.exports.Tokenizer = Tokenizer; + module2.exports.TOKEN = TOKEN; + module2.exports.positionable_operators = positionable_operators.slice(); + module2.exports.line_starters = line_starters.slice(); + } +}); + +// node_modules/js-beautify/js/src/javascript/beautifier.js +var require_beautifier = __commonJS({ + "node_modules/js-beautify/js/src/javascript/beautifier.js"(exports, module2) { + "use strict"; + var Output = require_output().Output; + var Token = require_token().Token; + var acorn = require_acorn(); + var Options = require_options2().Options; + var Tokenizer = require_tokenizer2().Tokenizer; + var line_starters = require_tokenizer2().line_starters; + var positionable_operators = require_tokenizer2().positionable_operators; + var TOKEN = require_tokenizer2().TOKEN; + function in_array(what, arr) { + return arr.indexOf(what) !== -1; + } + function ltrim(s) { + return s.replace(/^\s+/g, ""); + } + function generateMapFromStrings(list) { + var result = {}; + for (var x = 0; x < list.length; x++) { + result[list[x].replace(/-/g, "_")] = list[x]; + } + return result; + } + function reserved_word(token, word) { + return token && token.type === TOKEN.RESERVED && token.text === word; + } + function reserved_array(token, words) { + return token && token.type === TOKEN.RESERVED && in_array(token.text, words); + } + var special_words = ["case", "return", "do", "if", "throw", "else", "await", "break", "continue", "async"]; + var validPositionValues = ["before-newline", "after-newline", "preserve-newline"]; + var OPERATOR_POSITION = generateMapFromStrings(validPositionValues); + var OPERATOR_POSITION_BEFORE_OR_PRESERVE = [OPERATOR_POSITION.before_newline, OPERATOR_POSITION.preserve_newline]; + var MODE = { + BlockStatement: "BlockStatement", + Statement: "Statement", + ObjectLiteral: "ObjectLiteral", + ArrayLiteral: "ArrayLiteral", + ForInitializer: "ForInitializer", + Conditional: "Conditional", + Expression: "Expression" + }; + function remove_redundant_indentation(output, frame) { + if (frame.multiline_frame || frame.mode === MODE.ForInitializer || frame.mode === MODE.Conditional) { + return; + } + output.remove_indent(frame.start_line_index); + } + function split_linebreaks(s) { + s = s.replace(acorn.allLineBreaks, "\n"); + var out = [], idx = s.indexOf("\n"); + while (idx !== -1) { + out.push(s.substring(0, idx)); + s = s.substring(idx + 1); + idx = s.indexOf("\n"); + } + if (s.length) { + out.push(s); + } + return out; + } + function is_array(mode) { + return mode === MODE.ArrayLiteral; + } + function is_expression(mode) { + return in_array(mode, [MODE.Expression, MODE.ForInitializer, MODE.Conditional]); + } + function all_lines_start_with(lines, c) { + for (var i = 0; i < lines.length; i++) { + var line = lines[i].trim(); + if (line.charAt(0) !== c) { + return false; + } + } + return true; + } + function each_line_matches_indent(lines, indent) { + var i = 0, len = lines.length, line; + for (; i < len; i++) { + line = lines[i]; + if (line && line.indexOf(indent) !== 0) { + return false; + } + } + return true; + } + function Beautifier(source_text, options) { + options = options || {}; + this._source_text = source_text || ""; + this._output = null; + this._tokens = null; + this._last_last_text = null; + this._flags = null; + this._previous_flags = null; + this._flag_store = null; + this._options = new Options(options); + } + Beautifier.prototype.create_flags = function(flags_base, mode) { + var next_indent_level = 0; + if (flags_base) { + next_indent_level = flags_base.indentation_level; + if (!this._output.just_added_newline() && flags_base.line_indent_level > next_indent_level) { + next_indent_level = flags_base.line_indent_level; + } + } + var next_flags = { + mode, + parent: flags_base, + last_token: flags_base ? flags_base.last_token : new Token(TOKEN.START_BLOCK, ""), + last_word: flags_base ? flags_base.last_word : "", + declaration_statement: false, + declaration_assignment: false, + multiline_frame: false, + inline_frame: false, + if_block: false, + else_block: false, + class_start_block: false, + do_block: false, + do_while: false, + import_block: false, + in_case_statement: false, + in_case: false, + case_body: false, + case_block: false, + indentation_level: next_indent_level, + alignment: 0, + line_indent_level: flags_base ? flags_base.line_indent_level : next_indent_level, + start_line_index: this._output.get_line_number(), + ternary_depth: 0 + }; + return next_flags; + }; + Beautifier.prototype._reset = function(source_text) { + var baseIndentString = source_text.match(/^[\t ]*/)[0]; + this._last_last_text = ""; + this._output = new Output(this._options, baseIndentString); + this._output.raw = this._options.test_output_raw; + this._flag_store = []; + this.set_mode(MODE.BlockStatement); + var tokenizer = new Tokenizer(source_text, this._options); + this._tokens = tokenizer.tokenize(); + return source_text; + }; + Beautifier.prototype.beautify = function() { + if (this._options.disabled) { + return this._source_text; + } + var sweet_code; + var source_text = this._reset(this._source_text); + var eol = this._options.eol; + if (this._options.eol === "auto") { + eol = "\n"; + if (source_text && acorn.lineBreak.test(source_text || "")) { + eol = source_text.match(acorn.lineBreak)[0]; + } + } + var current_token = this._tokens.next(); + while (current_token) { + this.handle_token(current_token); + this._last_last_text = this._flags.last_token.text; + this._flags.last_token = current_token; + current_token = this._tokens.next(); + } + sweet_code = this._output.get_code(eol); + return sweet_code; + }; + Beautifier.prototype.handle_token = function(current_token, preserve_statement_flags) { + if (current_token.type === TOKEN.START_EXPR) { + this.handle_start_expr(current_token); + } else if (current_token.type === TOKEN.END_EXPR) { + this.handle_end_expr(current_token); + } else if (current_token.type === TOKEN.START_BLOCK) { + this.handle_start_block(current_token); + } else if (current_token.type === TOKEN.END_BLOCK) { + this.handle_end_block(current_token); + } else if (current_token.type === TOKEN.WORD) { + this.handle_word(current_token); + } else if (current_token.type === TOKEN.RESERVED) { + this.handle_word(current_token); + } else if (current_token.type === TOKEN.SEMICOLON) { + this.handle_semicolon(current_token); + } else if (current_token.type === TOKEN.STRING) { + this.handle_string(current_token); + } else if (current_token.type === TOKEN.EQUALS) { + this.handle_equals(current_token); + } else if (current_token.type === TOKEN.OPERATOR) { + this.handle_operator(current_token); + } else if (current_token.type === TOKEN.COMMA) { + this.handle_comma(current_token); + } else if (current_token.type === TOKEN.BLOCK_COMMENT) { + this.handle_block_comment(current_token, preserve_statement_flags); + } else if (current_token.type === TOKEN.COMMENT) { + this.handle_comment(current_token, preserve_statement_flags); + } else if (current_token.type === TOKEN.DOT) { + this.handle_dot(current_token); + } else if (current_token.type === TOKEN.EOF) { + this.handle_eof(current_token); + } else if (current_token.type === TOKEN.UNKNOWN) { + this.handle_unknown(current_token, preserve_statement_flags); + } else { + this.handle_unknown(current_token, preserve_statement_flags); + } + }; + Beautifier.prototype.handle_whitespace_and_comments = function(current_token, preserve_statement_flags) { + var newlines = current_token.newlines; + var keep_whitespace = this._options.keep_array_indentation && is_array(this._flags.mode); + if (current_token.comments_before) { + var comment_token = current_token.comments_before.next(); + while (comment_token) { + this.handle_whitespace_and_comments(comment_token, preserve_statement_flags); + this.handle_token(comment_token, preserve_statement_flags); + comment_token = current_token.comments_before.next(); + } + } + if (keep_whitespace) { + for (var i = 0; i < newlines; i += 1) { + this.print_newline(i > 0, preserve_statement_flags); + } + } else { + if (this._options.max_preserve_newlines && newlines > this._options.max_preserve_newlines) { + newlines = this._options.max_preserve_newlines; + } + if (this._options.preserve_newlines) { + if (newlines > 1) { + this.print_newline(false, preserve_statement_flags); + for (var j = 1; j < newlines; j += 1) { + this.print_newline(true, preserve_statement_flags); + } + } + } + } + }; + var newline_restricted_tokens = ["async", "break", "continue", "return", "throw", "yield"]; + Beautifier.prototype.allow_wrap_or_preserved_newline = function(current_token, force_linewrap) { + force_linewrap = force_linewrap === void 0 ? false : force_linewrap; + if (this._output.just_added_newline()) { + return; + } + var shouldPreserveOrForce = this._options.preserve_newlines && current_token.newlines || force_linewrap; + var operatorLogicApplies = in_array(this._flags.last_token.text, positionable_operators) || in_array(current_token.text, positionable_operators); + if (operatorLogicApplies) { + var shouldPrintOperatorNewline = in_array(this._flags.last_token.text, positionable_operators) && in_array(this._options.operator_position, OPERATOR_POSITION_BEFORE_OR_PRESERVE) || in_array(current_token.text, positionable_operators); + shouldPreserveOrForce = shouldPreserveOrForce && shouldPrintOperatorNewline; + } + if (shouldPreserveOrForce) { + this.print_newline(false, true); + } else if (this._options.wrap_line_length) { + if (reserved_array(this._flags.last_token, newline_restricted_tokens)) { + return; + } + this._output.set_wrap_point(); + } + }; + Beautifier.prototype.print_newline = function(force_newline, preserve_statement_flags) { + if (!preserve_statement_flags) { + if (this._flags.last_token.text !== ";" && this._flags.last_token.text !== "," && this._flags.last_token.text !== "=" && (this._flags.last_token.type !== TOKEN.OPERATOR || this._flags.last_token.text === "--" || this._flags.last_token.text === "++")) { + var next_token = this._tokens.peek(); + while (this._flags.mode === MODE.Statement && !(this._flags.if_block && reserved_word(next_token, "else")) && !this._flags.do_block) { + this.restore_mode(); + } + } + } + if (this._output.add_new_line(force_newline)) { + this._flags.multiline_frame = true; + } + }; + Beautifier.prototype.print_token_line_indentation = function(current_token) { + if (this._output.just_added_newline()) { + if (this._options.keep_array_indentation && current_token.newlines && (current_token.text === "[" || is_array(this._flags.mode))) { + this._output.current_line.set_indent(-1); + this._output.current_line.push(current_token.whitespace_before); + this._output.space_before_token = false; + } else if (this._output.set_indent(this._flags.indentation_level, this._flags.alignment)) { + this._flags.line_indent_level = this._flags.indentation_level; + } + } + }; + Beautifier.prototype.print_token = function(current_token) { + if (this._output.raw) { + this._output.add_raw_token(current_token); + return; + } + if (this._options.comma_first && current_token.previous && current_token.previous.type === TOKEN.COMMA && this._output.just_added_newline()) { + if (this._output.previous_line.last() === ",") { + var popped = this._output.previous_line.pop(); + if (this._output.previous_line.is_empty()) { + this._output.previous_line.push(popped); + this._output.trim(true); + this._output.current_line.pop(); + this._output.trim(); + } + this.print_token_line_indentation(current_token); + this._output.add_token(","); + this._output.space_before_token = true; + } + } + this.print_token_line_indentation(current_token); + this._output.non_breaking_space = true; + this._output.add_token(current_token.text); + if (this._output.previous_token_wrapped) { + this._flags.multiline_frame = true; + } + }; + Beautifier.prototype.indent = function() { + this._flags.indentation_level += 1; + this._output.set_indent(this._flags.indentation_level, this._flags.alignment); + }; + Beautifier.prototype.deindent = function() { + if (this._flags.indentation_level > 0 && (!this._flags.parent || this._flags.indentation_level > this._flags.parent.indentation_level)) { + this._flags.indentation_level -= 1; + this._output.set_indent(this._flags.indentation_level, this._flags.alignment); + } + }; + Beautifier.prototype.set_mode = function(mode) { + if (this._flags) { + this._flag_store.push(this._flags); + this._previous_flags = this._flags; + } else { + this._previous_flags = this.create_flags(null, mode); + } + this._flags = this.create_flags(this._previous_flags, mode); + this._output.set_indent(this._flags.indentation_level, this._flags.alignment); + }; + Beautifier.prototype.restore_mode = function() { + if (this._flag_store.length > 0) { + this._previous_flags = this._flags; + this._flags = this._flag_store.pop(); + if (this._previous_flags.mode === MODE.Statement) { + remove_redundant_indentation(this._output, this._previous_flags); + } + this._output.set_indent(this._flags.indentation_level, this._flags.alignment); + } + }; + Beautifier.prototype.start_of_object_property = function() { + return this._flags.parent.mode === MODE.ObjectLiteral && this._flags.mode === MODE.Statement && (this._flags.last_token.text === ":" && this._flags.ternary_depth === 0 || reserved_array(this._flags.last_token, ["get", "set"])); + }; + Beautifier.prototype.start_of_statement = function(current_token) { + var start = false; + start = start || reserved_array(this._flags.last_token, ["var", "let", "const"]) && current_token.type === TOKEN.WORD; + start = start || reserved_word(this._flags.last_token, "do"); + start = start || !(this._flags.parent.mode === MODE.ObjectLiteral && this._flags.mode === MODE.Statement) && reserved_array(this._flags.last_token, newline_restricted_tokens) && !current_token.newlines; + start = start || reserved_word(this._flags.last_token, "else") && !(reserved_word(current_token, "if") && !current_token.comments_before); + start = start || this._flags.last_token.type === TOKEN.END_EXPR && (this._previous_flags.mode === MODE.ForInitializer || this._previous_flags.mode === MODE.Conditional); + start = start || this._flags.last_token.type === TOKEN.WORD && this._flags.mode === MODE.BlockStatement && !this._flags.in_case && !(current_token.text === "--" || current_token.text === "++") && this._last_last_text !== "function" && current_token.type !== TOKEN.WORD && current_token.type !== TOKEN.RESERVED; + start = start || this._flags.mode === MODE.ObjectLiteral && (this._flags.last_token.text === ":" && this._flags.ternary_depth === 0 || reserved_array(this._flags.last_token, ["get", "set"])); + if (start) { + this.set_mode(MODE.Statement); + this.indent(); + this.handle_whitespace_and_comments(current_token, true); + if (!this.start_of_object_property()) { + this.allow_wrap_or_preserved_newline(current_token, reserved_array(current_token, ["do", "for", "if", "while"])); + } + return true; + } + return false; + }; + Beautifier.prototype.handle_start_expr = function(current_token) { + if (!this.start_of_statement(current_token)) { + this.handle_whitespace_and_comments(current_token); + } + var next_mode = MODE.Expression; + if (current_token.text === "[") { + if (this._flags.last_token.type === TOKEN.WORD || this._flags.last_token.text === ")") { + if (reserved_array(this._flags.last_token, line_starters)) { + this._output.space_before_token = true; + } + this.print_token(current_token); + this.set_mode(next_mode); + this.indent(); + if (this._options.space_in_paren) { + this._output.space_before_token = true; + } + return; + } + next_mode = MODE.ArrayLiteral; + if (is_array(this._flags.mode)) { + if (this._flags.last_token.text === "[" || this._flags.last_token.text === "," && (this._last_last_text === "]" || this._last_last_text === "}")) { + if (!this._options.keep_array_indentation) { + this.print_newline(); + } + } + } + if (!in_array(this._flags.last_token.type, [TOKEN.START_EXPR, TOKEN.END_EXPR, TOKEN.WORD, TOKEN.OPERATOR, TOKEN.DOT])) { + this._output.space_before_token = true; + } + } else { + if (this._flags.last_token.type === TOKEN.RESERVED) { + if (this._flags.last_token.text === "for") { + this._output.space_before_token = this._options.space_before_conditional; + next_mode = MODE.ForInitializer; + } else if (in_array(this._flags.last_token.text, ["if", "while", "switch"])) { + this._output.space_before_token = this._options.space_before_conditional; + next_mode = MODE.Conditional; + } else if (in_array(this._flags.last_word, ["await", "async"])) { + this._output.space_before_token = true; + } else if (this._flags.last_token.text === "import" && current_token.whitespace_before === "") { + this._output.space_before_token = false; + } else if (in_array(this._flags.last_token.text, line_starters) || this._flags.last_token.text === "catch") { + this._output.space_before_token = true; + } + } else if (this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) { + if (!this.start_of_object_property()) { + this.allow_wrap_or_preserved_newline(current_token); + } + } else if (this._flags.last_token.type === TOKEN.WORD) { + this._output.space_before_token = false; + var peek_back_two = this._tokens.peek(-3); + if (this._options.space_after_named_function && peek_back_two) { + var peek_back_three = this._tokens.peek(-4); + if (reserved_array(peek_back_two, ["async", "function"]) || peek_back_two.text === "*" && reserved_array(peek_back_three, ["async", "function"])) { + this._output.space_before_token = true; + } else if (this._flags.mode === MODE.ObjectLiteral) { + if (peek_back_two.text === "{" || peek_back_two.text === "," || peek_back_two.text === "*" && (peek_back_three.text === "{" || peek_back_three.text === ",")) { + this._output.space_before_token = true; + } + } else if (this._flags.parent && this._flags.parent.class_start_block) { + this._output.space_before_token = true; + } + } + } else { + this.allow_wrap_or_preserved_newline(current_token); + } + if (this._flags.last_token.type === TOKEN.RESERVED && (this._flags.last_word === "function" || this._flags.last_word === "typeof") || this._flags.last_token.text === "*" && (in_array(this._last_last_text, ["function", "yield"]) || this._flags.mode === MODE.ObjectLiteral && in_array(this._last_last_text, ["{", ","]))) { + this._output.space_before_token = this._options.space_after_anon_function; + } + } + if (this._flags.last_token.text === ";" || this._flags.last_token.type === TOKEN.START_BLOCK) { + this.print_newline(); + } else if (this._flags.last_token.type === TOKEN.END_EXPR || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.END_BLOCK || this._flags.last_token.text === "." || this._flags.last_token.type === TOKEN.COMMA) { + this.allow_wrap_or_preserved_newline(current_token, current_token.newlines); + } + this.print_token(current_token); + this.set_mode(next_mode); + if (this._options.space_in_paren) { + this._output.space_before_token = true; + } + this.indent(); + }; + Beautifier.prototype.handle_end_expr = function(current_token) { + while (this._flags.mode === MODE.Statement) { + this.restore_mode(); + } + this.handle_whitespace_and_comments(current_token); + if (this._flags.multiline_frame) { + this.allow_wrap_or_preserved_newline(current_token, current_token.text === "]" && is_array(this._flags.mode) && !this._options.keep_array_indentation); + } + if (this._options.space_in_paren) { + if (this._flags.last_token.type === TOKEN.START_EXPR && !this._options.space_in_empty_paren) { + this._output.trim(); + this._output.space_before_token = false; + } else { + this._output.space_before_token = true; + } + } + this.deindent(); + this.print_token(current_token); + this.restore_mode(); + remove_redundant_indentation(this._output, this._previous_flags); + if (this._flags.do_while && this._previous_flags.mode === MODE.Conditional) { + this._previous_flags.mode = MODE.Expression; + this._flags.do_block = false; + this._flags.do_while = false; + } + }; + Beautifier.prototype.handle_start_block = function(current_token) { + this.handle_whitespace_and_comments(current_token); + var next_token = this._tokens.peek(); + var second_token = this._tokens.peek(1); + if (this._flags.last_word === "switch" && this._flags.last_token.type === TOKEN.END_EXPR) { + this.set_mode(MODE.BlockStatement); + this._flags.in_case_statement = true; + } else if (this._flags.case_body) { + this.set_mode(MODE.BlockStatement); + } else if (second_token && (in_array(second_token.text, [":", ","]) && in_array(next_token.type, [TOKEN.STRING, TOKEN.WORD, TOKEN.RESERVED]) || in_array(next_token.text, ["get", "set", "..."]) && in_array(second_token.type, [TOKEN.WORD, TOKEN.RESERVED]))) { + if (in_array(this._last_last_text, ["class", "interface"]) && !in_array(second_token.text, [":", ","])) { + this.set_mode(MODE.BlockStatement); + } else { + this.set_mode(MODE.ObjectLiteral); + } + } else if (this._flags.last_token.type === TOKEN.OPERATOR && this._flags.last_token.text === "=>") { + this.set_mode(MODE.BlockStatement); + } else if (in_array(this._flags.last_token.type, [TOKEN.EQUALS, TOKEN.START_EXPR, TOKEN.COMMA, TOKEN.OPERATOR]) || reserved_array(this._flags.last_token, ["return", "throw", "import", "default"])) { + this.set_mode(MODE.ObjectLiteral); + } else { + this.set_mode(MODE.BlockStatement); + } + if (this._flags.last_token) { + if (reserved_array(this._flags.last_token.previous, ["class", "extends"])) { + this._flags.class_start_block = true; + } + } + var empty_braces = !next_token.comments_before && next_token.text === "}"; + var empty_anonymous_function = empty_braces && this._flags.last_word === "function" && this._flags.last_token.type === TOKEN.END_EXPR; + if (this._options.brace_preserve_inline) { + var index = 0; + var check_token = null; + this._flags.inline_frame = true; + do { + index += 1; + check_token = this._tokens.peek(index - 1); + if (check_token.newlines) { + this._flags.inline_frame = false; + break; + } + } while (check_token.type !== TOKEN.EOF && !(check_token.type === TOKEN.END_BLOCK && check_token.opened === current_token)); + } + if ((this._options.brace_style === "expand" || this._options.brace_style === "none" && current_token.newlines) && !this._flags.inline_frame) { + if (this._flags.last_token.type !== TOKEN.OPERATOR && (empty_anonymous_function || this._flags.last_token.type === TOKEN.EQUALS || reserved_array(this._flags.last_token, special_words) && this._flags.last_token.text !== "else")) { + this._output.space_before_token = true; + } else { + this.print_newline(false, true); + } + } else { + if (is_array(this._previous_flags.mode) && (this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.COMMA)) { + if (this._flags.last_token.type === TOKEN.COMMA || this._options.space_in_paren) { + this._output.space_before_token = true; + } + if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR && this._flags.inline_frame) { + this.allow_wrap_or_preserved_newline(current_token); + this._previous_flags.multiline_frame = this._previous_flags.multiline_frame || this._flags.multiline_frame; + this._flags.multiline_frame = false; + } + } + if (this._flags.last_token.type !== TOKEN.OPERATOR && this._flags.last_token.type !== TOKEN.START_EXPR) { + if (this._flags.last_token.type === TOKEN.START_BLOCK && !this._flags.inline_frame) { + this.print_newline(); + } else { + this._output.space_before_token = true; + } + } + } + this.print_token(current_token); + this.indent(); + if (!empty_braces && !(this._options.brace_preserve_inline && this._flags.inline_frame)) { + this.print_newline(); + } + }; + Beautifier.prototype.handle_end_block = function(current_token) { + this.handle_whitespace_and_comments(current_token); + while (this._flags.mode === MODE.Statement) { + this.restore_mode(); + } + var empty_braces = this._flags.last_token.type === TOKEN.START_BLOCK; + if (this._flags.inline_frame && !empty_braces) { + this._output.space_before_token = true; + } else if (this._options.brace_style === "expand") { + if (!empty_braces) { + this.print_newline(); + } + } else { + if (!empty_braces) { + if (is_array(this._flags.mode) && this._options.keep_array_indentation) { + this._options.keep_array_indentation = false; + this.print_newline(); + this._options.keep_array_indentation = true; + } else { + this.print_newline(); + } + } + } + this.restore_mode(); + this.print_token(current_token); + }; + Beautifier.prototype.handle_word = function(current_token) { + if (current_token.type === TOKEN.RESERVED) { + if (in_array(current_token.text, ["set", "get"]) && this._flags.mode !== MODE.ObjectLiteral) { + current_token.type = TOKEN.WORD; + } else if (current_token.text === "import" && in_array(this._tokens.peek().text, ["(", "."])) { + current_token.type = TOKEN.WORD; + } else if (in_array(current_token.text, ["as", "from"]) && !this._flags.import_block) { + current_token.type = TOKEN.WORD; + } else if (this._flags.mode === MODE.ObjectLiteral) { + var next_token = this._tokens.peek(); + if (next_token.text === ":") { + current_token.type = TOKEN.WORD; + } + } + } + if (this.start_of_statement(current_token)) { + if (reserved_array(this._flags.last_token, ["var", "let", "const"]) && current_token.type === TOKEN.WORD) { + this._flags.declaration_statement = true; + } + } else if (current_token.newlines && !is_expression(this._flags.mode) && (this._flags.last_token.type !== TOKEN.OPERATOR || (this._flags.last_token.text === "--" || this._flags.last_token.text === "++")) && this._flags.last_token.type !== TOKEN.EQUALS && (this._options.preserve_newlines || !reserved_array(this._flags.last_token, ["var", "let", "const", "set", "get"]))) { + this.handle_whitespace_and_comments(current_token); + this.print_newline(); + } else { + this.handle_whitespace_and_comments(current_token); + } + if (this._flags.do_block && !this._flags.do_while) { + if (reserved_word(current_token, "while")) { + this._output.space_before_token = true; + this.print_token(current_token); + this._output.space_before_token = true; + this._flags.do_while = true; + return; + } else { + this.print_newline(); + this._flags.do_block = false; + } + } + if (this._flags.if_block) { + if (!this._flags.else_block && reserved_word(current_token, "else")) { + this._flags.else_block = true; + } else { + while (this._flags.mode === MODE.Statement) { + this.restore_mode(); + } + this._flags.if_block = false; + this._flags.else_block = false; + } + } + if (this._flags.in_case_statement && reserved_array(current_token, ["case", "default"])) { + this.print_newline(); + if (!this._flags.case_block && (this._flags.case_body || this._options.jslint_happy)) { + this.deindent(); + } + this._flags.case_body = false; + this.print_token(current_token); + this._flags.in_case = true; + return; + } + if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) { + if (!this.start_of_object_property()) { + this.allow_wrap_or_preserved_newline(current_token); + } + } + if (reserved_word(current_token, "function")) { + if (in_array(this._flags.last_token.text, ["}", ";"]) || this._output.just_added_newline() && !(in_array(this._flags.last_token.text, ["(", "[", "{", ":", "=", ","]) || this._flags.last_token.type === TOKEN.OPERATOR)) { + if (!this._output.just_added_blankline() && !current_token.comments_before) { + this.print_newline(); + this.print_newline(true); + } + } + if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD) { + if (reserved_array(this._flags.last_token, ["get", "set", "new", "export"]) || reserved_array(this._flags.last_token, newline_restricted_tokens)) { + this._output.space_before_token = true; + } else if (reserved_word(this._flags.last_token, "default") && this._last_last_text === "export") { + this._output.space_before_token = true; + } else if (this._flags.last_token.text === "declare") { + this._output.space_before_token = true; + } else { + this.print_newline(); + } + } else if (this._flags.last_token.type === TOKEN.OPERATOR || this._flags.last_token.text === "=") { + this._output.space_before_token = true; + } else if (!this._flags.multiline_frame && (is_expression(this._flags.mode) || is_array(this._flags.mode))) { + } else { + this.print_newline(); + } + this.print_token(current_token); + this._flags.last_word = current_token.text; + return; + } + var prefix = "NONE"; + if (this._flags.last_token.type === TOKEN.END_BLOCK) { + if (this._previous_flags.inline_frame) { + prefix = "SPACE"; + } else if (!reserved_array(current_token, ["else", "catch", "finally", "from"])) { + prefix = "NEWLINE"; + } else { + if (this._options.brace_style === "expand" || this._options.brace_style === "end-expand" || this._options.brace_style === "none" && current_token.newlines) { + prefix = "NEWLINE"; + } else { + prefix = "SPACE"; + this._output.space_before_token = true; + } + } + } else if (this._flags.last_token.type === TOKEN.SEMICOLON && this._flags.mode === MODE.BlockStatement) { + prefix = "NEWLINE"; + } else if (this._flags.last_token.type === TOKEN.SEMICOLON && is_expression(this._flags.mode)) { + prefix = "SPACE"; + } else if (this._flags.last_token.type === TOKEN.STRING) { + prefix = "NEWLINE"; + } else if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD || this._flags.last_token.text === "*" && (in_array(this._last_last_text, ["function", "yield"]) || this._flags.mode === MODE.ObjectLiteral && in_array(this._last_last_text, ["{", ","]))) { + prefix = "SPACE"; + } else if (this._flags.last_token.type === TOKEN.START_BLOCK) { + if (this._flags.inline_frame) { + prefix = "SPACE"; + } else { + prefix = "NEWLINE"; + } + } else if (this._flags.last_token.type === TOKEN.END_EXPR) { + this._output.space_before_token = true; + prefix = "NEWLINE"; + } + if (reserved_array(current_token, line_starters) && this._flags.last_token.text !== ")") { + if (this._flags.inline_frame || this._flags.last_token.text === "else" || this._flags.last_token.text === "export") { + prefix = "SPACE"; + } else { + prefix = "NEWLINE"; + } + } + if (reserved_array(current_token, ["else", "catch", "finally"])) { + if ((!(this._flags.last_token.type === TOKEN.END_BLOCK && this._previous_flags.mode === MODE.BlockStatement) || this._options.brace_style === "expand" || this._options.brace_style === "end-expand" || this._options.brace_style === "none" && current_token.newlines) && !this._flags.inline_frame) { + this.print_newline(); + } else { + this._output.trim(true); + var line = this._output.current_line; + if (line.last() !== "}") { + this.print_newline(); + } + this._output.space_before_token = true; + } + } else if (prefix === "NEWLINE") { + if (reserved_array(this._flags.last_token, special_words)) { + this._output.space_before_token = true; + } else if (this._flags.last_token.text === "declare" && reserved_array(current_token, ["var", "let", "const"])) { + this._output.space_before_token = true; + } else if (this._flags.last_token.type !== TOKEN.END_EXPR) { + if ((this._flags.last_token.type !== TOKEN.START_EXPR || !reserved_array(current_token, ["var", "let", "const"])) && this._flags.last_token.text !== ":") { + if (reserved_word(current_token, "if") && reserved_word(current_token.previous, "else")) { + this._output.space_before_token = true; + } else { + this.print_newline(); + } + } + } else if (reserved_array(current_token, line_starters) && this._flags.last_token.text !== ")") { + this.print_newline(); + } + } else if (this._flags.multiline_frame && is_array(this._flags.mode) && this._flags.last_token.text === "," && this._last_last_text === "}") { + this.print_newline(); + } else if (prefix === "SPACE") { + this._output.space_before_token = true; + } + if (current_token.previous && (current_token.previous.type === TOKEN.WORD || current_token.previous.type === TOKEN.RESERVED)) { + this._output.space_before_token = true; + } + this.print_token(current_token); + this._flags.last_word = current_token.text; + if (current_token.type === TOKEN.RESERVED) { + if (current_token.text === "do") { + this._flags.do_block = true; + } else if (current_token.text === "if") { + this._flags.if_block = true; + } else if (current_token.text === "import") { + this._flags.import_block = true; + } else if (this._flags.import_block && reserved_word(current_token, "from")) { + this._flags.import_block = false; + } + } + }; + Beautifier.prototype.handle_semicolon = function(current_token) { + if (this.start_of_statement(current_token)) { + this._output.space_before_token = false; + } else { + this.handle_whitespace_and_comments(current_token); + } + var next_token = this._tokens.peek(); + while (this._flags.mode === MODE.Statement && !(this._flags.if_block && reserved_word(next_token, "else")) && !this._flags.do_block) { + this.restore_mode(); + } + if (this._flags.import_block) { + this._flags.import_block = false; + } + this.print_token(current_token); + }; + Beautifier.prototype.handle_string = function(current_token) { + if (current_token.text.startsWith("`") && current_token.newlines === 0 && current_token.whitespace_before === "" && (current_token.previous.text === ")" || this._flags.last_token.type === TOKEN.WORD)) { + } else if (this.start_of_statement(current_token)) { + this._output.space_before_token = true; + } else { + this.handle_whitespace_and_comments(current_token); + if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD || this._flags.inline_frame) { + this._output.space_before_token = true; + } else if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) { + if (!this.start_of_object_property()) { + this.allow_wrap_or_preserved_newline(current_token); + } + } else if (current_token.text.startsWith("`") && this._flags.last_token.type === TOKEN.END_EXPR && (current_token.previous.text === "]" || current_token.previous.text === ")") && current_token.newlines === 0) { + this._output.space_before_token = true; + } else { + this.print_newline(); + } + } + this.print_token(current_token); + }; + Beautifier.prototype.handle_equals = function(current_token) { + if (this.start_of_statement(current_token)) { + } else { + this.handle_whitespace_and_comments(current_token); + } + if (this._flags.declaration_statement) { + this._flags.declaration_assignment = true; + } + this._output.space_before_token = true; + this.print_token(current_token); + this._output.space_before_token = true; + }; + Beautifier.prototype.handle_comma = function(current_token) { + this.handle_whitespace_and_comments(current_token, true); + this.print_token(current_token); + this._output.space_before_token = true; + if (this._flags.declaration_statement) { + if (is_expression(this._flags.parent.mode)) { + this._flags.declaration_assignment = false; + } + if (this._flags.declaration_assignment) { + this._flags.declaration_assignment = false; + this.print_newline(false, true); + } else if (this._options.comma_first) { + this.allow_wrap_or_preserved_newline(current_token); + } + } else if (this._flags.mode === MODE.ObjectLiteral || this._flags.mode === MODE.Statement && this._flags.parent.mode === MODE.ObjectLiteral) { + if (this._flags.mode === MODE.Statement) { + this.restore_mode(); + } + if (!this._flags.inline_frame) { + this.print_newline(); + } + } else if (this._options.comma_first) { + this.allow_wrap_or_preserved_newline(current_token); + } + }; + Beautifier.prototype.handle_operator = function(current_token) { + var isGeneratorAsterisk = current_token.text === "*" && (reserved_array(this._flags.last_token, ["function", "yield"]) || in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.COMMA, TOKEN.END_BLOCK, TOKEN.SEMICOLON])); + var isUnary = in_array(current_token.text, ["-", "+"]) && (in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.START_EXPR, TOKEN.EQUALS, TOKEN.OPERATOR]) || in_array(this._flags.last_token.text, line_starters) || this._flags.last_token.text === ","); + if (this.start_of_statement(current_token)) { + } else { + var preserve_statement_flags = !isGeneratorAsterisk; + this.handle_whitespace_and_comments(current_token, preserve_statement_flags); + } + if (current_token.text === "*" && this._flags.last_token.type === TOKEN.DOT) { + this.print_token(current_token); + return; + } + if (current_token.text === "::") { + this.print_token(current_token); + return; + } + if (this._flags.last_token.type === TOKEN.OPERATOR && in_array(this._options.operator_position, OPERATOR_POSITION_BEFORE_OR_PRESERVE)) { + this.allow_wrap_or_preserved_newline(current_token); + } + if (current_token.text === ":" && this._flags.in_case) { + this.print_token(current_token); + this._flags.in_case = false; + this._flags.case_body = true; + if (this._tokens.peek().type !== TOKEN.START_BLOCK) { + this.indent(); + this.print_newline(); + this._flags.case_block = false; + } else { + this._flags.case_block = true; + this._output.space_before_token = true; + } + return; + } + var space_before = true; + var space_after = true; + var in_ternary = false; + if (current_token.text === ":") { + if (this._flags.ternary_depth === 0) { + space_before = false; + } else { + this._flags.ternary_depth -= 1; + in_ternary = true; + } + } else if (current_token.text === "?") { + this._flags.ternary_depth += 1; + } + if (!isUnary && !isGeneratorAsterisk && this._options.preserve_newlines && in_array(current_token.text, positionable_operators)) { + var isColon = current_token.text === ":"; + var isTernaryColon = isColon && in_ternary; + var isOtherColon = isColon && !in_ternary; + switch (this._options.operator_position) { + case OPERATOR_POSITION.before_newline: + this._output.space_before_token = !isOtherColon; + this.print_token(current_token); + if (!isColon || isTernaryColon) { + this.allow_wrap_or_preserved_newline(current_token); + } + this._output.space_before_token = true; + return; + case OPERATOR_POSITION.after_newline: + this._output.space_before_token = true; + if (!isColon || isTernaryColon) { + if (this._tokens.peek().newlines) { + this.print_newline(false, true); + } else { + this.allow_wrap_or_preserved_newline(current_token); + } + } else { + this._output.space_before_token = false; + } + this.print_token(current_token); + this._output.space_before_token = true; + return; + case OPERATOR_POSITION.preserve_newline: + if (!isOtherColon) { + this.allow_wrap_or_preserved_newline(current_token); + } + space_before = !(this._output.just_added_newline() || isOtherColon); + this._output.space_before_token = space_before; + this.print_token(current_token); + this._output.space_before_token = true; + return; + } + } + if (isGeneratorAsterisk) { + this.allow_wrap_or_preserved_newline(current_token); + space_before = false; + var next_token = this._tokens.peek(); + space_after = next_token && in_array(next_token.type, [TOKEN.WORD, TOKEN.RESERVED]); + } else if (current_token.text === "...") { + this.allow_wrap_or_preserved_newline(current_token); + space_before = this._flags.last_token.type === TOKEN.START_BLOCK; + space_after = false; + } else if (in_array(current_token.text, ["--", "++", "!", "~"]) || isUnary) { + if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR) { + this.allow_wrap_or_preserved_newline(current_token); + } + space_before = false; + space_after = false; + if (current_token.newlines && (current_token.text === "--" || current_token.text === "++" || current_token.text === "~")) { + var new_line_needed = reserved_array(this._flags.last_token, special_words) && current_token.newlines; + if (new_line_needed && (this._previous_flags.if_block || this._previous_flags.else_block)) { + this.restore_mode(); + } + this.print_newline(new_line_needed, true); + } + if (this._flags.last_token.text === ";" && is_expression(this._flags.mode)) { + space_before = true; + } + if (this._flags.last_token.type === TOKEN.RESERVED) { + space_before = true; + } else if (this._flags.last_token.type === TOKEN.END_EXPR) { + space_before = !(this._flags.last_token.text === "]" && (current_token.text === "--" || current_token.text === "++")); + } else if (this._flags.last_token.type === TOKEN.OPERATOR) { + space_before = in_array(current_token.text, ["--", "-", "++", "+"]) && in_array(this._flags.last_token.text, ["--", "-", "++", "+"]); + if (in_array(current_token.text, ["+", "-"]) && in_array(this._flags.last_token.text, ["--", "++"])) { + space_after = true; + } + } + if ((this._flags.mode === MODE.BlockStatement && !this._flags.inline_frame || this._flags.mode === MODE.Statement) && (this._flags.last_token.text === "{" || this._flags.last_token.text === ";")) { + this.print_newline(); + } + } + this._output.space_before_token = this._output.space_before_token || space_before; + this.print_token(current_token); + this._output.space_before_token = space_after; + }; + Beautifier.prototype.handle_block_comment = function(current_token, preserve_statement_flags) { + if (this._output.raw) { + this._output.add_raw_token(current_token); + if (current_token.directives && current_token.directives.preserve === "end") { + this._output.raw = this._options.test_output_raw; + } + return; + } + if (current_token.directives) { + this.print_newline(false, preserve_statement_flags); + this.print_token(current_token); + if (current_token.directives.preserve === "start") { + this._output.raw = true; + } + this.print_newline(false, true); + return; + } + if (!acorn.newline.test(current_token.text) && !current_token.newlines) { + this._output.space_before_token = true; + this.print_token(current_token); + this._output.space_before_token = true; + return; + } else { + this.print_block_commment(current_token, preserve_statement_flags); + } + }; + Beautifier.prototype.print_block_commment = function(current_token, preserve_statement_flags) { + var lines = split_linebreaks(current_token.text); + var j; + var javadoc = false; + var starless = false; + var lastIndent = current_token.whitespace_before; + var lastIndentLength = lastIndent.length; + this.print_newline(false, preserve_statement_flags); + this.print_token_line_indentation(current_token); + this._output.add_token(lines[0]); + this.print_newline(false, preserve_statement_flags); + if (lines.length > 1) { + lines = lines.slice(1); + javadoc = all_lines_start_with(lines, "*"); + starless = each_line_matches_indent(lines, lastIndent); + if (javadoc) { + this._flags.alignment = 1; + } + for (j = 0; j < lines.length; j++) { + if (javadoc) { + this.print_token_line_indentation(current_token); + this._output.add_token(ltrim(lines[j])); + } else if (starless && lines[j]) { + this.print_token_line_indentation(current_token); + this._output.add_token(lines[j].substring(lastIndentLength)); + } else { + this._output.current_line.set_indent(-1); + this._output.add_token(lines[j]); + } + this.print_newline(false, preserve_statement_flags); + } + this._flags.alignment = 0; + } + }; + Beautifier.prototype.handle_comment = function(current_token, preserve_statement_flags) { + if (current_token.newlines) { + this.print_newline(false, preserve_statement_flags); + } else { + this._output.trim(true); + } + this._output.space_before_token = true; + this.print_token(current_token); + this.print_newline(false, preserve_statement_flags); + }; + Beautifier.prototype.handle_dot = function(current_token) { + if (this.start_of_statement(current_token)) { + } else { + this.handle_whitespace_and_comments(current_token, true); + } + if (this._flags.last_token.text.match("^[0-9]+$")) { + this._output.space_before_token = true; + } + if (reserved_array(this._flags.last_token, special_words)) { + this._output.space_before_token = false; + } else { + this.allow_wrap_or_preserved_newline(current_token, this._flags.last_token.text === ")" && this._options.break_chained_methods); + } + if (this._options.unindent_chained_methods && this._output.just_added_newline()) { + this.deindent(); + } + this.print_token(current_token); + }; + Beautifier.prototype.handle_unknown = function(current_token, preserve_statement_flags) { + this.print_token(current_token); + if (current_token.text[current_token.text.length - 1] === "\n") { + this.print_newline(false, preserve_statement_flags); + } + }; + Beautifier.prototype.handle_eof = function(current_token) { + while (this._flags.mode === MODE.Statement) { + this.restore_mode(); + } + this.handle_whitespace_and_comments(current_token); + }; + module2.exports.Beautifier = Beautifier; + } +}); + +// node_modules/js-beautify/js/src/javascript/index.js +var require_javascript = __commonJS({ + "node_modules/js-beautify/js/src/javascript/index.js"(exports, module2) { + "use strict"; + var Beautifier = require_beautifier().Beautifier; + var Options = require_options2().Options; + function js_beautify(js_source_text, options) { + var beautifier = new Beautifier(js_source_text, options); + return beautifier.beautify(); + } + module2.exports = js_beautify; + module2.exports.defaultOptions = function() { + return new Options(); + }; + } +}); + +// node_modules/js-beautify/js/src/css/options.js +var require_options3 = __commonJS({ + "node_modules/js-beautify/js/src/css/options.js"(exports, module2) { + "use strict"; + var BaseOptions = require_options().Options; + function Options(options) { + BaseOptions.call(this, options, "css"); + this.selector_separator_newline = this._get_boolean("selector_separator_newline", true); + this.newline_between_rules = this._get_boolean("newline_between_rules", true); + var space_around_selector_separator = this._get_boolean("space_around_selector_separator"); + this.space_around_combinator = this._get_boolean("space_around_combinator") || space_around_selector_separator; + var brace_style_split = this._get_selection_list("brace_style", ["collapse", "expand", "end-expand", "none", "preserve-inline"]); + this.brace_style = "collapse"; + for (var bs = 0; bs < brace_style_split.length; bs++) { + if (brace_style_split[bs] !== "expand") { + this.brace_style = "collapse"; + } else { + this.brace_style = brace_style_split[bs]; + } + } + } + Options.prototype = new BaseOptions(); + module2.exports.Options = Options; + } +}); + +// node_modules/js-beautify/js/src/css/beautifier.js +var require_beautifier2 = __commonJS({ + "node_modules/js-beautify/js/src/css/beautifier.js"(exports, module2) { + "use strict"; + var Options = require_options3().Options; + var Output = require_output().Output; + var InputScanner = require_inputscanner().InputScanner; + var Directives = require_directives().Directives; + var directives_core = new Directives(/\/\*/, /\*\//); + var lineBreak = /\r\n|[\r\n]/; + var allLineBreaks = /\r\n|[\r\n]/g; + var whitespaceChar = /\s/; + var whitespacePattern = /(?:\s|\n)+/g; + var block_comment_pattern = /\/\*(?:[\s\S]*?)((?:\*\/)|$)/g; + var comment_pattern = /\/\/(?:[^\n\r\u2028\u2029]*)/g; + function Beautifier(source_text, options) { + this._source_text = source_text || ""; + this._options = new Options(options); + this._ch = null; + this._input = null; + this.NESTED_AT_RULE = { + "@page": true, + "@font-face": true, + "@keyframes": true, + "@media": true, + "@supports": true, + "@document": true + }; + this.CONDITIONAL_GROUP_RULE = { + "@media": true, + "@supports": true, + "@document": true + }; + this.NON_SEMICOLON_NEWLINE_PROPERTY = [ + "grid-template-areas", + "grid-template" + ]; + } + Beautifier.prototype.eatString = function(endChars) { + var result = ""; + this._ch = this._input.next(); + while (this._ch) { + result += this._ch; + if (this._ch === "\\") { + result += this._input.next(); + } else if (endChars.indexOf(this._ch) !== -1 || this._ch === "\n") { + break; + } + this._ch = this._input.next(); + } + return result; + }; + Beautifier.prototype.eatWhitespace = function(allowAtLeastOneNewLine) { + var result = whitespaceChar.test(this._input.peek()); + var newline_count = 0; + while (whitespaceChar.test(this._input.peek())) { + this._ch = this._input.next(); + if (allowAtLeastOneNewLine && this._ch === "\n") { + if (newline_count === 0 || newline_count < this._options.max_preserve_newlines) { + newline_count++; + this._output.add_new_line(true); + } + } + } + return result; + }; + Beautifier.prototype.foundNestedPseudoClass = function() { + var openParen = 0; + var i = 1; + var ch = this._input.peek(i); + while (ch) { + if (ch === "{") { + return true; + } else if (ch === "(") { + openParen += 1; + } else if (ch === ")") { + if (openParen === 0) { + return false; + } + openParen -= 1; + } else if (ch === ";" || ch === "}") { + return false; + } + i++; + ch = this._input.peek(i); + } + return false; + }; + Beautifier.prototype.print_string = function(output_string) { + this._output.set_indent(this._indentLevel); + this._output.non_breaking_space = true; + this._output.add_token(output_string); + }; + Beautifier.prototype.preserveSingleSpace = function(isAfterSpace) { + if (isAfterSpace) { + this._output.space_before_token = true; + } + }; + Beautifier.prototype.indent = function() { + this._indentLevel++; + }; + Beautifier.prototype.outdent = function() { + if (this._indentLevel > 0) { + this._indentLevel--; + } + }; + Beautifier.prototype.beautify = function() { + if (this._options.disabled) { + return this._source_text; + } + var source_text = this._source_text; + var eol = this._options.eol; + if (eol === "auto") { + eol = "\n"; + if (source_text && lineBreak.test(source_text || "")) { + eol = source_text.match(lineBreak)[0]; + } + } + source_text = source_text.replace(allLineBreaks, "\n"); + var baseIndentString = source_text.match(/^[\t ]*/)[0]; + this._output = new Output(this._options, baseIndentString); + this._input = new InputScanner(source_text); + this._indentLevel = 0; + this._nestedLevel = 0; + this._ch = null; + var parenLevel = 0; + var insideRule = false; + var insidePropertyValue = false; + var enteringConditionalGroup = false; + var insideAtExtend = false; + var insideAtImport = false; + var insideScssMap = false; + var topCharacter = this._ch; + var insideNonSemiColonValues = false; + var whitespace; + var isAfterSpace; + var previous_ch; + while (true) { + whitespace = this._input.read(whitespacePattern); + isAfterSpace = whitespace !== ""; + previous_ch = topCharacter; + this._ch = this._input.next(); + if (this._ch === "\\" && this._input.hasNext()) { + this._ch += this._input.next(); + } + topCharacter = this._ch; + if (!this._ch) { + break; + } else if (this._ch === "/" && this._input.peek() === "*") { + this._output.add_new_line(); + this._input.back(); + var comment = this._input.read(block_comment_pattern); + var directives = directives_core.get_directives(comment); + if (directives && directives.ignore === "start") { + comment += directives_core.readIgnored(this._input); + } + this.print_string(comment); + this.eatWhitespace(true); + this._output.add_new_line(); + } else if (this._ch === "/" && this._input.peek() === "/") { + this._output.space_before_token = true; + this._input.back(); + this.print_string(this._input.read(comment_pattern)); + this.eatWhitespace(true); + } else if (this._ch === "@" || this._ch === "$") { + this.preserveSingleSpace(isAfterSpace); + if (this._input.peek() === "{") { + this.print_string(this._ch + this.eatString("}")); + } else { + this.print_string(this._ch); + var variableOrRule = this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g); + if (variableOrRule.match(/[ :]$/)) { + variableOrRule = this.eatString(": ").replace(/\s$/, ""); + this.print_string(variableOrRule); + this._output.space_before_token = true; + } + variableOrRule = variableOrRule.replace(/\s$/, ""); + if (variableOrRule === "extend") { + insideAtExtend = true; + } else if (variableOrRule === "import") { + insideAtImport = true; + } + if (variableOrRule in this.NESTED_AT_RULE) { + this._nestedLevel += 1; + if (variableOrRule in this.CONDITIONAL_GROUP_RULE) { + enteringConditionalGroup = true; + } + } else if (!insideRule && parenLevel === 0 && variableOrRule.indexOf(":") !== -1) { + insidePropertyValue = true; + this.indent(); + } + } + } else if (this._ch === "#" && this._input.peek() === "{") { + this.preserveSingleSpace(isAfterSpace); + this.print_string(this._ch + this.eatString("}")); + } else if (this._ch === "{") { + if (insidePropertyValue) { + insidePropertyValue = false; + this.outdent(); + } + if (enteringConditionalGroup) { + enteringConditionalGroup = false; + insideRule = this._indentLevel >= this._nestedLevel; + } else { + insideRule = this._indentLevel >= this._nestedLevel - 1; + } + if (this._options.newline_between_rules && insideRule) { + if (this._output.previous_line && this._output.previous_line.item(-1) !== "{") { + this._output.ensure_empty_line_above("/", ","); + } + } + this._output.space_before_token = true; + if (this._options.brace_style === "expand") { + this._output.add_new_line(); + this.print_string(this._ch); + this.indent(); + this._output.set_indent(this._indentLevel); + } else { + if (previous_ch === "(") { + this._output.space_before_token = false; + } else if (previous_ch !== ",") { + this.indent(); + } + this.print_string(this._ch); + } + this.eatWhitespace(true); + this._output.add_new_line(); + } else if (this._ch === "}") { + this.outdent(); + this._output.add_new_line(); + if (previous_ch === "{") { + this._output.trim(true); + } + insideAtImport = false; + insideAtExtend = false; + if (insidePropertyValue) { + this.outdent(); + insidePropertyValue = false; + } + this.print_string(this._ch); + insideRule = false; + if (this._nestedLevel) { + this._nestedLevel--; + } + this.eatWhitespace(true); + this._output.add_new_line(); + if (this._options.newline_between_rules && !this._output.just_added_blankline()) { + if (this._input.peek() !== "}") { + this._output.add_new_line(true); + } + } + if (this._input.peek() === ")") { + this._output.trim(true); + if (this._options.brace_style === "expand") { + this._output.add_new_line(true); + } + } + } else if (this._ch === ":") { + for (var i = 0; i < this.NON_SEMICOLON_NEWLINE_PROPERTY.length; i++) { + if (this._input.lookBack(this.NON_SEMICOLON_NEWLINE_PROPERTY[i])) { + insideNonSemiColonValues = true; + break; + } + } + if ((insideRule || enteringConditionalGroup) && !(this._input.lookBack("&") || this.foundNestedPseudoClass()) && !this._input.lookBack("(") && !insideAtExtend && parenLevel === 0) { + this.print_string(":"); + if (!insidePropertyValue) { + insidePropertyValue = true; + this._output.space_before_token = true; + this.eatWhitespace(true); + this.indent(); + } + } else { + if (this._input.lookBack(" ")) { + this._output.space_before_token = true; + } + if (this._input.peek() === ":") { + this._ch = this._input.next(); + this.print_string("::"); + } else { + this.print_string(":"); + } + } + } else if (this._ch === '"' || this._ch === "'") { + var preserveQuoteSpace = previous_ch === '"' || previous_ch === "'"; + this.preserveSingleSpace(preserveQuoteSpace || isAfterSpace); + this.print_string(this._ch + this.eatString(this._ch)); + this.eatWhitespace(true); + } else if (this._ch === ";") { + insideNonSemiColonValues = false; + if (parenLevel === 0) { + if (insidePropertyValue) { + this.outdent(); + insidePropertyValue = false; + } + insideAtExtend = false; + insideAtImport = false; + this.print_string(this._ch); + this.eatWhitespace(true); + if (this._input.peek() !== "/") { + this._output.add_new_line(); + } + } else { + this.print_string(this._ch); + this.eatWhitespace(true); + this._output.space_before_token = true; + } + } else if (this._ch === "(") { + if (this._input.lookBack("url")) { + this.print_string(this._ch); + this.eatWhitespace(); + parenLevel++; + this.indent(); + this._ch = this._input.next(); + if (this._ch === ")" || this._ch === '"' || this._ch === "'") { + this._input.back(); + } else if (this._ch) { + this.print_string(this._ch + this.eatString(")")); + if (parenLevel) { + parenLevel--; + this.outdent(); + } + } + } else { + var space_needed = false; + if (this._input.lookBack("with")) { + space_needed = true; + } + this.preserveSingleSpace(isAfterSpace || space_needed); + this.print_string(this._ch); + if (insidePropertyValue && previous_ch === "$" && this._options.selector_separator_newline) { + this._output.add_new_line(); + insideScssMap = true; + } else { + this.eatWhitespace(); + parenLevel++; + this.indent(); + } + } + } else if (this._ch === ")") { + if (parenLevel) { + parenLevel--; + this.outdent(); + } + if (insideScssMap && this._input.peek() === ";" && this._options.selector_separator_newline) { + insideScssMap = false; + this.outdent(); + this._output.add_new_line(); + } + this.print_string(this._ch); + } else if (this._ch === ",") { + this.print_string(this._ch); + this.eatWhitespace(true); + if (this._options.selector_separator_newline && (!insidePropertyValue || insideScssMap) && parenLevel === 0 && !insideAtImport && !insideAtExtend) { + this._output.add_new_line(); + } else { + this._output.space_before_token = true; + } + } else if ((this._ch === ">" || this._ch === "+" || this._ch === "~") && !insidePropertyValue && parenLevel === 0) { + if (this._options.space_around_combinator) { + this._output.space_before_token = true; + this.print_string(this._ch); + this._output.space_before_token = true; + } else { + this.print_string(this._ch); + this.eatWhitespace(); + if (this._ch && whitespaceChar.test(this._ch)) { + this._ch = ""; + } + } + } else if (this._ch === "]") { + this.print_string(this._ch); + } else if (this._ch === "[") { + this.preserveSingleSpace(isAfterSpace); + this.print_string(this._ch); + } else if (this._ch === "=") { + this.eatWhitespace(); + this.print_string("="); + if (whitespaceChar.test(this._ch)) { + this._ch = ""; + } + } else if (this._ch === "!" && !this._input.lookBack("\\")) { + this._output.space_before_token = true; + this.print_string(this._ch); + } else { + var preserveAfterSpace = previous_ch === '"' || previous_ch === "'"; + this.preserveSingleSpace(preserveAfterSpace || isAfterSpace); + this.print_string(this._ch); + if (!this._output.just_added_newline() && this._input.peek() === "\n" && insideNonSemiColonValues) { + this._output.add_new_line(); + } + } + } + var sweetCode = this._output.get_code(eol); + return sweetCode; + }; + module2.exports.Beautifier = Beautifier; + } +}); + +// node_modules/js-beautify/js/src/css/index.js +var require_css = __commonJS({ + "node_modules/js-beautify/js/src/css/index.js"(exports, module2) { + "use strict"; + var Beautifier = require_beautifier2().Beautifier; + var Options = require_options3().Options; + function css_beautify(source_text, options) { + var beautifier = new Beautifier(source_text, options); + return beautifier.beautify(); + } + module2.exports = css_beautify; + module2.exports.defaultOptions = function() { + return new Options(); + }; + } +}); + +// node_modules/js-beautify/js/src/html/options.js +var require_options4 = __commonJS({ + "node_modules/js-beautify/js/src/html/options.js"(exports, module2) { + "use strict"; + var BaseOptions = require_options().Options; + function Options(options) { + BaseOptions.call(this, options, "html"); + if (this.templating.length === 1 && this.templating[0] === "auto") { + this.templating = ["django", "erb", "handlebars", "php"]; + } + this.indent_inner_html = this._get_boolean("indent_inner_html"); + this.indent_body_inner_html = this._get_boolean("indent_body_inner_html", true); + this.indent_head_inner_html = this._get_boolean("indent_head_inner_html", true); + this.indent_handlebars = this._get_boolean("indent_handlebars", true); + this.wrap_attributes = this._get_selection("wrap_attributes", ["auto", "force", "force-aligned", "force-expand-multiline", "aligned-multiple", "preserve", "preserve-aligned"]); + this.wrap_attributes_indent_size = this._get_number("wrap_attributes_indent_size", this.indent_size); + this.extra_liners = this._get_array("extra_liners", ["head", "body", "/html"]); + this.inline = this._get_array("inline", [ + "a", + "abbr", + "area", + "audio", + "b", + "bdi", + "bdo", + "br", + "button", + "canvas", + "cite", + "code", + "data", + "datalist", + "del", + "dfn", + "em", + "embed", + "i", + "iframe", + "img", + "input", + "ins", + "kbd", + "keygen", + "label", + "map", + "mark", + "math", + "meter", + "noscript", + "object", + "output", + "progress", + "q", + "ruby", + "s", + "samp", + "select", + "small", + "span", + "strong", + "sub", + "sup", + "svg", + "template", + "textarea", + "time", + "u", + "var", + "video", + "wbr", + "text", + "acronym", + "big", + "strike", + "tt" + ]); + this.void_elements = this._get_array("void_elements", [ + "area", + "base", + "br", + "col", + "embed", + "hr", + "img", + "input", + "keygen", + "link", + "menuitem", + "meta", + "param", + "source", + "track", + "wbr", + "!doctype", + "?xml", + "basefont", + "isindex" + ]); + this.unformatted = this._get_array("unformatted", []); + this.content_unformatted = this._get_array("content_unformatted", [ + "pre", + "textarea" + ]); + this.unformatted_content_delimiter = this._get_characters("unformatted_content_delimiter"); + this.indent_scripts = this._get_selection("indent_scripts", ["normal", "keep", "separate"]); + } + Options.prototype = new BaseOptions(); + module2.exports.Options = Options; + } +}); + +// node_modules/js-beautify/js/src/html/tokenizer.js +var require_tokenizer3 = __commonJS({ + "node_modules/js-beautify/js/src/html/tokenizer.js"(exports, module2) { + "use strict"; + var BaseTokenizer = require_tokenizer().Tokenizer; + var BASETOKEN = require_tokenizer().TOKEN; + var Directives = require_directives().Directives; + var TemplatablePattern = require_templatablepattern().TemplatablePattern; + var Pattern = require_pattern().Pattern; + var TOKEN = { + TAG_OPEN: "TK_TAG_OPEN", + TAG_CLOSE: "TK_TAG_CLOSE", + ATTRIBUTE: "TK_ATTRIBUTE", + EQUALS: "TK_EQUALS", + VALUE: "TK_VALUE", + COMMENT: "TK_COMMENT", + TEXT: "TK_TEXT", + UNKNOWN: "TK_UNKNOWN", + START: BASETOKEN.START, + RAW: BASETOKEN.RAW, + EOF: BASETOKEN.EOF + }; + var directives_core = new Directives(/<\!--/, /-->/); + var Tokenizer = function(input_string, options) { + BaseTokenizer.call(this, input_string, options); + this._current_tag_name = ""; + var templatable_reader = new TemplatablePattern(this._input).read_options(this._options); + var pattern_reader = new Pattern(this._input); + this.__patterns = { + word: templatable_reader.until(/[\n\r\t <]/), + single_quote: templatable_reader.until_after(/'/), + double_quote: templatable_reader.until_after(/"/), + attribute: templatable_reader.until(/[\n\r\t =>]|\/>/), + element_name: templatable_reader.until(/[\n\r\t >\/]/), + handlebars_comment: pattern_reader.starting_with(/{{!--/).until_after(/--}}/), + handlebars: pattern_reader.starting_with(/{{/).until_after(/}}/), + handlebars_open: pattern_reader.until(/[\n\r\t }]/), + handlebars_raw_close: pattern_reader.until(/}}/), + comment: pattern_reader.starting_with(//), + cdata: pattern_reader.starting_with(//), + conditional_comment: pattern_reader.starting_with(//), + processing: pattern_reader.starting_with(/<\?/).until_after(/\?>/) + }; + if (this._options.indent_handlebars) { + this.__patterns.word = this.__patterns.word.exclude("handlebars"); + } + this._unformatted_content_delimiter = null; + if (this._options.unformatted_content_delimiter) { + var literal_regexp = this._input.get_literal_regexp(this._options.unformatted_content_delimiter); + this.__patterns.unformatted_content_delimiter = pattern_reader.matching(literal_regexp).until_after(literal_regexp); + } + }; + Tokenizer.prototype = new BaseTokenizer(); + Tokenizer.prototype._is_comment = function(current_token) { + return false; + }; + Tokenizer.prototype._is_opening = function(current_token) { + return current_token.type === TOKEN.TAG_OPEN; + }; + Tokenizer.prototype._is_closing = function(current_token, open_token) { + return current_token.type === TOKEN.TAG_CLOSE && (open_token && ((current_token.text === ">" || current_token.text === "/>") && open_token.text[0] === "<" || current_token.text === "}}" && open_token.text[0] === "{" && open_token.text[1] === "{")); + }; + Tokenizer.prototype._reset = function() { + this._current_tag_name = ""; + }; + Tokenizer.prototype._get_next_token = function(previous_token, open_token) { + var token = null; + this._readWhitespace(); + var c = this._input.peek(); + if (c === null) { + return this._create_token(TOKEN.EOF, ""); + } + token = token || this._read_open_handlebars(c, open_token); + token = token || this._read_attribute(c, previous_token, open_token); + token = token || this._read_close(c, open_token); + token = token || this._read_raw_content(c, previous_token, open_token); + token = token || this._read_content_word(c); + token = token || this._read_comment_or_cdata(c); + token = token || this._read_processing(c); + token = token || this._read_open(c, open_token); + token = token || this._create_token(TOKEN.UNKNOWN, this._input.next()); + return token; + }; + Tokenizer.prototype._read_comment_or_cdata = function(c) { + var token = null; + var resulting_string = null; + var directives = null; + if (c === "<") { + var peek1 = this._input.peek(1); + if (peek1 === "!") { + resulting_string = this.__patterns.comment.read(); + if (resulting_string) { + directives = directives_core.get_directives(resulting_string); + if (directives && directives.ignore === "start") { + resulting_string += directives_core.readIgnored(this._input); + } + } else { + resulting_string = this.__patterns.cdata.read(); + } + } + if (resulting_string) { + token = this._create_token(TOKEN.COMMENT, resulting_string); + token.directives = directives; + } + } + return token; + }; + Tokenizer.prototype._read_processing = function(c) { + var token = null; + var resulting_string = null; + var directives = null; + if (c === "<") { + var peek1 = this._input.peek(1); + if (peek1 === "!" || peek1 === "?") { + resulting_string = this.__patterns.conditional_comment.read(); + resulting_string = resulting_string || this.__patterns.processing.read(); + } + if (resulting_string) { + token = this._create_token(TOKEN.COMMENT, resulting_string); + token.directives = directives; + } + } + return token; + }; + Tokenizer.prototype._read_open = function(c, open_token) { + var resulting_string = null; + var token = null; + if (!open_token) { + if (c === "<") { + resulting_string = this._input.next(); + if (this._input.peek() === "/") { + resulting_string += this._input.next(); + } + resulting_string += this.__patterns.element_name.read(); + token = this._create_token(TOKEN.TAG_OPEN, resulting_string); + } + } + return token; + }; + Tokenizer.prototype._read_open_handlebars = function(c, open_token) { + var resulting_string = null; + var token = null; + if (!open_token) { + if (this._options.indent_handlebars && c === "{" && this._input.peek(1) === "{") { + if (this._input.peek(2) === "!") { + resulting_string = this.__patterns.handlebars_comment.read(); + resulting_string = resulting_string || this.__patterns.handlebars.read(); + token = this._create_token(TOKEN.COMMENT, resulting_string); + } else { + resulting_string = this.__patterns.handlebars_open.read(); + token = this._create_token(TOKEN.TAG_OPEN, resulting_string); + } + } + } + return token; + }; + Tokenizer.prototype._read_close = function(c, open_token) { + var resulting_string = null; + var token = null; + if (open_token) { + if (open_token.text[0] === "<" && (c === ">" || c === "/" && this._input.peek(1) === ">")) { + resulting_string = this._input.next(); + if (c === "/") { + resulting_string += this._input.next(); + } + token = this._create_token(TOKEN.TAG_CLOSE, resulting_string); + } else if (open_token.text[0] === "{" && c === "}" && this._input.peek(1) === "}") { + this._input.next(); + this._input.next(); + token = this._create_token(TOKEN.TAG_CLOSE, "}}"); + } + } + return token; + }; + Tokenizer.prototype._read_attribute = function(c, previous_token, open_token) { + var token = null; + var resulting_string = ""; + if (open_token && open_token.text[0] === "<") { + if (c === "=") { + token = this._create_token(TOKEN.EQUALS, this._input.next()); + } else if (c === '"' || c === "'") { + var content = this._input.next(); + if (c === '"') { + content += this.__patterns.double_quote.read(); + } else { + content += this.__patterns.single_quote.read(); + } + token = this._create_token(TOKEN.VALUE, content); + } else { + resulting_string = this.__patterns.attribute.read(); + if (resulting_string) { + if (previous_token.type === TOKEN.EQUALS) { + token = this._create_token(TOKEN.VALUE, resulting_string); + } else { + token = this._create_token(TOKEN.ATTRIBUTE, resulting_string); + } + } + } + } + return token; + }; + Tokenizer.prototype._is_content_unformatted = function(tag_name) { + return this._options.void_elements.indexOf(tag_name) === -1 && (this._options.content_unformatted.indexOf(tag_name) !== -1 || this._options.unformatted.indexOf(tag_name) !== -1); + }; + Tokenizer.prototype._read_raw_content = function(c, previous_token, open_token) { + var resulting_string = ""; + if (open_token && open_token.text[0] === "{") { + resulting_string = this.__patterns.handlebars_raw_close.read(); + } else if (previous_token.type === TOKEN.TAG_CLOSE && previous_token.opened.text[0] === "<" && previous_token.text[0] !== "/") { + var tag_name = previous_token.opened.text.substr(1).toLowerCase(); + if (tag_name === "script" || tag_name === "style") { + var token = this._read_comment_or_cdata(c); + if (token) { + token.type = TOKEN.TEXT; + return token; + } + resulting_string = this._input.readUntil(new RegExp("", "ig")); + } else if (this._is_content_unformatted(tag_name)) { + resulting_string = this._input.readUntil(new RegExp("", "ig")); + } + } + if (resulting_string) { + return this._create_token(TOKEN.TEXT, resulting_string); + } + return null; + }; + Tokenizer.prototype._read_content_word = function(c) { + var resulting_string = ""; + if (this._options.unformatted_content_delimiter) { + if (c === this._options.unformatted_content_delimiter[0]) { + resulting_string = this.__patterns.unformatted_content_delimiter.read(); + } + } + if (!resulting_string) { + resulting_string = this.__patterns.word.read(); + } + if (resulting_string) { + return this._create_token(TOKEN.TEXT, resulting_string); + } + }; + module2.exports.Tokenizer = Tokenizer; + module2.exports.TOKEN = TOKEN; + } +}); + +// node_modules/js-beautify/js/src/html/beautifier.js +var require_beautifier3 = __commonJS({ + "node_modules/js-beautify/js/src/html/beautifier.js"(exports, module2) { + "use strict"; + var Options = require_options4().Options; + var Output = require_output().Output; + var Tokenizer = require_tokenizer3().Tokenizer; + var TOKEN = require_tokenizer3().TOKEN; + var lineBreak = /\r\n|[\r\n]/; + var allLineBreaks = /\r\n|[\r\n]/g; + var Printer = function(options, base_indent_string) { + this.indent_level = 0; + this.alignment_size = 0; + this.max_preserve_newlines = options.max_preserve_newlines; + this.preserve_newlines = options.preserve_newlines; + this._output = new Output(options, base_indent_string); + }; + Printer.prototype.current_line_has_match = function(pattern) { + return this._output.current_line.has_match(pattern); + }; + Printer.prototype.set_space_before_token = function(value, non_breaking) { + this._output.space_before_token = value; + this._output.non_breaking_space = non_breaking; + }; + Printer.prototype.set_wrap_point = function() { + this._output.set_indent(this.indent_level, this.alignment_size); + this._output.set_wrap_point(); + }; + Printer.prototype.add_raw_token = function(token) { + this._output.add_raw_token(token); + }; + Printer.prototype.print_preserved_newlines = function(raw_token) { + var newlines = 0; + if (raw_token.type !== TOKEN.TEXT && raw_token.previous.type !== TOKEN.TEXT) { + newlines = raw_token.newlines ? 1 : 0; + } + if (this.preserve_newlines) { + newlines = raw_token.newlines < this.max_preserve_newlines + 1 ? raw_token.newlines : this.max_preserve_newlines + 1; + } + for (var n = 0; n < newlines; n++) { + this.print_newline(n > 0); + } + return newlines !== 0; + }; + Printer.prototype.traverse_whitespace = function(raw_token) { + if (raw_token.whitespace_before || raw_token.newlines) { + if (!this.print_preserved_newlines(raw_token)) { + this._output.space_before_token = true; + } + return true; + } + return false; + }; + Printer.prototype.previous_token_wrapped = function() { + return this._output.previous_token_wrapped; + }; + Printer.prototype.print_newline = function(force) { + this._output.add_new_line(force); + }; + Printer.prototype.print_token = function(token) { + if (token.text) { + this._output.set_indent(this.indent_level, this.alignment_size); + this._output.add_token(token.text); + } + }; + Printer.prototype.indent = function() { + this.indent_level++; + }; + Printer.prototype.get_full_indent = function(level) { + level = this.indent_level + (level || 0); + if (level < 1) { + return ""; + } + return this._output.get_indent_string(level); + }; + var get_type_attribute = function(start_token) { + var result = null; + var raw_token = start_token.next; + while (raw_token.type !== TOKEN.EOF && start_token.closed !== raw_token) { + if (raw_token.type === TOKEN.ATTRIBUTE && raw_token.text === "type") { + if (raw_token.next && raw_token.next.type === TOKEN.EQUALS && raw_token.next.next && raw_token.next.next.type === TOKEN.VALUE) { + result = raw_token.next.next.text; + } + break; + } + raw_token = raw_token.next; + } + return result; + }; + var get_custom_beautifier_name = function(tag_check, raw_token) { + var typeAttribute = null; + var result = null; + if (!raw_token.closed) { + return null; + } + if (tag_check === "script") { + typeAttribute = "text/javascript"; + } else if (tag_check === "style") { + typeAttribute = "text/css"; + } + typeAttribute = get_type_attribute(raw_token) || typeAttribute; + if (typeAttribute.search("text/css") > -1) { + result = "css"; + } else if (typeAttribute.search(/module|((text|application|dojo)\/(x-)?(javascript|ecmascript|jscript|livescript|(ld\+)?json|method|aspect))/) > -1) { + result = "javascript"; + } else if (typeAttribute.search(/(text|application|dojo)\/(x-)?(html)/) > -1) { + result = "html"; + } else if (typeAttribute.search(/test\/null/) > -1) { + result = "null"; + } + return result; + }; + function in_array(what, arr) { + return arr.indexOf(what) !== -1; + } + function TagFrame(parent, parser_token, indent_level) { + this.parent = parent || null; + this.tag = parser_token ? parser_token.tag_name : ""; + this.indent_level = indent_level || 0; + this.parser_token = parser_token || null; + } + function TagStack(printer) { + this._printer = printer; + this._current_frame = null; + } + TagStack.prototype.get_parser_token = function() { + return this._current_frame ? this._current_frame.parser_token : null; + }; + TagStack.prototype.record_tag = function(parser_token) { + var new_frame = new TagFrame(this._current_frame, parser_token, this._printer.indent_level); + this._current_frame = new_frame; + }; + TagStack.prototype._try_pop_frame = function(frame) { + var parser_token = null; + if (frame) { + parser_token = frame.parser_token; + this._printer.indent_level = frame.indent_level; + this._current_frame = frame.parent; + } + return parser_token; + }; + TagStack.prototype._get_frame = function(tag_list, stop_list) { + var frame = this._current_frame; + while (frame) { + if (tag_list.indexOf(frame.tag) !== -1) { + break; + } else if (stop_list && stop_list.indexOf(frame.tag) !== -1) { + frame = null; + break; + } + frame = frame.parent; + } + return frame; + }; + TagStack.prototype.try_pop = function(tag, stop_list) { + var frame = this._get_frame([tag], stop_list); + return this._try_pop_frame(frame); + }; + TagStack.prototype.indent_to_tag = function(tag_list) { + var frame = this._get_frame(tag_list); + if (frame) { + this._printer.indent_level = frame.indent_level; + } + }; + function Beautifier(source_text, options, js_beautify, css_beautify) { + this._source_text = source_text || ""; + options = options || {}; + this._js_beautify = js_beautify; + this._css_beautify = css_beautify; + this._tag_stack = null; + var optionHtml = new Options(options, "html"); + this._options = optionHtml; + this._is_wrap_attributes_force = this._options.wrap_attributes.substr(0, "force".length) === "force"; + this._is_wrap_attributes_force_expand_multiline = this._options.wrap_attributes === "force-expand-multiline"; + this._is_wrap_attributes_force_aligned = this._options.wrap_attributes === "force-aligned"; + this._is_wrap_attributes_aligned_multiple = this._options.wrap_attributes === "aligned-multiple"; + this._is_wrap_attributes_preserve = this._options.wrap_attributes.substr(0, "preserve".length) === "preserve"; + this._is_wrap_attributes_preserve_aligned = this._options.wrap_attributes === "preserve-aligned"; + } + Beautifier.prototype.beautify = function() { + if (this._options.disabled) { + return this._source_text; + } + var source_text = this._source_text; + var eol = this._options.eol; + if (this._options.eol === "auto") { + eol = "\n"; + if (source_text && lineBreak.test(source_text)) { + eol = source_text.match(lineBreak)[0]; + } + } + source_text = source_text.replace(allLineBreaks, "\n"); + var baseIndentString = source_text.match(/^[\t ]*/)[0]; + var last_token = { + text: "", + type: "" + }; + var last_tag_token = new TagOpenParserToken(); + var printer = new Printer(this._options, baseIndentString); + var tokens = new Tokenizer(source_text, this._options).tokenize(); + this._tag_stack = new TagStack(printer); + var parser_token = null; + var raw_token = tokens.next(); + while (raw_token.type !== TOKEN.EOF) { + if (raw_token.type === TOKEN.TAG_OPEN || raw_token.type === TOKEN.COMMENT) { + parser_token = this._handle_tag_open(printer, raw_token, last_tag_token, last_token); + last_tag_token = parser_token; + } else if (raw_token.type === TOKEN.ATTRIBUTE || raw_token.type === TOKEN.EQUALS || raw_token.type === TOKEN.VALUE || raw_token.type === TOKEN.TEXT && !last_tag_token.tag_complete) { + parser_token = this._handle_inside_tag(printer, raw_token, last_tag_token, tokens); + } else if (raw_token.type === TOKEN.TAG_CLOSE) { + parser_token = this._handle_tag_close(printer, raw_token, last_tag_token); + } else if (raw_token.type === TOKEN.TEXT) { + parser_token = this._handle_text(printer, raw_token, last_tag_token); + } else { + printer.add_raw_token(raw_token); + } + last_token = parser_token; + raw_token = tokens.next(); + } + var sweet_code = printer._output.get_code(eol); + return sweet_code; + }; + Beautifier.prototype._handle_tag_close = function(printer, raw_token, last_tag_token) { + var parser_token = { + text: raw_token.text, + type: raw_token.type + }; + printer.alignment_size = 0; + last_tag_token.tag_complete = true; + printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== "", true); + if (last_tag_token.is_unformatted) { + printer.add_raw_token(raw_token); + } else { + if (last_tag_token.tag_start_char === "<") { + printer.set_space_before_token(raw_token.text[0] === "/", true); + if (this._is_wrap_attributes_force_expand_multiline && last_tag_token.has_wrapped_attrs) { + printer.print_newline(false); + } + } + printer.print_token(raw_token); + } + if (last_tag_token.indent_content && !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) { + printer.indent(); + last_tag_token.indent_content = false; + } + if (!last_tag_token.is_inline_element && !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) { + printer.set_wrap_point(); + } + return parser_token; + }; + Beautifier.prototype._handle_inside_tag = function(printer, raw_token, last_tag_token, tokens) { + var wrapped = last_tag_token.has_wrapped_attrs; + var parser_token = { + text: raw_token.text, + type: raw_token.type + }; + printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== "", true); + if (last_tag_token.is_unformatted) { + printer.add_raw_token(raw_token); + } else if (last_tag_token.tag_start_char === "{" && raw_token.type === TOKEN.TEXT) { + if (printer.print_preserved_newlines(raw_token)) { + raw_token.newlines = 0; + printer.add_raw_token(raw_token); + } else { + printer.print_token(raw_token); + } + } else { + if (raw_token.type === TOKEN.ATTRIBUTE) { + printer.set_space_before_token(true); + last_tag_token.attr_count += 1; + } else if (raw_token.type === TOKEN.EQUALS) { + printer.set_space_before_token(false); + } else if (raw_token.type === TOKEN.VALUE && raw_token.previous.type === TOKEN.EQUALS) { + printer.set_space_before_token(false); + } + if (raw_token.type === TOKEN.ATTRIBUTE && last_tag_token.tag_start_char === "<") { + if (this._is_wrap_attributes_preserve || this._is_wrap_attributes_preserve_aligned) { + printer.traverse_whitespace(raw_token); + wrapped = wrapped || raw_token.newlines !== 0; + } + if (this._is_wrap_attributes_force) { + var force_attr_wrap = last_tag_token.attr_count > 1; + if (this._is_wrap_attributes_force_expand_multiline && last_tag_token.attr_count === 1) { + var is_only_attribute = true; + var peek_index = 0; + var peek_token; + do { + peek_token = tokens.peek(peek_index); + if (peek_token.type === TOKEN.ATTRIBUTE) { + is_only_attribute = false; + break; + } + peek_index += 1; + } while (peek_index < 4 && peek_token.type !== TOKEN.EOF && peek_token.type !== TOKEN.TAG_CLOSE); + force_attr_wrap = !is_only_attribute; + } + if (force_attr_wrap) { + printer.print_newline(false); + wrapped = true; + } + } + } + printer.print_token(raw_token); + wrapped = wrapped || printer.previous_token_wrapped(); + last_tag_token.has_wrapped_attrs = wrapped; + } + return parser_token; + }; + Beautifier.prototype._handle_text = function(printer, raw_token, last_tag_token) { + var parser_token = { + text: raw_token.text, + type: "TK_CONTENT" + }; + if (last_tag_token.custom_beautifier_name) { + this._print_custom_beatifier_text(printer, raw_token, last_tag_token); + } else if (last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) { + printer.add_raw_token(raw_token); + } else { + printer.traverse_whitespace(raw_token); + printer.print_token(raw_token); + } + return parser_token; + }; + Beautifier.prototype._print_custom_beatifier_text = function(printer, raw_token, last_tag_token) { + var local = this; + if (raw_token.text !== "") { + var text = raw_token.text, _beautifier, script_indent_level = 1, pre = "", post = ""; + if (last_tag_token.custom_beautifier_name === "javascript" && typeof this._js_beautify === "function") { + _beautifier = this._js_beautify; + } else if (last_tag_token.custom_beautifier_name === "css" && typeof this._css_beautify === "function") { + _beautifier = this._css_beautify; + } else if (last_tag_token.custom_beautifier_name === "html") { + _beautifier = function(html_source, options) { + var beautifier = new Beautifier(html_source, options, local._js_beautify, local._css_beautify); + return beautifier.beautify(); + }; + } + if (this._options.indent_scripts === "keep") { + script_indent_level = 0; + } else if (this._options.indent_scripts === "separate") { + script_indent_level = -printer.indent_level; + } + var indentation = printer.get_full_indent(script_indent_level); + text = text.replace(/\n[ \t]*$/, ""); + if (last_tag_token.custom_beautifier_name !== "html" && text[0] === "<" && text.match(/^(|]]>)$/.exec(text); + if (!matched) { + printer.add_raw_token(raw_token); + return; + } + pre = indentation + matched[1] + "\n"; + text = matched[4]; + if (matched[5]) { + post = indentation + matched[5]; + } + text = text.replace(/\n[ \t]*$/, ""); + if (matched[2] || matched[3].indexOf("\n") !== -1) { + matched = matched[3].match(/[ \t]+$/); + if (matched) { + raw_token.whitespace_before = matched[0]; + } + } + } + if (text) { + if (_beautifier) { + var Child_options = function() { + this.eol = "\n"; + }; + Child_options.prototype = this._options.raw_options; + var child_options = new Child_options(); + text = _beautifier(indentation + text, child_options); + } else { + var white = raw_token.whitespace_before; + if (white) { + text = text.replace(new RegExp("\n(" + white + ")?", "g"), "\n"); + } + text = indentation + text.replace(/\n/g, "\n" + indentation); + } + } + if (pre) { + if (!text) { + text = pre + post; + } else { + text = pre + text + "\n" + post; + } + } + printer.print_newline(false); + if (text) { + raw_token.text = text; + raw_token.whitespace_before = ""; + raw_token.newlines = 0; + printer.add_raw_token(raw_token); + printer.print_newline(true); + } + } + }; + Beautifier.prototype._handle_tag_open = function(printer, raw_token, last_tag_token, last_token) { + var parser_token = this._get_tag_open_token(raw_token); + if ((last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) && !last_tag_token.is_empty_element && raw_token.type === TOKEN.TAG_OPEN && raw_token.text.indexOf("]*)/); + this.tag_check = tag_check_match ? tag_check_match[1] : ""; + } else { + tag_check_match = raw_token.text.match(/^{{~?(?:[\^]|#\*?)?([^\s}]+)/); + this.tag_check = tag_check_match ? tag_check_match[1] : ""; + if ((raw_token.text.startsWith("{{#>") || raw_token.text.startsWith("{{~#>")) && this.tag_check[0] === ">") { + if (this.tag_check === ">" && raw_token.next !== null) { + this.tag_check = raw_token.next.text.split(" ")[0]; + } else { + this.tag_check = raw_token.text.split(">")[1]; + } + } + } + this.tag_check = this.tag_check.toLowerCase(); + if (raw_token.type === TOKEN.COMMENT) { + this.tag_complete = true; + } + this.is_start_tag = this.tag_check.charAt(0) !== "/"; + this.tag_name = !this.is_start_tag ? this.tag_check.substr(1) : this.tag_check; + this.is_end_tag = !this.is_start_tag || raw_token.closed && raw_token.closed.text === "/>"; + var handlebar_starts = 2; + if (this.tag_start_char === "{" && this.text.length >= 3) { + if (this.text.charAt(2) === "~") { + handlebar_starts = 3; + } + } + this.is_end_tag = this.is_end_tag || this.tag_start_char === "{" && (this.text.length < 3 || /[^#\^]/.test(this.text.charAt(handlebar_starts))); + } + }; + Beautifier.prototype._get_tag_open_token = function(raw_token) { + var parser_token = new TagOpenParserToken(this._tag_stack.get_parser_token(), raw_token); + parser_token.alignment_size = this._options.wrap_attributes_indent_size; + parser_token.is_end_tag = parser_token.is_end_tag || in_array(parser_token.tag_check, this._options.void_elements); + parser_token.is_empty_element = parser_token.tag_complete || parser_token.is_start_tag && parser_token.is_end_tag; + parser_token.is_unformatted = !parser_token.tag_complete && in_array(parser_token.tag_check, this._options.unformatted); + parser_token.is_content_unformatted = !parser_token.is_empty_element && in_array(parser_token.tag_check, this._options.content_unformatted); + parser_token.is_inline_element = in_array(parser_token.tag_name, this._options.inline) || parser_token.tag_name.includes("-") || parser_token.tag_start_char === "{"; + return parser_token; + }; + Beautifier.prototype._set_tag_position = function(printer, raw_token, parser_token, last_tag_token, last_token) { + if (!parser_token.is_empty_element) { + if (parser_token.is_end_tag) { + parser_token.start_tag_token = this._tag_stack.try_pop(parser_token.tag_name); + } else { + if (this._do_optional_end_element(parser_token)) { + if (!parser_token.is_inline_element) { + printer.print_newline(false); + } + } + this._tag_stack.record_tag(parser_token); + if ((parser_token.tag_name === "script" || parser_token.tag_name === "style") && !(parser_token.is_unformatted || parser_token.is_content_unformatted)) { + parser_token.custom_beautifier_name = get_custom_beautifier_name(parser_token.tag_check, raw_token); + } + } + } + if (in_array(parser_token.tag_check, this._options.extra_liners)) { + printer.print_newline(false); + if (!printer._output.just_added_blankline()) { + printer.print_newline(true); + } + } + if (parser_token.is_empty_element) { + if (parser_token.tag_start_char === "{" && parser_token.tag_check === "else") { + this._tag_stack.indent_to_tag(["if", "unless", "each"]); + parser_token.indent_content = true; + var foundIfOnCurrentLine = printer.current_line_has_match(/{{#if/); + if (!foundIfOnCurrentLine) { + printer.print_newline(false); + } + } + if (parser_token.tag_name === "!--" && last_token.type === TOKEN.TAG_CLOSE && last_tag_token.is_end_tag && parser_token.text.indexOf("\n") === -1) { + } else { + if (!(parser_token.is_inline_element || parser_token.is_unformatted)) { + printer.print_newline(false); + } + this._calcluate_parent_multiline(printer, parser_token); + } + } else if (parser_token.is_end_tag) { + var do_end_expand = false; + do_end_expand = parser_token.start_tag_token && parser_token.start_tag_token.multiline_content; + do_end_expand = do_end_expand || !parser_token.is_inline_element && !(last_tag_token.is_inline_element || last_tag_token.is_unformatted) && !(last_token.type === TOKEN.TAG_CLOSE && parser_token.start_tag_token === last_tag_token) && last_token.type !== "TK_CONTENT"; + if (parser_token.is_content_unformatted || parser_token.is_unformatted) { + do_end_expand = false; + } + if (do_end_expand) { + printer.print_newline(false); + } + } else { + parser_token.indent_content = !parser_token.custom_beautifier_name; + if (parser_token.tag_start_char === "<") { + if (parser_token.tag_name === "html") { + parser_token.indent_content = this._options.indent_inner_html; + } else if (parser_token.tag_name === "head") { + parser_token.indent_content = this._options.indent_head_inner_html; + } else if (parser_token.tag_name === "body") { + parser_token.indent_content = this._options.indent_body_inner_html; + } + } + if (!(parser_token.is_inline_element || parser_token.is_unformatted) && (last_token.type !== "TK_CONTENT" || parser_token.is_content_unformatted)) { + printer.print_newline(false); + } + this._calcluate_parent_multiline(printer, parser_token); + } + }; + Beautifier.prototype._calcluate_parent_multiline = function(printer, parser_token) { + if (parser_token.parent && printer._output.just_added_newline() && !((parser_token.is_inline_element || parser_token.is_unformatted) && parser_token.parent.is_inline_element)) { + parser_token.parent.multiline_content = true; + } + }; + var p_closers = ["address", "article", "aside", "blockquote", "details", "div", "dl", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hr", "main", "nav", "ol", "p", "pre", "section", "table", "ul"]; + var p_parent_excludes = ["a", "audio", "del", "ins", "map", "noscript", "video"]; + Beautifier.prototype._do_optional_end_element = function(parser_token) { + var result = null; + if (parser_token.is_empty_element || !parser_token.is_start_tag || !parser_token.parent) { + return; + } + if (parser_token.tag_name === "body") { + result = result || this._tag_stack.try_pop("head"); + } else if (parser_token.tag_name === "li") { + result = result || this._tag_stack.try_pop("li", ["ol", "ul"]); + } else if (parser_token.tag_name === "dd" || parser_token.tag_name === "dt") { + result = result || this._tag_stack.try_pop("dt", ["dl"]); + result = result || this._tag_stack.try_pop("dd", ["dl"]); + } else if (parser_token.parent.tag_name === "p" && p_closers.indexOf(parser_token.tag_name) !== -1) { + var p_parent = parser_token.parent.parent; + if (!p_parent || p_parent_excludes.indexOf(p_parent.tag_name) === -1) { + result = result || this._tag_stack.try_pop("p"); + } + } else if (parser_token.tag_name === "rp" || parser_token.tag_name === "rt") { + result = result || this._tag_stack.try_pop("rt", ["ruby", "rtc"]); + result = result || this._tag_stack.try_pop("rp", ["ruby", "rtc"]); + } else if (parser_token.tag_name === "optgroup") { + result = result || this._tag_stack.try_pop("optgroup", ["select"]); + } else if (parser_token.tag_name === "option") { + result = result || this._tag_stack.try_pop("option", ["select", "datalist", "optgroup"]); + } else if (parser_token.tag_name === "colgroup") { + result = result || this._tag_stack.try_pop("caption", ["table"]); + } else if (parser_token.tag_name === "thead") { + result = result || this._tag_stack.try_pop("caption", ["table"]); + result = result || this._tag_stack.try_pop("colgroup", ["table"]); + } else if (parser_token.tag_name === "tbody" || parser_token.tag_name === "tfoot") { + result = result || this._tag_stack.try_pop("caption", ["table"]); + result = result || this._tag_stack.try_pop("colgroup", ["table"]); + result = result || this._tag_stack.try_pop("thead", ["table"]); + result = result || this._tag_stack.try_pop("tbody", ["table"]); + } else if (parser_token.tag_name === "tr") { + result = result || this._tag_stack.try_pop("caption", ["table"]); + result = result || this._tag_stack.try_pop("colgroup", ["table"]); + result = result || this._tag_stack.try_pop("tr", ["table", "thead", "tbody", "tfoot"]); + } else if (parser_token.tag_name === "th" || parser_token.tag_name === "td") { + result = result || this._tag_stack.try_pop("td", ["table", "thead", "tbody", "tfoot", "tr"]); + result = result || this._tag_stack.try_pop("th", ["table", "thead", "tbody", "tfoot", "tr"]); + } + parser_token.parent = this._tag_stack.get_parser_token(); + return result; + }; + module2.exports.Beautifier = Beautifier; + } +}); + +// node_modules/js-beautify/js/src/html/index.js +var require_html = __commonJS({ + "node_modules/js-beautify/js/src/html/index.js"(exports, module2) { + "use strict"; + var Beautifier = require_beautifier3().Beautifier; + var Options = require_options4().Options; + function style_html(html_source, options, js_beautify, css_beautify) { + var beautifier = new Beautifier(html_source, options, js_beautify, css_beautify); + return beautifier.beautify(); + } + module2.exports = style_html; + module2.exports.defaultOptions = function() { + return new Options(); + }; + } +}); + +// node_modules/js-beautify/js/src/index.js +var require_src = __commonJS({ + "node_modules/js-beautify/js/src/index.js"(exports, module2) { + "use strict"; + var js_beautify = require_javascript(); + var css_beautify = require_css(); + var html_beautify2 = require_html(); + function style_html(html_source, options, js, css) { + js = js || js_beautify; + css = css || css_beautify; + return html_beautify2(html_source, options, js, css); + } + style_html.defaultOptions = html_beautify2.defaultOptions; + module2.exports.js = js_beautify; + module2.exports.css = css_beautify; + module2.exports.html = style_html; + } +}); + +// node_modules/js-beautify/js/index.js +var require_js = __commonJS({ + "node_modules/js-beautify/js/index.js"(exports, module2) { + "use strict"; + function get_beautify(js_beautify, css_beautify, html_beautify2) { + var beautify = function(src, config) { + return js_beautify.js_beautify(src, config); + }; + beautify.js = js_beautify.js_beautify; + beautify.css = css_beautify.css_beautify; + beautify.html = html_beautify2.html_beautify; + beautify.js_beautify = js_beautify.js_beautify; + beautify.css_beautify = css_beautify.css_beautify; + beautify.html_beautify = html_beautify2.html_beautify; + return beautify; + } + if (typeof define === "function" && define.amd) { + define([ + "./lib/beautify", + "./lib/beautify-css", + "./lib/beautify-html" + ], function(js_beautify, css_beautify, html_beautify2) { + return get_beautify(js_beautify, css_beautify, html_beautify2); + }); + } else { + (function(mod) { + var beautifier = require_src(); + beautifier.js_beautify = beautifier.js; + beautifier.css_beautify = beautifier.css; + beautifier.html_beautify = beautifier.html; + mod.exports = get_beautify(beautifier, beautifier, beautifier); + })(module2); + } + } +}); + +// scripts/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => HTMLExportPlugin +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian6 = require("obsidian"); + +// scripts/export-settings.ts +var import_obsidian4 = require("obsidian"); + +// scripts/utils/utils.ts +var import_obsidian3 = require("obsidian"); + +// scripts/utils/path.ts +var import_fs = require("fs"); +var import_obsidian = require("obsidian"); +var import_fs2 = require("fs"); +var pathTools = require_upath(); +var _Path = class { + constructor(path, workingDirectory = _Path.vaultPath.asString) { + this._root = ""; + this._dir = ""; + this._parent = ""; + this._base = ""; + this._ext = ""; + this._name = ""; + this._fullPath = ""; + this._isDirectory = false; + this._isFile = false; + this._exists = void 0; + this._isWindows = process.platform === "win32"; + this._workingDirectory = _Path.parsePath(workingDirectory).fullPath; + this.reparse(path); + if (this.isAbsolute) + this._workingDirectory = ""; + } + static log(title, message, type) { + this.logQueue.push({ title, message, type }); + } + static dequeueLog() { + let queue = this.logQueue; + this.logQueue = []; + return queue; + } + reparse(path) { + let parsed = _Path.parsePath(path); + this._root = parsed.root; + this._dir = parsed.dir; + this._parent = parsed.parent; + this._base = parsed.base; + this._ext = parsed.ext; + this._name = parsed.name; + this._fullPath = parsed.fullPath; + this._isDirectory = this._ext == ""; + this._isFile = this._ext != ""; + this._exists = void 0; + if (this._isWindows) { + this._root = this._root.replaceAll("/", "\\"); + this._dir = this._dir.replaceAll("/", "\\"); + this._parent = this._parent.replaceAll("/", "\\"); + this._fullPath = this._fullPath.replaceAll("/", "\\"); + } + this._exists; + return this; + } + static parsePath(path) { + try { + path = decodeURI(path); + } catch (e) { + this.log("Could not decode path:" + path, e.stack, "error"); + } + let parsed = pathTools.parse(path); + let parent = parsed.dir; + let fullPath = ""; + if (path.endsWith("/") || path.endsWith("\\") || parsed.ext == "") { + if (path.endsWith("/") || path.endsWith("\\")) + path = path.substring(0, path.length - 1); + parsed.dir = pathTools.normalizeSafe(path); + let items = parsed.dir.split("/"); + parsed.name = items[items.length - 1]; + parsed.base = parsed.name; + parsed.ext = ""; + fullPath = parsed.dir; + } else { + fullPath = pathTools.join(parent, parsed.base); + } + return { root: parsed.root, dir: parsed.dir, parent, base: parsed.base, ext: parsed.ext, name: parsed.name, fullPath }; + } + static pathExists(path) { + return (0, import_fs.existsSync)(path); + } + static joinStringPaths(...paths) { + let joined = pathTools.join(...paths); + try { + return decodeURI(joined); + } catch (e) { + this.log("Could not decode joined paths: " + joined, e.stack, "error"); + return joined; + } + } + static joinPath(...paths) { + return new _Path(_Path.joinStringPaths(...paths.map((p) => p.asString)), paths[0]._workingDirectory); + } + static joinStrings(...paths) { + return new _Path(_Path.joinStringPaths(...paths)); + } + static getRelativePath(from, to, useAbsolute = false) { + let fromUse = useAbsolute ? from.absolute() : from; + let toUse = useAbsolute ? to.absolute() : to; + let relative = pathTools.relative(fromUse.directory.asString, toUse.asString); + let workingDir = from.absolute().directory.asString; + return new _Path(relative, workingDir); + } + static getRelativePathFromVault(path, useAbsolute = false) { + return _Path.getRelativePath(_Path.vaultPath, path, useAbsolute); + } + static get vaultPath() { + var _a; + if (this.vaultPathCache != void 0) + return this.vaultPathCache; + let adapter = app.vault.adapter; + if (adapter instanceof import_obsidian.FileSystemAdapter) { + let basePath = (_a = adapter.getBasePath()) != null ? _a : ""; + this.vaultPathCache = new _Path(basePath, ""); + return this.vaultPathCache; + } + throw new Error("Vault path could not be determined"); + } + static get vaultConfigDir() { + if (this.vaultConfigDirCache == void 0) { + this.vaultConfigDirCache = new _Path(app.vault.configDir, ""); + } + return this.vaultConfigDirCache; + } + static get emptyPath() { + return new _Path("", ""); + } + static get rootPath() { + return new _Path("/", ""); + } + static toWebStyle(path) { + return path.replaceAll(" ", "-").replaceAll(/-{2,}/g, "-").replace(".-", "-").toLowerCase(); + } + joinString(...paths) { + return this.copy.reparse(_Path.joinStringPaths(this.asString, ...paths)); + } + join(...paths) { + return new _Path(_Path.joinStringPaths(this.asString, ...paths.map((p) => p.asString)), this._workingDirectory); + } + makeAbsolute(workingDirectory = this._workingDirectory) { + if (workingDirectory instanceof _Path && !workingDirectory.isAbsolute) + throw new Error("workingDirectory must be an absolute path: " + workingDirectory.asString); + if (!this.isAbsolute) { + this._fullPath = _Path.joinStringPaths(workingDirectory.toString(), this.asString); + this._workingDirectory = ""; + this.reparse(this.asString); + } + return this; + } + makeForceFolder() { + if (!this.isDirectory) { + this.reparse(this.asString + "/"); + } + return this; + } + makeNormalized() { + let fullPath = pathTools.normalizeSafe(this.absolute().asString); + let newWorkingDir = ""; + let newFullPath = ""; + let reachedEndOfWorkingDir = false; + for (let i = 0; i < fullPath.length; i++) { + let fullChar = fullPath.charAt(i); + let workingChar = this.workingDirectory.charAt(i); + if (fullChar == workingChar && !reachedEndOfWorkingDir) { + newWorkingDir += fullChar; + continue; + } + reachedEndOfWorkingDir = true; + newFullPath += fullChar; + } + this.reparse(newFullPath); + this._workingDirectory = newWorkingDir; + return this; + } + normalized() { + return this.copy.makeNormalized(); + } + makeRootAbsolute() { + if (!this.isAbsolute) { + if (this._isWindows) { + if (this._fullPath.contains(":")) { + this._fullPath = this.asString.substring(this._fullPath.indexOf(":") - 1); + } else { + this._fullPath = "\\" + this.asString; + } + } else { + this._fullPath = "/" + this.asString; + } + this.reparse(this.asString); + } + return this; + } + setWorkingDirectory(workingDirectory) { + this._workingDirectory = workingDirectory; + return this; + } + makeRootRelative() { + if (this.isAbsolute) { + if (this._isWindows) { + this._fullPath = this.asString.replace(/^.:\/\//i, "").replace(/^.:\//i, ""); + this._fullPath = Utils.trimStart(this._fullPath, "\\"); + } else { + this._fullPath = Utils.trimStart(this._fullPath, "/"); + } + this.reparse(this.asString); + } + return this; + } + makeWebStyle() { + this._fullPath = _Path.toWebStyle(this.asString); + this.reparse(this.asString); + return this; + } + makeWindowsStyle() { + this._isWindows = true; + this._fullPath = this.asString.replaceAll("/", "\\"); + this.reparse(this.asString); + return this; + } + makeUnixStyle() { + this._isWindows = false; + this._fullPath = this.asString.replaceAll("\\", "/").replace(/^.:\/\//i, "/"); + this.reparse(this.asString); + return this; + } + setExtension(extension) { + if (!extension.contains(".")) + extension = "." + extension; + this._ext = extension; + this._base = this._name + this._ext; + this._fullPath = _Path.joinStringPaths(this._dir, this._base); + this.reparse(this._fullPath); + return this; + } + toString() { + return this.asString; + } + get root() { + return this._root; + } + get directory() { + return new _Path(this._dir, this._workingDirectory); + } + get parent() { + return new _Path(this._parent, this._workingDirectory); + } + get fullName() { + return this._base; + } + get extenstion() { + return this._ext; + } + get extensionName() { + return this._ext.replace(".", ""); + } + get basename() { + return this._name; + } + get asString() { + return this._fullPath; + } + get isDirectory() { + return this._isDirectory; + } + get isEmpty() { + return this.asString == "."; + } + get isFile() { + return this._isFile; + } + get workingDirectory() { + return this._workingDirectory; + } + get exists() { + if (this._exists == void 0) { + try { + this._exists = _Path.pathExists(this.absolute().asString); + } catch (error) { + this._exists = false; + _Path.log("Error checking if path exists: " + this.asString, error.stack, "error"); + } + } + return this._exists; + } + assertExists() { + if (!this.exists) { + new import_obsidian.Notice("Error: Path does not exist: \n\n" + this.asString, 5e3); + console.error("Path does not exist: " + this.asString); + } + return this.exists; + } + get isAbsolute() { + if (this._isWindows) { + if (this.asString.match(/^[A-Za-z]:[\\|\/|\\\\|\/\/]/)) + return true; + if (this.asString.startsWith("\\") && !this.asString.contains(":")) + return true; + else + return false; + } else { + if (this.asString.startsWith("/")) + return true; + else + return false; + } + } + get isRelative() { + return !this.isAbsolute; + } + get copy() { + return new _Path(this.asString, this._workingDirectory); + } + getDepth() { + return this.asString.split("/").length - 1; + } + absolute(workingDirectory = this._workingDirectory) { + return this.copy.makeAbsolute(workingDirectory); + } + async createDirectory() { + if (!this.exists) { + let path = this.absolute().directory.asString; + try { + await import_fs2.promises.mkdir(path, { recursive: true }); + } catch (error) { + _Path.log("Error creating directory: " + path, error.stack, "error"); + return false; + } + } + return true; + } + async readFileString(encoding = "utf-8") { + if (!this.exists || this.isDirectory) + return void 0; + try { + let data = await import_fs2.promises.readFile(this.absolute().asString, { encoding }); + return data; + } catch (error) { + _Path.log("Error reading file: " + this.asString, error.stack, "error"); + return void 0; + } + } + async readFileBuffer() { + if (!this.exists || this.isDirectory) + return void 0; + try { + let data = await import_fs2.promises.readFile(this.absolute().asString); + return data; + } catch (error) { + _Path.log("Error reading file buffer: " + this.asString, error.stack, "error"); + return void 0; + } + } + async writeFile(data, encoding = "utf-8") { + if (this.isDirectory) + return false; + let dirExists = await this.createDirectory(); + if (!dirExists) + return false; + try { + await import_fs2.promises.writeFile(this.absolute().asString, data, { encoding }); + return true; + } catch (error) { + _Path.log("Error writing file: " + this.asString, error.stack, "error"); + return false; + } + } +}; +var Path = _Path; +Path.logQueue = []; +Path.vaultPathCache = void 0; +Path.vaultConfigDirCache = void 0; + +// scripts/html-generation/markdown-renderer.ts +var import_obsidian2 = require("obsidian"); + +// assets/graph_view.txt.js +var graph_view_txt_default = `// -------------------------- GRAPH VIEW -------------------------- +var running = false; +let batchFraction = 1; +let minBatchFraction = 0.3; +repulsionForce /= batchFraction; +let dt = 1; +let targetFPS = 40; +let startingCameraScale = undefined; +let startingCameraOffset = undefined; + +let mousePositionWorld = { x: undefined, y: undefined }; +let mousePositionScreen = { x: undefined, y: undefined }; +let scrollVelocity = 0; +let lastMousePos = { x: 0, y: 0 }; +let averageFPS = targetFPS; + +let mouseInside = false; +let graphExpanded = false; +let leftButtonDown = false; +let rightButtonDown = false; +let middleButtonDown = false; +let panning = false; + +const pixiApp = new PIXI.Application(); +var renderWorker = undefined; + + +class GraphAssembly +{ + static nodeCount = 0; + static linkCount = 0; + static hoveredNode = -1; + + static #positionsPtr = 0; + static #positionsByteLength = 0; + static #radiiPtr = 0; + static #linkSourcesPtr = 0; + static #linkTargetsPtr = 0; + + static linkSources = new Int32Array(0); + static linkTargets = new Int32Array(0); + static radii = new Float32Array(0); + static maxRadius = 0; + static averageRadius = 0; + static minRadius = 0; + + /** + * @param {{nodeCount: number, linkCount:number, radii: number[], labels: string[], paths: string[], linkSources: number[], linkTargets: number[], linkCounts: number[]}} nodes + */ + static init(nodes) + { + GraphAssembly.nodeCount = nodes.nodeCount; + GraphAssembly.linkCount = nodes.linkCount; + + // create arrays for the data + let positions = new Float32Array(GraphAssembly.nodeCount * 2); + GraphAssembly.radii = new Float32Array(nodes.radii); + GraphAssembly.linkSources = new Int32Array(nodes.linkSources); + GraphAssembly.linkTargets = new Int32Array(nodes.linkTargets); + + // allocate memory on the heap + GraphAssembly.#positionsPtr = Module._malloc(positions.byteLength); + GraphAssembly.#positionsByteLength = positions.byteLength; + GraphAssembly.#radiiPtr = Module._malloc(GraphAssembly.radii.byteLength); + GraphAssembly.#linkSourcesPtr = Module._malloc(GraphAssembly.linkSources.byteLength); + GraphAssembly.#linkTargetsPtr = Module._malloc(GraphAssembly.linkTargets.byteLength); + + GraphAssembly.maxRadius = GraphAssembly.radii.reduce((a, b) => Math.max(a, b)); + GraphAssembly.averageRadius = GraphAssembly.radii.reduce((a, b) => a + b) / GraphAssembly.radii.length; + GraphAssembly.minRadius = GraphAssembly.radii.reduce((a, b) => Math.min(a, b)); + + positions = this.loadState(); + + // copy the data to the heap + Module.HEAP32.set(new Int32Array(positions.buffer), GraphAssembly.#positionsPtr / positions.BYTES_PER_ELEMENT); + Module.HEAP32.set(new Int32Array(GraphAssembly.radii.buffer), GraphAssembly.#radiiPtr / GraphAssembly.radii.BYTES_PER_ELEMENT); + Module.HEAP32.set(new Int32Array(GraphAssembly.linkSources.buffer), GraphAssembly.#linkSourcesPtr / GraphAssembly.linkSources.BYTES_PER_ELEMENT); + Module.HEAP32.set(new Int32Array(GraphAssembly.linkTargets.buffer), GraphAssembly.#linkTargetsPtr / GraphAssembly.linkTargets.BYTES_PER_ELEMENT); + + Module._Init( + GraphAssembly.#positionsPtr, + GraphAssembly.#radiiPtr, + GraphAssembly.#linkSourcesPtr, + GraphAssembly.#linkTargetsPtr, + GraphAssembly.nodeCount, + GraphAssembly.linkCount, + batchFraction, + dt, + attractionForce, + linkLength, + repulsionForce, + centralForce + ); + } + + /** + * @returns {Float32Array} + */ + static get positions() + { + return Module.HEAP32.buffer.slice(GraphAssembly.#positionsPtr, GraphAssembly.#positionsPtr + GraphAssembly.#positionsByteLength); + } + + /** + * @param {GraphRenderWorker} renderWorker + * */ + static saveState(renderWorker) + { + localStorage.setItem("positions", JSON.stringify(new Float32Array(GraphAssembly.positions))); + localStorage.setItem("cameraOffset", JSON.stringify(renderWorker.cameraOffset)); + localStorage.setItem("cameraScale", JSON.stringify(renderWorker.cameraScale)); + } + + /** + * @returns {Float32Array} + * */ + static loadState() + { + let positionsLoad = localStorage.getItem("positions"); + let positions = null; + if(positionsLoad) positions = new Float32Array(Object.values(JSON.parse(positionsLoad))); + if (!positions || !positionsLoad || positions.length != GraphAssembly.nodeCount * 2) + { + positions = new Float32Array(GraphAssembly.nodeCount * 2); + let spawnRadius = (GraphAssembly.averageRadius * Math.sqrt(GraphAssembly.nodeCount)) * 2; + for (let i = 0; i < GraphAssembly.nodeCount; i++) + { + let distance = (1 - GraphAssembly.radii[i] / GraphAssembly.maxRadius) * spawnRadius; + positions[i * 2] = Math.cos(i/GraphAssembly.nodeCount * 7.41 * 2 * Math.PI) * distance; + positions[i * 2 + 1] = Math.sin(i/GraphAssembly.nodeCount * 7.41 * 2 * Math.PI) * distance; + } + } + + startingCameraOffset = JSON.parse(localStorage.getItem("cameraOffset")); + startingCameraScale = JSON.parse(localStorage.getItem("cameraScale")); + + return positions; + } + + /** + * @param {{x: number, y: number}} mousePosition + * @param {number} grabbedNode + */ + static update(mousePosition, grabbedNode, cameraScale) + { + GraphAssembly.hoveredNode = Module._Update(mousePosition.x, mousePosition.y, grabbedNode, cameraScale); + } + + static free() + { + Module._free(GraphAssembly.#positionsPtr); + Module._free(GraphAssembly.#radiiPtr); + Module._free(GraphAssembly.#linkSourcesPtr); + Module._free(GraphAssembly.#linkTargetsPtr); + Module._FreeMemory(); + } + + /** + * @param {number} value + */ + static set batchFraction(value) + { + Module._SetBatchFractionSize(value); + } + + /** + * @param {number} value + */ + static set attractionForce(value) + { + Module._SetAttractionForce(value); + } + + /** + * @param {number} value + */ + static set repulsionForce(value) + { + Module._SetRepulsionForce(value); + } + + /** + * @param {number} value + */ + static set centralForce(value) + { + Module._SetCentralForce(value); + } + + /** + * @param {number} value + */ + static set linkLength(value) + { + Module._SetLinkLength(value); + } + + /** + * @param {number} value + */ + static set dt(value) + { + Module._SetDt(value); + } +} + +class GraphRenderWorker +{ + #cameraOffset + #cameraScale + #hoveredNode + #grabbedNode + #colors + #width + #height + + + constructor() + { + this.canvas = document.querySelector("#graph-canvas"); + + this.view = this.canvas.transferControlToOffscreen(); + + this.worker = new Worker(new URL("./graph-render-worker.js", import.meta.url)); + + this.#cameraOffset = {x: 0, y: 0}; + this.#cameraScale = 1; + this.#hoveredNode = -1; + this.#grabbedNode = -1; + this.#colors = + { + background: 0x000000, + link: 0x000000, + node: 0x000000, + outline: 0x000000, + text: 0x000000, + accent: 0x000000, + } + this.#width = 0; + this.#height = 0; + + this.cameraOffset = {x: this.canvas.width / 2, y: this.canvas.height / 2}; + this.cameraScale = 1; + this.hoveredNode = -1; + this.grabbedNode = -1; + this.resampleColors(); + + this.#pixiInit(); + + this.width = this.canvas.width; + this.height = this.canvas.height; + + this.autoResizeCanvas(); + + if (startingCameraOffset && startingCameraScale) + { + this.cameraOffset = startingCameraOffset; + this.cameraScale = startingCameraScale; + } + else + { + this.centerCamera(); + } + } + + #pixiInit() + { + let { width, height } = this.view; + + this.worker.postMessage( + { + type: 'init', + linkCount: GraphAssembly.linkCount, + linkSources: GraphAssembly.linkSources, + linkTargets: GraphAssembly.linkTargets, + nodeCount: GraphAssembly.nodeCount, + radii: GraphAssembly.radii, + labels: nodes.labels, + linkLength: linkLength, + edgePruning: edgePruning, + options: { width: width, height: height, view: this.view }, + }, [this.view]); + } + + resampleColors() + { + function sampleColor(variable) + { + let testEl = document.createElement('div'); + testEl.style.setProperty('display', 'none'); + testEl.style.setProperty('color', 'var(' + variable + ')'); + document.body.appendChild(testEl); + + let col = getComputedStyle(testEl).color; + let opacity = getComputedStyle(testEl).opacity; + + testEl.remove(); + + function toColorObject(str) + { + var match = str.match(/rgb?\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/); + return match ? { + red: parseInt(match[1]), + green: parseInt(match[2]), + blue: parseInt(match[3]), + alpha: 1 + } : null + } + + var color = toColorObject(col), alpha = parseFloat(opacity); + return isNaN(alpha) && (alpha = 1), + color ? { + a: alpha * color.alpha, + rgb: color.red << 16 | color.green << 8 | color.blue + } : { + a: alpha, + rgb: 8947848 + } + }; + + this.colors = + { + background: sampleColor('--background-secondary').rgb, + link: sampleColor('--graph-line').rgb, + node: sampleColor('--graph-node').rgb, + outline: sampleColor('--graph-line').rgb, + text: sampleColor('--graph-text').rgb, + accent: sampleColor('--interactive-accent').rgb, + }; + } + + draw(_positions) + { + this.worker.postMessage( + { + type: 'draw', + positions: _positions, + }, [_positions]); + } + + resizeCanvas(width, height) + { + this.worker.postMessage( + { + type: "resize", + width: width, + height: height, + }); + + this.#width = width; + this.#height = height; + } + + autoResizeCanvas() + { + this.resizeCanvas(this.canvas.offsetWidth, this.canvas.offsetHeight); + } + + centerCamera() + { + this.cameraOffset = { x: this.width / 2, y: this.height / 2 }; + } + + #pixiSetInteraction(hoveredNodeIndex, grabbedNodeIndex) + { + let obj = + { + type: "update_interaction", + hoveredNode: hoveredNodeIndex, + grabbedNode: grabbedNodeIndex, + } + + this.worker.postMessage(obj); + } + + #pixiSetCamera(cameraOffset, cameraScale) + { + this.worker.postMessage( + { + type: "update_camera", + cameraOffset: cameraOffset, + cameraScale: cameraScale, + }); + } + + #pixiSetColors(colors) + { + this.worker.postMessage( + { + type: "update_colors", + colors: colors, + }); + + } + + set cameraOffset(offset) + { + this.#cameraOffset = offset; + this.#pixiSetCamera(offset, this.cameraScale); + } + + set cameraScale(scale) + { + this.#cameraScale = scale; + this.#pixiSetCamera(this.cameraOffset, scale); + } + + get cameraOffset() + { + return this.#cameraOffset; + } + + get cameraScale() + { + return this.#cameraScale; + } + + /** + * @param {number} node + */ + set hoveredNode(node) + { + this.#hoveredNode = node; + this.#pixiSetInteraction(node, this.#grabbedNode); + } + + /** + * @param {number} node + */ + set grabbedNode(node) + { + this.#grabbedNode = node; + this.#pixiSetInteraction(this.#hoveredNode, node); + } + + /** + * @param {number} node + */ + set activeNode(node) + { + this.worker.postMessage( + { + type: 'set_active', + active: node, + }); + } + + get hoveredNode() + { + return this.#hoveredNode; + } + + get grabbedNode() + { + return this.#grabbedNode; + } + + /** + * @param {{ background: number; link: number; node: number; outline: number; text: number; accent: number; }} colors + */ + set colors(colors) + { + this.#colors = colors; + this.#pixiSetColors(colors); + } + + get colors() + { + return this.#colors; + } + + set width(width) + { + this.#width = width; + this.resizeCanvas(width, this.#height); + } + + set height(height) + { + this.#height = height; + this.resizeCanvas(this.#width, height); + } + + get height() + { + return this.#height; + } + + get width() + { + return this.#width; + } + + /** + * @param {number} x + * @param {number} y + * @param {boolean} floor + * @returns {{x: number; y: number;}} + */ + toScreenSpace(x, y, floor = true) + { + if (floor) + { + return {x: Math.floor((x * this.cameraScale) + this.cameraOffset.x), y: Math.floor((y * this.cameraScale) + this.cameraOffset.y)}; + } + else + { + return {x: (x * this.cameraScale) + this.cameraOffset.x, y: (y * this.cameraScale) + this.cameraOffset.y}; + } + } + + /** + * @param {{x: number; y: number;}} vector + * @param {boolean} floor + * @returns {{x: number; y: number;}} + */ + vecToScreenSpace(vector, floor = true) + { + return this.toScreenSpace(vector.x, vector.y, floor); + } + + /** + * @param {number} x + * @param {number} y + * @returns {{x: number; y: number;}} + */ + toWorldspace(x, y) + { + return {x: (x - this.cameraOffset.x) / this.cameraScale, y: (y - this.cameraOffset.y) / this.cameraScale}; + } + + /** + * @param {{x: number; y: number;}} vector + * @returns {{x: number; y: number;}} + */ + vecToWorldspace(vector) + { + return this.toWorldspace(vector.x, vector.y); + } + + setCameraCenterWorldspace({x, y}) + { + this.cameraOffset = {x: (this.width / 2) - (x * this.cameraScale), y: (this.height / 2) - (y * this.cameraScale)}; + } + + getCameraCenterWorldspace() + { + return this.toWorldspace(this.width / 2, this.height / 2); + } +} + +async function initializeGraphView() +{ + if(running) return; + running = true; + + console.log("Module Ready"); + GraphAssembly.init(nodes); + + renderWorker = new GraphRenderWorker(); + window.renderWorker = renderWorker; + + initializeGraphEvents(); + + pixiApp.ticker.maxFPS = targetFPS; + pixiApp.ticker.add(updateGraph); + + setActiveDocument(getURLPath()); + + setInterval(() => + { + function isHidden(el) { + var style = window.getComputedStyle(el); + return (style.display === 'none') + } + + try + { + var hidden = (isHidden(document.querySelector(".graph-view-placeholder")) || isHidden(document.querySelector(".sidebar:has(.graph-view-placeholder)"))); + } + catch(e) + { + return; + } + + if(running && hidden) + { + running = false; + } + else if (!running && !hidden) + { + running = true; + renderWorker.autoResizeCanvas(); + renderWorker.centerCamera(); + } + + }, 1000); +} + +function updateGraph() +{ + if(!running) return; + + GraphAssembly.update(mousePositionWorld, renderWorker.grabbedNode, renderWorker.cameraScale); + + if (GraphAssembly.hoveredNode != renderWorker.hoveredNode) + { + renderWorker.hoveredNode = GraphAssembly.hoveredNode; + renderWorker.canvas.style.cursor = GraphAssembly.hoveredNode == -1 ? "default" : "pointer"; + } + + renderWorker.draw(GraphAssembly.positions); + + averageFPS = averageFPS * 0.95 + pixiApp.ticker.FPS * 0.05; + + if (averageFPS < targetFPS * 0.9 && batchFraction > minBatchFraction) + { + batchFraction = Math.max(batchFraction - 0.5 * 1/targetFPS, minBatchFraction); + GraphAssembly.batchFraction = batchFraction; + GraphAssembly.repulsionForce = repulsionForce / batchFraction; + } + + if (scrollVelocity != 0) + { + let cameraCenter = renderWorker.getCameraCenterWorldspace(); + + if (Math.abs(scrollVelocity) < 0.001) + { + scrollVelocity = 0; + } + + renderWorker.cameraScale = Math.max(Math.min(renderWorker.cameraScale + scrollVelocity * renderWorker.cameraScale, 10.0), 0.1); + + if(renderWorker.cameraScale != 0.1 && renderWorker.cameraScale != 10 && scrollVelocity > 0 && mousePositionWorld.x != undefined && mousePositionWorld.y != undefined) + { + // zoom towards cursor position + let mouseDiff = {x: mousePositionWorld.x - cameraCenter.x, y: mousePositionWorld.y - cameraCenter.y}; + var movePos = {x: cameraCenter.x + mouseDiff.x * scrollVelocity, y: cameraCenter.y + mouseDiff.y * scrollVelocity}; + renderWorker.setCameraCenterWorldspace(movePos); + } + else renderWorker.setCameraCenterWorldspace(cameraCenter); + + scrollVelocity *= 0.6; + } +} + +function initializeGraphEvents() +{ + window.addEventListener('beforeunload', () => + { + running = false; + GraphAssembly.free(); + }); + + let lastCanvasWidth = renderWorker.canvas.width; + window.addEventListener('resize', () => + { + if(graphExpanded) + { + renderWorker.autoResizeCanvas(); + renderWorker.centerCamera(); + } + else + { + if (renderWorker.canvas.width != lastCanvasWidth) + { + renderWorker.autoResizeCanvas(); + renderWorker.centerCamera(); + } + } + }); + + // Get the mouse position relative to the canvas. + function getMousePos(canvas, event) + { + var rect = canvas.getBoundingClientRect(); + var clientX = event.clientX; + var clientY = event.clientY; + + return { + x: clientX - rect.left, + y: clientY - rect.top + }; + } + + function handleMouseMove(event) + { + mousePositionScreen = getMousePos(renderWorker.canvas, event); + mousePositionWorld = renderWorker.vecToWorldspace(mousePositionScreen); + + if (lastMousePos.x == 0 && lastMousePos.y == 0) + { + lastMousePos = { x: event.clientX, y: event.clientY }; + return; + } + + let delta = { x: lastMousePos.x - event.clientX, y: lastMousePos.y - event.clientY }; + + if (leftButtonDown && renderWorker.hoveredNode != -1) + { + renderWorker.grabbedNode = renderWorker.hoveredNode; + } + + if (middleButtonDown || (leftButtonDown && renderWorker.hoveredNode == -1)) + { + let camOffset = renderWorker.cameraOffset; + renderWorker.cameraOffset = { x: camOffset.x - delta.x, y: camOffset.y - delta.y }; + panning = true; + } + else + { + panning = false; + } + + lastMousePos = { x: event.clientX, y: event.clientY }; + } + + renderWorker.canvas.addEventListener("mouseenter", () => mouseInside = true); + renderWorker.canvas.addEventListener("mouseleave", () => mouseInside = false); + + document.querySelectorAll("body").forEach(element => + { + element.addEventListener("mousemove", event => + { + event.stopPropagation(); + + if(mouseInside) return; + + if (panning || renderWorker.grabbedNode != -1) { + handleMouseMove(event); + } + }); + }); + + document.getElementById("graph-canvas").addEventListener("mousemove", event => + { + handleMouseMove(event); + }); + + + document.getElementById("graph-canvas").addEventListener("mousedown", event => + { + event.stopPropagation(); + + if (event.button == 0) leftButtonDown = true; + if (event.button == 1) middleButtonDown = true; + if (event.button == 2) rightButtonDown = true; + }); + + async function navigateToNode(nodeIndex) + { + if (!graphExpanded) GraphAssembly.saveState(renderWorker); + else toggleExpandedGraph(); + + let url = nodes.paths[nodeIndex]; + if(window.location.pathname.endsWith(nodes.paths[nodeIndex])) return; + await loadDocument(url); + } + + document.body.addEventListener("mouseup", event => + { + event.stopPropagation(); + + if (event.button == 0) leftButtonDown = false; + if (event.button == 1) middleButtonDown = false; + if (event.button == 2) rightButtonDown = false; + + // we must have just clicked on a node without dragging it + if (!panning && renderWorker.grabbedNode == -1 && renderWorker.hoveredNode != -1) + { + navigateToNode(renderWorker.hoveredNode); + } + + renderWorker.grabbedNode = -1; + }); + + // also mouse up if mouse leaves canvas + document.getElementById("graph-canvas").addEventListener("mouseleave", event => + { + event.stopPropagation(); + + if (renderWorker.grabbedNode == -1 && !(middleButtonDown || leftButtonDown)) + { + mousePositionScreen = { x: undefined, y: undefined }; + mousePositionWorld = { x: undefined, y: undefined }; + } + }); + + document.getElementById("graph-canvas").addEventListener("wheel", function(e) + { + e.preventDefault(); + e.stopPropagation(); + + let startingScrollVelocity = 0.08; + + let delta = e.deltaY; + if (delta > 0) + { + if(scrollVelocity >= -startingScrollVelocity) + { + scrollVelocity = -startingScrollVelocity; + } + + scrollVelocity *= 1.3; + } + else + { + if(scrollVelocity <= startingScrollVelocity) + { + scrollVelocity = startingScrollVelocity; + } + + scrollVelocity *= 1.3; + } + }); + + // touch controls + document.getElementById("graph-canvas").addEventListener("touchstart", function(e) + { + e.preventDefault(); + e.stopPropagation(); + + if (e.touches.length == 1) + { + lastMousePos = { x: e.touches[0].clientX, y: e.touches[0].clientY }; + + leftButtonDown = true; + } + else if (e.touches.length == 2) + { + middleButtonDown = true; + } + }); + + document.getElementById("graph-canvas").addEventListener("touchmove", function(e) + { + handleMouseMove(e.touches[0]); + }); + + document.addEventListener("touchend", function(e) + { + e.preventDefault(); + e.stopPropagation(); + + if (e.touches.length == 0) + { + leftButtonDown = false; + middleButtonDown = false; + + if (!panning && renderWorker.grabbedNode == -1 && renderWorker.hoveredNode != -1) + { + navigateToNode(renderWorker.hoveredNode); + } + + renderWorker.grabbedNode = -1; + } + else if (e.touches.length == 1) + { + middleButtonDown = false; + } + }); + + document.querySelector(".theme-toggle-input")?.addEventListener("change", event => + { + renderWorker.resampleColors(); + }); + + function toggleExpandedGraph() + { + let container = document.querySelector(".graph-view-container"); + let initialWidth = container.clientWidth; + let initialHeight = container.clientHeight; + + // scale and fade out animation: + container.classList.add("scale-down"); + let fadeOutAnimation = container.animate({ opacity: 0 }, {duration: 100, easing: "ease-in", fill: "forwards"}); + fadeOutAnimation.addEventListener("finish", function() + { + container.classList.toggle("expanded"); + + renderWorker.autoResizeCanvas(); + renderWorker.centerCamera(); + + let finalWidth = container.clientWidth; + let finalHeight = container.clientHeight; + renderWorker.cameraScale *= ((finalWidth / initialWidth) + (finalHeight / initialHeight)) / 2; + + container.classList.remove("scale-down"); + container.classList.add("scale-up"); + + updateGraph(); + + let fadeInAnimation = container.animate({ opacity: 1 }, {duration: 200, easing: "ease-out", fill: "forwards"}); + fadeInAnimation.addEventListener("finish", function() + { + container.classList.remove("scale-up"); + }); + }); + + graphExpanded = !graphExpanded; + } + + document.querySelector(".graph-expand.graph-icon")?.addEventListener("click", event => + { + event.preventDefault(); + event.stopPropagation(); + + toggleExpandedGraph(); + }); +} + +Module['onRuntimeInitialized'] = initializeGraphView; +setTimeout(() => Module['onRuntimeInitialized'](), 300); +`; + +// assets/graph_wasm.txt.js +var graph_wasm_txt_default = ` +// Wasm glue +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",function(ex){if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",function(reason){throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="graph_wasm.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(binaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(binaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(binaryFile)})}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(function(binary){return WebAssembly.instantiate(binary,imports)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["f"];updateMemoryViews();wasmTable=Module["asm"]["r"];addOnInit(Module["asm"]["g"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={2304:$0=>{console.log(UTF8ToString($0))}};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: "+type)}}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: "+type)}}function _abort(){abort("")}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function getCFunc(ident){var func=Module["_"+ident];return func}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;itype==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return function(){return ccall(ident,returnType,argTypes,arguments,opts)}}var wasmImports={"b":_abort,"e":_emscripten_asm_const_int,"d":_emscripten_date_now,"c":_emscripten_memcpy_big,"a":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["g"]).apply(null,arguments)};var _SetBatchFractionSize=Module["_SetBatchFractionSize"]=function(){return(_SetBatchFractionSize=Module["_SetBatchFractionSize"]=Module["asm"]["h"]).apply(null,arguments)};var _SetAttractionForce=Module["_SetAttractionForce"]=function(){return(_SetAttractionForce=Module["_SetAttractionForce"]=Module["asm"]["i"]).apply(null,arguments)};var _SetLinkLength=Module["_SetLinkLength"]=function(){return(_SetLinkLength=Module["_SetLinkLength"]=Module["asm"]["j"]).apply(null,arguments)};var _SetRepulsionForce=Module["_SetRepulsionForce"]=function(){return(_SetRepulsionForce=Module["_SetRepulsionForce"]=Module["asm"]["k"]).apply(null,arguments)};var _SetCentralForce=Module["_SetCentralForce"]=function(){return(_SetCentralForce=Module["_SetCentralForce"]=Module["asm"]["l"]).apply(null,arguments)};var _SetDt=Module["_SetDt"]=function(){return(_SetDt=Module["_SetDt"]=Module["asm"]["m"]).apply(null,arguments)};var _Init=Module["_Init"]=function(){return(_Init=Module["_Init"]=Module["asm"]["n"]).apply(null,arguments)};var _Update=Module["_Update"]=function(){return(_Update=Module["_Update"]=Module["asm"]["o"]).apply(null,arguments)};var _SetPosition=Module["_SetPosition"]=function(){return(_SetPosition=Module["_SetPosition"]=Module["asm"]["p"]).apply(null,arguments)};var _FreeMemory=Module["_FreeMemory"]=function(){return(_FreeMemory=Module["_FreeMemory"]=Module["asm"]["q"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["__errno_location"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["s"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["t"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["u"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["v"]).apply(null,arguments)};var stackAlloc=function(){return(stackAlloc=Module["asm"]["w"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["__cxa_is_pointer_type"]).apply(null,arguments)};Module["cwrap"]=cwrap;Module["setValue"]=setValue;Module["getValue"]=getValue;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); +`; + +// assets/graph-render-worker.txt.js +var graph_render_worker_txt_default = `// Import Pixi.js library +if( 'function' === typeof importScripts) +{ + importScripts('https://d157l7jdn8e5sf.cloudfront.net/v7.2.0/webworker.js', './tinycolor.js'); + + addEventListener('message', onMessage); + + let app; + let container; + let graphics; + let labelText; + + isDrawing = false; + + let linkCount = 0; + let linkSources = []; + let linkTargets = []; + let nodeCount = 0; + let radii = []; + let labels = []; + let cameraOffset = {x: 0, y: 0}; + let positions = new Float32Array(0); + let linkLength = 0; + let edgePruning = 0; + let colors = + { + background: 0x232323, + link: 0xAAAAAA, + node: 0xCCCCCC, + outline: 0xAAAAAA, + text: 0xFFFFFF, + accent: 0x4023AA + } + + let hoveredNode = -1; + let lastHoveredNode = -1; + let grabbedNode = -1; + let updateAttached = false; + let attachedToGrabbed = []; + let activeNode = -1; + let attachedToActive = []; + + let cameraScale = 1; + let cameraScaleRoot = 1; + + function toScreenSpace(x, y, floor = true) + { + if (floor) + { + return {x: Math.floor((x * cameraScale) + cameraOffset.x), y: Math.floor((y * cameraScale) + cameraOffset.y)}; + } + else + { + return {x: (x * cameraScale) + cameraOffset.x, y: (y * cameraScale) + cameraOffset.y}; + } + } + + function vecToScreenSpace({x, y}, floor = true) + { + return toScreenSpace(x, y, floor); + } + + function toWorldspace(x, y) + { + return {x: (x - cameraOffset.x) / cameraScale, y: (y - cameraOffset.y) / cameraScale}; + } + + function vecToWorldspace({x, y}) + { + return toWorldspace(x, y); + } + + function setCameraCenterWorldspace({x, y}) + { + cameraOffset.x = (canvas.width / 2) - (x * cameraScale); + cameraOffset.y = (canvas.height / 2) - (y * cameraScale); + } + + function getCameraCenterWorldspace() + { + return toWorldspace(canvas.width / 2, canvas.height / 2); + } + + function getNodeScreenRadius(radius) + { + return radius * cameraScaleRoot; + } + + function getNodeWorldspaceRadius(radius) + { + return radius / cameraScaleRoot; + } + + function getPosition(index) + { + return {x: positions[index * 2], y: positions[index * 2 + 1]}; + } + + function mixColors(hexStart, hexEnd, factor) + { + return tinycolor.mix(tinycolor(hexStart.toString(16)), tinycolor(hexEnd.toString(16)), factor).toHexNumber() + } + + function darkenColor(hexColor, factor) + { + return tinycolor(hexColor.toString(16)).darken(factor).toHexNumber(); + } + + function lightenColor(hexColor, factor) + { + return tinycolor(hexColor.toString(16)).lighten(factor).toHexNumber(); + } + + function invertColor(hex, bw) + { + hex = hex.toString(16); // force conversion + + if (hex.indexOf('#') === 0) { + hex = hex.slice(1); + } + // convert 3-digit hex to 6-digits. + if (hex.length === 3) { + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + if (hex.length !== 6) { + throw new Error('Invalid HEX color.'); + } + var r = parseInt(hex.slice(0, 2), 16), + g = parseInt(hex.slice(2, 4), 16), + b = parseInt(hex.slice(4, 6), 16); + if (bw) { + // https://stackoverflow.com/a/3943023/112731 + return (r * 0.299 + g * 0.587 + b * 0.114) > 186 + ? '#000000' + : '#FFFFFF'; + } + // invert color components + r = (255 - r).toString(16); + g = (255 - g).toString(16); + b = (255 - b).toString(16); + // pad each with zeros and return + return "#" + padZero(r) + padZero(g) + padZero(b); + } + + let hoverFade = 0; + let hoverFadeSpeed = 0.2; + + function draw() + { + graphics.clear(); + + let topLines = []; + if (updateAttached) + { + attachedToGrabbed = []; + // hoverFade = 0; + } + + if (hoveredNode != -1 || grabbedNode != -1) + { + hoverFade = Math.min(1, hoverFade + hoverFadeSpeed); + } + else + { + hoverFade = Math.max(0, hoverFade - hoverFadeSpeed); + } + + graphics.lineStyle(1, mixColors(colors.link, colors.background, hoverFade * 50), 0.7); + + for (let i = 0; i < linkCount; i++) + { + let target = linkTargets[i]; + let source = linkSources[i]; + + if (hoveredNode == source || hoveredNode == target || ((lastHoveredNode == source || lastHoveredNode == target) && hoverFade != 0)) + { + if (updateAttached && hoveredNode == source) + attachedToGrabbed.push(target); + + else if (updateAttached && hoveredNode == target) + attachedToGrabbed.push(source); + + topLines.push(i); + } + + let startWorld = getPosition(source); + let endWorld = getPosition(target); + + let start = vecToScreenSpace(startWorld); + let end = vecToScreenSpace(endWorld); + + let dist = Math.sqrt(Math.pow(startWorld.x - endWorld.x, 2) + Math.pow(startWorld.y - endWorld.y, 2)); + + if (dist < (radii[source] + radii[target]) * edgePruning) + { + graphics.moveTo(start.x, start.y); + graphics.lineTo(end.x, end.y); + } + } + + let opacity = 1 - (hoverFade * 0.5); + graphics.beginFill(mixColors(colors.node, colors.background, hoverFade * 50), opacity); + graphics.lineStyle(0, 0xffffff); + for (let i = 0; i < nodeCount; i++) + { + if (hoveredNode == i || (lastHoveredNode == i && hoverFade != 0) || (hoveredNode != -1 && attachedToGrabbed.includes(i))) continue; + + let pos = vecToScreenSpace(getPosition(i)); + + graphics.drawCircle(pos.x, pos.y, getNodeScreenRadius(radii[i])); + } + + graphics.endFill(); + + + opacity = hoverFade * 0.7; + graphics.lineStyle(1, mixColors(mixColors(colors.link, colors.accent, hoverFade * 100), colors.background, 20), opacity); + + for (let i = 0; i < topLines.length; i++) + { + let target = linkTargets[topLines[i]]; + let source = linkSources[topLines[i]]; + + // draw lines on top when hovered + let start = vecToScreenSpace(getPosition(source)); + let end = vecToScreenSpace(getPosition(target)); + + + graphics.moveTo(start.x, start.y); + graphics.lineTo(end.x, end.y); + } + + if(hoveredNode != -1 || (lastHoveredNode != -1 && hoverFade != 0)) + { + graphics.beginFill(mixColors(colors.node, colors.accent, hoverFade * 20), 0.9); + graphics.lineStyle(0, 0xffffff); + for (let i = 0; i < attachedToGrabbed.length; i++) + { + let point = attachedToGrabbed[i]; + + let pos = vecToScreenSpace(getPosition(point)); + + graphics.drawCircle(pos.x, pos.y, getNodeScreenRadius(radii[point])); + } + graphics.endFill(); + + let index = hoveredNode != -1 ? hoveredNode : lastHoveredNode; + + let pos = vecToScreenSpace(getPosition(index)); + graphics.beginFill(mixColors(colors.node, colors.accent, hoverFade * 100), 1); + graphics.lineStyle(hoverFade, mixColors(invertColor(colors.background, true), colors.accent, 50)); + graphics.drawCircle(pos.x, pos.y, getNodeScreenRadius(radii[index])); + graphics.endFill(); + + labelText.text = labels[index]; + let nodePos = vecToScreenSpace(getPosition(index)); + labelText.x = nodePos.x - labelText.width/2; + labelText.y = nodePos.y + getNodeScreenRadius(radii[index]) + hoverFade * 5 + 15; + } + + updateAttached = false; + + if (hoveredNode == -1) + { + labelText.text = ""; + } + else + { + + } + + graphics.lineStyle(2, colors.accent); + // draw the active node + if (activeNode != -1) + { + let pos = vecToScreenSpace(getPosition(activeNode)); + graphics.drawCircle(pos.x, pos.y, getNodeScreenRadius(radii[activeNode]) + 4); + } + } + + function onMessage(event) + { + if(event.data.type == "draw") + { + positions = new Float32Array(event.data.positions); + draw(); + } + else if(event.data.type == "update_camera") + { + cameraOffset = event.data.cameraOffset; + cameraScale = event.data.cameraScale; + cameraScaleRoot = Math.sqrt(cameraScale); + } + else if(event.data.type == "update_interaction") + { + if(hoveredNode != event.data.hoveredNode && event.data.hoveredNode != -1) updateAttached = true; + if(grabbedNode != event.data.grabbedNode && event.data.hoveredNode != -1) updateAttached = true; + + if(event.data.hoveredNode == -1) lastHoveredNode = hoveredNode; + else lastHoveredNode = -1; + + hoveredNode = event.data.hoveredNode; + grabbedNode = event.data.grabbedNode; + } + else if(event.data.type == "resize") + { + app.renderer.resize(event.data.width, event.data.height); + } + else if(event.data.type == "set_active") + { + activeNode = event.data.active; + } + else if(event.data.type == "update_colors") + { + colors = event.data.colors; + + if(labelText) + { + labelText.style.fill = invertColor(colors.background, true); + } + } + else if(event.data.type == "init") + { + // Extract data from message + linkCount = event.data.linkCount; + linkSources = event.data.linkSources; + linkTargets = event.data.linkTargets; + nodeCount = event.data.nodeCount; + radii = event.data.radii; + labels = event.data.labels; + linkLength = event.data.linkLength; + edgePruning = event.data.edgePruning; + + app = new PIXI.Application({... event.data.options, antialias: true, resolution: 2, backgroundAlpha: 0, transparent: true}); + container = new PIXI.Container(); + graphics = new PIXI.Graphics(); + app.stage.addChild(container); + container.addChild(graphics); + + labelText = new PIXI.Text("", {fontFamily : 'Arial', fontSize: 16, fontWeight: "bold", fill : invertColor(colors.background, true), align : 'center', anchor: 0.5}); + app.stage.addChild(labelText); + + } + else + { + console.log("Unknown message type sent to graph worker: " + event.data.type); + } + } +} + + + + + + + +`; + +// assets/graph_wasm.wasm +var graph_wasm_default = __toBinary("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AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLIAALOAEBf0EBIAAgAEEBTRshAAJAA0AgABAQIgFFBEBB7BgoAgAiAUUNAiABEQgADAELCyABDwsQAQAL/AMBAn8gAkGABE8EQCAAIAEgAhACDwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLAkAgA0F8cSIAQcAASQ0AIAIgAEFAaiIESw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBE0NAAsLIAAgAk0NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIABJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsLwAMBB38jAEGgCGsiAyQAIANBADYCnAgjAEGgAWsiASQAIAEgA0EQaiIHNgKUASABQf7///8HNgKYASABQQBBkAEQCyIBQX82AkwgAUECNgIkIAFBfzYCUCABIAFBnwFqNgIsIAEgAUGUAWo2AlQgA0EAOgAQIwBB0AFrIgIkACACQQA2AswBIAJBoAFqIgVBAEEoEAsaIAIgAigCzAE2AsgBAkBBACAAIAJByAFqIAJB0ABqIAUQF0EASA0AIAEoAkxBAE4h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////AIMiBUKAgICAgIDAgDx9IAVCgICAgICAwP/DAH1UBEAgB0IEhiAEQjyIhCEFIARC//////////8PgyIEQoGAgICAgICACFoEQCAFQoGAgICAgICAwAB8IQMMAgsgBUKAgICAgICAgEB9IQMgBEKAgICAgICAgAhSDQEgAyAFQgGDfCEDDAELIARQIAVCgICAgICAwP//AFQgBUKAgICAgIDA//8AURtFBEAgB0IEhiAEQjyIhEL/////////A4NCgICAgICAgPz/AIQhAwwBC0KAgICAgICA+P8AIQMgBUL///////+//8MAVg0AQgAhAyAFQjCIpyIAQZH3AEkNACAEIQMgB0L///////8/g0KAgICAgIDAAIQiBiEIAkAgAEGB9wBrIgFBwABxBEAgAyABQUBqrYYhCEIAIQMMAQsgAUUNACAIIAGtIgWGIANBwAAgAWutiIQhCCADIAWGIQMLIAIgAzcDECACIAg3AxgCQEGB+AAgAGsiAEHAAHEEQCAGIABBQGqtiCEEQgAhBgwBCyAARQ0AIAZBwAAgAGuthiAEIACtIgOIhCEEIAYgA4ghBgsgAiAENwMAIAIgBjcDCCACKQMIQgSGIAIpAwAiBEI8iIQhAyACKQMQIAIpAxiEQgBSrSAEQv//////////D4OEIgRCgYCAgICAgIAIWgRAIANCAXwhAwwBCyAEQoCAgICAgICACFINACADQgGDIAN8IQMLIAJBIGokACAJIAMgB0KAgICAgICAgIB/g4S/OQMACw8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAAtyAQN/IAAoAgAsAABBMGtBCk8EQEEADwsDQCAAKAIAIQNBfyEBIAJBzJmz5gBNBEBBfyADLAAAQTBrIgEgAkEKbCICaiABIAJB/////wdzShshAQsgACADQQFqNgIAIAEhAiADLAABQTBrQQpJDQALIAILlywDHH8CfAJ+IwBB0ABrIgwkACAMIAE2AkwgDEE3aiEeIAxBOGohGAJAAkACQAJAA0AgASEGIAUgE0H/////B3NKDQEgBSATaiETAkACQAJAIAYiBS0AACILBEADQAJAAkAgC0H/AXEiAUUEQCAF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"); + +// assets/tinycolor.txt.js +var tinycolor_txt_default = `(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.tinycolor = factory()); +})(this, (function () { 'use strict'; + + function _typeof(obj) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, _typeof(obj); + } + + // https://github.com/bgrins/TinyColor + // Brian Grinstead, MIT License + + var trimLeft = /^\\s+/; + var trimRight = /\\s+$/; + function tinycolor(color, opts) { + color = color ? color : ""; + opts = opts || {}; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + var rgb = inputToRGB(color); + this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by \`inputToRgb\` + if (this._r < 1) this._r = Math.round(this._r); + if (this._g < 1) this._g = Math.round(this._g); + if (this._b < 1) this._b = Math.round(this._b); + this._ok = rgb.ok; + } + tinycolor.prototype = { + isDark: function isDark() { + return this.getBrightness() < 128; + }, + isLight: function isLight() { + return !this.isDark(); + }, + isValid: function isValid() { + return this._ok; + }, + getOriginalInput: function getOriginalInput() { + return this._originalInput; + }, + getFormat: function getFormat() { + return this._format; + }, + getAlpha: function getAlpha() { + return this._a; + }, + getBrightness: function getBrightness() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function getLuminance() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r / 255; + GsRGB = rgb.g / 255; + BsRGB = rgb.b / 255; + if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4); + if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4); + if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4); + return 0.2126 * R + 0.7152 * G + 0.0722 * B; + }, + setAlpha: function setAlpha(value) { + this._a = boundAlpha(value); + this._roundA = Math.round(100 * this._a) / 100; + return this; + }, + toHsv: function toHsv() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { + h: hsv.h * 360, + s: hsv.s, + v: hsv.v, + a: this._a + }; + }, + toHsvString: function toHsvString() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = Math.round(hsv.h * 360), + s = Math.round(hsv.s * 100), + v = Math.round(hsv.v * 100); + return this._a == 1 ? "hsv(" + h + ", " + s + "%, " + v + "%)" : "hsva(" + h + ", " + s + "%, " + v + "%, " + this._roundA + ")"; + }, + toHsl: function toHsl() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { + h: hsl.h * 360, + s: hsl.s, + l: hsl.l, + a: this._a + }; + }, + toHslString: function toHslString() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = Math.round(hsl.h * 360), + s = Math.round(hsl.s * 100), + l = Math.round(hsl.l * 100); + return this._a == 1 ? "hsl(" + h + ", " + s + "%, " + l + "%)" : "hsla(" + h + ", " + s + "%, " + l + "%, " + this._roundA + ")"; + }, + toHex: function toHex(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function toHexString(allow3Char) { + return "#" + this.toHex(allow3Char); + }, + toHexNumber: function toHexNumber() { + return Number("0x" + this.toHex()); + }, + toHex8: function toHex8(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function toHex8String(allow4Char) { + return "#" + this.toHex8(allow4Char); + }, + toRgb: function toRgb() { + return { + r: Math.round(this._r), + g: Math.round(this._g), + b: Math.round(this._b), + a: this._a + }; + }, + toRgbString: function toRgbString() { + return this._a == 1 ? "rgb(" + Math.round(this._r) + ", " + Math.round(this._g) + ", " + Math.round(this._b) + ")" : "rgba(" + Math.round(this._r) + ", " + Math.round(this._g) + ", " + Math.round(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function toPercentageRgb() { + return { + r: Math.round(bound01(this._r, 255) * 100) + "%", + g: Math.round(bound01(this._g, 255) * 100) + "%", + b: Math.round(bound01(this._b, 255) * 100) + "%", + a: this._a + }; + }, + toPercentageRgbString: function toPercentageRgbString() { + return this._a == 1 ? "rgb(" + Math.round(bound01(this._r, 255) * 100) + "%, " + Math.round(bound01(this._g, 255) * 100) + "%, " + Math.round(bound01(this._b, 255) * 100) + "%)" : "rgba(" + Math.round(bound01(this._r, 255) * 100) + "%, " + Math.round(bound01(this._g, 255) * 100) + "%, " + Math.round(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function toName() { + if (this._a === 0) { + return "transparent"; + } + if (this._a < 1) { + return false; + } + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function toFilter(secondColor) { + var hex8String = "#" + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = "#" + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + return "progid:DXImageTransform.Microsoft.gradient(" + gradientType + "startColorstr=" + hex8String + ",endColorstr=" + secondHex8String + ")"; + }, + toString: function toString(format) { + var formatSet = !!format; + format = format || this._format; + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + return formattedString || this.toHexString(); + }, + clone: function clone() { + return tinycolor(this.toString()); + }, + _applyModification: function _applyModification(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function lighten() { + return this._applyModification(_lighten, arguments); + }, + brighten: function brighten() { + return this._applyModification(_brighten, arguments); + }, + darken: function darken() { + return this._applyModification(_darken, arguments); + }, + desaturate: function desaturate() { + return this._applyModification(_desaturate, arguments); + }, + saturate: function saturate() { + return this._applyModification(_saturate, arguments); + }, + greyscale: function greyscale() { + return this._applyModification(_greyscale, arguments); + }, + spin: function spin() { + return this._applyModification(_spin, arguments); + }, + _applyCombination: function _applyCombination(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function analogous() { + return this._applyCombination(_analogous, arguments); + }, + complement: function complement() { + return this._applyCombination(_complement, arguments); + }, + monochromatic: function monochromatic() { + return this._applyCombination(_monochromatic, arguments); + }, + splitcomplement: function splitcomplement() { + return this._applyCombination(_splitcomplement, arguments); + }, + // Disabled until https://github.com/bgrins/TinyColor/issues/254 + // polyad: function (number) { + // return this._applyCombination(polyad, [number]); + // }, + triad: function triad() { + return this._applyCombination(polyad, [3]); + }, + tetrad: function tetrad() { + return this._applyCombination(polyad, [4]); + } + }; + + // If input is an object, force 1 into "1.0" to handle ratios properly + // String input requires "1.0" as input, so 1 will be treated as 1 + tinycolor.fromRatio = function (color, opts) { + if (_typeof(color) == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + return tinycolor(color, opts); + }; + + // Given a string or object, convert that input to RGB + // Possible string inputs: + // + // "red" + // "#f00" or "f00" + // "#ff0000" or "ff0000" + // "#ff000000" or "ff000000" + // "rgb 255 0 0" or "rgb (255, 0, 0)" + // "rgb 1.0 0 0" or "rgb (1, 0, 0)" + // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" + // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" + // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" + // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" + // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" + // + function inputToRGB(color) { + var rgb = { + r: 0, + g: 0, + b: 0 + }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + if (typeof color == "string") { + color = stringInputToObject(color); + } + if (_typeof(color) == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + a = boundAlpha(a); + return { + ok: ok, + format: color.format || format, + r: Math.min(255, Math.max(rgb.r, 0)), + g: Math.min(255, Math.max(rgb.g, 0)), + b: Math.min(255, Math.max(rgb.b, 0)), + a: a + }; + } + + // Conversion Functions + // -------------------- + + // \`rgbToHsl\`, \`rgbToHsv\`, \`hslToRgb\`, \`hsvToRgb\` modified from: + // + + // \`rgbToRgb\` + // Handle bounds / percentage checking to conform to CSS color spec + // + // *Assumes:* r, g, b in [0, 255] or [0, 1] + // *Returns:* { r, g, b } in [0, 255] + function rgbToRgb(r, g, b) { + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; + } + + // \`rgbToHsl\` + // Converts an RGB color value to HSL. + // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] + // *Returns:* { h, s, l } in [0,1] + function rgbToHsl(r, g, b) { + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + var max = Math.max(r, g, b), + min = Math.min(r, g, b); + var h, + s, + l = (max + min) / 2; + if (max == min) { + h = s = 0; // achromatic + } else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + } + h /= 6; + } + return { + h: h, + s: s, + l: l + }; + } + + // \`hslToRgb\` + // Converts an HSL color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hslToRgb(h, s, l) { + var r, g, b; + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + } + if (s === 0) { + r = g = b = l; // achromatic + } else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + return { + r: r * 255, + g: g * 255, + b: b * 255 + }; + } + + // \`rgbToHsv\` + // Converts an RGB color value to HSV + // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] + // *Returns:* { h, s, v } in [0,1] + function rgbToHsv(r, g, b) { + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + var max = Math.max(r, g, b), + min = Math.min(r, g, b); + var h, + s, + v = max; + var d = max - min; + s = max === 0 ? 0 : d / max; + if (max == min) { + h = 0; // achromatic + } else { + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + } + h /= 6; + } + return { + h: h, + s: s, + v: v + }; + } + + // \`hsvToRgb\` + // Converts an HSV color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + return { + r: r * 255, + g: g * 255, + b: b * 255 + }; + } + + // \`rgbToHex\` + // Converts an RGB color to hex + // Assumes r, g, and b are contained in the set [0, 255] + // Returns a 3 or 6 character hex + function rgbToHex(r, g, b, allow3Char) { + var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + return hex.join(""); + } + + // \`rgbaToHex\` + // Converts an RGBA color plus alpha transparency to hex + // Assumes r, g, b are contained in the set [0, 255] and + // a in [0, 1]. Returns a 4 or 8 character rgba hex + function rgbaToHex(r, g, b, a, allow4Char) { + var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + return hex.join(""); + } + + // \`rgbaToArgbHex\` + // Converts an RGBA color to an ARGB Hex8 string + // Rarely used, but required for "toFilter()" + function rgbaToArgbHex(r, g, b, a) { + var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))]; + return hex.join(""); + } + + // \`equals\` + // Can be called with any tinycolor input + tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) return false; + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); + }; + tinycolor.random = function () { + return tinycolor.fromRatio({ + r: Math.random(), + g: Math.random(), + b: Math.random() + }); + }; + + // Modification Functions + // ---------------------- + // Thanks to less.js for some of the basics here + // + + function _desaturate(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + } + function _saturate(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + } + function _greyscale(color) { + return tinycolor(color).desaturate(100); + } + function _lighten(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + } + function _brighten(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var rgb = tinycolor(color).toRgb(); + rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100)))); + rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100)))); + rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100)))); + return tinycolor(rgb); + } + function _darken(color, amount) { + amount = amount === 0 ? 0 : amount || 10; + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + } + + // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. + // Values outside of this range will be wrapped into this range. + function _spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); + } + + // Combination Functions + // --------------------- + // Thanks to jQuery xColor for some of the ideas behind these + // + + function _complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); + } + function polyad(color, number) { + if (isNaN(number) || number <= 0) { + throw new Error("Argument to polyad must be a positive number"); + } + var hsl = tinycolor(color).toHsl(); + var result = [tinycolor(color)]; + var step = 360 / number; + for (var i = 1; i < number; i++) { + result.push(tinycolor({ + h: (hsl.h + i * step) % 360, + s: hsl.s, + l: hsl.l + })); + } + return result; + } + function _splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [tinycolor(color), tinycolor({ + h: (h + 72) % 360, + s: hsl.s, + l: hsl.l + }), tinycolor({ + h: (h + 216) % 360, + s: hsl.s, + l: hsl.l + })]; + } + function _analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; + } + function _monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, + s = hsv.s, + v = hsv.v; + var ret = []; + var modification = 1 / results; + while (results--) { + ret.push(tinycolor({ + h: h, + s: s, + v: v + })); + v = (v + modification) % 1; + } + return ret; + } + + + + // Utility Functions + // --------------------- + + tinycolor.mix = function (color1, color2, amount) { + amount = amount === 0 ? 0 : amount || 50; + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + var p = amount / 100; + var rgba = { + r: (rgb2.r - rgb1.r) * p + rgb1.r, + g: (rgb2.g - rgb1.g) * p + rgb1.g, + b: (rgb2.b - rgb1.b) * p + rgb1.b, + a: (rgb2.a - rgb1.a) * p + rgb1.a + }; + return tinycolor(rgba); + }; + + // Readability Functions + // --------------------- + // false + // tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false + tinycolor.isReadable = function (color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + out = false; + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + }; + + // \`mostReadable\` + // Given a base color and a list of possible foreground or background + // colors for that base, returns the most readable color. + // Optionally returns Black or White if the most readable color is unreadable. + // *Example* + // tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" + // tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" + // tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" + // tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" + tinycolor.mostReadable = function (baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size; + args = args || {}; + includeFallbackColors = args.includeFallbackColors; + level = args.level; + size = args.size; + for (var i = 0; i < colorList.length; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + if (tinycolor.isReadable(baseColor, bestColor, { + level: level, + size: size + }) || !includeFallbackColors) { + return bestColor; + } else { + args.includeFallbackColors = false; + return tinycolor.mostReadable(baseColor, ["#fff", "#000"], args); + } + }; + + // Big List of Colors + // ------------------ + // + var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" + }; + + // Make it easy to access colors via \`hexNames[hex]\` + var hexNames = tinycolor.hexNames = flip(names); + + // Utilities + // --------- + + // \`{ 'name1': 'val1' }\` becomes \`{ 'val1': 'name1' }\` + function flip(o) { + var flipped = {}; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; + } + + // Return a valid alpha value [0,1] with all invalid values being set to 1 + function boundAlpha(a) { + a = parseFloat(a); + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + return a; + } + + // Take input from [0, n] and return it as [0, 1] + function bound01(n, max) { + if (isOnePointZero(n)) n = "100%"; + var processPercent = isPercentage(n); + n = Math.min(max, Math.max(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if (Math.abs(n - max) < 0.000001) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return n % max / parseFloat(max); + } + + // Force a number between 0 and 1 + function clamp01(val) { + return Math.min(1, Math.max(0, val)); + } + + // Parse a base-16 hex value into a base-10 integer + function parseIntFromHex(val) { + return parseInt(val, 16); + } + + // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 + // + function isOnePointZero(n) { + return typeof n == "string" && n.indexOf(".") != -1 && parseFloat(n) === 1; + } + + // Check to see if string passed in is a percentage + function isPercentage(n) { + return typeof n === "string" && n.indexOf("%") != -1; + } + + // Force a hex value to have 2 characters + function pad2(c) { + return c.length == 1 ? "0" + c : "" + c; + } + + // Replace a decimal with it's percentage value + function convertToPercentage(n) { + if (n <= 1) { + n = n * 100 + "%"; + } + return n; + } + + // Converts a decimal to a hex value + function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); + } + // Converts a hex value to a decimal + function convertHexToDecimal(h) { + return parseIntFromHex(h) / 255; + } + var matchers = function () { + // + var CSS_INTEGER = "[-\\\\+]?\\\\d+%?"; + + // + var CSS_NUMBER = "[-\\\\+]?\\\\d*\\\\.\\\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\\\s|\\\\(]+(" + CSS_UNIT + ")[,|\\\\s]+(" + CSS_UNIT + ")[,|\\\\s]+(" + CSS_UNIT + ")\\\\s*\\\\)?"; + var PERMISSIVE_MATCH4 = "[\\\\s|\\\\(]+(" + CSS_UNIT + ")[,|\\\\s]+(" + CSS_UNIT + ")[,|\\\\s]+(" + CSS_UNIT + ")[,|\\\\s]+(" + CSS_UNIT + ")\\\\s*\\\\)?"; + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; + }(); + + // \`isValidCSSUnit\` + // Take in a single string / number and check to see if it looks like a CSS unit + // (see \`matchers\` above for definition). + function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); + } + + // \`stringInputToObject\` + // Permissive string parsing. Take in a number of formats, and output an object + // based on detected format. Returns \`{ r, g, b }\` or \`{ h, s, l }\` or \`{ h, s, v}\` + function stringInputToObject(color) { + color = color.replace(trimLeft, "").replace(trimRight, "").toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } else if (color == "transparent") { + return { + r: 0, + g: 0, + b: 0, + a: 0, + format: "name" + }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if (match = matchers.rgb.exec(color)) { + return { + r: match[1], + g: match[2], + b: match[3] + }; + } + if (match = matchers.rgba.exec(color)) { + return { + r: match[1], + g: match[2], + b: match[3], + a: match[4] + }; + } + if (match = matchers.hsl.exec(color)) { + return { + h: match[1], + s: match[2], + l: match[3] + }; + } + if (match = matchers.hsla.exec(color)) { + return { + h: match[1], + s: match[2], + l: match[3], + a: match[4] + }; + } + if (match = matchers.hsv.exec(color)) { + return { + h: match[1], + s: match[2], + v: match[3] + }; + } + if (match = matchers.hsva.exec(color)) { + return { + h: match[1], + s: match[2], + v: match[3], + a: match[4] + }; + } + if (match = matchers.hex8.exec(color)) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if (match = matchers.hex6.exec(color)) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if (match = matchers.hex4.exec(color)) { + return { + r: parseIntFromHex(match[1] + "" + match[1]), + g: parseIntFromHex(match[2] + "" + match[2]), + b: parseIntFromHex(match[3] + "" + match[3]), + a: convertHexToDecimal(match[4] + "" + match[4]), + format: named ? "name" : "hex8" + }; + } + if (match = matchers.hex3.exec(color)) { + return { + r: parseIntFromHex(match[1] + "" + match[1]), + g: parseIntFromHex(match[2] + "" + match[2]), + b: parseIntFromHex(match[3] + "" + match[3]), + format: named ? "name" : "hex" + }; + } + return false; + } + function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || { + level: "AA", + size: "small" + }; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return { + level: level, + size: size + }; + } + + return tinycolor; + +})); + + +// w3color.js + +/* w3color.js ver.1.18 by w3schools.com (Do not remove this line)*/ + + +function w3color(color, elmnt) { + if (!(this instanceof w3color)) { return new w3color(color, elmnt); } + if (typeof color == "object") { return color; } + this.attachValues(toColorObject(color)); + if (elmnt) { elmnt.style.backgroundColor = this.toRgbString(); } +} + +w3color.prototype = { + toRgbString: function () { + return "rgb(" + this.red + ", " + this.green + ", " + this.blue + ")"; + }, + toRgbaString: function () { + return "rgba(" + this.red + ", " + this.green + ", " + this.blue + ", " + this.opacity + ")"; + }, + toHwbString: function () { + return "hwb(" + this.hue + ", " + Math.round(this.whiteness * 100) + "%, " + Math.round(this.blackness * 100) + "%)"; + }, + toHwbStringDecimal: function () { + return "hwb(" + this.hue + ", " + this.whiteness + ", " + this.blackness + ")"; + }, + toHwbaString: function () { + return "hwba(" + this.hue + ", " + Math.round(this.whiteness * 100) + "%, " + Math.round(this.blackness * 100) + "%, " + this.opacity + ")"; + }, + toHslString: function () { + return "hsl(" + this.hue + ", " + Math.round(this.sat * 100) + "%, " + Math.round(this.lightness * 100) + "%)"; + }, + toHslStringDecimal: function () { + return "hsl(" + this.hue + ", " + this.sat + ", " + this.lightness + ")"; + }, + toHslaString: function () { + return "hsla(" + this.hue + ", " + Math.round(this.sat * 100) + "%, " + Math.round(this.lightness * 100) + "%, " + this.opacity + ")"; + }, + toCmykString: function () { + return "cmyk(" + Math.round(this.cyan * 100) + "%, " + Math.round(this.magenta * 100) + "%, " + Math.round(this.yellow * 100) + "%, " + Math.round(this.black * 100) + "%)"; + }, + toCmykStringDecimal: function () { + return "cmyk(" + this.cyan + ", " + this.magenta + ", " + this.yellow + ", " + this.black + ")"; + }, + toNcolString: function () { + return this.ncol + ", " + Math.round(this.whiteness * 100) + "%, " + Math.round(this.blackness * 100) + "%"; + }, + toNcolStringDecimal: function () { + return this.ncol + ", " + this.whiteness + ", " + this.blackness; + }, + toNcolaString: function () { + return this.ncol + ", " + Math.round(this.whiteness * 100) + "%, " + Math.round(this.blackness * 100) + "%, " + this.opacity; + }, + toName: function () { + var r, g, b, colorhexs = getColorArr('hexs'); + for (i = 0; i < colorhexs.length; i++) { + r = parseInt(colorhexs[i].substr(0, 2), 16); + g = parseInt(colorhexs[i].substr(2, 2), 16); + b = parseInt(colorhexs[i].substr(4, 2), 16); + if (this.red == r && this.green == g && this.blue == b) { + return getColorArr('names')[i]; + } + } + return ""; + }, + toHexString: function () { + var r = toHex(this.red); + var g = toHex(this.green); + var b = toHex(this.blue); + return "#" + r + g + b; + }, + toRgb: function () { + return { r: this.red, g: this.green, b: this.blue, a: this.opacity }; + }, + toHsl: function () { + return { h: this.hue, s: this.sat, l: this.lightness, a: this.opacity }; + }, + toHwb: function () { + return { h: this.hue, w: this.whiteness, b: this.blackness, a: this.opacity }; + }, + toCmyk: function () { + return { c: this.cyan, m: this.magenta, y: this.yellow, k: this.black, a: this.opacity }; + }, + toNcol: function () { + return { ncol: this.ncol, w: this.whiteness, b: this.blackness, a: this.opacity }; + }, + isDark: function (n) { + var m = (n || 128); + return (((this.red * 299 + this.green * 587 + this.blue * 114) / 1000) < m); + }, + saturate: function (n) { + var x, rgb, color; + x = (n / 100 || 0.1); + this.sat += x; + if (this.sat > 1) { this.sat = 1; } + rgb = hslToRgb(this.hue, this.sat, this.lightness); + color = colorObject(rgb, this.opacity, this.hue, this.sat); + this.attachValues(color); + }, + desaturate: function (n) { + var x, rgb, color; + x = (n / 100 || 0.1); + this.sat -= x; + if (this.sat < 0) { this.sat = 0; } + rgb = hslToRgb(this.hue, this.sat, this.lightness); + color = colorObject(rgb, this.opacity, this.hue, this.sat); + this.attachValues(color); + }, + lighter: function (n) { + var x, rgb, color; + x = (n / 100 || 0.1); + this.lightness += x; + if (this.lightness > 1) { this.lightness = 1; } + rgb = hslToRgb(this.hue, this.sat, this.lightness); + color = colorObject(rgb, this.opacity, this.hue, this.sat); + this.attachValues(color); + }, + darker: function (n) { + var x, rgb, color; + x = (n / 100 || 0.1); + this.lightness -= x; + if (this.lightness < 0) { this.lightness = 0; } + rgb = hslToRgb(this.hue, this.sat, this.lightness); + color = colorObject(rgb, this.opacity, this.hue, this.sat); + this.attachValues(color); + }, + attachValues: function (color) { + this.red = color.red; + this.green = color.green; + this.blue = color.blue; + this.hue = color.hue; + this.sat = color.sat; + this.lightness = color.lightness; + this.whiteness = color.whiteness; + this.blackness = color.blackness; + this.cyan = color.cyan; + this.magenta = color.magenta; + this.yellow = color.yellow; + this.black = color.black; + this.ncol = color.ncol; + this.opacity = color.opacity; + this.valid = color.valid; + } +}; + +function toColorObject(c) { + var x, y, typ, arr = [], arrlength, i, opacity, match, a, hue, sat, rgb, colornames = [], colorhexs = []; + c = w3trim(c.toLowerCase()); + x = c.substr(0, 1).toUpperCase(); + y = c.substr(1); + a = 1; + if ((x == "R" || x == "Y" || x == "G" || x == "C" || x == "B" || x == "M" || x == "W") && !isNaN(y)) { + if (c.length == 6 && c.indexOf(",") == -1) { + } else { + c = "ncol(" + c + ")"; + } + } + if (c.length != 3 && c.length != 6 && !isNaN(c)) { c = "ncol(" + c + ")"; } + if (c.indexOf(",") > 0 && c.indexOf("(") == -1) { c = "ncol(" + c + ")"; } + if (c.substr(0, 3) == "rgb" || c.substr(0, 3) == "hsl" || c.substr(0, 3) == "hwb" || c.substr(0, 4) == "ncol" || c.substr(0, 4) == "cmyk") { + if (c.substr(0, 4) == "ncol") { + if (c.split(",").length == 4 && c.indexOf("ncola") == -1) { + c = c.replace("ncol", "ncola"); + } + typ = "ncol"; + c = c.substr(4); + } else if (c.substr(0, 4) == "cmyk") { + typ = "cmyk"; + c = c.substr(4); + } else { + typ = c.substr(0, 3); + c = c.substr(3); + } + arrlength = 3; + opacity = false; + if (c.substr(0, 1).toLowerCase() == "a") { + arrlength = 4; + opacity = true; + c = c.substr(1); + } else if (typ == "cmyk") { + arrlength = 4; + if (c.split(",").length == 5) { + arrlength = 5; + opacity = true; + } + } + c = c.replace("(", ""); + c = c.replace(")", ""); + arr = c.split(","); + if (typ == "rgb") { + if (arr.length != arrlength) { + return emptyObject(); + } + for (i = 0; i < arrlength; i++) { + if (arr[i] == "" || arr[i] == " ") { arr[i] = "0"; } + if (arr[i].indexOf("%") > -1) { + arr[i] = arr[i].replace("%", ""); + arr[i] = Number(arr[i] / 100); + if (i < 3) { arr[i] = Math.round(arr[i] * 255); } + } + if (isNaN(arr[i])) { return emptyObject(); } + if (parseInt(arr[i]) > 255) { arr[i] = 255; } + if (i < 3) { arr[i] = parseInt(arr[i]); } + if (i == 3 && Number(arr[i]) > 1) { arr[i] = 1; } + } + rgb = { r: arr[0], g: arr[1], b: arr[2] }; + if (opacity == true) { a = Number(arr[3]); } + } + if (typ == "hsl" || typ == "hwb" || typ == "ncol") { + while (arr.length < arrlength) { arr.push("0"); } + if (typ == "hsl" || typ == "hwb") { + if (parseInt(arr[0]) >= 360) { arr[0] = 0; } + } + for (i = 1; i < arrlength; i++) { + if (arr[i].indexOf("%") > -1) { + arr[i] = arr[i].replace("%", ""); + arr[i] = Number(arr[i]); + if (isNaN(arr[i])) { return emptyObject(); } + arr[i] = arr[i] / 100; + } else { + arr[i] = Number(arr[i]); + } + if (Number(arr[i]) > 1) { arr[i] = 1; } + if (Number(arr[i]) < 0) { arr[i] = 0; } + } + if (typ == "hsl") { rgb = hslToRgb(arr[0], arr[1], arr[2]); hue = Number(arr[0]); sat = Number(arr[1]); } + if (typ == "hwb") { rgb = hwbToRgb(arr[0], arr[1], arr[2]); } + if (typ == "ncol") { rgb = ncolToRgb(arr[0], arr[1], arr[2]); } + if (opacity == true) { a = Number(arr[3]); } + } + if (typ == "cmyk") { + while (arr.length < arrlength) { arr.push("0"); } + for (i = 0; i < arrlength; i++) { + if (arr[i].indexOf("%") > -1) { + arr[i] = arr[i].replace("%", ""); + arr[i] = Number(arr[i]); + if (isNaN(arr[i])) { return emptyObject(); } + arr[i] = arr[i] / 100; + } else { + arr[i] = Number(arr[i]); + } + if (Number(arr[i]) > 1) { arr[i] = 1; } + if (Number(arr[i]) < 0) { arr[i] = 0; } + } + rgb = cmykToRgb(arr[0], arr[1], arr[2], arr[3]); + if (opacity == true) { a = Number(arr[4]); } + } + } else if (c.substr(0, 3) == "ncs") { + rgb = ncsToRgb(c); + } else { + match = false; + colornames = getColorArr('names'); + for (i = 0; i < colornames.length; i++) { + if (c.toLowerCase() == colornames[i].toLowerCase()) { + colorhexs = getColorArr('hexs'); + match = true; + rgb = { + r: parseInt(colorhexs[i].substr(0, 2), 16), + g: parseInt(colorhexs[i].substr(2, 2), 16), + b: parseInt(colorhexs[i].substr(4, 2), 16) + }; + break; + } + } + if (match == false) { + c = c.replace("#", ""); + if (c.length == 3) { c = c.substr(0, 1) + c.substr(0, 1) + c.substr(1, 1) + c.substr(1, 1) + c.substr(2, 1) + c.substr(2, 1); } + for (i = 0; i < c.length; i++) { + if (!isHex(c.substr(i, 1))) { return emptyObject(); } + } + arr[0] = parseInt(c.substr(0, 2), 16); + arr[1] = parseInt(c.substr(2, 2), 16); + arr[2] = parseInt(c.substr(4, 2), 16); + for (i = 0; i < 3; i++) { + if (isNaN(arr[i])) { return emptyObject(); } + } + rgb = { + r: arr[0], + g: arr[1], + b: arr[2] + }; + } + } + return colorObject(rgb, a, hue, sat); +} + +function colorObject(rgb, a, h, s) { + var hsl, hwb, cmyk, ncol, color, hue, sat; + if (!rgb) { return emptyObject(); } + if (a === null) { a = 1; } + hsl = rgbToHsl(rgb.r, rgb.g, rgb.b); + hwb = rgbToHwb(rgb.r, rgb.g, rgb.b); + cmyk = rgbToCmyk(rgb.r, rgb.g, rgb.b); + hue = (h || hsl.h); + sat = (s || hsl.s); + ncol = hueToNcol(hue); + color = { + red: rgb.r, + green: rgb.g, + blue: rgb.b, + hue: hue, + sat: sat, + lightness: hsl.l, + whiteness: hwb.w, + blackness: hwb.b, + cyan: cmyk.c, + magenta: cmyk.m, + yellow: cmyk.y, + black: cmyk.k, + ncol: ncol, + opacity: a, + valid: true + }; + color = roundDecimals(color); + return color; +} + +function emptyObject() { + return { + red: 0, + green: 0, + blue: 0, + hue: 0, + sat: 0, + lightness: 0, + whiteness: 0, + blackness: 0, + cyan: 0, + magenta: 0, + yellow: 0, + black: 0, + ncol: "R", + opacity: 1, + valid: false + }; +} + +function getColorArr(x) { + if (x == "names") { return ['AliceBlue', 'AntiqueWhite', 'Aqua', 'Aquamarine', 'Azure', 'Beige', 'Bisque', 'Black', 'BlanchedAlmond', 'Blue', 'BlueViolet', 'Brown', 'BurlyWood', 'CadetBlue', 'Chartreuse', 'Chocolate', 'Coral', 'CornflowerBlue', 'Cornsilk', 'Crimson', 'Cyan', 'DarkBlue', 'DarkCyan', 'DarkGoldenRod', 'DarkGray', 'DarkGrey', 'DarkGreen', 'DarkKhaki', 'DarkMagenta', 'DarkOliveGreen', 'DarkOrange', 'DarkOrchid', 'DarkRed', 'DarkSalmon', 'DarkSeaGreen', 'DarkSlateBlue', 'DarkSlateGray', 'DarkSlateGrey', 'DarkTurquoise', 'DarkViolet', 'DeepPink', 'DeepSkyBlue', 'DimGray', 'DimGrey', 'DodgerBlue', 'FireBrick', 'FloralWhite', 'ForestGreen', 'Fuchsia', 'Gainsboro', 'GhostWhite', 'Gold', 'GoldenRod', 'Gray', 'Grey', 'Green', 'GreenYellow', 'HoneyDew', 'HotPink', 'IndianRed', 'Indigo', 'Ivory', 'Khaki', 'Lavender', 'LavenderBlush', 'LawnGreen', 'LemonChiffon', 'LightBlue', 'LightCoral', 'LightCyan', 'LightGoldenRodYellow', 'LightGray', 'LightGrey', 'LightGreen', 'LightPink', 'LightSalmon', 'LightSeaGreen', 'LightSkyBlue', 'LightSlateGray', 'LightSlateGrey', 'LightSteelBlue', 'LightYellow', 'Lime', 'LimeGreen', 'Linen', 'Magenta', 'Maroon', 'MediumAquaMarine', 'MediumBlue', 'MediumOrchid', 'MediumPurple', 'MediumSeaGreen', 'MediumSlateBlue', 'MediumSpringGreen', 'MediumTurquoise', 'MediumVioletRed', 'MidnightBlue', 'MintCream', 'MistyRose', 'Moccasin', 'NavajoWhite', 'Navy', 'OldLace', 'Olive', 'OliveDrab', 'Orange', 'OrangeRed', 'Orchid', 'PaleGoldenRod', 'PaleGreen', 'PaleTurquoise', 'PaleVioletRed', 'PapayaWhip', 'PeachPuff', 'Peru', 'Pink', 'Plum', 'PowderBlue', 'Purple', 'RebeccaPurple', 'Red', 'RosyBrown', 'RoyalBlue', 'SaddleBrown', 'Salmon', 'SandyBrown', 'SeaGreen', 'SeaShell', 'Sienna', 'Silver', 'SkyBlue', 'SlateBlue', 'SlateGray', 'SlateGrey', 'Snow', 'SpringGreen', 'SteelBlue', 'Tan', 'Teal', 'Thistle', 'Tomato', 'Turquoise', 'Violet', 'Wheat', 'White', 'WhiteSmoke', 'Yellow', 'YellowGreen']; } + if (x == "hexs") { return ['f0f8ff', 'faebd7', '00ffff', '7fffd4', 'f0ffff', 'f5f5dc', 'ffe4c4', '000000', 'ffebcd', '0000ff', '8a2be2', 'a52a2a', 'deb887', '5f9ea0', '7fff00', 'd2691e', 'ff7f50', '6495ed', 'fff8dc', 'dc143c', '00ffff', '00008b', '008b8b', 'b8860b', 'a9a9a9', 'a9a9a9', '006400', 'bdb76b', '8b008b', '556b2f', 'ff8c00', '9932cc', '8b0000', 'e9967a', '8fbc8f', '483d8b', '2f4f4f', '2f4f4f', '00ced1', '9400d3', 'ff1493', '00bfff', '696969', '696969', '1e90ff', 'b22222', 'fffaf0', '228b22', 'ff00ff', 'dcdcdc', 'f8f8ff', 'ffd700', 'daa520', '808080', '808080', '008000', 'adff2f', 'f0fff0', 'ff69b4', 'cd5c5c', '4b0082', 'fffff0', 'f0e68c', 'e6e6fa', 'fff0f5', '7cfc00', 'fffacd', 'add8e6', 'f08080', 'e0ffff', 'fafad2', 'd3d3d3', 'd3d3d3', '90ee90', 'ffb6c1', 'ffa07a', '20b2aa', '87cefa', '778899', '778899', 'b0c4de', 'ffffe0', '00ff00', '32cd32', 'faf0e6', 'ff00ff', '800000', '66cdaa', '0000cd', 'ba55d3', '9370db', '3cb371', '7b68ee', '00fa9a', '48d1cc', 'c71585', '191970', 'f5fffa', 'ffe4e1', 'ffe4b5', 'ffdead', '000080', 'fdf5e6', '808000', '6b8e23', 'ffa500', 'ff4500', 'da70d6', 'eee8aa', '98fb98', 'afeeee', 'db7093', 'ffefd5', 'ffdab9', 'cd853f', 'ffc0cb', 'dda0dd', 'b0e0e6', '800080', '663399', 'ff0000', 'bc8f8f', '4169e1', '8b4513', 'fa8072', 'f4a460', '2e8b57', 'fff5ee', 'a0522d', 'c0c0c0', '87ceeb', '6a5acd', '708090', '708090', 'fffafa', '00ff7f', '4682b4', 'd2b48c', '008080', 'd8bfd8', 'ff6347', '40e0d0', 'ee82ee', 'f5deb3', 'ffffff', 'f5f5f5', 'ffff00', '9acd32']; } +} + +function roundDecimals(c) { + c.red = Number(c.red.toFixed(0)); + c.green = Number(c.green.toFixed(0)); + c.blue = Number(c.blue.toFixed(0)); + c.hue = Number(c.hue.toFixed(0)); + c.sat = Number(c.sat.toFixed(2)); + c.lightness = Number(c.lightness.toFixed(2)); + c.whiteness = Number(c.whiteness.toFixed(2)); + c.blackness = Number(c.blackness.toFixed(2)); + c.cyan = Number(c.cyan.toFixed(2)); + c.magenta = Number(c.magenta.toFixed(2)); + c.yellow = Number(c.yellow.toFixed(2)); + c.black = Number(c.black.toFixed(2)); + c.ncol = c.ncol.substr(0, 1) + Math.round(Number(c.ncol.substr(1))); + c.opacity = Number(c.opacity.toFixed(2)); + return c; +} + +function hslToRgb(hue, sat, light) { + var t1, t2, r, g, b; + hue = hue / 60; + if (light <= 0.5) { + t2 = light * (sat + 1); + } else { + t2 = light + sat - (light * sat); + } + t1 = light * 2 - t2; + r = hueToRgb(t1, t2, hue + 2) * 255; + g = hueToRgb(t1, t2, hue) * 255; + b = hueToRgb(t1, t2, hue - 2) * 255; + return { r: r, g: g, b: b }; +} + +function hueToRgb(t1, t2, hue) { + if (hue < 0) hue += 6; + if (hue >= 6) hue -= 6; + if (hue < 1) return (t2 - t1) * hue + t1; + else if (hue < 3) return t2; + else if (hue < 4) return (t2 - t1) * (4 - hue) + t1; + else return t1; +} + +function hwbToRgb(hue, white, black) { + var i, rgb, rgbArr = [], tot; + rgb = hslToRgb(hue, 1, 0.50); + rgbArr[0] = rgb.r / 255; + rgbArr[1] = rgb.g / 255; + rgbArr[2] = rgb.b / 255; + tot = white + black; + if (tot > 1) { + white = Number((white / tot).toFixed(2)); + black = Number((black / tot).toFixed(2)); + } + for (i = 0; i < 3; i++) { + rgbArr[i] *= (1 - (white) - (black)); + rgbArr[i] += (white); + rgbArr[i] = Number(rgbArr[i] * 255); + } + return { r: rgbArr[0], g: rgbArr[1], b: rgbArr[2] }; +} + +function cmykToRgb(c, m, y, k) { + var r, g, b; + r = 255 - ((Math.min(1, c * (1 - k) + k)) * 255); + g = 255 - ((Math.min(1, m * (1 - k) + k)) * 255); + b = 255 - ((Math.min(1, y * (1 - k) + k)) * 255); + return { r: r, g: g, b: b }; +} + +function ncolToRgb(ncol, white, black) { + var letter, percent, h, w, b; + h = ncol; + if (isNaN(ncol.substr(0, 1))) { + letter = ncol.substr(0, 1).toUpperCase(); + percent = ncol.substr(1); + if (percent == "") { percent = 0; } + percent = Number(percent); + if (isNaN(percent)) { return false; } + if (letter == "R") { h = 0 + (percent * 0.6); } + if (letter == "Y") { h = 60 + (percent * 0.6); } + if (letter == "G") { h = 120 + (percent * 0.6); } + if (letter == "C") { h = 180 + (percent * 0.6); } + if (letter == "B") { h = 240 + (percent * 0.6); } + if (letter == "M") { h = 300 + (percent * 0.6); } + if (letter == "W") { + h = 0; + white = 1 - (percent / 100); + black = (percent / 100); + } + } + return hwbToRgb(h, white, black); +} + +function hueToNcol(hue) { + while (hue >= 360) { + hue = hue - 360; + } + if (hue < 60) { return "R" + (hue / 0.6); } + if (hue < 120) { return "Y" + ((hue - 60) / 0.6); } + if (hue < 180) { return "G" + ((hue - 120) / 0.6); } + if (hue < 240) { return "C" + ((hue - 180) / 0.6); } + if (hue < 300) { return "B" + ((hue - 240) / 0.6); } + if (hue < 360) { return "M" + ((hue - 300) / 0.6); } +} + +function ncsToRgb(ncs) { + var black, chroma, bc, percent, black1, chroma1, red1, factor1, blue1, red1, red2, green2, blue2, max, factor2, grey, r, g, b; + ncs = w3trim(ncs).toUpperCase(); + ncs = ncs.replace("(", ""); + ncs = ncs.replace(")", ""); + ncs = ncs.replace("NCS", "NCS "); + ncs = ncs.replace(/ /g, " "); + if (ncs.indexOf("NCS") == -1) { ncs = "NCS " + ncs; } + ncs = ncs.match(/^(?:NCS|NCS\\sS)\\s(\\d{2})(\\d{2})-(N|[A-Z])(\\d{2})?([A-Z])?$/); + if (ncs === null) return false; + black = parseInt(ncs[1], 10); + chroma = parseInt(ncs[2], 10); + bc = ncs[3]; + if (bc != "N" && bc != "Y" && bc != "R" && bc != "B" && bc != "G") { return false; } + percent = parseInt(ncs[4], 10) || 0; + if (bc !== 'N') { + black1 = (1.05 * black - 5.25); + chroma1 = chroma; + if (bc === 'Y' && percent <= 60) { + red1 = 1; + } else if ((bc === 'Y' && percent > 60) || (bc === 'R' && percent <= 80)) { + if (bc === 'Y') { + factor1 = percent - 60; + } else { + factor1 = percent + 40; + } + red1 = ((Math.sqrt(14884 - Math.pow(factor1, 2))) - 22) / 100; + } else if ((bc === 'R' && percent > 80) || (bc === 'B')) { + red1 = 0; + } else if (bc === 'G') { + factor1 = (percent - 170); + red1 = ((Math.sqrt(33800 - Math.pow(factor1, 2))) - 70) / 100; + } + if (bc === 'Y' && percent <= 80) { + blue1 = 0; + } else if ((bc === 'Y' && percent > 80) || (bc === 'R' && percent <= 60)) { + if (bc === 'Y') { + factor1 = (percent - 80) + 20.5; + } else { + factor1 = (percent + 20) + 20.5; + } + blue1 = (104 - (Math.sqrt(11236 - Math.pow(factor1, 2)))) / 100; + } else if ((bc === 'R' && percent > 60) || (bc === 'B' && percent <= 80)) { + if (bc === 'R') { + factor1 = (percent - 60) - 60; + } else { + factor1 = (percent + 40) - 60; + } + blue1 = ((Math.sqrt(10000 - Math.pow(factor1, 2))) - 10) / 100; + } else if ((bc === 'B' && percent > 80) || (bc === 'G' && percent <= 40)) { + if (bc === 'B') { + factor1 = (percent - 80) - 131; + } else { + factor1 = (percent + 20) - 131; + } + blue1 = (122 - (Math.sqrt(19881 - Math.pow(factor1, 2)))) / 100; + } else if (bc === 'G' && percent > 40) { + blue1 = 0; + } + if (bc === 'Y') { + green1 = (85 - 17 / 20 * percent) / 100; + } else if (bc === 'R' && percent <= 60) { + green1 = 0; + } else if (bc === 'R' && percent > 60) { + factor1 = (percent - 60) + 35; + green1 = (67.5 - (Math.sqrt(5776 - Math.pow(factor1, 2)))) / 100; + } else if (bc === 'B' && percent <= 60) { + factor1 = (1 * percent - 68.5); + green1 = (6.5 + (Math.sqrt(7044.5 - Math.pow(factor1, 2)))) / 100; + } else if ((bc === 'B' && percent > 60) || (bc === 'G' && percent <= 60)) { + green1 = 0.9; + } else if (bc === 'G' && percent > 60) { + factor1 = (percent - 60); + green1 = (90 - (1 / 8 * factor1)) / 100; + } + factor1 = (red1 + green1 + blue1) / 3; + red2 = ((factor1 - red1) * (100 - chroma1) / 100) + red1; + green2 = ((factor1 - green1) * (100 - chroma1) / 100) + green1; + blue2 = ((factor1 - blue1) * (100 - chroma1) / 100) + blue1; + if (red2 > green2 && red2 > blue2) { + max = red2; + } else if (green2 > red2 && green2 > blue2) { + max = green2; + } else if (blue2 > red2 && blue2 > green2) { + max = blue2; + } else { + max = (red2 + green2 + blue2) / 3; + } + factor2 = 1 / max; + r = parseInt((red2 * factor2 * (100 - black1) / 100) * 255, 10); + g = parseInt((green2 * factor2 * (100 - black1) / 100) * 255, 10); + b = parseInt((blue2 * factor2 * (100 - black1) / 100) * 255, 10); + if (r > 255) { r = 255; } + if (g > 255) { g = 255; } + if (b > 255) { b = 255; } + if (r < 0) { r = 0; } + if (g < 0) { g = 0; } + if (b < 0) { b = 0; } + } else { + grey = parseInt((1 - black / 100) * 255, 10); + if (grey > 255) { grey = 255; } + if (grey < 0) { grey = 0; } + r = grey; + g = grey; + b = grey; + } + return { + r: r, + g: g, + b: b + }; +} + +function rgbToHsl(r, g, b) { + var min, max, i, l, s, maxcolor, h, rgb = []; + rgb[0] = r / 255; + rgb[1] = g / 255; + rgb[2] = b / 255; + min = rgb[0]; + max = rgb[0]; + maxcolor = 0; + for (i = 0; i < rgb.length - 1; i++) { + if (rgb[i + 1] <= min) { min = rgb[i + 1]; } + if (rgb[i + 1] >= max) { max = rgb[i + 1]; maxcolor = i + 1; } + } + if (maxcolor == 0) { + h = (rgb[1] - rgb[2]) / (max - min); + } + if (maxcolor == 1) { + h = 2 + (rgb[2] - rgb[0]) / (max - min); + } + if (maxcolor == 2) { + h = 4 + (rgb[0] - rgb[1]) / (max - min); + } + if (isNaN(h)) { h = 0; } + h = h * 60; + if (h < 0) { h = h + 360; } + l = (min + max) / 2; + if (min == max) { + s = 0; + } else { + if (l < 0.5) { + s = (max - min) / (max + min); + } else { + s = (max - min) / (2 - max - min); + } + } + s = s; + return { h: h, s: s, l: l }; +} + +function rgbToHwb(r, g, b) { + var h, w, bl; + r = r / 255; + g = g / 255; + b = b / 255; + max = Math.max(r, g, b); + min = Math.min(r, g, b); + chroma = max - min; + if (chroma == 0) { + h = 0; + } else if (r == max) { + h = (((g - b) / chroma) % 6) * 360; + } else if (g == max) { + h = ((((b - r) / chroma) + 2) % 6) * 360; + } else { + h = ((((r - g) / chroma) + 4) % 6) * 360; + } + w = min; + bl = 1 - max; + return { h: h, w: w, b: bl }; +} + +function rgbToCmyk(r, g, b) { + var c, m, y, k; + r = r / 255; + g = g / 255; + b = b / 255; + max = Math.max(r, g, b); + k = 1 - max; + if (k == 1) { + c = 0; + m = 0; + y = 0; + } else { + c = (1 - r - k) / (1 - k); + m = (1 - g - k) / (1 - k); + y = (1 - b - k) / (1 - k); + } + return { c: c, m: m, y: y, k: k }; +} + +function toHex(n) { + var hex = n.toString(16); + while (hex.length < 2) { hex = "0" + hex; } + return hex; +} + +function cl(x) { + console.log(x); +} + +function w3trim(x) { + return x.replace(/^\\s+|\\s+$/g, ''); +} + +function isHex(x) { + return ('0123456789ABCDEFabcdef'.indexOf(x) > -1); +} + +if(typeof window === undefined) window.w3color = w3color; + +function w3SetColorsByAttribute() { +var z, i, att; +z = document.getElementsByTagName("*"); +for (i = 0; i < z.length; i++) { + att = z[i].getAttribute("data-w3-color"); + if (att) { + z[i].style.backgroundColor = w3color(att).toRgbString(); + } +} + +} +`; + +// assets/webpage.txt.js +var webpage_txt_default = ` +//#region Helpers + +function getAbsoluteRootPath() +{ + if (typeof rootPath == 'undefined') setupRootPath(document); + return new URL(window.location.href + "/../" + rootPath).pathname; +} + +function getURLPath(url = window.location.pathname) +{ + let absoluteRoot = getAbsoluteRootPath(); + let pathname = url.substring(absoluteRoot.length); + return pathname; +} + +function getURLRootPath(url = window.location.pathname) +{ + let path = getURLPath(url); + let splitPath = path.split("/"); + let rootPath = ""; + for (let i = 0; i < splitPath.length - 1; i++) + { + rootPath += "../"; + } + return rootPath; +} + +async function setTreeCollapsed(element, collapsed, animate = true) +{ + if (!element || !element.classList.contains("mod-collapsible")) return; + + let children = element.querySelector(".tree-item-children"); + + if (collapsed) + { + element.classList.add("is-collapsed"); + if(animate) slideUp(children, 100); + else children.style.display = "none"; + } + else + { + element.classList.remove("is-collapsed"); + if(animate) slideDown(children, 100); + else children.style.removeProperty("display"); + } +} + +async function setTreeCollapsedAll(elements, collapsed, animate = true) +{ + let childrenList = []; + elements.forEach(async element => + { + if (!element || !element.classList.contains("mod-collapsible")) return; + + let children = element.querySelector(".tree-item-children"); + + if (collapsed) + { + element.classList.add("is-collapsed"); + } + else + { + element.classList.remove("is-collapsed"); + } + + childrenList.push(children); + }); + + if (collapsed) + { + if(animate) slideUpAll(childrenList, 100); + else childrenList.forEach(async children => children.style.display = "none"); + } + else + { + if(animate) slideDownAll(childrenList, 100); + else childrenList.forEach(async children => children.style.removeProperty("display")); + } +} + +function toggleTreeCollapsed(element) +{ + if (!element) return; + setTreeCollapsed(element, !element.classList.contains("is-collapsed")); +} + +function toggleTreeCollapsedAll(elements) +{ + if (!elements) return; + setTreeCollapsedAll(elements, !elements[0].classList.contains("is-collapsed")); +} + +function getHeaderEl(headerDiv) +{ + let possibleChildHeader = headerDiv.firstChild; + let isHeader = false; + + while (possibleChildHeader != null) + { + isHeader = possibleChildHeader ? /[Hh][1-6]/g.test(possibleChildHeader.tagName) : false; + if (isHeader) break; + + possibleChildHeader = possibleChildHeader.nextElementSibling; + } + + return possibleChildHeader; +} + +function getPreviousHeader(headerDiv) +{ + let possibleParent = headerDiv.previousElementSibling; + let isHeader = false; + + while (possibleParent != null) + { + let possibleChildHeader = getHeaderEl(possibleParent); + isHeader = possibleChildHeader ? /[Hh][1-6]/g.test(possibleChildHeader.tagName) : false; + if (isHeader) break; + + possibleParent = possibleParent.previousElementSibling; + } + + return possibleParent; +} + +function setHeaderOpen(headerDiv, open, openParents = true) +{ + if(headerDiv.tagName != "DIV" || !getHeaderEl(headerDiv)) + { + console.error("setHeaderOpen() must be called with a header div"); + return; + } + + // let selector = getHeadingContentsSelector(header); + if (open) + { + headerDiv.classList.remove("is-collapsed"); + headerDiv.style.display = ""; + } + if (!open) + { + headerDiv.classList.add("is-collapsed"); + } + + let headerEl = getHeaderEl(headerDiv); + + let childHeaders = []; + + let possibleChild = headerDiv.nextElementSibling; + + // loop through next siblings showing/ hiding children until we reach a header of the same or lower level + while (possibleChild != null) + { + let possibleChildHeader = getHeaderEl(possibleChild); + + if(possibleChildHeader) + { + // if header is a sibling of this header then break + if (possibleChildHeader.tagName <= headerEl.tagName) break; + + // save child headers to be re closed afterwards + childHeaders.push(possibleChild); + } + + if (!open) possibleChild.style.display = "none"; + else possibleChild.style.display = ""; + + possibleChild = possibleChild.nextElementSibling; + } + + if(open) + { + // if we are opening the header then we need to make sure that all closed child headers stay closed + childHeaders.forEach(function(item) + { + if (item.classList.contains("is-collapsed")) + { + setHeaderOpen(item, false); + } + }); + + // if we are opening the header then we need to make sure that all parent headers are open + if (openParents) + { + let previousHeader = getPreviousHeader(headerDiv); + + while (previousHeader != null) + { + let previousHeaderEl = getHeaderEl(previousHeader); + + if (previousHeaderEl.tagName < headerEl.tagName) + { + // if header is a parent of this header then unhide + setHeaderOpen(previousHeader, true); + break; + } + + previousHeader = getPreviousHeader(previousHeader); + } + } + } +} + +let slideUp = (target, duration=500) => { + + target.style.transitionProperty = 'height, margin, padding'; + target.style.transitionDuration = duration + 'ms'; + target.style.boxSizing = 'border-box'; + target.style.height = target.offsetHeight + 'px'; + target.offsetHeight; + target.style.overflow = 'hidden'; + target.style.height = 0; + target.style.paddingTop = 0; + target.style.paddingBottom = 0; + target.style.marginTop = 0; + target.style.marginBottom = 0; + window.setTimeout(async () => { + target.style.display = 'none'; + target.style.removeProperty('height'); + target.style.removeProperty('padding-top'); + target.style.removeProperty('padding-bottom'); + target.style.removeProperty('margin-top'); + target.style.removeProperty('margin-bottom'); + target.style.removeProperty('overflow'); + target.style.removeProperty('transition-duration'); + target.style.removeProperty('transition-property'); + }, duration); +} + +let slideUpAll = (targets, duration=500) => { + + targets.forEach(async target => { + target.style.transitionProperty = 'height, margin, padding'; + target.style.transitionDuration = duration + 'ms'; + target.style.boxSizing = 'border-box'; + target.style.height = target.offsetHeight + 'px'; + target.offsetHeight; + target.style.overflow = 'hidden'; + target.style.height = 0; + target.style.paddingTop = 0; + target.style.paddingBottom = 0; + target.style.marginTop = 0; + target.style.marginBottom = 0; + }); + + window.setTimeout(async () => { + targets.forEach(async target => { + target.style.display = 'none'; + target.style.removeProperty('height'); + target.style.removeProperty('padding-top'); + target.style.removeProperty('padding-bottom'); + target.style.removeProperty('margin-top'); + target.style.removeProperty('margin-bottom'); + target.style.removeProperty('overflow'); + target.style.removeProperty('transition-duration'); + target.style.removeProperty('transition-property'); + }); + }, duration); +} + +let slideDown = (target, duration=500) => { + + target.style.removeProperty('display'); + let display = window.getComputedStyle(target).display; + if (display === 'none') display = 'block'; + target.style.display = display; + let height = target.offsetHeight; + target.style.overflow = 'hidden'; + target.style.height = 0; + target.style.paddingTop = 0; + target.style.paddingBottom = 0; + target.style.marginTop = 0; + target.style.marginBottom = 0; + target.offsetHeight; + target.style.boxSizing = 'border-box'; + target.style.transitionProperty = "height, margin, padding"; + target.style.transitionDuration = duration + 'ms'; + target.style.height = height + 'px'; + target.style.removeProperty('padding-top'); + target.style.removeProperty('padding-bottom'); + target.style.removeProperty('margin-top'); + target.style.removeProperty('margin-bottom'); + window.setTimeout(async () => { + target.style.removeProperty('height'); + target.style.removeProperty('overflow'); + target.style.removeProperty('transition-duration'); + target.style.removeProperty('transition-property'); + }, duration); +} + +let slideDownAll = (targets, duration=500) => { + + targets.forEach(async target => { + target.style.removeProperty('display'); + let display = window.getComputedStyle(target).display; + if (display === 'none') display = 'block'; + target.style.display = display; + let height = target.offsetHeight; + target.style.overflow = 'hidden'; + target.style.height = 0; + target.style.paddingTop = 0; + target.style.paddingBottom = 0; + target.style.marginTop = 0; + target.style.marginBottom = 0; + target.offsetHeight; + target.style.boxSizing = 'border-box'; + target.style.transitionProperty = "height, margin, padding"; + target.style.transitionDuration = duration + 'ms'; + target.style.height = height + 'px'; + target.style.removeProperty('padding-top'); + target.style.removeProperty('padding-bottom'); + target.style.removeProperty('margin-top'); + target.style.removeProperty('margin-bottom'); + }); + + window.setTimeout( async () => { + targets.forEach(async target => { + target.style.removeProperty('height'); + target.style.removeProperty('overflow'); + target.style.removeProperty('transition-duration'); + target.style.removeProperty('transition-property'); + }); + }, duration); +} + +var slideToggle = (target, duration = 500) => { + if (window.getComputedStyle(target).display === 'none') { + return slideDown(target, duration); + } else { + return slideUp(target, duration); + } +} + +var slideToggleAll = (targets, duration = 500) => { + if (window.getComputedStyle(targets[0]).display === 'none') { + return slideDownAll(targets, duration); + } else { + return slideUpAll(targets, duration); + } +} + +//#endregion + +async function loadDocument(url, pushHistory = true, scrollTo = true) +{ + console.log("Loading document: " + url); + + // change the active file + setActiveDocument(url, scrollTo, pushHistory); + + let response; + + // if(typeof embeddedDocuments == 'undefined') + // { + try + { + response = await fetch(url); + } + catch (error) + { + console.log("Cannot use fetch API (likely due to CORS), just loading the page normally."); + window.location.assign(url); + return; + } + // } + // else + // { + // response = new Response(embeddedDocuments[url], {status: 200, statusText: "OK"}); + // } + + let doc = document.implementation.createHTMLDocument(); + + if (response.ok) + { + let html = (await response.text()).replaceAll("", "").replaceAll("", "").replaceAll("", ""); + doc.documentElement.innerHTML = html; + + // copy document content and outline tree + document.querySelector(".document-container").innerHTML = doc.querySelector(".document-container").innerHTML; + document.querySelector(".outline-tree").innerHTML = doc.querySelector(".outline-tree").innerHTML; + + // if the url has a heading, scroll to it + let splitURL = url.split("#"); + let pathnameTarget = splitURL[0] ?? url; + let headingTarget = splitURL.length > 1 ? splitURL[1] : null; + if (headingTarget) document.getElementById(headingTarget).scrollIntoView(); + + // Change the root path to match the match from the new page + setupRootPath(doc); + + // initialize events on the new page + initializePage(document.querySelector(".document-container")); + initializePage(document.querySelector(".outline-tree")); + + document.title = doc.title; + } + else + { + // if the page is not able to load instead add a header saying the page doesn't exist + document.querySelector(".markdown-preview-view").innerHTML = + \` +
    +
    +

    Page Not Found

    +
    +
    + \`; + + document.querySelector(".outline-tree").innerHTML = ""; + + console.log("Page not found: " + getAbsoluteRootPath() + url); + let newRootPath = getURLRootPath(getAbsoluteRootPath() + url); + rootPath = newRootPath; + document.querySelector("base").href = newRootPath; + + document.title = "Page Not Found"; + } + + return doc; +} + +function setActiveDocument(url, scrollTo = true, pushHistory = true) +{ + let pathnameTarget = url.split("#")[0] ?? url; // path with no header + + // switch active file in file tree + document.querySelector(".tree-item.mod-active")?.classList.remove("mod-active"); + let treeItems = Array.from(document.querySelectorAll(".tree-item > .tree-item-contents > .tree-item-link")); + let treeItem = undefined; + for (let item of treeItems) + { + if (item.getAttribute("href") == url) + { + let parent = item.parentElement.parentElement; + + parent.classList.add("mod-active"); + treeItem = parent; + + while (parent.hasAttribute("data-depth")) + { + setTreeCollapsed(parent, false, false); + parent = parent.parentElement.parentElement; + } + + continue; + } + } + + if(scrollTo) treeItem?.scrollIntoView({block: "center", inline: "nearest"}); + + // set the active file in th graph view + if(typeof nodes != 'undefined' && window.renderWorker) + { + let activeNode = nodes?.paths.findIndex(function(item) { return item.endsWith(pathnameTarget); }) ?? -1; + + if(activeNode >= 0) + { + window.renderWorker.activeNode = activeNode; + } + } + + if(pushHistory && window.location.protocol != "file:") window.history.pushState({ path: pathnameTarget }, '', pathnameTarget); +} + +//#region Initialization +function setupThemeToggle(setupOnNode) +{ + if (localStorage.getItem("theme_toggle") != null) + { + setThemeToggle(localStorage.getItem("theme_toggle") == "true"); + } + + // var lastScheme = "theme-dark"; + // change theme to match current system theme + // if (localStorage.getItem("theme_toggle") == null && window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) + // { + // setThemeToggle(true); + // lastScheme = "theme-light"; + // } + // if (localStorage.getItem("theme_toggle") == null && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) + // { + // setThemeToggle(true); + // lastScheme = "theme-dark"; + // } + + // set initial toggle state based on body theme class + if (document.body.classList.contains("theme-light")) + { + setThemeToggle(true); + } + else + { + setThemeToggle(false); + } + + function setThemeToggle(state, instant = false) + { + let toggle = document.querySelector(".theme-toggle-input"); + + toggle.checked = state; + + if (instant) + { + var oldTransition = document.body.style.transition; + document.body.style.transition = "none"; + } + + if(!toggle.classList.contains("is-checked") && state) + { + toggle.classList.add("is-checked"); + } + else if (toggle.classList.contains("is-checked") && !state) + { + toggle.classList.remove("is-checked"); + } + + if(!state) + { + if (document.body.classList.contains("theme-light")) + { + document.body.classList.remove("theme-light"); + } + + if (!document.body.classList.contains("theme-dark")) + { + document.body.classList.add("theme-dark"); + } + } + else + { + if (document.body.classList.contains("theme-dark")) + { + document.body.classList.remove("theme-dark"); + } + + if (!document.body.classList.contains("theme-light")) + { + document.body.classList.add("theme-light"); + } + } + + if (instant) + { + setTimeout(function() + { + document.body.style.transition = oldTransition; + }, 100); + } + + localStorage.setItem("theme_toggle", state ? "true" : "false"); + } + + setupOnNode.querySelector(".theme-toggle-input")?.addEventListener("change", event => + { + console.log("Theme toggle changed to: " + !(localStorage.getItem("theme_toggle") == "true")); + setThemeToggle(!(localStorage.getItem("theme_toggle") == "true")); + }); + + // window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => + // { + // // return if we are printing + // if (window.matchMedia('print').matches) + // { + // printing = true; + // return; + // } + + // let newColorScheme = event.matches ? "theme-dark" : "theme-light"; + + // if (newColorScheme == lastScheme) return; + + // if (newColorScheme == "theme-dark") + // { + // setThemeToggle(false); + // } + + // if (newColorScheme == "theme-light") + // { + // setThemeToggle(true); + // } + + // lastScheme = newColorScheme; + // }); + +} + +function setupHeaders(setupOnNode) +{ + // MAKE HEADERS COLLAPSIBLE + setupOnNode.querySelectorAll(".heading-collapse-indicator").forEach(function (element) + { + element.addEventListener("click", function () + { + var isOpen = !this.parentElement.parentElement.classList.contains("is-collapsed"); + setHeaderOpen(this.parentElement.parentElement, !isOpen); + }); + }); + + // unfold header when an internal link that points to that header is clicked + setupOnNode.querySelectorAll("a.internal-link, a.tree-item-link").forEach(function (element) + { + element.addEventListener("click", function (event) + { + event.preventDefault(); + let target = this.getAttribute("href"); + + // if the target is a header uncollapse it + if (target.startsWith("#")) + { + console.log("Uncollapsing header: " + target); + let header = document.getElementById(target.substring(1)); + setHeaderOpen(header.parentElement, true); + } + }); + }); +} + +function setupTrees(setupOnNode) +{ + const fileTreeItems = Array.from(setupOnNode.querySelectorAll(".tree-container.file-tree .tree-item")); + + setupOnNode.querySelectorAll(".tree-item-contents > .collapse-icon").forEach(function(item) + { + item.addEventListener("click", function() + { + toggleTreeCollapsed(item.parentElement.parentElement); + }); + }); + + let fileTreeCollapse = setupOnNode.querySelector(".tree-container.file-tree .collapse-tree-button"); + if (fileTreeCollapse) fileTreeCollapse.addEventListener("click", async function() + { + let fileTreeIsCollapsed = fileTreeCollapse.classList.contains("is-collapsed"); + + setTreeCollapsedAll(fileTreeItems, !fileTreeIsCollapsed, fileTreeItems.length < 100); + + fileTreeCollapse.classList.toggle("is-collapsed"); + fileTreeCollapse.querySelector("iconify-icon").setAttribute("icon", fileTreeIsCollapsed ? "ph:arrows-out-line-horizontal-bold" : "ph:arrows-in-line-horizontal-bold"); + }); + + + let outlineTreeCollapse = setupOnNode.querySelector(".tree-container.outline-tree .collapse-tree-button"); + if(outlineTreeCollapse) outlineTreeCollapse.addEventListener("click", async function() + { + let outlineTreeIsCollapsed = outlineTreeCollapse.classList.contains("is-collapsed"); + + let items = Array.from(outlineTreeCollapse.parentElement.parentElement.querySelectorAll(".tree-item")); + setTreeCollapsedAll(items, !outlineTreeIsCollapsed, items.length < 100); + + outlineTreeCollapse.classList.toggle("is-collapsed"); + outlineTreeCollapse.querySelector("iconify-icon").setAttribute("icon", outlineTreeIsCollapsed ? "ph:arrows-out-line-horizontal-bold" : "ph:arrows-in-line-horizontal-bold"); + }); + + // start with all closed + setupOnNode.querySelectorAll(".tree-container .tree-item").forEach(function(item) + { + if (item.classList.contains("is-collapsed")) setTreeCollapsed(item, true, false); + }); + + // make sure the icons match their starting collaped state + setupOnNode.querySelectorAll(".tree-container > .tree-header > .collapse-tree-button").forEach(function(item) + { + if (item.classList.contains("is-collapsed")) + { + item.querySelector("iconify-icon").setAttribute("icon", "ph:arrows-out-line-horizontal-bold"); + } + else + { + item.querySelector("iconify-icon").setAttribute("icon", "ph:arrows-in-line-horizontal-bold"); + } + }); +} + +function setupCallouts(setupOnNode) +{ + // MAKE CALLOUTS COLLAPSIBLE + // if the callout title is clicked, toggle the display of .callout-content + setupOnNode.querySelectorAll(".callout.is-collapsible .callout-title").forEach(function (element) + { + element.addEventListener("click", function () + { + var parent = this.parentElement; + var isCollapsed = parent.classList.contains("is-collapsed"); + + parent.classList.toggle("is-collapsed"); + element.querySelector(".callout-fold").classList.toggle("is-collapsed"); + + slideToggle(parent.querySelector(".callout-content"), 100); + }); + }); + +} + +function setupCheckboxes(setupOnNode) +{ + // Fix checkboxed toggling .is-checked + setupOnNode.querySelectorAll(".task-list-item-checkbox").forEach(function (element) + { + element.addEventListener("click", function () + { + var parent = this.parentElement; + parent.classList.toggle("is-checked"); + parent.setAttribute("data-task", parent.classList.contains("is-checked") ? "x" : " "); + }); + }); + + setupOnNode.querySelectorAll(\`.plugin-tasks-list-item input[type="checkbox"]\`).forEach(function(checkbox) + { + checkbox.checked = checkbox.parentElement.classList.contains("is-checked"); + }); + + setupOnNode.querySelectorAll('.kanban-plugin__item.is-complete').forEach(function(checkbox) + { + checkbox.querySelector('input[type="checkbox"]').checked = true; + }); +} + +function setupCanvas(setupOnNode) +{ + let focusedNode = null; + + // make canvas nodes selectable + setupOnNode.querySelectorAll(".canvas-node-content-blocker").forEach(function (element) + { + element.addEventListener("click", function () + { + var parent = this.parentElement.parentElement; + parent.classList.toggle("is-focused"); + this.style.display = "none"; + + if (focusedNode) + { + focusedNode.classList.remove("is-focused"); + focusedNode.querySelector(".canvas-node-content-blocker").style.display = ""; + } + + focusedNode = parent; + }); + }); + + // make canvas node deselect when clicking outside + // document.addEventListener("click", function (event) + // { + // if (!event.target.closest(".canvas-node")) + // { + // document.querySelectorAll(".canvas-node").forEach(function (node) + // { + // node.classList.remove("is-focused"); + // node.querySelector(".canvas-node-content-blocker").style.display = ""; + // }); + // } + // }); + +} + +function setupCodeblocks(setupOnNode) +{ + // make code snippet block copy button copy the code to the clipboard + setupOnNode.querySelectorAll(".copy-code-button").forEach(function (element) + { + element.addEventListener("click", function () + { + var code = this.parentElement.querySelector("code").textContent; + navigator.clipboard.writeText(code); + this.textContent = "Copied!"; + // set a timeout to change the text back + setTimeout(function () + { + setupOnNode.querySelectorAll(".copy-code-button").forEach(function (button) + { + button.textContent = "Copy"; + }); + }, 2000); + }); + }); +} + +function setupLinks(setupOnNode) +{ + setupOnNode.querySelectorAll(".internal-link, .footnote-link, .tree-item-link").forEach(function(link) + { + link.addEventListener("click", function(event) + { + let target = link.getAttribute("href"); + event.preventDefault(); + + // this is linking to a different page + if (!target.startsWith("#")) + { + // load doc, if it is a tree link then don't scroll to the active doc in the file tree + loadDocument(target, true, !link.classList.contains("tree-item-link")); + return; + } + else + { + let headerTarget = document.getElementById(target.substring(1)); + setHeaderOpen(headerTarget.parentElement, true); + headerTarget.scrollIntoView(); + } + }); + }); + + window.onpopstate = function(event) + { + loadDocument(getURLPath(), false); + } +} + + +let sidebarWidth = undefined; +let lineWidth = undefined; +function setupResize(setupOnNode) +{ + if (setupOnNode != document) return; + + function updateSidebars() + { + let rightSidebar = document.querySelector(".sidebar-right"); + let leftSidebar = document.querySelector(".sidebar-left"); + let sidebarCount = (rightSidebar ? 1 : 0) + (leftSidebar ? 1 : 0); + + if (sidebarCount == 0) return; + + if(!sidebarWidth) sidebarWidth = Math.max(rightSidebar?.clientWidth, leftSidebar?.clientWidth); + + if (!lineWidth) + { + let docWidthTestEl = document.createElement("div"); + document.querySelector(".markdown-preview-view").appendChild(docWidthTestEl); + docWidthTestEl.style.width = "var(--line-width)"; + docWidthTestEl.style.minWidth = "var(--line-width)"; + docWidthTestEl.style.maxWidth = "var(--line-width)"; + lineWidth = docWidthTestEl.clientWidth; + docWidthTestEl.remove(); + } + + let letHideRightThreshold = sidebarWidth * sidebarCount + lineWidth / 2; + + if (window.innerWidth < letHideRightThreshold) + { + rightSidebar.style.display = "none"; + } + else + { + rightSidebar.style.display = ""; + } + + let letHideLeftThreshold = lineWidth / 2 + sidebarWidth; + + if (window.innerWidth < letHideLeftThreshold) + { + leftSidebar.style.display = "none"; + } + else + { + leftSidebar.style.display = ""; + } + } + + window.addEventListener("resize", function() + { + updateSidebars(); + }); + + updateSidebars(); +} + +function setupRootPath(fromDocument) +{ + let basePath = fromDocument.querySelector("#root-path").getAttribute("root-path"); + document.querySelector("base").href = basePath; + document.querySelector("#root-path").setAttribute("root-path", basePath); + rootPath = basePath; +} + +let touchDrag = false; + +function initializePage(setupOnNode) +{ + setupThemeToggle(setupOnNode); + setupHeaders(setupOnNode); + setupTrees(setupOnNode); + setupCallouts(setupOnNode); + setupCheckboxes(setupOnNode); + setupCanvas(setupOnNode); + setupCodeblocks(setupOnNode); + setupLinks(setupOnNode); + setupResize(setupOnNode); + + setupOnNode.querySelectorAll("*").forEach(function(element) + { + element.addEventListener("touchend", function(event) + { + if (touchDrag) + { + touchDrag = false; + event.stopPropagation(); + return; + } + + if (element instanceof HTMLElement) element.click(); + }); + }); + + if(setupOnNode == document) + { + document.body.addEventListener("touchmove", function(event) + { + event.stopImmediatePropagation(); + touchDrag = true; + }); + + setupRootPath(document); + setActiveDocument(getURLPath()); + } +} + +function initializeForFileProtocol() +{ + let graphEl = document.querySelector(".graph-view-placeholder"); + if(graphEl) + { + console.log("Running locally, skipping graph view initialization and hiding graph."); + graphEl.style.display = "none"; + graphEl.previousElementSibling.style.display = "none"; // hide the graph's header + } +} + +//#endregion + +window.onload = function() +{ + if (window.location.protocol == "file:") initializeForFileProtocol(); + initializePage(document); +}`; + +// assets/obsidian-styles.txt.css +var obsidian_styles_txt_default = `.callout +{ + mix-blend-mode: normal !important; +} + +@media print +{ + + html body> :not(.print) + { + display: unset !important; + } + + .collapse-indicator + { + display: none !important; + } + + .is-collapsed > element > .collapse-indicator + { + display: unset !important; + } +} + +.list-collapse-indicator +{ + display: none !important; +} + +@font-face +{ + font-family: MJXZERO; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-B; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-I; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-MI; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-BI; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-S1; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-S2; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-S3; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-S4; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-A; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-C; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-CB; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-FR; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-FRB; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-SS; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-SSB; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-SSI; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-SC; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-T; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-V; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff") format("woff"); +} + +@font-face +{ + font-family: MJXTEX-VB; + src: url("https://publish.obsidian.md/lib/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff") format("woff"); +} + +@font-face { + font-family: 'Avenir Next'; + font-weight: normal; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/94f2f163d4b698242fef.otf'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/72505e6a122c6acd5471.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/2d5198822ab091ce4305.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 400; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/c8ba52b05a9ef10f4758.woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 400; + font-style: italic; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/cb10ffd7684cd9836a05.woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 600; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/b5f0f109bc88052d4000.woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 800; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/cbe0ae49c52c920fd563.woff2'); +} + +@font-face { + font-family: 'Inter'; + font-weight: 800; + font-style: italic; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/535a6cf662596b3bd6a6.woff2'); +} + +@font-face { + font-family: 'Source Code Pro'; + font-weight: normal; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/70cc7ff27245e82ad414.ttf'); +} + +@font-face { + font-family: 'Source Code Pro'; + font-weight: normal; + font-style: italic; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/454577c22304619db035.ttf'); +} + +@font-face { + font-family: 'Source Code Pro'; + font-weight: bold; + font-style: normal; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/52ac8f3034507f1d9e53.ttf'); +} + +@font-face { + font-family: 'Source Code Pro'; + font-weight: bold; + font-style: italic; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/05b618077343fbbd92b7.ttf'); +} + +@font-face { + font-family: 'Flow Circular'; + font-display: swap; + src: url('https://publish.obsidian.md/public/fonts/853ff76f08786ae44ca0.woff'); +} + +.collapse-icon::before +{ + /* content: "\u200B" !important; */ + content: "" !important; + visibility: hidden !important; +} +`; + +// assets/plugin-styles.txt.css +var plugin_styles_txt_default = `/*#region Code Copy */ + +/* Make code block copy button fade in and out */ +.markdown-rendered pre:not(:hover) > button.copy-code-button +{ + display: unset; + opacity: 0; +} + +.markdown-rendered pre:hover > button.copy-code-button +{ + opacity: 1; +} + +.markdown-rendered pre button.copy-code-button +{ + transition: opacity 0.2s ease-in-out, width 0.3s ease-in-out, background-color 0.2s ease-in-out; + text-overflow: clip; +} + +.markdown-rendered pre > button.copy-code-button:hover +{ + background-color: var(--interactive-normal); +} + +.markdown-rendered pre > button.copy-code-button:active +{ + background-color: var(--interactive-hover); + box-shadow: var(--input-shadow); + transition: none; +} + +/*#endregion */ + +/*#region Canvas */ +.canvas-card-menu { + display: none; + cursor: default !important; + +} + +.canvas-controls { + display: none; + cursor: default !important; + +} + +.canvas-node-connection-point +{ + display: none; + cursor: default !important; + +} + +.canvas-menu-container { + display: none; +} + +.canvas-node-content-blocker +{ + display: none; + cursor: pointer !important; +} + +.canvas-wrapper +{ + position: relative; + cursor: default !important; +} + +.canvas-node-resizer +{ + cursor: default !important; +} + +.canvas-node-container +{ + cursor: default !important; +} + +/*#endregion */ + +/*#region Sidebars */ + +.sidebar { + background-color: var(--background-secondary); + flex: 1 0 min-content; + display: flex; + align-items: flex-start; + font-size: 14px; +} + +.sidebar-section-header +{ + margin: 0em 0 0em var(--sidebar-margin); + text-transform: uppercase; + letter-spacing: 0.06em; + font-weight: 600; +} + +.sidebar-content { + width: var(--sidebar-width); + line-height: var(--line-height-tight); + display: flex; + flex-direction: column; + padding: 10px; + padding-bottom: 0; + height: 100%; +} + +.sidebar-scroll-area +{ + width: 100%; + height: 100%; + line-height: var(--line-height-tight); + display: flex; + flex-direction: column; + overflow-y: scroll; +} + +.sidebar-left +{ + border-right: 1px dashed var(--divider-color); + z-index: 1000; + align-items: flex-end; + flex-direction: row-reverse; +} + +.sidebar-right +{ + border-left: 1px dashed var(--divider-color); + z-index: 1000; + align-items: flex-start; + flex-direction: row; +} + +@media print +{ + .sidebar, .outline-container, .theme-toggle-container, .theme-toggle-container-inline, .toggle-background, .theme-toggle-input + { + display: none !important; + } +} + +/*#endregion */ + +/*#region Content / Markdown Preview View */ + +.webpage-container { + background-color: var(--background-primary); + display: flex; + flex-direction: row; + height: 100%; + width: 100%; + align-items: stretch; + position: fixed; +} + +.document-container +{ + flex-basis: var(--content-width); +} + +.markdown-reading-view +{ + align-self: center; + -ms-flex-align: center; + width: 100%; +} + +.markdown-preview-view +{ + display: flex; + width: 100%; + max-width: 100%; + padding-bottom: 30em; + align-items: flex-start; + justify-content: center; +} + +.document-container > .markdown-preview-view > .markdown-preview-sizer +{ + padding: unset; + width: unset; + height: unset; + margin: unset; + max-width: unset; + min-height: unset; + max-width: var(--line-width); + flex-basis: var(--line-width); +} + +/*#endregion */ + +/*#region Kanban */ + +.markdown-preview-view.kanban-plugin__markdown-preview-view { + font-family: var(--font-text, var(--default-font)); + font-size: .875rem; + line-height: var(--line-height-tight); + padding: unset; + width: unset; + height: unset; + position: unset; + overflow-y: unset; + overflow-wrap: unset; + color: unset; + user-select: unset; + -webkit-user-select: unset; +} + +.kanban-plugin__item-button-wrapper, .kanban-plugin__lane-grip, .kanban-plugin__lane-settings-button.clickable-icon, .kanban-plugin__item-postfix-button.clickable-icon +{ + display: none; +} + +/*#endregion */ + +/*#region Tree */ + +/* Base tree */ +.tree-container +{ + /* padding-bottom: 12px; */ + /* margin: 12px; */ + /* height: 100%; */ + /* position: relative; */ + /* display: contents; */ + position: relative; + height: 100%; + width: auto; + margin: var(--sidebar-margin); + margin-top: 3em; + margin-bottom: 0; +} + +.tree-container .tree-header +{ + display: flex; + flex-direction: row; + align-items: center; + position: absolute; + top: -3em; +} + +.tree-container .tree-header .sidebar-section-header +{ + margin: 1em; + margin-left: 0; +} + +.tree-container:has(.tree-scroll-area:empty) +{ + display: none; +} + +.tree-container .tree-scroll-area +{ + width: 100%; + height: 100%; + max-height: 100%; + overflow-y: scroll; + padding: 1em; + padding-right: calc(1em + var(--sidebar-margin)); + padding-bottom: 3em; + border-radius: var(--radius-m); + position: absolute; +} + +.tree-container .tree-item +{ + display: flex; + flex-direction: column; + align-items: flex-start; + padding: 0; +} + +.tree-container .tree-item-children +{ + padding: 0; + margin-left: 0; + border-left: none; + width: 100%; +} + +.tree-container .tree-item.mod-active > .tree-item-contents > .tree-item-link +{ + color: var(--color-accent); +} + +.tree-container .tree-item-contents { + position: relative; + display: flex; + flex-direction: row; + align-items: center; + border-radius: 0.4em; + color: var(--nav-item-color); + width: 100%; + margin-left: var(--tree-horizontal-spacing); +} + +.tree-container .tree-item-contents:active +{ + color: var(--nav-item-color-active); +} + +.tree-container a.tree-item-link +{ + width: 100%; + height: 100%; + transition: background-color 0.1s; + border-radius: var(--radius-s); + padding-left: calc(var(--tree-horizontal-spacing) + var(--collapse-arrow-size)/2 + 1px); + padding-bottom: calc(var(--tree-vertical-spacing) / 2); + padding-top: calc(var(--tree-vertical-spacing) / 2); + color: var(--nav-item-color); + text-decoration: none; +} + +.tree-container .tree-item-icon.collapse-icon { + display: flex; + justify-content: flex-start; + align-items: center; + border-radius: var(--radius-s); + transition: background-color 0.1s; + position: absolute; + height: 100%; +} + +.tree-container .tree-item.mod-tree-folder > .tree-item-contents > .tree-item-icon.collapse-icon +{ + width: 100%; +} + +.collapse-icon > svg { + color: unset !important; +} + +.collapse-icon:hover +{ + color: var(--nav-item-color-hover); +} + +.tree-container a.tree-item-link:hover +{ + cursor: pointer; + color: var(--nav-item-color-hover); + text-decoration: underline; +} + +/* Indentation guide */ + +.tree-container > .tree-scroll-area > * .tree-item +{ + margin-left: calc(var(--tree-horizontal-spacing) + var(--collapse-arrow-size) / 2 + 1px); + border-left: var(--nav-indentation-guide-width) solid var(--nav-indentation-guide-color); +} + +.tree-container .tree-scroll-area > * > * > .tree-item +{ + margin-left: calc(var(--collapse-arrow-size) / 2 + 1px); +} + +.tree-container .tree-item.mod-active +{ + border-left: var(--nav-indentation-guide-width) solid var(--color-accent); +} + + +.tree-container .tree-item:hover:not(.mod-active):not(.mod-collapsible):not(:has(.tree-item:hover)) /* Hover */ +{ + border-left: var(--nav-indentation-guide-width) solid var(--nav-item-color-hover); +} + +.webpage-container .tree-container .tree-item:not(.mod-collapsible) > .tree-item-children > .tree-item, +.webpage-container .tree-container > .tree-scroll-area > .tree-item, +.webpage-container .tree-container:not(.mod-nav-indicator) .tree-item +{ + border-left: none !important; +} + +.webpage-container .tree-container .tree-item:not(.mod-collapsible) > .tree-item-children > .tree-item > .tree-item-contents, +.webpage-container .tree-container:not(.mod-nav-indicator) .tree-item .tree-item-contents, +.webpage-container .tree-container > .tree-scroll-area > .tree-item > .tree-item-contents +{ + margin-left: 0 !important; +} + +/* Special */ + +.tree-container.outline-tree .tree-item[data-depth='1'] > .tree-item-contents > .tree-item-link +{ + font-weight: 900; + font-size: 1.1em; + margin-left: 0; +} + +.tree-container .tree-item.is-collapsed > .tree-item-contents > .tree-item-icon.collapse-icon > svg +{ + transition: transform 0.1s ease-in-out; + transform: rotate(-90deg); +} + + + +/*#endregion */ + +/*#region Headers */ + +.collapse-icon svg.svg-icon { + color: var(--nav-collapse-icon-color); + stroke-width: 4px; + width: var(--collapse-arrow-size); + height: var(--collapse-arrow-size); + transition: transform 100ms ease-in-out 0s; + min-width: 10px; + min-height: 10px; +} + +div.is-collapsed > * > .heading-collapse-indicator.collapse-icon > svg +{ + transition: transform 0.1s ease-in-out; + transform: rotate(-90deg); +} + +/*#endregion */ + +/*#region Text Wrapping */ +a { + overflow-wrap: anywhere; +} + +* +{ + overflow-wrap: break-word; +} + +/*#endregion */ + +/*#region Obsidian Columns Plugin */ +.columnParent { + display: flex; + padding: 15px 20px; + flex-wrap: wrap; + gap: 20px; +} + +.columnParent { + white-space: normal; +} + +.columnChild { + flex-grow: 1; + flex-basis: 0px; +} +/*#endregion */ + +/*#region Theme Toggle */ + +.theme-toggle-container { + --toggle-width: 50px; + --toggle-height: 23px; + --border-radius: calc(var(--toggle-height) / 2); + --handle-width: calc(var(--toggle-height) * 0.65); + --handle-radius: calc(var(--handle-width) / 2); + --handle-margin: calc((var(--toggle-height) / 2.0) - var(--handle-radius)); + --handle-translation: calc(var(--toggle-width) - var(--handle-width) - (var(--handle-margin) * 2)); + + display: inline-block; + cursor: pointer; + margin: 10px; +} + +/* animation to expand width, move handle, then contract width */ +@keyframes toggle-slide-right +{ + 0% + { + width: var(--handle-width); + transform: translateX(0); + } + 50% + { + width: calc(var(--toggle-width) * 0.5); + } + 90% + { + width: var(--handle-width); + } + 100% + { + transform: translateX(var(--handle-translation)); + } +} + +@keyframes toggle-slide-left +{ + 0% + { + width: var(--handle-width); + transform: translateX(calc(var(--handle-translation) - ((var(--toggle-width) * 0.33) - var(--handle-width)))); + } + 70% + { + width: calc(var(--toggle-width) * 0.5); + } + 100% + { + width: var(--handle-width); + transform: translateX(0); + } +} + +/* just exapnd and contract */ +@keyframes toggle-expand-right +{ + 0% + { + width: var(--handle-width); + } + 100% + { + width: calc(var(--toggle-width) * 0.33); + } +} + +@keyframes toggle-expand-left +{ + 0% + { + width: var(--handle-width); + transform: translateX(var(--handle-translation)); + } + 100% + { + width: calc(var(--toggle-width) * 0.33); + transform: translateX(calc(var(--handle-translation) - ((var(--toggle-width) * 0.33) - var(--handle-width)))); + } +} + +@keyframes toggle-contract +{ + 0% + { + width: calc(var(--toggle-width) * 0.33); + } + 100% + { + width: var(--handle-width); + } +} + +.theme-toggle-input { + display: none; + z-index: 1000; +} + +/* Fill in dark mode / default */ +.toggle-background { + position: relative; + width: var(--toggle-width); + height: var(--toggle-height); + border-radius: var(--border-radius); + background-color: var(--background-modifier-border); + + transition: background-color 0.2s; + z-index: 1000; + + /* box-shadow: inset 0px 0px 100px -70px var(--color-accent); */ +} + +/* Handle default */ +.toggle-background::before +{ + content: ""; + position: absolute; + left: var(--handle-margin); + top: var(--handle-margin); + height: var(--handle-width); + width: var(--handle-width); + + border-radius: var(--handle-radius); + background-color: var(--text-normal); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + animation: toggle-slide-left 0.2s ease-in-out normal both; + + z-index: 1000; +} + +/* handle light*/ +.theme-toggle-input:checked ~ .toggle-background::before +{ + animation: toggle-slide-right 0.2s ease-in-out normal both; +} + +.theme-toggle-input:active ~ .toggle-background::before +{ + animation: toggle-expand-right 0.2s ease-in-out normal both; +} + +.theme-toggle-input:active:checked ~ .toggle-background::before +{ + animation: toggle-expand-left 0.2s ease-in-out normal both; +} + +/* sun moon icon icon default */ +.toggle-background::after +{ + content: ""; + position: absolute; + right: var(--handle-margin); + top: calc(var(--handle-margin)); + height: var(--handle-width); + width: var(--handle-width); + transition: transform 0.3s; + background: url('https://api.iconify.design/lucide/moon.svg?color=white') no-repeat center center; + transform: scale(0.9); +} + +/* sun moon icon icon light */ +.theme-toggle-input:checked ~ .toggle-background::after +{ + transform: translateX(calc(var(--handle-translation) * -1)) scale(0.9); + background: url('https://api.iconify.design/lucide/sun.svg') no-repeat center center; +} + +/*#endregion */ + +/*#region Graph View */ +#graph-canvas +{ + width: 100%; + height: 100%; + border: 1px solid var(--modal-border-color); + border-radius: var(--modal-radius); + aspect-ratio: 1/1; +} + +.graph-view-container.expanded +{ + position: fixed; + width: 60%; + height: 90%; + right: 20%; + top: 5%; + background-color: var(--background-secondary); + z-index: 1000; +} + +.graph-view-container +{ + position: relative; + width: 100%; + aspect-ratio: 1/1; + display: flex; +} + +.graph-icon +{ + cursor: pointer; + color: var(--text-muted); +} + +.graph-view-container .graph-icon > svg +{ + width: 24px; + height: 24px; + + background-color: var(--color-base-00); + outline-width: 6px; + outline-color: var(--color-base-00); + outline-offset: -1px; + outline-style: solid; + border-radius: 100px; + margin: 10px; +} + +.graph-view-placeholder +{ + padding: 0; + width: auto; + aspect-ratio: 1/1; + position: relative; + flex: none; + margin: var(--sidebar-margin); +} + +.graph-view-placeholder:has(.expanded) +{ + border-radius: var(--modal-radius); + border: 1px solid var(--modal-border-color); +} + +.scale-down +{ + transition: transform 0.2s ease-in-out; + transform: scale(0.9); +} + +.scale-up +{ + transition: transform 0.2s ease-in-out; + transform: scale(1); +} + +.graph-expand +{ + position: absolute; + top: 5px; + right: 5px; +} + + + +/*#endregion */ + +/*#region Tweaks */ + +hr +{ + border: none; + border-top: var(--hr-thickness) solid; + border-color: var(--hr-color); +} + +.markdown-embed-link +{ + display: none; +} + +/*#endregion */ +`; + +// scripts/utils/downloadable.ts +var Downloadable = class { + constructor(filename, content, vaultRelativeDestination, encoding = "utf8") { + if (vaultRelativeDestination.isFile) + throw new Error("vaultRelativeDestination must be a folder: " + vaultRelativeDestination.asString); + this.filename = filename; + this.content = content; + this.relativeDownloadPath = vaultRelativeDestination; + this.encoding = encoding; + } + async download(downloadDirectory) { + let data = this.content instanceof Buffer ? this.content : Buffer.from(this.content.toString(), this.encoding); + let writePath = this.relativeDownloadPath.absolute(downloadDirectory).joinString(this.filename); + await writePath.writeFile(data, this.encoding); + } +}; + +// scripts/html-generation/asset-handler.ts +var _AssetHandler = class { + static async initialize(pluginID) { + this.vaultPluginsPath = Path.vaultPath.joinString(app.vault.configDir, "plugins/").makeAbsolute(); + this.thisPluginPath = this.vaultPluginsPath.joinString(pluginID + "/").makeAbsolute(); + await this.loadAppStyles(); + this.webpageStyles = plugin_styles_txt_default; + this.webpageJS = webpage_txt_default; + this.graphViewJS = graph_view_txt_default; + this.graphWASMJS = graph_wasm_txt_default; + this.renderWorkerJS = graph_render_worker_txt_default; + this.tinyColorJS = tinycolor_txt_default; + this.graphWASM = Buffer.from(graph_wasm_default); + this.updateAssetCache(); + } + static async getDownloads() { + let toDownload = []; + if (!ExportSettings.settings.inlineCSS) { + let pluginCSS = this.webpageStyles; + let thirdPartyPluginCSS = await this.getPluginStyles(); + pluginCSS += "\n" + thirdPartyPluginCSS + "\n"; + let appcssDownload = new Downloadable("obsidian-styles.css", this.appStyles, this.cssFolderName); + let plugincssDownload = new Downloadable("plugin-styles.css", pluginCSS, this.cssFolderName); + let themecssDownload = new Downloadable("theme.css", this.themeStyles, this.cssFolderName); + let snippetsDownload = new Downloadable("snippets.css", this.snippetStyles, this.cssFolderName); + toDownload.push(appcssDownload); + toDownload.push(plugincssDownload); + toDownload.push(themecssDownload); + toDownload.push(snippetsDownload); + } + if (!ExportSettings.settings.inlineJS) { + let webpagejsDownload = new Downloadable("webpage.js", this.webpageJS, this.jsFolderName); + toDownload.push(webpagejsDownload); + } + if (ExportSettings.settings.includeGraphView) { + let graphWASMDownload = new Downloadable("graph_wasm.wasm", this.graphWASM, this.jsFolderName); + let renderWorkerJSDownload = new Downloadable("graph-render-worker.js", this.renderWorkerJS, this.jsFolderName); + let graphWASMJSDownload = new Downloadable("graph_wasm.js", this.graphWASMJS, this.jsFolderName); + let graphViewJSDownload = new Downloadable("graph_view.js", this.graphViewJS, this.jsFolderName); + let tinyColorJS = new Downloadable("tinycolor.js", this.tinyColorJS, this.jsFolderName); + toDownload.push(renderWorkerJSDownload); + toDownload.push(graphWASMDownload); + toDownload.push(graphWASMJSDownload); + toDownload.push(graphViewJSDownload); + toDownload.push(tinyColorJS); + } + return toDownload; + } + static async updateAssetCache() { + let snippetsNames = this.getEnabledSnippets(); + let themeName = this.getCurrentThemeName(); + let enabledPluginStyles = ExportSettings.settings.includePluginCSS; + if (snippetsNames != this.lastEnabledSnippets) { + this.lastEnabledSnippets = snippetsNames; + this.snippetStyles = await this.getSnippetsCSS(snippetsNames); + } + if (themeName != this.lastEnabledTheme) { + this.lastEnabledTheme = themeName; + this.themeStyles = await this.getThemeContent(themeName); + } + if (enabledPluginStyles != this.lastEnabledPluginStyles) { + this.lastEnabledPluginStyles = enabledPluginStyles; + this.pluginStyles = await this.getPluginStyles(); + } + this.lastMathjaxChanged = -1; + } + static loadMathjaxStyles() { + var _a, _b; + if (this.mathjaxStylesheet == void 0) + this.mathjaxStylesheet = Array.from(document.styleSheets).find((sheet) => sheet.ownerNode.id == "MJX-CHTML-styles"); + if (this.mathjaxStylesheet == void 0) + return; + let changed = (_a = this.mathjaxStylesheet) == null ? void 0 : _a.ownerNode.getAttribute("data-change"); + if (changed != this.lastMathjaxChanged) { + _AssetHandler.mathStyles = ""; + for (let i = 0; i < this.mathjaxStylesheet.cssRules.length; i++) { + _AssetHandler.mathStyles += this.mathjaxStylesheet.cssRules[i].cssText + "\n"; + } + _AssetHandler.mathStyles.replaceAll("app://obsidian.md/", "https://publish.obsidian.md/").trim(); + } else { + console.log(((_b = Utils.getActiveTextView()) == null ? void 0 : _b.file.name) + " does not have latex"); + _AssetHandler.mathStyles = ""; + } + this.lastMathjaxChanged = changed; + } + static async loadAppStyles() { + var _a, _b; + let appSheet = document.styleSheets[1]; + let stylesheets = document.styleSheets; + for (let i = 0; i < stylesheets.length; i++) { + if (stylesheets[i].href && ((_a = stylesheets[i].href) == null ? void 0 : _a.includes("app.css"))) { + appSheet = stylesheets[i]; + break; + } + } + this.appStyles += obsidian_styles_txt_default; + for (let i = 0; i < appSheet.cssRules.length; i++) { + let rule = appSheet.cssRules[i]; + if (rule) { + if (rule.cssText.startsWith("@font-face")) + continue; + if (rule.cssText.startsWith(".CodeMirror")) + continue; + if (rule.cssText.startsWith(".cm-")) + continue; + let cssText = rule.cssText + "\n"; + cssText = cssText.replaceAll("public/", "https://publish.obsidian.md/public/"); + cssText = cssText.replaceAll("lib/", "https://publish.obsidian.md/lib/"); + this.appStyles += cssText; + } + } + for (let i = 1; i < stylesheets.length; i++) { + let styleID = (_b = stylesheets[i].ownerNode) == null ? void 0 : _b.id; + if (styleID.startsWith("svelte") && ExportSettings.settings.includeSvelteCSS || styleID == "ADMONITIONS_CUSTOM_STYLE_SHEET") { + let style = stylesheets[i].cssRules; + for (let item in style) { + if (style[item].cssText != void 0) { + this.appStyles += "\n" + style[item].cssText; + } + } + } + } + } + static async getPluginStyles() { + let pluginCSS = ""; + let thirdPartyPluginStyleNames = ExportSettings.settings.includePluginCSS.split("\n"); + for (let i = 0; i < thirdPartyPluginStyleNames.length; i++) { + if (!thirdPartyPluginStyleNames[i] || thirdPartyPluginStyleNames[i] && !/\S/.test(thirdPartyPluginStyleNames[i])) + continue; + let path = this.vaultPluginsPath.joinString(thirdPartyPluginStyleNames[i].replace("\n", ""), "styles.css"); + if (!path.exists) + continue; + let style = await path.readFileString(); + if (style) { + pluginCSS += style; + } + } + return pluginCSS; + } + static async getThemeContent(themeName) { + var _a; + if (themeName == "Default") + return "/* Using default theme. */"; + let themePath = new Path(`.obsidian/themes/${themeName}/theme.css`).absolute(); + if (!themePath.exists) { + RenderLog.warning("Warning: could not load theme.", "Cannot find theme at path: \n\n" + themePath); + return ""; + } + let themeContent = (_a = await themePath.readFileString()) != null ? _a : ""; + return themeContent; + } + static getCurrentThemeName() { + var _a; + let themeName = (_a = app.vault.config) == null ? void 0 : _a.cssTheme; + return (themeName != null ? themeName : "") == "" ? "Default" : themeName; + } + static async getSnippetsCSS(snippetNames) { + let snippetsList = await this.getStyleSnippetsContent(); + let snippets = "\n"; + for (let i = 0; i < snippetsList.length; i++) { + snippets += `/* --- ${snippetNames[i]}.css --- */ + ${snippetsList[i]} + + +`; + } + return snippets; + } + static getEnabledSnippets() { + var _a, _b; + return (_b = (_a = app.vault.config) == null ? void 0 : _a.enabledCssSnippets) != null ? _b : []; + } + static async getStyleSnippetsContent() { + var _a; + let snippetContents = []; + let enabledSnippets = this.getEnabledSnippets(); + for (let i = 0; i < enabledSnippets.length; i++) { + let path = new Path(`.obsidian/snippets/${enabledSnippets[i]}.css`).absolute(); + if (path.exists) + snippetContents.push((_a = await path.readFileString()) != null ? _a : "\n"); + } + return snippetContents; + } +}; +var AssetHandler = _AssetHandler; +AssetHandler.mediaFolderName = new Path("lib/media"); +AssetHandler.jsFolderName = new Path("lib/scripts"); +AssetHandler.cssFolderName = new Path("lib/styles"); +AssetHandler.appStyles = ""; +AssetHandler.mathStyles = ""; +AssetHandler.webpageStyles = ""; +AssetHandler.themeStyles = ""; +AssetHandler.snippetStyles = ""; +AssetHandler.pluginStyles = ""; +AssetHandler.lastEnabledPluginStyles = ""; +AssetHandler.lastEnabledSnippets = []; +AssetHandler.lastEnabledTheme = ""; +AssetHandler.lastMathjaxChanged = -1; +AssetHandler.mathjaxStylesheet = void 0; +AssetHandler.webpageJS = ""; +AssetHandler.graphViewJS = ""; +AssetHandler.graphWASMJS = ""; +AssetHandler.renderWorkerJS = ""; +AssetHandler.tinyColorJS = ""; + +// scripts/utils/tab-manager.ts +var TabManager; +((TabManager2) => { + function getLeaf(navType, splitDirection = "vertical") { + let leaf = navType === "split" ? app.workspace.getLeaf(navType, splitDirection) : app.workspace.getLeaf(navType); + return leaf; + } + async function openFileInNewTab(file, navType, splitDirection = "vertical") { + let leaf = getLeaf(navType, splitDirection); + try { + await leaf.openFile(file, void 0).catch((reason) => { + console.log(reason); + }); + } catch (error) { + console.log(error); + } + return leaf; + } + TabManager2.openFileInNewTab = openFileInNewTab; + function openNewTab(navType, splitDirection = "vertical") { + return getLeaf(navType, splitDirection); + } + TabManager2.openNewTab = openNewTab; +})(TabManager || (TabManager = {})); + +// scripts/html-generation/markdown-renderer.ts +var { clipboard } = require("electron"); +var MarkdownRenderer; +((MarkdownRenderer2) => { + MarkdownRenderer2.problemLog = ""; + MarkdownRenderer2.errorInBatch = false; + MarkdownRenderer2.cancelled = false; + async function renderMarkdown(file) { + if (!MarkdownRenderer2.renderLeaf) { + throw new Error("Cannot render document without a render leaf! Please call beginBatch() before calling this function, and endBatch() after you are done exporting all files."); + } + try { + await MarkdownRenderer2.renderLeaf.openFile(file.markdownFile, { active: false }); + } catch (e) { + let message2 = "Failed to open file! File: " + file.markdownFile.path; + RenderLog.warning("Cannot render file: ", message2); + return generateFailDocument(); + } + if (MarkdownRenderer2.cancelled) + throw new Error("Markdown rendering cancelled"); + if (!(MarkdownRenderer2.renderLeaf.view instanceof import_obsidian2.MarkdownView)) { + let message2 = "This file was not a normal markdown file! File: " + file.markdownFile.path; + RenderLog.warning("Cannot render file: ", message2); + return generateFailDocument(); + } + let previewModeFound = await Utils.waitUntil(() => MarkdownRenderer2.renderLeaf != void 0 && MarkdownRenderer2.renderLeaf.view.previewMode || MarkdownRenderer2.cancelled, 2e3, 10); + if (MarkdownRenderer2.cancelled) + throw new Error("Markdown rendering cancelled"); + if (!previewModeFound) { + let message2 = "Failed to open preview mode! File: " + file.markdownFile.path; + RenderLog.warning("Cannot render file: ", message2); + return generateFailDocument(); + } + let preview = MarkdownRenderer2.renderLeaf.view.previewMode; + await Utils.changeViewMode(MarkdownRenderer2.renderLeaf.view, "preview"); + if (MarkdownRenderer2.cancelled) + throw new Error("Markdown rendering cancelled"); + preview.renderer.showAll = true; + await preview.renderer.unfoldAllHeadings(); + if (MarkdownRenderer2.cancelled) + throw new Error("Markdown rendering cancelled"); + let lastRender = preview.renderer.lastRender; + preview.renderer.rerender(true); + let isRendered = false; + preview.renderer.onRendered(() => { + isRendered = true; + }); + let renderfinished = await Utils.waitUntil(() => preview.renderer.lastRender != lastRender && isRendered || MarkdownRenderer2.cancelled, 3e4, 50); + if (MarkdownRenderer2.cancelled) + throw new Error("Markdown rendering cancelled"); + if (!renderfinished) { + let message2 = "Failed to render file within 30 seconds! File: " + file.markdownFile.path; + RenderLog.warning("Cannot render file: ", message2); + return generateFailDocument(); + } + let text = MarkdownRenderer2.renderLeaf.view.data; + let dataviews = text.matchAll(/```(dataview|dataviewjs)/g); + let dataviewCount = Array.from(dataviews).length; + if (dataviewCount > 0) { + await Utils.delay(ExportSettings.settings.dataviewBlockWaitTime * dataviewCount); + } + if (MarkdownRenderer2.cancelled) + throw new Error("Markdown rendering cancelled"); + let container = preview.containerEl; + if (container) { + postProcessHTML(file, container); + AssetHandler.loadMathjaxStyles(); + return container.innerHTML; + } + let message = "Could not find container with rendered content! File: " + file.markdownFile.path; + RenderLog.warning("Cannot render file: ", message); + return generateFailDocument(); + } + MarkdownRenderer2.renderMarkdown = renderMarkdown; + function postProcessHTML(file, html) { + html.querySelectorAll("p:has(div)").forEach((element) => { + let span = file.document.createElement("span"); + span.innerHTML = element.innerHTML; + element.replaceWith(span); + }); + html.querySelectorAll("input[type=text]").forEach((element) => { + element.setAttribute("value", element.value); + element.value = ""; + }); + html.querySelectorAll("textarea").forEach((element) => { + element.textContent = element.value; + }); + } + async function beginBatch() { + MarkdownRenderer2.problemLog = ""; + MarkdownRenderer2.errorInBatch = false; + MarkdownRenderer2.cancelled = false; + MarkdownRenderer2.renderLeaf = TabManager.openNewTab("window", "vertical"); + let parentFound = await Utils.waitUntil(() => MarkdownRenderer2.renderLeaf && MarkdownRenderer2.renderLeaf.parent, 2e3, 10); + if (!parentFound) { + try { + MarkdownRenderer2.renderLeaf.detach(); + } catch (e) { + console.log(e); + } + new import_obsidian2.Notice("Error: Failed to create leaf for rendering!"); + throw new Error("Failed to create leaf for rendering!"); + } + MarkdownRenderer2.renderLeaf.parent.containerEl.style.height = "0"; + MarkdownRenderer2.renderLeaf.parent.parent.containerEl.querySelector(".clickable-icon, .workspace-tab-header-container-inner").style.display = "none"; + MarkdownRenderer2.renderLeaf.parent.containerEl.style.maxHeight = "var(--header-height)"; + MarkdownRenderer2.renderLeaf.parent.parent.containerEl.classList.remove("mod-vertical"); + MarkdownRenderer2.renderLeaf.parent.parent.containerEl.classList.add("mod-horizontal"); + MarkdownRenderer2.renderLeaf.view.containerEl.win.resizeTo(600, 300); + MarkdownRenderer2.renderLeaf.view.containerEl.win.moveTo(window.screen.width / 2 - 450, window.screen.height - 450 - 75); + let renderBrowserWindow = window.electron.remote.BrowserWindow.getFocusedWindow(); + renderBrowserWindow.setAlwaysOnTop(true, "floating", 1); + renderBrowserWindow.webContents.setFrameRate(120); + renderBrowserWindow.on("close", () => { + MarkdownRenderer2.cancelled = true; + console.log("cancelled"); + }); + let allWindows = window.electron.remote.BrowserWindow.getAllWindows(); + for (const win of allWindows) { + win.webContents.setBackgroundThrottling(false); + } + } + MarkdownRenderer2.beginBatch = beginBatch; + function endBatch() { + if (MarkdownRenderer2.renderLeaf) { + if (!MarkdownRenderer2.errorInBatch) + MarkdownRenderer2.renderLeaf.detach(); + } + let allWindows = window.electron.remote.BrowserWindow.getAllWindows(); + for (const win of allWindows) { + win.webContents.setBackgroundThrottling(false); + } + } + MarkdownRenderer2.endBatch = endBatch; + function generateLogEl(title, message, textColor, backgroundColor) { + let logEl = document.createElement("div"); + logEl.className = "html-render-log-item"; + logEl.style.display = "flex"; + logEl.style.flexDirection = "column"; + logEl.style.marginBottom = "2px"; + logEl.style.fontSize = "12px"; + logEl.innerHTML = ` +
    ${title}
    +
    ${message}
    + `; + logEl.style.color = textColor; + logEl.style.backgroundColor = backgroundColor; + logEl.style.borderLeft = `5px solid ${textColor}`; + logEl.style.borderBottom = "1px solid var(--divider-color)"; + logEl.style.borderTop = "1px solid var(--divider-color)"; + return logEl; + } + MarkdownRenderer2.generateLogEl = generateLogEl; + async function _reportProgress(complete, total, message, subMessage, progressColor) { + let found = await Utils.waitUntil(() => MarkdownRenderer2.renderLeaf && MarkdownRenderer2.renderLeaf.parent && MarkdownRenderer2.renderLeaf.parent.parent, 100, 10); + if (!found) + return; + let loadingContainer = MarkdownRenderer2.renderLeaf.parent.parent.containerEl.querySelector(`.html-render-progress-container`); + if (!loadingContainer) { + loadingContainer = document.createElement("div"); + loadingContainer.className = `html-render-progress-container`; + loadingContainer.setAttribute("style", "height: 100%; min-width: 100%; display:flex; flex-direction:column; align-content: center; justify-content: center; align-items: center;"); + loadingContainer.innerHTML = ` +
    +
    +
    +

    Generating HTML

    + + +
    + +
    +
    + `; + MarkdownRenderer2.renderLeaf.parent.parent.containerEl.appendChild(loadingContainer); + let copyButton = loadingContainer.querySelector("button.html-render-log-copy-button"); + if (copyButton) { + copyButton.addEventListener("click", () => { + console.log(MarkdownRenderer2.problemLog); + clipboard.writeText(MarkdownRenderer2.problemLog); + new import_obsidian2.Notice("Copied to clipboard! Please paste this into your github issue as is."); + }); + } + } + let progress = complete / total; + let progressBar = loadingContainer.querySelector("progress"); + if (progressBar) { + progressBar.value = progress; + progressBar.style.backgroundColor = "transparent"; + progressBar.style.color = progressColor; + } + let messageElement = loadingContainer.querySelector("h1"); + if (messageElement) { + messageElement.innerText = message; + } + let subMessageElement = loadingContainer.querySelector("span.html-render-submessage"); + if (subMessageElement) { + subMessageElement.innerText = subMessage; + } + } + MarkdownRenderer2._reportProgress = _reportProgress; + async function _reportError(messageTitle, message, fatal) { + if (MarkdownRenderer2.problemLog == "") { + this.renderLeaf.view.containerEl.win.resizeTo(900, 500); + } + messageTitle = (fatal ? "[Fatal Error] " : "[Error] ") + messageTitle; + MarkdownRenderer2.problemLog += "\n\n##### " + messageTitle + "\n```\n" + message + "\n```"; + MarkdownRenderer2.errorInBatch = true; + let found = await Utils.waitUntil(() => MarkdownRenderer2.renderLeaf && MarkdownRenderer2.renderLeaf.parent && MarkdownRenderer2.renderLeaf.parent.parent, 100, 10); + if (!found) + return; + let loadingContainer = MarkdownRenderer2.renderLeaf.parent.parent.containerEl.querySelector(`.html-render-progress-container`); + if (!loadingContainer) + return; + let titleElement = loadingContainer.querySelector("h1"); + if (titleElement) { + titleElement.innerText = "\u26A0\uFE0F " + messageTitle; + titleElement.style.color = "var(--color-red) !important"; + } + let messageElement = loadingContainer.querySelector("span.html-render-submessage"); + if (messageElement) { + messageElement.innerText = messageElement.innerText + "\n\nSee the problem log \u27F6\nConsider copying the log and reporting an issue on github."; + } + let logContainer = loadingContainer.querySelector(".html-render-log"); + if (logContainer) { + logContainer.style.display = "flex"; + let logEl = generateLogEl(messageTitle, message, "var(--color-red)", "rgba(170, 10, 30, 0.1)"); + logContainer.appendChild(logEl); + } + if (fatal) { + MarkdownRenderer2.renderLeaf = void 0; + } + } + MarkdownRenderer2._reportError = _reportError; + async function _reportWarning(messageTitle, message) { + if (MarkdownRenderer2.problemLog == "" && ExportSettings.settings.showWarningsInExportLog) { + this.renderLeaf.view.containerEl.win.resizeTo(900, 300); + } + messageTitle = "[Warning] " + messageTitle; + MarkdownRenderer2.problemLog += "\n\n##### " + messageTitle + "\n```\n" + message + "\n```"; + if (!ExportSettings.settings.showWarningsInExportLog) + return; + let found = await Utils.waitUntil(() => MarkdownRenderer2.renderLeaf && MarkdownRenderer2.renderLeaf.parent && MarkdownRenderer2.renderLeaf.parent.parent, 100, 10); + if (!found) + return; + let loadingContainer = MarkdownRenderer2.renderLeaf.parent.parent.containerEl.querySelector(`.html-render-progress-container`); + if (!loadingContainer) + return; + let logContainer = loadingContainer.querySelector(".html-render-log"); + if (logContainer) { + logContainer.style.display = "flex"; + let logEl = generateLogEl(messageTitle, message, "var(--color-yellow)", "rgba(170, 170, 10, 0.1)"); + logContainer.appendChild(logEl); + } + } + MarkdownRenderer2._reportWarning = _reportWarning; + async function _reportInfo(messageTitle, message) { + if (MarkdownRenderer2.problemLog == "") { + this.renderLeaf.view.containerEl.win.resizeTo(900, 300); + } + messageTitle = "[Info] " + messageTitle; + MarkdownRenderer2.problemLog += "\n\n##### " + messageTitle + "\n```\n" + message + "\n```"; + if (!ExportSettings.settings.showWarningsInExportLog) + return; + let found = await Utils.waitUntil(() => MarkdownRenderer2.renderLeaf && MarkdownRenderer2.renderLeaf.parent && MarkdownRenderer2.renderLeaf.parent.parent, 100, 10); + if (!found) + return; + let loadingContainer = MarkdownRenderer2.renderLeaf.parent.parent.containerEl.querySelector(`.html-render-progress-container`); + if (!loadingContainer) + return; + let logContainer = loadingContainer.querySelector(".html-render-log"); + if (logContainer) { + logContainer.style.display = "flex"; + let logEl = generateLogEl(messageTitle, message, "var(--text-normal)", "rgba(0, 0, 0, 0.15)"); + logContainer.appendChild(logEl); + } + } + MarkdownRenderer2._reportInfo = _reportInfo; + function generateFailDocument(message = "Page Not Found") { + return ` +
    +
    +
    +
    +

    ${message}

    +
    +
    +
    +
    + `; + } + MarkdownRenderer2.generateFailDocument = generateFailDocument; +})(MarkdownRenderer || (MarkdownRenderer = {})); + +// scripts/html-generation/render-log.ts +var RenderLog; +((RenderLog2) => { + function log(messageTitle, message) { + pullPathLogs(); + console.log(messageTitle + ": \n" + message); + MarkdownRenderer._reportInfo(messageTitle, message); + } + RenderLog2.log = log; + function warning(messageTitle, message) { + pullPathLogs(); + console.warn(messageTitle + ": \n" + message); + MarkdownRenderer._reportWarning(messageTitle, message); + } + RenderLog2.warning = warning; + function error(messageTitle, message, fatal = false) { + pullPathLogs(); + console.error(messageTitle + ": \n" + message); + MarkdownRenderer._reportError(messageTitle, message, fatal); + } + RenderLog2.error = error; + function progress(complete, total, message, subMessage, progressColor = "var(--color-accent)") { + pullPathLogs(); + MarkdownRenderer._reportProgress(complete, total, message, subMessage, progressColor); + } + RenderLog2.progress = progress; + function pullPathLogs() { + let logs = Path.dequeueLog(); + for (let thisLog of logs) { + switch (thisLog.type) { + case "info": + log(thisLog.title, thisLog.message); + break; + case "warn": + warning(thisLog.title, thisLog.message); + break; + case "error": + error(thisLog.title, thisLog.message, false); + break; + case "fatal": + error(thisLog.title, thisLog.message, true); + break; + } + } + } + function testThrowError(chance) { + if (Math.random() < chance) { + throw new Error("Test error"); + } + } + RenderLog2.testThrowError = testThrowError; +})(RenderLog || (RenderLog = {})); + +// scripts/utils/utils.ts +var dialog = require("electron").remote.dialog; +var Utils = class { + static async delay(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } + static padStringBeggining(str, length, char) { + return char.repeat(length - str.length) + str; + } + static sampleCSSColorHex(variable, testParentEl) { + let testEl = document.createElement("div"); + testEl.style.setProperty("display", "none"); + testEl.style.setProperty("color", "var(" + variable + ")"); + testParentEl.appendChild(testEl); + let col = getComputedStyle(testEl).color; + let opacity = getComputedStyle(testEl).opacity; + testEl.remove(); + function toColorObject(str) { + var match = str.match(/rgb?\((\d+),\s*(\d+),\s*(\d+)\)/); + return match ? { + red: parseInt(match[1]), + green: parseInt(match[2]), + blue: parseInt(match[3]), + alpha: 1 + } : null; + } + var color = toColorObject(col), alpha = parseFloat(opacity); + return isNaN(alpha) && (alpha = 1), color ? { + a: alpha * color.alpha, + hex: Utils.padStringBeggining(color.red.toString(16), 2, "0") + Utils.padStringBeggining(color.green.toString(16), 2, "0") + Utils.padStringBeggining(color.blue.toString(16), 2, "0") + } : { + a: alpha, + hex: "ffffff" + }; + } + static async changeViewMode(view, modeName) { + const mode = view.modes[modeName]; + mode && await view.setMode(mode); + } + static async showSaveDialog(defaultPath, defaultFileName, showAllFilesOption = true) { + let absoluteDefaultPath = defaultPath.directory.absolute().joinString(defaultFileName); + let filters = [{ + name: Utils.trimStart(absoluteDefaultPath.extenstion, ".").toUpperCase() + " Files", + extensions: [Utils.trimStart(absoluteDefaultPath.extenstion, ".")] + }]; + if (showAllFilesOption) { + filters.push({ + name: "All Files", + extensions: ["*"] + }); + } + let picker = await dialog.showSaveDialog({ + defaultPath: absoluteDefaultPath.asString, + filters, + properties: ["showOverwriteConfirmation"] + }); + if (picker.canceled) + return void 0; + let pickedPath = new Path(picker.filePath); + ExportSettings.settings.lastExportPath = pickedPath.asString; + ExportSettings.saveSettings(); + return pickedPath; + } + static async showSelectFolderDialog(defaultPath) { + if (!defaultPath.exists) + defaultPath = Path.vaultPath; + let picker = await dialog.showOpenDialog({ + defaultPath: defaultPath.directory.asString, + properties: ["openDirectory"] + }); + if (picker.canceled) + return void 0; + let path = new Path(picker.filePaths[0]); + ExportSettings.settings.lastExportPath = path.directory.asString; + ExportSettings.saveSettings(); + return path; + } + static idealDefaultPath() { + let lastPath = new Path(ExportSettings.settings.lastExportPath); + if (lastPath.asString != "" && lastPath.exists) { + return lastPath.directory; + } + return Path.vaultPath; + } + static async downloadFiles(files, folderPath) { + if (!folderPath.isAbsolute) + throw new Error("folderPath must be absolute: " + folderPath.asString); + RenderLog.progress(0, files.length, "Saving HTML files to disk", "...", "var(--color-green)"); + for (let i = 0; i < files.length; i++) { + let file = files[i]; + try { + await file.download(folderPath.directory); + RenderLog.progress(i + 1, files.length, "Saving HTML files to disk", "Saving: " + file.filename, "var(--color-green)"); + } catch (e) { + RenderLog.error("Could not save file: " + file.filename, e.stack); + continue; + } + } + } + static async waitUntil(condition, timeout = 1e3, interval = 100) { + return new Promise((resolve, reject) => { + let timer = 0; + let intervalId = setInterval(() => { + if (condition()) { + clearInterval(intervalId); + resolve(true); + } else { + timer += interval; + if (timer >= timeout) { + clearInterval(intervalId); + resolve(false); + } + } + }, interval); + }); + } + static getPluginIDs() { + let pluginsArray = Array.from(app.plugins.enabledPlugins.values()); + for (let i = 0; i < pluginsArray.length; i++) { + if (app.plugins.manifests[pluginsArray[i]] == void 0) { + pluginsArray.splice(i, 1); + i--; + } + } + return pluginsArray; + } + static getPluginManifest(pluginID) { + var _a; + return (_a = app.plugins.manifests[pluginID]) != null ? _a : null; + } + static getActiveTextView() { + let view = app.workspace.getActiveViewOfType(import_obsidian3.TextFileView); + if (!view) { + return null; + } + return view; + } + static trimEnd(inputString, trimString) { + if (inputString.endsWith(trimString)) { + return inputString.substring(0, inputString.length - trimString.length); + } + return inputString; + } + static trimStart(inputString, trimString) { + if (inputString.startsWith(trimString)) { + return inputString.substring(trimString.length); + } + return inputString; + } +}; + +// assets/third-party-styles-blacklist.txt +var third_party_styles_blacklist_default = "advanced-pdf-export\ncustom-classes\nfile-tree-alternative\nhomepage\nOA-file-hider\nobsidian-asciimath\nobsidian-discordrpc\nobsidian-dynamic-background\nobsidian-dynamic-toc\nobsidian-excel-to-markdown-table\nobsidian-full-calendar\nobsidian-graphviz\nobsidian-latex\nobsidian-latex-suite\nobsidian-minimal-settings\nobsidian-plantuml\nobsidian-prozen\nobsidian-statusbar-pomo\nobsidian-style-settings\nobsidian-underline\nsettings-search\nsurfing\ntable-editor-obsidian\ntext-snippets-obsidian\nwebpage-html-export\nlapel\nobsidian-regex-replace\ntemplater-obsidian\n"; + +// scripts/export-settings.ts +var DEFAULT_SETTINGS = { + inlineCSS: true, + inlineJS: true, + inlineImages: true, + includePluginCSS: "", + includeSvelteCSS: true, + makeNamesWebStyle: false, + allowFoldingHeadings: true, + addFilenameTitle: true, + beautifyHTML: false, + customLineWidth: "", + contentWidth: "", + sidebarWidth: "", + startOutlineCollapsed: false, + dataviewBlockWaitTime: 700, + showWarningsInExportLog: true, + addDarkModeToggle: true, + includeOutline: true, + includeGraphView: false, + includeFileTree: true, + exportPreset: "", + openAfterExport: true, + graphAttractionForce: 1, + graphLinkLength: 10, + graphRepulsionForce: 150, + graphCentralForce: 3, + graphEdgePruning: 100, + graphMinNodeSize: 3, + graphMaxNodeSize: 7, + lastExportPath: "" +}; +var FlowList = class { + constructor(containerEl) { + this.checkedList = []; + this.containerEl = containerEl; + this.flowListEl = this.containerEl.createDiv({ cls: "flow-list" }); + } + addItem(name, key, value, onChange) { + let item = this.flowListEl.createDiv({ cls: "flow-item" }); + let checkbox = item.createEl("input", { type: "checkbox" }); + checkbox.checked = value; + if (checkbox.checked) + this.checkedList.push(key); + checkbox.addEventListener("change", (evt) => { + if (checkbox.checked) { + if (!this.checkedList.includes(key)) + this.checkedList.push(key); + } else { + if (this.checkedList.includes(key)) + this.checkedList.remove(key); + } + }); + checkbox.addEventListener("change", (evt) => onChange(checkbox.checked)); + let label = item.createDiv({ cls: "flow-label" }); + label.setText(name); + return item; + } +}; +var _ExportSettings = class extends import_obsidian4.PluginSettingTab { + constructor(plugin) { + super(app, plugin); + this.blacklistedPluginIDs = []; + _ExportSettings.plugin = plugin; + } + async getBlacklistedPluginIDs() { + if (this.blacklistedPluginIDs.length > 0) + return this.blacklistedPluginIDs; + this.blacklistedPluginIDs = third_party_styles_blacklist_default.split("\n"); + return this.blacklistedPluginIDs; + } + static async loadSettings() { + _ExportSettings.settings = Object.assign({}, DEFAULT_SETTINGS, await _ExportSettings.plugin.loadData()); + _ExportSettings.settings.customLineWidth = _ExportSettings.settings.customLineWidth.toString(); + if (_ExportSettings.settings.customLineWidth === "0") + _ExportSettings.settings.customLineWidth = ""; + } + static async saveSettings() { + await _ExportSettings.plugin.saveData(_ExportSettings.settings); + } + display() { + const { containerEl: contentEl } = this; + contentEl.empty(); + let header = contentEl.createEl("h2", { text: "HTML Export Settings" }); + header.style.display = "block"; + header.style.marginBottom = "15px"; + let supportLink = contentEl.createEl("a"); + let buttonColor = Utils.sampleCSSColorHex("--color-accent", document.body).hex; + let buttonTextColor = Utils.sampleCSSColorHex("--text-on-accent", document.body).hex; + supportLink.outerHTML = ``; + let supportHeader = contentEl.createDiv({ text: "Support the continued development of this plugin.", cls: "setting-item-description" }); + supportHeader.style.display = "block"; + supportHeader.style.marginBottom = "20px"; + let hr = contentEl.createEl("hr"); + hr.style.marginTop = "20px"; + hr.style.marginBottom = "20px"; + hr.style.borderColor = "var(--color-accent)"; + hr.style.opacity = "0.5"; + new import_obsidian4.Setting(contentEl).setName("Page Features:").setDesc("Special features to embed onto the page.").setHeading(); + new import_obsidian4.Setting(contentEl).setName("Include theme toggle").setDesc("Adds a theme toggle to the left sidebar.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.addDarkModeToggle).onChange(async (value) => { + _ExportSettings.settings.addDarkModeToggle = value; + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Include document outline").setDesc("Adds the document's table of contents to the right sidebar.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.includeOutline).onChange(async (value) => { + _ExportSettings.settings.includeOutline = value; + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Include file tree").setDesc("Adds an interactive file tree to the left sidebar.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.includeFileTree).onChange(async (value) => { + _ExportSettings.settings.includeFileTree = value; + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Add filename as title").setDesc("If the first header is not an H1, include the file name as a title at the top of the page.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.addFilenameTitle).onChange(async (value) => { + _ExportSettings.settings.addFilenameTitle = value; + await _ExportSettings.saveSettings(); + })); + hr = contentEl.createEl("hr"); + hr.style.marginTop = "20px"; + hr.style.marginBottom = "20px"; + hr.style.borderColor = "var(--color-accent)"; + hr.style.opacity = "0.5"; + new import_obsidian4.Setting(contentEl).setName("Page Behaviors:").setDesc("Control the behavior of different page features.").setHeading(); + new import_obsidian4.Setting(contentEl).setName("Start Outline Collapsed").setDesc("Start the document's table of contents with all items collapsed").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.startOutlineCollapsed).onChange(async (value) => { + _ExportSettings.settings.startOutlineCollapsed = value; + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Allow folding headings").setDesc("Allow headings to be folded with an arrow icon beside each heading, just as in Obsidian.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.allowFoldingHeadings).onChange(async (value) => { + _ExportSettings.settings.allowFoldingHeadings = value; + await _ExportSettings.saveSettings(); + })); + hr = contentEl.createEl("hr"); + hr.style.marginTop = "20px"; + hr.style.marginBottom = "20px"; + hr.style.borderColor = "var(--color-accent)"; + hr.style.opacity = "0.5"; + new import_obsidian4.Setting(contentEl).setName("Embedding Options:").setDesc("If all three of these are on, the html files will be completely self-contained.").setHeading(); + new import_obsidian4.Setting(contentEl).setName("Embed CSS").setDesc("Embed the CSS into the HTML file.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.inlineCSS).onChange(async (value) => { + _ExportSettings.settings.inlineCSS = value; + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Embed JS").setDesc("Embed the JS into the HTML file.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.inlineJS).onChange(async (value) => { + _ExportSettings.settings.inlineJS = value; + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Embed Images").setDesc("Embed the images into the HTML file.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.inlineImages).onChange(async (value) => { + _ExportSettings.settings.inlineImages = value; + await _ExportSettings.saveSettings(); + })); + hr = contentEl.createEl("hr"); + hr.style.marginTop = "20px"; + hr.style.marginBottom = "20px"; + hr.style.borderColor = "var(--color-accent)"; + hr.style.opacity = "0.5"; + new import_obsidian4.Setting(contentEl).setName("Layout Options:").setHeading(); + new import_obsidian4.Setting(contentEl).setName("Document Width").setDesc("Sets the line width of the exported document. Use any css units.\nDefault units: px").addText((text) => text.setValue(_ExportSettings.settings.customLineWidth).setPlaceholder("Leave blank for default").onChange(async (value) => { + _ExportSettings.settings.customLineWidth = value; + await _ExportSettings.saveSettings(); + })).addExtraButton((button) => button.setIcon("reset").setTooltip("Reset to default").onClick(() => { + _ExportSettings.settings.customLineWidth = ""; + _ExportSettings.saveSettings(); + this.display(); + })); + new import_obsidian4.Setting(contentEl).setName("Content Width").setDesc("Sets the width of the central content section of the document. This will push the sidebars towards the edges of the screen the larger it is leaving margins on either side of the document. Use any css units.\nDefault units: px").addText((text) => text.setValue(_ExportSettings.settings.contentWidth).setPlaceholder("Leave blank for default").onChange(async (value) => { + _ExportSettings.settings.contentWidth = value; + await _ExportSettings.saveSettings(); + })).addExtraButton((button) => button.setIcon("reset").setTooltip("Reset to default").onClick(() => { + _ExportSettings.settings.contentWidth = ""; + _ExportSettings.saveSettings(); + this.display(); + })); + new import_obsidian4.Setting(contentEl).setName("Sidebar Width").setDesc("Sets the width of the sidebar's content. Use any css units.\nDefault units: px").addText((text) => text.setValue(_ExportSettings.settings.sidebarWidth).setPlaceholder("Leave blank for default").onChange(async (value) => { + _ExportSettings.settings.sidebarWidth = value; + await _ExportSettings.saveSettings(); + })).addExtraButton((button) => button.setIcon("reset").setTooltip("Reset to default").onClick(() => { + _ExportSettings.settings.sidebarWidth = ""; + _ExportSettings.saveSettings(); + this.display(); + })); + hr = contentEl.createEl("hr"); + hr.style.marginTop = "20px"; + hr.style.marginBottom = "20px"; + hr.style.borderColor = "var(--color-accent)"; + hr.style.opacity = "0.5"; + new import_obsidian4.Setting(contentEl).setName("Export Options:").setHeading(); + new import_obsidian4.Setting(contentEl).setName("Dataview Block Render Wait Time").setDesc("In milliseconds.\n\nWait this long for each dataview block to render. If you have large dataview queries this can help make sure they are rendered correctly.").addText((text) => text.setValue(_ExportSettings.settings.dataviewBlockWaitTime.toString()).setPlaceholder(DEFAULT_SETTINGS.dataviewBlockWaitTime.toString()).onChange(async (value) => { + if (isNaN(Number(value))) + return; + _ExportSettings.settings.dataviewBlockWaitTime = Number(value); + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Show warnings in export log").setDesc("The export log (shown in the export window) displays only relevant warnings or errors to you. Turn this off to stop displaying warnings. Errors will always show.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.showWarningsInExportLog).onChange(async (value) => { + _ExportSettings.settings.showWarningsInExportLog = value; + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Make names web style").setDesc("Make the names of files and folders lowercase and replace spaces with dashes.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.makeNamesWebStyle).onChange(async (value) => { + _ExportSettings.settings.makeNamesWebStyle = value; + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Beautify HTML").setDesc("Beautify the HTML text to make it more human readable at the cost of export speed.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.beautifyHTML).onChange(async (value) => { + _ExportSettings.settings.beautifyHTML = value; + await _ExportSettings.saveSettings(); + })); + hr = contentEl.createEl("hr"); + hr.style.marginTop = "20px"; + hr.style.marginBottom = "20px"; + hr.style.borderColor = "var(--color-accent)"; + hr.style.opacity = "0.5"; + new import_obsidian4.Setting(contentEl).setName("Include Plugin CSS").setDesc("Include the CSS from the following plugins in the exported HTML. If plugin features aren't rendering correctly, try adding the plugin to this list.").setHeading(); + let pluginsList = new FlowList(contentEl); + Utils.getPluginIDs().forEach(async (plugin) => { + let pluginManifest = Utils.getPluginManifest(plugin); + if (!pluginManifest) + return; + if ((await this.getBlacklistedPluginIDs()).contains(pluginManifest.id)) { + return; + } + let pluginDir = pluginManifest.dir; + if (!pluginDir) + return; + let pluginPath = new Path(pluginDir); + let hasCSS = pluginPath.joinString("styles.css").exists; + if (!hasCSS) + return; + let isChecked = _ExportSettings.settings.includePluginCSS.match(new RegExp(`^${plugin}`, "m")) != null; + pluginsList.addItem(pluginManifest.name, plugin, isChecked, (value) => { + _ExportSettings.settings.includePluginCSS = pluginsList.checkedList.join("\n"); + _ExportSettings.saveSettings(); + }); + }); + new import_obsidian4.Setting(contentEl).setName("Include Svelte CSS").setDesc("Include the CSS from any plugins that use the svelte framework.").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.includeSvelteCSS).onChange(async (value) => { + _ExportSettings.settings.includeSvelteCSS = value; + await _ExportSettings.saveSettings(); + })); + let experimentalContainer = contentEl.createDiv(); + let experimentalHR1 = experimentalContainer.createEl("hr"); + let experimentalHeader = experimentalContainer.createEl("span", { text: "Experimental" }); + let experimentalHR2 = experimentalContainer.createEl("hr"); + experimentalContainer.style.display = "flex"; + experimentalContainer.style.marginTop = "5em"; + experimentalContainer.style.alignItems = "center"; + experimentalHR1.style.borderColor = "var(--color-red)"; + experimentalHR2.style.borderColor = "var(--color-red)"; + experimentalHeader.style.color = "var(--color-red)"; + experimentalHR1.style.flexGrow = "1"; + experimentalHR2.style.flexGrow = "1"; + experimentalHeader.style.flexGrow = "0.1"; + experimentalHeader.style.textAlign = "center"; + new import_obsidian4.Setting(contentEl).setName("Graph View (PLEASE READ DESCRIPTION)").setDesc("This CANNOT be used with the file:// protocol, the assets for this also will not be inlined into the HTML file at this point.").setHeading(); + new import_obsidian4.Setting(contentEl).setName("Include global graph view").setDesc("Include an interactive graph view sim of the WHOLE vault similar to obsidian's. ").addToggle((toggle) => toggle.setValue(_ExportSettings.settings.includeGraphView).onChange(async (value) => { + _ExportSettings.settings.includeGraphView = value; + await _ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("Graph View Settings").setDesc("Settings to control the behavior and look of the graph view. For now there is no live preview of this, so you must export your files to see your changes.").setHeading(); + new import_obsidian4.Setting(contentEl).setName("Attraction Force").setDesc("How much should linked nodes attract each other? This will make the graph appear more clustered.").addSlider((slider) => slider.setLimits(0, 100, 1).setValue(_ExportSettings.settings.graphAttractionForce / (2 / 100)).setDynamicTooltip().onChange(async (value) => { + let remapMultiplier = 2 / 100; + _ExportSettings.settings.graphAttractionForce = value * remapMultiplier; + await _ExportSettings.saveSettings(); + }).showTooltip()); + new import_obsidian4.Setting(contentEl).setName("Link Length").setDesc("How long should the links between nodes be? The shorter the links the closer connected nodes will cluster together.").addSlider((slider) => slider.setLimits(0, 100, 1).setValue(_ExportSettings.settings.graphLinkLength).setDynamicTooltip().onChange(async (value) => { + _ExportSettings.settings.graphLinkLength = value; + await _ExportSettings.saveSettings(); + }).showTooltip()); + new import_obsidian4.Setting(contentEl).setName("Repulsion Force").setDesc("How much should nodes repel each other? This will make the graph appear more spread out.").addSlider((slider) => slider.setLimits(0, 100, 1).setValue(_ExportSettings.settings.graphRepulsionForce / 3).setDynamicTooltip().onChange(async (value) => { + _ExportSettings.settings.graphRepulsionForce = value * 3; + await _ExportSettings.saveSettings(); + }).showTooltip()); + new import_obsidian4.Setting(contentEl).setName("Central Force").setDesc("How much should nodes be attracted to the center? This will make the graph appear more dense and circular.").addSlider((slider) => slider.setLimits(0, 100, 1).setValue(_ExportSettings.settings.graphCentralForce / (5 / 100)).setDynamicTooltip().onChange(async (value) => { + let remapMultiplier = 5 / 100; + _ExportSettings.settings.graphCentralForce = value * remapMultiplier; + await _ExportSettings.saveSettings(); + }).showTooltip()); + new import_obsidian4.Setting(contentEl).setName("Max Node Radius").setDesc("How large should the largest nodes be? Nodes are sized by how many links they have. The larger a node is the more it will attract other nodes. This can be used to create a good grouping around the most important nodes.").addSlider((slider) => slider.setLimits(3, 15, 1).setValue(_ExportSettings.settings.graphMaxNodeSize).setDynamicTooltip().onChange(async (value) => { + _ExportSettings.settings.graphMaxNodeSize = value; + await _ExportSettings.saveSettings(); + }).showTooltip()); + new import_obsidian4.Setting(contentEl).setName("Min Node Radius").setDesc("How small should the smallest nodes be? The smaller a node is the less it will attract other nodes.").addSlider((slider) => slider.setLimits(3, 15, 1).setValue(_ExportSettings.settings.graphMinNodeSize).setDynamicTooltip().onChange(async (value) => { + _ExportSettings.settings.graphMinNodeSize = value; + await _ExportSettings.saveSettings(); + }).showTooltip()); + new import_obsidian4.Setting(contentEl).setName("Edge Pruning Factor").setDesc("Edges with a length below this threshold will not be rendered, however they will still contribute to the simulation. This can help large tangled graphs look more organised. Hovering over a node will still display these links.").addSlider((slider) => slider.setLimits(0, 100, 1).setValue(100 - _ExportSettings.settings.graphEdgePruning).setDynamicTooltip().onChange(async (value) => { + _ExportSettings.settings.graphEdgePruning = 100 - value; + await _ExportSettings.saveSettings(); + }).showTooltip()); + let experimentalHREnd = contentEl.createEl("hr"); + experimentalHREnd.style.borderColor = "var(--color-red)"; + } +}; +var ExportSettings = _ExportSettings; +ExportSettings.settings = DEFAULT_SETTINGS; +var _ExportModal = class extends import_obsidian4.Modal { + constructor() { + super(app); + } + async open() { + _ExportModal.isClosed = false; + _ExportModal.canceled = true; + super.open(); + const { contentEl } = this; + contentEl.empty(); + this.titleEl.setText("Export to HTML"); + if (HTMLExportPlugin.updateInfo.updateAvailable) { + let updateNotice = contentEl.createEl("strong", { text: `Update Available: ${HTMLExportPlugin.updateInfo.currentVersion} \u27F6 ${HTMLExportPlugin.updateInfo.latestVersion}` }); + updateNotice.setAttribute("style", `margin-block-start: calc(var(--h3-size)/2); + background-color: var(--interactive-normal); + padding: 4px; + padding-left: 1em; + padding-right: 1em; + color: var(--color-red); + border-radius: 5px; + display: block; + width: fit-content;`); + let updateNotes = contentEl.createEl("div", { text: HTMLExportPlugin.updateInfo.updateNote }); + updateNotes.setAttribute("style", `margin-block-start: calc(var(--h3-size)/2); + background-color: var(--background-secondary-alt); + padding: 4px; + padding-left: 1em; + padding-right: 1em; + color: var(--text-normal); + font-size: var(--font-ui-smaller); + border-radius: 5px; + display: block; + width: fit-content; + white-space: pre-wrap;`); + } + let hr = contentEl.createEl("hr"); + hr.style.marginTop = "20px"; + hr.style.marginBottom = "20px"; + hr.style.borderColor = "var(--color-accent)"; + hr.style.opacity = "0.5"; + contentEl.createEl("h3", { text: "Basic Options:" }); + new import_obsidian4.Setting(contentEl).setName("Export Presets").setHeading().addDropdown((dropdown) => dropdown.addOption("website", "Multi-File Website").addOption("documents", "Self-contained Documents").setValue(ExportSettings.settings.exportPreset).onChange(async (value) => { + ExportSettings.settings.exportPreset = value; + switch (value) { + case "documents": + ExportSettings.settings.inlineCSS = true; + ExportSettings.settings.inlineJS = true; + ExportSettings.settings.inlineImages = true; + ExportSettings.settings.makeNamesWebStyle = false; + ExportSettings.settings.includeGraphView = false; + ExportSettings.settings.includeFileTree = false; + await ExportSettings.saveSettings(); + break; + case "website": + ExportSettings.settings.inlineCSS = false; + ExportSettings.settings.inlineJS = false; + ExportSettings.settings.inlineImages = false; + ExportSettings.settings.makeNamesWebStyle = true; + ExportSettings.settings.includeGraphView = true; + ExportSettings.settings.includeFileTree = true; + await ExportSettings.saveSettings(); + break; + } + this.open(); + })); + contentEl.createDiv().outerHTML = ` +
    Multi-File Website: For multiple files as a website. +Self-contained Documents: For documents which should each be self contained as one file. + +For more control open the plugin settings from the button at the bottom of this popup.
    `; + new import_obsidian4.Setting(contentEl).setName("Open after export").addToggle((toggle) => toggle.setTooltip("Open the exported file after exporting.").setValue(ExportSettings.settings.openAfterExport).onChange(async (value) => { + ExportSettings.settings.openAfterExport = value; + await ExportSettings.saveSettings(); + })); + new import_obsidian4.Setting(contentEl).setName("").setHeading().addButton((button) => { + button.setButtonText("Export").onClick(async () => { + _ExportModal.canceled = false; + this.close(); + }); + button.buttonEl.style.marginRight = "auto"; + button.buttonEl.style.marginLeft = "auto"; + button.buttonEl.style.width = "-webkit-fill-available"; + button.buttonEl.style.marginBottom = "2em"; + }); + new import_obsidian4.Setting(contentEl).setDesc("More options located on the plugin settings page.").addExtraButton((button) => button.setTooltip("Open plugin settings").onClick(() => { + app.setting.open(); + app.setting.openTabById("webpage-html-export"); + })); + await Utils.waitUntil(() => _ExportModal.isClosed, 60 * 60 * 1e3, 10); + return { canceled: _ExportModal.canceled }; + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + _ExportModal.isClosed = true; + } +}; +var ExportModal = _ExportModal; +ExportModal.isClosed = true; +ExportModal.canceled = true; + +// scripts/html-generation/global-gen.ts +var import_obsidian5 = require("obsidian"); +function isHeadingCache(obj) { + return obj != void 0 && "heading" in obj && "level" in obj; +} +var _source, _type; +var _LinkTree = class { + constructor(source, parent, depth, root = void 0) { + this.children = []; + this.parent = void 0; + __privateAdd(this, _source, void 0); + __privateAdd(this, _type, void 0); + this.depth = 0; + this.title = ""; + this.href = void 0; + this.root = void 0; + this.isRoot = false; + this.source = source; + this.parent = parent; + this.depth = depth; + if (root == void 0) + this.root = this.findRoot(); + } + set source(source) { + __privateSet(this, _type, isHeadingCache(source) ? "heading" /* Heading */ : source instanceof import_obsidian5.TFolder ? "folder" /* Folder */ : source instanceof import_obsidian5.TFile ? "file" /* File */ : "none" /* None */); + if (isHeadingCache(source)) { + this.title = source.heading; + this.href = "#" + source.heading.replaceAll(" ", "_"); + } else if (source instanceof import_obsidian5.TAbstractFile) { + let path = new Path(source.path).makeUnixStyle(); + if (source instanceof import_obsidian5.TFolder) + path.makeForceFolder(); + else + path.setExtension("html"); + this.href = path.asString; + this.title = path.basename == "." ? "" : path.basename; + } else { + this.title = ""; + this.href = void 0; + } + __privateSet(this, _source, source); + } + get source() { + return __privateGet(this, _source); + } + get type() { + return __privateGet(this, _type); + } + findRoot() { + var _a, _b; + let searchRoot = (_a = this.parent) != null ? _a : this; + while (searchRoot.parent != void 0) { + searchRoot = searchRoot.parent; + } + searchRoot = (_b = searchRoot.parent) != null ? _b : searchRoot; + searchRoot.isRoot = true; + return searchRoot; + } + static fromFiles(files) { + let root = new _LinkTree(void 0, void 0, 0); + for (let file of files) { + let pathSections = []; + let parentFile = file; + while (parentFile != void 0) { + pathSections.push(parentFile); + parentFile = parentFile.parent; + } + pathSections.reverse(); + let parent = root; + for (let i = 1; i < pathSections.length; i++) { + let section = pathSections[i]; + let sectionType = section instanceof import_obsidian5.TFolder ? "folder" /* Folder */ : section instanceof import_obsidian5.TFile ? "file" /* File */ : "none" /* None */; + let child = parent.children.find((c) => c.title == section.name && c.type == sectionType && c.depth == i); + if (child == void 0) { + child = new _LinkTree(section, parent, i, root); + parent.children.push(child); + } + parent = child; + } + parent.source = file; + } + return root; + } + static headersFromFile(file, minDepth = 1) { + var _a, _b, _c, _d, _e; + let headings = (_b = (_a = app.metadataCache.getFileCache(file)) == null ? void 0 : _a.headings) != null ? _b : []; + if (headings.length > 0 && (headings[0].level != 1 && minDepth <= 1 && headings[0].heading != file.basename)) + headings.unshift({ heading: file.basename, level: 1, position: { start: { col: 0, line: 0, offset: 0 }, end: { col: 0, line: 0, offset: 0 } } }); + let minHeadingSize = Math.min(...headings.map((h) => h.level)); + let root = new _LinkTree(void 0, void 0, minHeadingSize - 1); + let parent = root; + for (let heading of headings) { + if (heading.level < minDepth) + continue; + if (heading.level > parent.depth) { + let child = new _LinkTree(heading, parent, heading.level, root); + parent.children.push(child); + if (heading.level == parent.depth + 1 || parent == root) + parent = child; + } else if (heading.level == parent.depth) { + let child = new _LinkTree(heading, parent.parent, heading.level, root); + (_c = parent.parent) == null ? void 0 : _c.children.push(child); + parent = child; + } else if (heading.level < parent.depth) { + let levelChange = parent.depth - heading.level; + let backParent = (_d = parent.parent) != null ? _d : parent; + for (let i = 0; i < levelChange; i++) { + backParent = (_e = backParent.parent) != null ? _e : backParent; + } + let child = new _LinkTree(heading, backParent, heading.level, root); + backParent.children.push(child); + parent = child; + } + } + return root; + } + flatten() { + let list = []; + if (this.parent != void 0) + list.push(this); + for (let child of this.children) { + list = list.concat(child.flatten()); + } + return list; + } + sortAlphabetically(reverse = false) { + this.children.sort((a, b) => reverse ? b.title.localeCompare(a.title) : a.title.localeCompare(b.title)); + for (let child of this.children) { + child.sortAlphabetically(); + } + } + sortByIsFolder(reverse = false) { + this.children.sort((a, b) => reverse ? a.type == "folder" /* Folder */ && b.type != "folder" /* Folder */ ? -1 : 1 : a.type == "folder" /* Folder */ && b.type != "folder" /* Folder */ ? 1 : -1); + for (let child of this.children) { + child.sortByIsFolder(reverse); + } + } + makeLinksWebStyle() { + var _a; + for (let child of this.children) { + child.href = Path.toWebStyle((_a = child.href) != null ? _a : "") || child.href; + child.makeLinksWebStyle(); + } + } +}; +var LinkTree = _LinkTree; +_source = new WeakMap(); +_type = new WeakMap(); +var GlobalDataGenerator = class { + static InOutQuadBlend(start, end, t) { + t /= 2; + let t2 = 2 * t * (1 - t) + 0.5; + t2 -= 0.5; + t2 *= 2; + return start + (end - start) * t2; + } + static clearGraphCache() { + GlobalDataGenerator.graphCache = void 0; + } + static getGlobalGraph(minRadius, maxRadius) { + var _a; + if (this.graphCache != void 0) + return this.graphCache; + let nodeCount = 0; + let indexedRadii = []; + let labels = []; + let linkSources = []; + let linkTargets = []; + let linkCounts = []; + let paths = []; + for (let file of app.vault.getFiles()) { + if (file.extension != "md" && file.extension != "canvas") + continue; + indexedRadii.push({ index: nodeCount, radius: minRadius }); + labels.push(file.basename); + paths.push(file.path); + linkCounts.push(0); + nodeCount++; + } + let maxLinks = 0; + for (let link of Object.entries(app.metadataCache.resolvedLinks)) { + let sourceIndex = paths.indexOf(link[0]); + let targetLinks = Object.entries(link[1]); + for (let targetLink of targetLinks) { + let targetIndex = paths.indexOf(targetLink[0]); + if (sourceIndex == -1 || targetIndex == -1) { + continue; + } + linkCounts[sourceIndex]++; + linkCounts[targetIndex]++; + linkSources.push(sourceIndex); + linkTargets.push(targetIndex); + } + if (linkCounts[sourceIndex] > maxLinks) + maxLinks = linkCounts[sourceIndex]; + } + for (let link of Object.entries(app.metadataCache.resolvedLinks)) { + let sourceIndex = paths.indexOf(link[0]); + indexedRadii[sourceIndex].radius = GlobalDataGenerator.InOutQuadBlend(minRadius, maxRadius, Math.min(linkCounts[sourceIndex] / (maxLinks * 0.8), 1)); + } + indexedRadii.sort((a, b) => b.radius - a.radius); + let radii = indexedRadii.map((r) => r.radius); + labels = indexedRadii.map((r) => labels[r.index]); + linkSources = linkSources.map((s) => indexedRadii.findIndex((r) => r.index == s)); + linkTargets = linkTargets.map((t) => indexedRadii.findIndex((r) => r.index == t)); + linkCounts = indexedRadii.map((r) => linkCounts[r.index]); + paths = indexedRadii.map((r) => ExportSettings.settings.makeNamesWebStyle ? Path.toWebStyle(paths[r.index]) : paths[r.index]); + paths = paths.map((p) => { + return new Path(p).setExtension(".html").makeUnixStyle().asString; + }); + this.graphCache = { nodeCount, linkCount: linkSources.length, radii, labels, paths, linkSources, linkTargets }; + return (_a = this.graphCache) != null ? _a : { nodeCount: 0, linkCount: 0, radii: [], labels: [], paths: [], linkSources: [], linkTargets: [] }; + } + static clearFileTreeCache() { + GlobalDataGenerator.fileTreeCache = void 0; + } + static getFileTree(exportedFiles = void 0) { + if (this.fileTreeCache != void 0) + return this.fileTreeCache; + if (exportedFiles == void 0) + return new LinkTree(void 0, void 0, 0); + let fileTree = LinkTree.fromFiles(exportedFiles); + fileTree.sortAlphabetically(); + fileTree.sortByIsFolder(true); + if (ExportSettings.settings.makeNamesWebStyle) + fileTree.makeLinksWebStyle(); + this.fileTreeCache = fileTree; + return fileTree; + } +}; + +// scripts/html-generation/html-generator.ts +var HTMLGenerator = class { + static async beginBatch(exportingFiles) { + GlobalDataGenerator.clearGraphCache(); + GlobalDataGenerator.clearFileTreeCache(); + GlobalDataGenerator.getFileTree(exportingFiles); + await AssetHandler.updateAssetCache(); + await MarkdownRenderer.beginBatch(); + } + static endBatch() { + MarkdownRenderer.endBatch(); + } + static async generateWebpage(file) { + await this.getDocumentHTML(file); + let usingDocument = file.document; + let sidebars = this.generateSideBars(file.contentElement, file); + let rightSidebar = sidebars.right; + let leftSidebar = sidebars.left; + usingDocument.body.appendChild(sidebars.container); + if (ExportSettings.settings.includeGraphView) { + let graph = this.generateGraphView(usingDocument); + let graphHeader = usingDocument.createElement("span"); + graphHeader.addClass("sidebar-section-header"); + graphHeader.innerText = "Interactive Graph"; + rightSidebar.appendChild(graphHeader); + rightSidebar.appendChild(graph); + } + if (ExportSettings.settings.includeOutline) { + let headerTree = LinkTree.headersFromFile(file.markdownFile, 1); + let outline = this.generateHTMLTree(headerTree, usingDocument, "Table Of Contents", "outline-tree", false, 1, 2, ExportSettings.settings.startOutlineCollapsed); + rightSidebar.appendChild(outline); + } + if (ExportSettings.settings.addDarkModeToggle && !usingDocument.querySelector(".theme-toggle-container-inline, .theme-toggle-container")) { + let toggle = this.generateDarkmodeToggle(false, usingDocument); + leftSidebar.appendChild(toggle); + } + if (ExportSettings.settings.includeFileTree) { + let tree = GlobalDataGenerator.getFileTree(); + if (ExportSettings.settings.makeNamesWebStyle) + tree.makeLinksWebStyle(); + let fileTree = this.generateHTMLTree(tree, usingDocument, app.vault.getName(), "file-tree", true, 1, 1, true); + leftSidebar.appendChild(fileTree); + } + await this.fillInHead(file); + file.downloads.unshift(file.getSelfDownloadable()); + return file; + } + static async getDocumentHTML(file, addSelfToDownloads = false) { + var _a, _b; + let body = file.document.body; + let bodyClasses = ((_a = document.body.getAttribute("class")) != null ? _a : "").replaceAll('"', "'"); + let bodyStyle = ((_b = document.body.getAttribute("style")) != null ? _b : "").replaceAll('"', "'"); + body.setAttribute("class", bodyClasses); + body.setAttribute("style", bodyStyle); + let lineWidth = ExportSettings.settings.customLineWidth || "50em"; + let contentWidth = ExportSettings.settings.contentWidth || "500em"; + let sidebarWidth = ExportSettings.settings.sidebarWidth || "25em"; + if (!isNaN(Number(lineWidth))) + lineWidth += "px"; + if (!isNaN(Number(contentWidth))) + contentWidth += "px"; + if (!isNaN(Number(sidebarWidth))) + sidebarWidth += "px"; + body.style.setProperty("--line-width", lineWidth); + body.style.setProperty("--line-width-adaptive", lineWidth); + body.style.setProperty("--file-line-width", lineWidth); + body.style.setProperty("--content-width", contentWidth); + body.style.setProperty("--sidebar-width", sidebarWidth); + body.style.setProperty("--collapse-arrow-size", "0.4em"); + body.style.setProperty("--tree-horizontal-spacing", "1em"); + body.style.setProperty("--tree-vertical-spacing", "0.5em"); + body.style.setProperty("--sidebar-margin", "12px"); + let markdownViewEl = file.document.body.createDiv(); + let content = await MarkdownRenderer.renderMarkdown(file); + if (MarkdownRenderer.cancelled) + throw new Error("Markdown rendering cancelled"); + markdownViewEl.outerHTML = content; + if (ExportSettings.settings.allowFoldingHeadings && !markdownViewEl.hasClass("allow-fold-headings")) { + markdownViewEl.addClass("allow-fold-headings"); + } else if (markdownViewEl.hasClass("allow-fold-headings")) { + markdownViewEl.removeClass("allow-fold-headings"); + } + if (ExportSettings.settings.addFilenameTitle) + this.addTitle(file); + let arrowHTML = ""; + let headings = file.document.querySelectorAll("div h2, div h3, div h4, div h5, div h6"); + headings.forEach((element) => { + if (!(element instanceof HTMLElement)) + return; + if (!element.hasAttribute("data-heading")) + return; + element.style.display = "flex"; + if (element.querySelector(".heading-collapse-indicator") != null) + return; + let el = file.document.createElement("div"); + el.setAttribute("class", "heading-collapse-indicator collapse-indicator collapse-icon"); + el.innerHTML = arrowHTML; + element.prepend(el); + }); + file.document.querySelectorAll("div h1, div .inline-title").forEach((element) => { + var _a2; + (_a2 = element.querySelector(".heading-collapse-indicator")) == null ? void 0 : _a2.remove(); + }); + file.sizerElement.style.paddingBottom = ""; + file.sizerElement.style.paddingBottom = "32px"; + file.sizerElement.style.padding = "var(--file-margins)"; + file.sizerElement.style.paddingTop = "var(--file-margins)"; + file.sizerElement.style.paddingLeft = "var(--file-margins)"; + file.sizerElement.style.paddingRight = "var(--file-margins)"; + file.sizerElement.style.width = "100%"; + file.sizerElement.style.position = "absolute"; + this.fixLinks(file); + let outlinedImages = []; + if (ExportSettings.settings.inlineImages) { + await this.inlineMedia(file); + } else { + outlinedImages = await this.externalizeMedia(file); + } + let mathStyleEl = document.createElement("style"); + mathStyleEl.id = "MJX-CHTML-styles"; + mathStyleEl.innerHTML = AssetHandler.mathStyles; + file.contentElement.prepend(mathStyleEl); + if (addSelfToDownloads) + file.downloads.push(file.getSelfDownloadable()); + file.downloads.push(...outlinedImages); + file.downloads.push(...await AssetHandler.getDownloads()); + if (ExportSettings.settings.makeNamesWebStyle) { + file.downloads.forEach((file2) => { + var _a2; + file2.filename = Path.toWebStyle(file2.filename); + file2.relativeDownloadPath = (_a2 = file2.relativeDownloadPath) == null ? void 0 : _a2.makeWebStyle(); + }); + } + return file; + } + static addTitle(file) { + var _a, _b; + let currentTitleEl = file.document.querySelector("h1, h2, body.show-inline-title .inline-title"); + let hasTitle = currentTitleEl != null; + let currentTitle = (_a = currentTitleEl == null ? void 0 : currentTitleEl.textContent) != null ? _a : ""; + if (!hasTitle || (currentTitleEl == null ? void 0 : currentTitleEl.tagName) == "H2" && currentTitle != file.markdownFile.basename) { + let divContainer = file.document.querySelector("div.mod-header"); + if (!divContainer) { + divContainer = file.document.createElement("div"); + divContainer.setAttribute("class", "mod-header"); + (_b = file.contentElement.querySelector(".markdown-preview-sizer")) == null ? void 0 : _b.prepend(divContainer); + } + let title = divContainer.createEl("div"); + title.innerText = file.markdownFile.basename; + title.setAttribute("class", "inline-title"); + title.setAttribute("data-heading", title.innerText); + title.style.display = "block"; + title.id = file.markdownFile.basename.replaceAll(" ", "_"); + } + } + static generateSideBars(middleContent, file) { + let docEl = file.document; + let pageContainer = docEl.createElement("div"); + let leftSidebar = docEl.createElement("div"); + let leftContent = docEl.createElement("div"); + let leftSidebarScroll = docEl.createElement("div"); + let documentContainer = docEl.createElement("div"); + let rightSidebar = docEl.createElement("div"); + let rightContent = docEl.createElement("div"); + let rightSidebarScroll = docEl.createElement("div"); + pageContainer.setAttribute("class", "webpage-container"); + leftSidebar.setAttribute("class", "sidebar-left"); + leftContent.setAttribute("class", "sidebar-content"); + leftSidebarScroll.setAttribute("class", "sidebar-scroll-area"); + documentContainer.setAttribute("class", "document-container"); + rightContent.setAttribute("class", "sidebar-content"); + rightSidebar.setAttribute("class", "sidebar-right"); + rightSidebarScroll.setAttribute("class", "sidebar-scroll-area"); + leftSidebar.classList.add("sidebar"); + leftSidebar.appendChild(leftContent); + documentContainer.appendChild(middleContent); + rightSidebar.classList.add("sidebar"); + rightSidebar.appendChild(rightContent); + pageContainer.appendChild(leftSidebar); + pageContainer.appendChild(documentContainer); + pageContainer.appendChild(rightSidebar); + return { container: pageContainer, left: leftContent, leftScroll: leftSidebarScroll, right: rightContent, rightScroll: rightSidebarScroll, center: documentContainer }; + } + static getRelativePaths(file) { + let rootPath = file.pathToRoot; + let imagePath = AssetHandler.mediaFolderName.makeUnixStyle(); + let jsPath = AssetHandler.jsFolderName.makeUnixStyle(); + let cssPath = AssetHandler.cssFolderName.makeUnixStyle(); + if (ExportSettings.settings.makeNamesWebStyle) { + imagePath = imagePath.makeWebStyle(); + jsPath = jsPath.makeWebStyle(); + cssPath = cssPath.makeWebStyle(); + rootPath = rootPath.makeWebStyle(); + } + return { mediaPath: imagePath, jsPath, cssPath, rootPath }; + } + static async fillInHead(file) { + var _a, _b; + let relativePaths = this.getRelativePaths(file); + let meta = ` + ${file.markdownFile.basename} + + + + + + + `; + if (ExportSettings.settings.includeOutline) { + meta += `