diff --git a/.gitignore b/.gitignore index 5ae11d8..d357c8b 100644 --- a/.gitignore +++ b/.gitignore @@ -201,3 +201,5 @@ notes public/stylesheets/style.css ngrok .dccache + +.DS_store \ No newline at end of file diff --git a/app.js b/app.js index ae07a38..5e2b393 100644 --- a/app.js +++ b/app.js @@ -38,12 +38,16 @@ app.use( 'https://hcaptcha.com', 'https://*.hcaptcha.com', 'https://cdn.ravenjs.com/', + 'https://cdnjs.cloudflare.com/', + 'https://cdn.jsdelivr.net/', + 'https://*.cloudfront.net/', ], imgSrc: [ "'self'", 'https://blog.pastel.codes', 'https://static.ghost.org', 'https://secure.gravatar.com', + 'data: ', ], styleSrc: [ "'self'", @@ -63,6 +67,7 @@ app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); +app.use('/obsidian', express.static(path.join(__dirname, 'obsidian'))); app.use('/', indexRouter); app.use('/about', aboutRouter); diff --git a/obsidian/00-tags/tag-admin.html b/obsidian/00-tags/tag-admin.html new file mode 100644 index 0000000..4c53517 --- /dev/null +++ b/obsidian/00-tags/tag-admin.html @@ -0,0 +1,19 @@ + + tag-admin + + + + + + + + + + + +

tag-admin

\ No newline at end of file diff --git a/obsidian/00-tags/tag-ai.html b/obsidian/00-tags/tag-ai.html new file mode 100644 index 0000000..f0c78dd --- /dev/null +++ b/obsidian/00-tags/tag-ai.html @@ -0,0 +1,19 @@ + + tag-ai + + + + + + + + + + + +

tag-ai

\ No newline at end of file diff --git a/obsidian/00-tags/tag-api.html b/obsidian/00-tags/tag-api.html new file mode 100644 index 0000000..b1e6d1b --- /dev/null +++ b/obsidian/00-tags/tag-api.html @@ -0,0 +1,19 @@ + + tag-api + + + + + + + + + + + +

tag-api

\ No newline at end of file diff --git a/obsidian/00-tags/tag-application-ui.html b/obsidian/00-tags/tag-application-ui.html new file mode 100644 index 0000000..b6f47b1 --- /dev/null +++ b/obsidian/00-tags/tag-application-ui.html @@ -0,0 +1,19 @@ + + tag-application-ui + + + + + + + + + + + +

tag-application-ui

\ No newline at end of file diff --git a/obsidian/00-tags/tag-art.html b/obsidian/00-tags/tag-art.html new file mode 100644 index 0000000..57337a7 --- /dev/null +++ b/obsidian/00-tags/tag-art.html @@ -0,0 +1,19 @@ + + tag-art + + + + + + + + + + + +

tag-art

\ No newline at end of file diff --git a/obsidian/00-tags/tag-automated-email.html b/obsidian/00-tags/tag-automated-email.html new file mode 100644 index 0000000..7a3fb42 --- /dev/null +++ b/obsidian/00-tags/tag-automated-email.html @@ -0,0 +1,19 @@ + + tag-automated-email + + + + + + + + + + + +

tag-automated-email

\ No newline at end of file diff --git a/obsidian/00-tags/tag-backend.html b/obsidian/00-tags/tag-backend.html new file mode 100644 index 0000000..62705c0 --- /dev/null +++ b/obsidian/00-tags/tag-backend.html @@ -0,0 +1,19 @@ + + tag-backend + + + + + + + + + + + +

tag-backend

\ No newline at end of file diff --git a/obsidian/00-tags/tag-bash.html b/obsidian/00-tags/tag-bash.html new file mode 100644 index 0000000..aaf1000 --- /dev/null +++ b/obsidian/00-tags/tag-bash.html @@ -0,0 +1,19 @@ + + tag-bash + + + + + + + + + + + +

tag-bash

\ No newline at end of file diff --git a/obsidian/00-tags/tag-blender.html b/obsidian/00-tags/tag-blender.html new file mode 100644 index 0000000..ba00ea7 --- /dev/null +++ b/obsidian/00-tags/tag-blender.html @@ -0,0 +1,19 @@ + + tag-blender + + + + + + + + + + + +

tag-blender

\ No newline at end of file diff --git a/obsidian/00-tags/tag-bootstrap.html b/obsidian/00-tags/tag-bootstrap.html new file mode 100644 index 0000000..0cc0519 --- /dev/null +++ b/obsidian/00-tags/tag-bootstrap.html @@ -0,0 +1,19 @@ + + tag-bootstrap + + + + + + + + + + + +

tag-bootstrap

\ No newline at end of file diff --git a/obsidian/00-tags/tag-bot.html b/obsidian/00-tags/tag-bot.html new file mode 100644 index 0000000..202eff7 --- /dev/null +++ b/obsidian/00-tags/tag-bot.html @@ -0,0 +1,19 @@ + + tag-bot + + + + + + + + + + + +

tag-bot

\ No newline at end of file diff --git a/obsidian/00-tags/tag-browser-automation.html b/obsidian/00-tags/tag-browser-automation.html new file mode 100644 index 0000000..e8a2532 --- /dev/null +++ b/obsidian/00-tags/tag-browser-automation.html @@ -0,0 +1,19 @@ + + tag-browser-automation + + + + + + + + + + + +

tag-browser-automation

\ No newline at end of file diff --git a/obsidian/00-tags/tag-browser-extension.html b/obsidian/00-tags/tag-browser-extension.html new file mode 100644 index 0000000..8352344 --- /dev/null +++ b/obsidian/00-tags/tag-browser-extension.html @@ -0,0 +1,19 @@ + + tag-browser-extension + + + + + + + + + + + +

tag-browser-extension

\ No newline at end of file diff --git a/obsidian/00-tags/tag-character-design.html b/obsidian/00-tags/tag-character-design.html new file mode 100644 index 0000000..4c1eecf --- /dev/null +++ b/obsidian/00-tags/tag-character-design.html @@ -0,0 +1,19 @@ + + tag-character-design + + + + + + + + + + + +

tag-character-design

\ No newline at end of file diff --git a/obsidian/00-tags/tag-chrome-extension.html b/obsidian/00-tags/tag-chrome-extension.html new file mode 100644 index 0000000..81de360 --- /dev/null +++ b/obsidian/00-tags/tag-chrome-extension.html @@ -0,0 +1,19 @@ + + tag-chrome-extension + + + + + + + + + + + +

tag-chrome-extension

\ No newline at end of file diff --git a/obsidian/00-tags/tag-cicd.html b/obsidian/00-tags/tag-cicd.html new file mode 100644 index 0000000..1aaca10 --- /dev/null +++ b/obsidian/00-tags/tag-cicd.html @@ -0,0 +1,19 @@ + + tag-cicd + + + + + + + + + + + +

tag-cicd

\ No newline at end of file diff --git a/obsidian/00-tags/tag-concurrency.html b/obsidian/00-tags/tag-concurrency.html new file mode 100644 index 0000000..5fe3cb5 --- /dev/null +++ b/obsidian/00-tags/tag-concurrency.html @@ -0,0 +1,19 @@ + + tag-concurrency + + + + + + + + + + + +

tag-concurrency

\ No newline at end of file diff --git a/obsidian/00-tags/tag-css.html b/obsidian/00-tags/tag-css.html new file mode 100644 index 0000000..98ff11a --- /dev/null +++ b/obsidian/00-tags/tag-css.html @@ -0,0 +1,19 @@ + + tag-css + + + + + + + + + + + +

tag-css

\ No newline at end of file diff --git a/obsidian/00-tags/tag-cybersecurity.html b/obsidian/00-tags/tag-cybersecurity.html new file mode 100644 index 0000000..099aeb8 --- /dev/null +++ b/obsidian/00-tags/tag-cybersecurity.html @@ -0,0 +1,19 @@ + + tag-cybersecurity + + + + + + + + + + + +

tag-cybersecurity

\ No newline at end of file diff --git a/obsidian/00-tags/tag-data-management.html b/obsidian/00-tags/tag-data-management.html new file mode 100644 index 0000000..71b8cd5 --- /dev/null +++ b/obsidian/00-tags/tag-data-management.html @@ -0,0 +1,19 @@ + + tag-data-management + + + + + + + + + + + +

tag-data-management

\ No newline at end of file diff --git a/obsidian/00-tags/tag-data-science.html b/obsidian/00-tags/tag-data-science.html new file mode 100644 index 0000000..9ec7b3a --- /dev/null +++ b/obsidian/00-tags/tag-data-science.html @@ -0,0 +1,19 @@ + + tag-data-science + + + + + + + + + + + +

tag-data-science

\ No newline at end of file diff --git a/obsidian/00-tags/tag-decryption.html b/obsidian/00-tags/tag-decryption.html new file mode 100644 index 0000000..b887d48 --- /dev/null +++ b/obsidian/00-tags/tag-decryption.html @@ -0,0 +1,19 @@ + + tag-decryption + + + + + + + + + + + +

tag-decryption

\ No newline at end of file diff --git a/obsidian/00-tags/tag-devops.html b/obsidian/00-tags/tag-devops.html new file mode 100644 index 0000000..bf99550 --- /dev/null +++ b/obsidian/00-tags/tag-devops.html @@ -0,0 +1,19 @@ + + tag-devops + + + + + + + + + + + +

tag-devops

\ No newline at end of file diff --git a/obsidian/00-tags/tag-diffing.html b/obsidian/00-tags/tag-diffing.html new file mode 100644 index 0000000..cc12185 --- /dev/null +++ b/obsidian/00-tags/tag-diffing.html @@ -0,0 +1,19 @@ + + tag-diffing + + + + + + + + + + + +

tag-diffing

\ No newline at end of file diff --git a/obsidian/00-tags/tag-discord.html b/obsidian/00-tags/tag-discord.html new file mode 100644 index 0000000..772f72b --- /dev/null +++ b/obsidian/00-tags/tag-discord.html @@ -0,0 +1,19 @@ + + tag-discord + + + + + + + + + + + +

tag-discord

\ No newline at end of file diff --git a/obsidian/00-tags/tag-django-rest-framework.html b/obsidian/00-tags/tag-django-rest-framework.html new file mode 100644 index 0000000..08f4836 --- /dev/null +++ b/obsidian/00-tags/tag-django-rest-framework.html @@ -0,0 +1,19 @@ + + tag-django-rest-framework + + + + + + + + + + + +

tag-django-rest-framework

\ No newline at end of file diff --git a/obsidian/00-tags/tag-django.html b/obsidian/00-tags/tag-django.html new file mode 100644 index 0000000..3f2ec32 --- /dev/null +++ b/obsidian/00-tags/tag-django.html @@ -0,0 +1,19 @@ + + tag-django + + + + + + + + + + + +

tag-django

\ No newline at end of file diff --git a/obsidian/00-tags/tag-docker.html b/obsidian/00-tags/tag-docker.html new file mode 100644 index 0000000..66b77da --- /dev/null +++ b/obsidian/00-tags/tag-docker.html @@ -0,0 +1,19 @@ + + tag-docker + + + + + + + + + + + +

tag-docker

\ No newline at end of file diff --git a/obsidian/00-tags/tag-domain-name-management.html b/obsidian/00-tags/tag-domain-name-management.html new file mode 100644 index 0000000..1fb7422 --- /dev/null +++ b/obsidian/00-tags/tag-domain-name-management.html @@ -0,0 +1,19 @@ + + tag-domain-name-management + + + + + + + + + + + +

tag-domain-name-management

\ No newline at end of file diff --git a/obsidian/00-tags/tag-dsa.html b/obsidian/00-tags/tag-dsa.html new file mode 100644 index 0000000..7dd8044 --- /dev/null +++ b/obsidian/00-tags/tag-dsa.html @@ -0,0 +1,19 @@ + + tag-DSA + + + + + + + + + + + +

tag-DSA

\ No newline at end of file diff --git a/obsidian/00-tags/tag-express.html b/obsidian/00-tags/tag-express.html new file mode 100644 index 0000000..f4d91d3 --- /dev/null +++ b/obsidian/00-tags/tag-express.html @@ -0,0 +1,19 @@ + + tag-express + + + + + + + + + + + +

tag-express

\ No newline at end of file diff --git a/obsidian/00-tags/tag-firefox-extension.html b/obsidian/00-tags/tag-firefox-extension.html new file mode 100644 index 0000000..bd78bac --- /dev/null +++ b/obsidian/00-tags/tag-firefox-extension.html @@ -0,0 +1,19 @@ + + tag-firefox-extension + + + + + + + + + + + +

tag-firefox-extension

\ No newline at end of file diff --git a/obsidian/00-tags/tag-frontend.html b/obsidian/00-tags/tag-frontend.html new file mode 100644 index 0000000..7568680 --- /dev/null +++ b/obsidian/00-tags/tag-frontend.html @@ -0,0 +1,19 @@ + + tag-frontend + + + + + + + + + + + +

tag-frontend

\ No newline at end of file diff --git a/obsidian/00-tags/tag-fullstack.html b/obsidian/00-tags/tag-fullstack.html new file mode 100644 index 0000000..3133a99 --- /dev/null +++ b/obsidian/00-tags/tag-fullstack.html @@ -0,0 +1,19 @@ + + tag-fullstack + + + + + + + + + + + +

tag-fullstack

\ No newline at end of file diff --git a/obsidian/00-tags/tag-game-design.html b/obsidian/00-tags/tag-game-design.html new file mode 100644 index 0000000..4cf37f1 --- /dev/null +++ b/obsidian/00-tags/tag-game-design.html @@ -0,0 +1,19 @@ + + tag-game-design + + + + + + + + + + + +

tag-game-design

\ No newline at end of file diff --git a/obsidian/00-tags/tag-game-dev.html b/obsidian/00-tags/tag-game-dev.html new file mode 100644 index 0000000..2575727 --- /dev/null +++ b/obsidian/00-tags/tag-game-dev.html @@ -0,0 +1,19 @@ + + tag-game-dev + + + + + + + + + + + +

tag-game-dev

\ No newline at end of file diff --git a/obsidian/00-tags/tag-gamejam.html b/obsidian/00-tags/tag-gamejam.html new file mode 100644 index 0000000..c3cc4d7 --- /dev/null +++ b/obsidian/00-tags/tag-gamejam.html @@ -0,0 +1,19 @@ + + tag-gamejam + + + + + + + + + + + +

tag-gamejam

\ No newline at end of file diff --git a/obsidian/00-tags/tag-gdb.html b/obsidian/00-tags/tag-gdb.html new file mode 100644 index 0000000..fe76bb9 --- /dev/null +++ b/obsidian/00-tags/tag-gdb.html @@ -0,0 +1,19 @@ + + tag-gdb + + + + + + + + + + + +

tag-gdb

\ No newline at end of file diff --git a/obsidian/00-tags/tag-genetic-algorithm.html b/obsidian/00-tags/tag-genetic-algorithm.html new file mode 100644 index 0000000..7b581de --- /dev/null +++ b/obsidian/00-tags/tag-genetic-algorithm.html @@ -0,0 +1,19 @@ + + tag-genetic-algorithm + + + + + + + + + + + +

tag-genetic-algorithm

\ No newline at end of file diff --git a/obsidian/00-tags/tag-github-actions.html b/obsidian/00-tags/tag-github-actions.html new file mode 100644 index 0000000..0e50ca1 --- /dev/null +++ b/obsidian/00-tags/tag-github-actions.html @@ -0,0 +1,19 @@ + + tag-github-actions + + + + + + + + + + + +

tag-github-actions

\ No newline at end of file diff --git a/obsidian/00-tags/tag-github-contributor.html b/obsidian/00-tags/tag-github-contributor.html new file mode 100644 index 0000000..68f3727 --- /dev/null +++ b/obsidian/00-tags/tag-github-contributor.html @@ -0,0 +1,19 @@ + + tag-github-contributor + + + + + + + + + + + +

tag-github-contributor

\ No newline at end of file diff --git a/obsidian/00-tags/tag-go.html b/obsidian/00-tags/tag-go.html new file mode 100644 index 0000000..517b27f --- /dev/null +++ b/obsidian/00-tags/tag-go.html @@ -0,0 +1,19 @@ + + tag-go + + + + + + + + + + + +

tag-go

\ No newline at end of file diff --git a/obsidian/00-tags/tag-godot.html b/obsidian/00-tags/tag-godot.html new file mode 100644 index 0000000..09b0786 --- /dev/null +++ b/obsidian/00-tags/tag-godot.html @@ -0,0 +1,19 @@ + + tag-godot + + + + + + + + + + + +

tag-godot

\ No newline at end of file diff --git a/obsidian/00-tags/tag-hackathon.html b/obsidian/00-tags/tag-hackathon.html new file mode 100644 index 0000000..7b6563d --- /dev/null +++ b/obsidian/00-tags/tag-hackathon.html @@ -0,0 +1,19 @@ + + tag-hackathon + + + + + + + + + + + +

tag-hackathon

\ No newline at end of file diff --git a/obsidian/00-tags/tag-heroku.html b/obsidian/00-tags/tag-heroku.html new file mode 100644 index 0000000..fca740d --- /dev/null +++ b/obsidian/00-tags/tag-heroku.html @@ -0,0 +1,19 @@ + + tag-heroku + + + + + + + + + + + +

tag-heroku

\ No newline at end of file diff --git a/obsidian/00-tags/tag-hosting.html b/obsidian/00-tags/tag-hosting.html new file mode 100644 index 0000000..cd5e600 --- /dev/null +++ b/obsidian/00-tags/tag-hosting.html @@ -0,0 +1,19 @@ + + tag-hosting + + + + + + + + + + + +

tag-hosting

\ No newline at end of file diff --git a/obsidian/00-tags/tag-html.html b/obsidian/00-tags/tag-html.html new file mode 100644 index 0000000..b8804cf --- /dev/null +++ b/obsidian/00-tags/tag-html.html @@ -0,0 +1,19 @@ + + tag-html + + + + + + + + + + + +

tag-html

\ No newline at end of file diff --git a/obsidian/00-tags/tag-image-gen.html b/obsidian/00-tags/tag-image-gen.html new file mode 100644 index 0000000..328d690 --- /dev/null +++ b/obsidian/00-tags/tag-image-gen.html @@ -0,0 +1,19 @@ + + tag-image-gen + + + + + + + + + + + +

tag-image-gen

\ No newline at end of file diff --git a/obsidian/00-tags/tag-irc.html b/obsidian/00-tags/tag-irc.html new file mode 100644 index 0000000..9491735 --- /dev/null +++ b/obsidian/00-tags/tag-irc.html @@ -0,0 +1,19 @@ + + tag-irc + + + + + + + + + + + +

tag-irc

\ No newline at end of file diff --git a/obsidian/00-tags/tag-java.html b/obsidian/00-tags/tag-java.html new file mode 100644 index 0000000..1086e14 --- /dev/null +++ b/obsidian/00-tags/tag-java.html @@ -0,0 +1,19 @@ + + tag-java + + + + + + + + + + + +

tag-java

\ No newline at end of file diff --git a/obsidian/00-tags/tag-js.html b/obsidian/00-tags/tag-js.html new file mode 100644 index 0000000..a7b7182 --- /dev/null +++ b/obsidian/00-tags/tag-js.html @@ -0,0 +1,19 @@ + + tag-js + + + + + + + + + + + +

tag-js

\ No newline at end of file diff --git a/obsidian/00-tags/tag-jupyter-notebook.html b/obsidian/00-tags/tag-jupyter-notebook.html new file mode 100644 index 0000000..ecb1935 --- /dev/null +++ b/obsidian/00-tags/tag-jupyter-notebook.html @@ -0,0 +1,19 @@ + + tag-jupyter-notebook + + + + + + + + + + + +

tag-jupyter-notebook

\ No newline at end of file diff --git a/obsidian/00-tags/tag-latex.html b/obsidian/00-tags/tag-latex.html new file mode 100644 index 0000000..45b9620 --- /dev/null +++ b/obsidian/00-tags/tag-latex.html @@ -0,0 +1,19 @@ + + tag-LaTeX + + + + + + + + + + + +

tag-LaTeX

\ No newline at end of file diff --git a/obsidian/00-tags/tag-level-design.html b/obsidian/00-tags/tag-level-design.html new file mode 100644 index 0000000..ece8b38 --- /dev/null +++ b/obsidian/00-tags/tag-level-design.html @@ -0,0 +1,19 @@ + + tag-level-design + + + + + + + + + + + +

tag-level-design

\ No newline at end of file diff --git a/obsidian/00-tags/tag-linux.html b/obsidian/00-tags/tag-linux.html new file mode 100644 index 0000000..41b408a --- /dev/null +++ b/obsidian/00-tags/tag-linux.html @@ -0,0 +1,19 @@ + + tag-linux + + + + + + + + + + + +

tag-linux

\ No newline at end of file diff --git a/obsidian/00-tags/tag-low-level-debugging.html b/obsidian/00-tags/tag-low-level-debugging.html new file mode 100644 index 0000000..9ea5f98 --- /dev/null +++ b/obsidian/00-tags/tag-low-level-debugging.html @@ -0,0 +1,19 @@ + + tag-low-level-debugging + + + + + + + + + + + +

tag-low-level-debugging

\ No newline at end of file diff --git a/obsidian/00-tags/tag-machine-learning.html b/obsidian/00-tags/tag-machine-learning.html new file mode 100644 index 0000000..7cfb1e9 --- /dev/null +++ b/obsidian/00-tags/tag-machine-learning.html @@ -0,0 +1,19 @@ + + tag-machine-learning + + + + + + + + + + + +

tag-machine-learning

\ No newline at end of file diff --git a/obsidian/00-tags/tag-matplotlib.html b/obsidian/00-tags/tag-matplotlib.html new file mode 100644 index 0000000..a1eba17 --- /dev/null +++ b/obsidian/00-tags/tag-matplotlib.html @@ -0,0 +1,19 @@ + + tag-matplotlib + + + + + + + + + + + +

tag-matplotlib

\ No newline at end of file diff --git a/obsidian/00-tags/tag-music.html b/obsidian/00-tags/tag-music.html new file mode 100644 index 0000000..5aeabc3 --- /dev/null +++ b/obsidian/00-tags/tag-music.html @@ -0,0 +1,19 @@ + + tag-music + + + + + + + + + + + +

tag-music

\ No newline at end of file diff --git a/obsidian/00-tags/tag-myers-diff-algo.html b/obsidian/00-tags/tag-myers-diff-algo.html new file mode 100644 index 0000000..1f8678a --- /dev/null +++ b/obsidian/00-tags/tag-myers-diff-algo.html @@ -0,0 +1,19 @@ + + tag-myers-diff-algo + + + + + + + + + + + +

tag-myers-diff-algo

\ No newline at end of file diff --git a/obsidian/00-tags/tag-network-traffic-capture.html b/obsidian/00-tags/tag-network-traffic-capture.html new file mode 100644 index 0000000..d98fac0 --- /dev/null +++ b/obsidian/00-tags/tag-network-traffic-capture.html @@ -0,0 +1,19 @@ + + tag-network-traffic-capture + + + + + + + + + + + +

tag-network-traffic-capture

\ No newline at end of file diff --git a/obsidian/00-tags/tag-networking.html b/obsidian/00-tags/tag-networking.html new file mode 100644 index 0000000..0baf966 --- /dev/null +++ b/obsidian/00-tags/tag-networking.html @@ -0,0 +1,19 @@ + + tag-networking + + + + + + + + + + + +

tag-networking

\ No newline at end of file diff --git a/obsidian/00-tags/tag-neural-networks.html b/obsidian/00-tags/tag-neural-networks.html new file mode 100644 index 0000000..dfc08ed --- /dev/null +++ b/obsidian/00-tags/tag-neural-networks.html @@ -0,0 +1,19 @@ + + tag-neural-networks + + + + + + + + + + + +

tag-neural-networks

\ No newline at end of file diff --git a/obsidian/00-tags/tag-nextjs.html b/obsidian/00-tags/tag-nextjs.html new file mode 100644 index 0000000..2007c93 --- /dev/null +++ b/obsidian/00-tags/tag-nextjs.html @@ -0,0 +1,19 @@ + + tag-nextjs + + + + + + + + + + + +

tag-nextjs

\ No newline at end of file diff --git a/obsidian/00-tags/tag-nltk.html b/obsidian/00-tags/tag-nltk.html new file mode 100644 index 0000000..ed19d26 --- /dev/null +++ b/obsidian/00-tags/tag-nltk.html @@ -0,0 +1,19 @@ + + tag-nltk + + + + + + + + + + + +

tag-nltk

\ No newline at end of file diff --git a/obsidian/00-tags/tag-nodejs.html b/obsidian/00-tags/tag-nodejs.html new file mode 100644 index 0000000..11c171d --- /dev/null +++ b/obsidian/00-tags/tag-nodejs.html @@ -0,0 +1,19 @@ + + tag-nodejs + + + + + + + + + + + +

tag-nodejs

\ No newline at end of file diff --git a/obsidian/00-tags/tag-npm.html b/obsidian/00-tags/tag-npm.html new file mode 100644 index 0000000..e761c81 --- /dev/null +++ b/obsidian/00-tags/tag-npm.html @@ -0,0 +1,19 @@ + + tag-npm + + + + + + + + + + + +

tag-npm

\ No newline at end of file diff --git a/obsidian/00-tags/tag-numpy.html b/obsidian/00-tags/tag-numpy.html new file mode 100644 index 0000000..d694c5e --- /dev/null +++ b/obsidian/00-tags/tag-numpy.html @@ -0,0 +1,19 @@ + + tag-numpy + + + + + + + + + + + +

tag-numpy

\ No newline at end of file diff --git a/obsidian/00-tags/tag-oauth.html b/obsidian/00-tags/tag-oauth.html new file mode 100644 index 0000000..fc871cf --- /dev/null +++ b/obsidian/00-tags/tag-oauth.html @@ -0,0 +1,19 @@ + + tag-oauth + + + + + + + + + + + +

tag-oauth

\ No newline at end of file diff --git a/obsidian/00-tags/tag-oop.html b/obsidian/00-tags/tag-oop.html new file mode 100644 index 0000000..31faa35 --- /dev/null +++ b/obsidian/00-tags/tag-oop.html @@ -0,0 +1,19 @@ + + tag-oop + + + + + + + + + + + +

tag-oop

\ No newline at end of file diff --git a/obsidian/00-tags/tag-openai.html b/obsidian/00-tags/tag-openai.html new file mode 100644 index 0000000..f0528fc --- /dev/null +++ b/obsidian/00-tags/tag-openai.html @@ -0,0 +1,19 @@ + + tag-openai + + + + + + + + + + + +

tag-openai

\ No newline at end of file diff --git a/obsidian/00-tags/tag-pandas.html b/obsidian/00-tags/tag-pandas.html new file mode 100644 index 0000000..bf87c3f --- /dev/null +++ b/obsidian/00-tags/tag-pandas.html @@ -0,0 +1,19 @@ + + tag-pandas + + + + + + + + + + + +

tag-pandas

\ No newline at end of file diff --git a/obsidian/00-tags/tag-parcel.html b/obsidian/00-tags/tag-parcel.html new file mode 100644 index 0000000..f7dd5df --- /dev/null +++ b/obsidian/00-tags/tag-parcel.html @@ -0,0 +1,19 @@ + + tag-parcel + + + + + + + + + + + +

tag-parcel

\ No newline at end of file diff --git a/obsidian/00-tags/tag-php.html b/obsidian/00-tags/tag-php.html new file mode 100644 index 0000000..f2f9e0b --- /dev/null +++ b/obsidian/00-tags/tag-php.html @@ -0,0 +1,19 @@ + + tag-php + + + + + + + + + + + +

tag-php

\ No newline at end of file diff --git a/obsidian/00-tags/tag-platformer.html b/obsidian/00-tags/tag-platformer.html new file mode 100644 index 0000000..eedfb76 --- /dev/null +++ b/obsidian/00-tags/tag-platformer.html @@ -0,0 +1,19 @@ + + tag-platformer + + + + + + + + + + + +

tag-platformer

\ No newline at end of file diff --git a/obsidian/00-tags/tag-postgres.html b/obsidian/00-tags/tag-postgres.html new file mode 100644 index 0000000..3a40f9d --- /dev/null +++ b/obsidian/00-tags/tag-postgres.html @@ -0,0 +1,19 @@ + + tag-postgres + + + + + + + + + + + +

tag-postgres

\ No newline at end of file diff --git a/obsidian/00-tags/tag-prod.html b/obsidian/00-tags/tag-prod.html new file mode 100644 index 0000000..72e58f2 --- /dev/null +++ b/obsidian/00-tags/tag-prod.html @@ -0,0 +1,19 @@ + + tag-prod + + + + + + + + + + + +

tag-prod

\ No newline at end of file diff --git a/obsidian/00-tags/tag-protocol.html b/obsidian/00-tags/tag-protocol.html new file mode 100644 index 0000000..5574953 --- /dev/null +++ b/obsidian/00-tags/tag-protocol.html @@ -0,0 +1,19 @@ + + tag-protocol + + + + + + + + + + + +

tag-protocol

\ No newline at end of file diff --git a/obsidian/00-tags/tag-proxy.html b/obsidian/00-tags/tag-proxy.html new file mode 100644 index 0000000..ec7d730 --- /dev/null +++ b/obsidian/00-tags/tag-proxy.html @@ -0,0 +1,19 @@ + + tag-proxy + + + + + + + + + + + +

tag-proxy

\ No newline at end of file diff --git a/obsidian/00-tags/tag-pug.html b/obsidian/00-tags/tag-pug.html new file mode 100644 index 0000000..d9f44b7 --- /dev/null +++ b/obsidian/00-tags/tag-pug.html @@ -0,0 +1,19 @@ + + tag-pug + + + + + + + + + + + +

tag-pug

\ No newline at end of file diff --git a/obsidian/00-tags/tag-puppeteer.html b/obsidian/00-tags/tag-puppeteer.html new file mode 100644 index 0000000..3edb4bd --- /dev/null +++ b/obsidian/00-tags/tag-puppeteer.html @@ -0,0 +1,19 @@ + + tag-puppeteer + + + + + + + + + + + +

tag-puppeteer

\ No newline at end of file diff --git a/obsidian/00-tags/tag-pwndbg.html b/obsidian/00-tags/tag-pwndbg.html new file mode 100644 index 0000000..f5ea4c0 --- /dev/null +++ b/obsidian/00-tags/tag-pwndbg.html @@ -0,0 +1,19 @@ + + tag-pwndbg + + + + + + + + + + + +

tag-pwndbg

\ No newline at end of file diff --git a/obsidian/00-tags/tag-pygame.html b/obsidian/00-tags/tag-pygame.html new file mode 100644 index 0000000..75c2a4e --- /dev/null +++ b/obsidian/00-tags/tag-pygame.html @@ -0,0 +1,19 @@ + + tag-pygame + + + + + + + + + + + +

tag-pygame

\ No newline at end of file diff --git a/obsidian/00-tags/tag-python.html b/obsidian/00-tags/tag-python.html new file mode 100644 index 0000000..3752de0 --- /dev/null +++ b/obsidian/00-tags/tag-python.html @@ -0,0 +1,19 @@ + + tag-python + + + + + + + + + + + +

tag-python

\ No newline at end of file diff --git a/obsidian/00-tags/tag-pytorch.html b/obsidian/00-tags/tag-pytorch.html new file mode 100644 index 0000000..a668899 --- /dev/null +++ b/obsidian/00-tags/tag-pytorch.html @@ -0,0 +1,19 @@ + + tag-pytorch + + + + + + + + + + + +

tag-pytorch

\ No newline at end of file diff --git a/obsidian/00-tags/tag-react.html b/obsidian/00-tags/tag-react.html new file mode 100644 index 0000000..d0ab937 --- /dev/null +++ b/obsidian/00-tags/tag-react.html @@ -0,0 +1,19 @@ + + tag-react + + + + + + + + + + + +

tag-react

\ No newline at end of file diff --git a/obsidian/00-tags/tag-realtime.html b/obsidian/00-tags/tag-realtime.html new file mode 100644 index 0000000..a6ba241 --- /dev/null +++ b/obsidian/00-tags/tag-realtime.html @@ -0,0 +1,19 @@ + + tag-realtime + + + + + + + + + + + +

tag-realtime

\ No newline at end of file diff --git a/obsidian/00-tags/tag-redis.html b/obsidian/00-tags/tag-redis.html new file mode 100644 index 0000000..0343138 --- /dev/null +++ b/obsidian/00-tags/tag-redis.html @@ -0,0 +1,19 @@ + + tag-redis + + + + + + + + + + + +

tag-redis

\ No newline at end of file diff --git a/obsidian/00-tags/tag-research.html b/obsidian/00-tags/tag-research.html new file mode 100644 index 0000000..861dfa6 --- /dev/null +++ b/obsidian/00-tags/tag-research.html @@ -0,0 +1,19 @@ + + tag-research + + + + + + + + + + + +

tag-research

\ No newline at end of file diff --git a/obsidian/00-tags/tag-reverse-engineering.html b/obsidian/00-tags/tag-reverse-engineering.html new file mode 100644 index 0000000..5846155 --- /dev/null +++ b/obsidian/00-tags/tag-reverse-engineering.html @@ -0,0 +1,19 @@ + + tag-reverse-engineering + + + + + + + + + + + +

tag-reverse-engineering

\ No newline at end of file diff --git a/obsidian/00-tags/tag-rust.html b/obsidian/00-tags/tag-rust.html new file mode 100644 index 0000000..dcff044 --- /dev/null +++ b/obsidian/00-tags/tag-rust.html @@ -0,0 +1,19 @@ + + tag-rust + + + + + + + + + + + +

tag-rust

\ No newline at end of file diff --git a/obsidian/00-tags/tag-scikit.html b/obsidian/00-tags/tag-scikit.html new file mode 100644 index 0000000..9b65473 --- /dev/null +++ b/obsidian/00-tags/tag-scikit.html @@ -0,0 +1,19 @@ + + tag-scikit + + + + + + + + + + + +

tag-scikit

\ No newline at end of file diff --git a/obsidian/00-tags/tag-scraping.html b/obsidian/00-tags/tag-scraping.html new file mode 100644 index 0000000..5b9dd3f --- /dev/null +++ b/obsidian/00-tags/tag-scraping.html @@ -0,0 +1,19 @@ + + tag-scraping + + + + + + + + + + + +

tag-scraping

\ No newline at end of file diff --git a/obsidian/00-tags/tag-selenium.html b/obsidian/00-tags/tag-selenium.html new file mode 100644 index 0000000..2114cc8 --- /dev/null +++ b/obsidian/00-tags/tag-selenium.html @@ -0,0 +1,19 @@ + + tag-selenium + + + + + + + + + + + +

tag-selenium

\ No newline at end of file diff --git a/obsidian/00-tags/tag-server-management.html b/obsidian/00-tags/tag-server-management.html new file mode 100644 index 0000000..ceff404 --- /dev/null +++ b/obsidian/00-tags/tag-server-management.html @@ -0,0 +1,19 @@ + + tag-server-management + + + + + + + + + + + +

tag-server-management

\ No newline at end of file diff --git a/obsidian/00-tags/tag-serverless.html b/obsidian/00-tags/tag-serverless.html new file mode 100644 index 0000000..ae7fd42 --- /dev/null +++ b/obsidian/00-tags/tag-serverless.html @@ -0,0 +1,19 @@ + + tag-serverless + + + + + + + + + + + +

tag-serverless

\ No newline at end of file diff --git a/obsidian/00-tags/tag-slack-bot.html b/obsidian/00-tags/tag-slack-bot.html new file mode 100644 index 0000000..f33e915 --- /dev/null +++ b/obsidian/00-tags/tag-slack-bot.html @@ -0,0 +1,19 @@ + + tag-slack-bot + + + + + + + + + + + +

tag-slack-bot

\ No newline at end of file diff --git a/obsidian/00-tags/tag-software-engineering.html b/obsidian/00-tags/tag-software-engineering.html new file mode 100644 index 0000000..a0edbf2 --- /dev/null +++ b/obsidian/00-tags/tag-software-engineering.html @@ -0,0 +1,19 @@ + + tag-software-engineering + + + + + + + + + + + +

tag-software-engineering

\ No newline at end of file diff --git a/obsidian/00-tags/tag-sql.html b/obsidian/00-tags/tag-sql.html new file mode 100644 index 0000000..426aa85 --- /dev/null +++ b/obsidian/00-tags/tag-sql.html @@ -0,0 +1,19 @@ + + tag-sql + + + + + + + + + + + +

tag-sql

\ No newline at end of file diff --git a/obsidian/00-tags/tag-sqlite.html b/obsidian/00-tags/tag-sqlite.html new file mode 100644 index 0000000..c919d3d --- /dev/null +++ b/obsidian/00-tags/tag-sqlite.html @@ -0,0 +1,19 @@ + + tag-sqlite + + + + + + + + + + + +

tag-sqlite

\ No newline at end of file diff --git a/obsidian/00-tags/tag-ssl.html b/obsidian/00-tags/tag-ssl.html new file mode 100644 index 0000000..2b5ca9c --- /dev/null +++ b/obsidian/00-tags/tag-ssl.html @@ -0,0 +1,19 @@ + + tag-ssl + + + + + + + + + + + +

tag-ssl

\ No newline at end of file diff --git a/obsidian/00-tags/tag-supabase.html b/obsidian/00-tags/tag-supabase.html new file mode 100644 index 0000000..6b1168b --- /dev/null +++ b/obsidian/00-tags/tag-supabase.html @@ -0,0 +1,19 @@ + + tag-supabase + + + + + + + + + + + +

tag-supabase

\ No newline at end of file diff --git a/obsidian/00-tags/tag-svelte.html b/obsidian/00-tags/tag-svelte.html new file mode 100644 index 0000000..cad9d0c --- /dev/null +++ b/obsidian/00-tags/tag-svelte.html @@ -0,0 +1,19 @@ + + tag-svelte + + + + + + + + + + + +

tag-svelte

\ No newline at end of file diff --git a/obsidian/00-tags/tag-sveltekit.html b/obsidian/00-tags/tag-sveltekit.html new file mode 100644 index 0000000..e74522f --- /dev/null +++ b/obsidian/00-tags/tag-sveltekit.html @@ -0,0 +1,19 @@ + + tag-sveltekit + + + + + + + + + + + +

tag-sveltekit

\ No newline at end of file diff --git a/obsidian/00-tags/tag-tailwindcss.html b/obsidian/00-tags/tag-tailwindcss.html new file mode 100644 index 0000000..0bd44e3 --- /dev/null +++ b/obsidian/00-tags/tag-tailwindcss.html @@ -0,0 +1,19 @@ + + tag-tailwindcss + + + + + + + + + + + +

tag-tailwindcss

\ No newline at end of file diff --git a/obsidian/00-tags/tag-tdd.html b/obsidian/00-tags/tag-tdd.html new file mode 100644 index 0000000..747a4a9 --- /dev/null +++ b/obsidian/00-tags/tag-tdd.html @@ -0,0 +1,19 @@ + + tag-TDD + + + + + + + + + + + +

tag-TDD

\ No newline at end of file diff --git a/obsidian/00-tags/tag-tensorflow.html b/obsidian/00-tags/tag-tensorflow.html new file mode 100644 index 0000000..d28ade3 --- /dev/null +++ b/obsidian/00-tags/tag-tensorflow.html @@ -0,0 +1,19 @@ + + tag-tensorflow + + + + + + + + + + + +

tag-tensorflow

\ No newline at end of file diff --git a/obsidian/00-tags/tag-threejs.html b/obsidian/00-tags/tag-threejs.html new file mode 100644 index 0000000..58a9953 --- /dev/null +++ b/obsidian/00-tags/tag-threejs.html @@ -0,0 +1,19 @@ + + tag-threejs + + + + + + + + + + + +

tag-threejs

\ No newline at end of file diff --git a/obsidian/00-tags/tag-turbo-hotwired.html b/obsidian/00-tags/tag-turbo-hotwired.html new file mode 100644 index 0000000..226afe4 --- /dev/null +++ b/obsidian/00-tags/tag-turbo-hotwired.html @@ -0,0 +1,19 @@ + + tag-turbo-hotwired + + + + + + + + + + + +

tag-turbo-hotwired

\ No newline at end of file diff --git a/obsidian/00-tags/tag-two-factor-auth.html b/obsidian/00-tags/tag-two-factor-auth.html new file mode 100644 index 0000000..bfb5b1d --- /dev/null +++ b/obsidian/00-tags/tag-two-factor-auth.html @@ -0,0 +1,19 @@ + + tag-two-factor-auth + + + + + + + + + + + +

tag-two-factor-auth

\ No newline at end of file diff --git a/obsidian/00-tags/tag-typescript.html b/obsidian/00-tags/tag-typescript.html new file mode 100644 index 0000000..ea520ff --- /dev/null +++ b/obsidian/00-tags/tag-typescript.html @@ -0,0 +1,19 @@ + + tag-typescript + + + + + + + + + + + +

tag-typescript

\ No newline at end of file diff --git a/obsidian/00-tags/tag-unity.html b/obsidian/00-tags/tag-unity.html new file mode 100644 index 0000000..36bfa6b --- /dev/null +++ b/obsidian/00-tags/tag-unity.html @@ -0,0 +1,19 @@ + + tag-unity + + + + + + + + + + + +

tag-unity

\ No newline at end of file diff --git a/obsidian/00-tags/tag-vb-net.html b/obsidian/00-tags/tag-vb-net.html new file mode 100644 index 0000000..a014184 --- /dev/null +++ b/obsidian/00-tags/tag-vb-net.html @@ -0,0 +1,19 @@ + + tag-vb-net + + + + + + + + + + + +

tag-vb-net

\ No newline at end of file diff --git a/obsidian/00-tags/tag-visual-novel.html b/obsidian/00-tags/tag-visual-novel.html new file mode 100644 index 0000000..d9d4cb1 --- /dev/null +++ b/obsidian/00-tags/tag-visual-novel.html @@ -0,0 +1,19 @@ + + tag-visual-novel + + + + + + + + + + + +

tag-visual-novel

\ No newline at end of file diff --git a/obsidian/00-tags/tag-vite.html b/obsidian/00-tags/tag-vite.html new file mode 100644 index 0000000..1d72140 --- /dev/null +++ b/obsidian/00-tags/tag-vite.html @@ -0,0 +1,19 @@ + + tag-vite + + + + + + + + + + + +

tag-vite

\ No newline at end of file diff --git a/obsidian/00-tags/tag-webdesign.html b/obsidian/00-tags/tag-webdesign.html new file mode 100644 index 0000000..4085348 --- /dev/null +++ b/obsidian/00-tags/tag-webdesign.html @@ -0,0 +1,19 @@ + + tag-webdesign + + + + + + + + + + + +

tag-webdesign

\ No newline at end of file diff --git a/obsidian/00-tags/tag-webdev.html b/obsidian/00-tags/tag-webdev.html new file mode 100644 index 0000000..b889943 --- /dev/null +++ b/obsidian/00-tags/tag-webdev.html @@ -0,0 +1,19 @@ + + tag-webdev + + + + + + + + + + + +

tag-webdev

\ No newline at end of file diff --git a/obsidian/00-tags/tag-wip.html b/obsidian/00-tags/tag-wip.html new file mode 100644 index 0000000..103a225 --- /dev/null +++ b/obsidian/00-tags/tag-wip.html @@ -0,0 +1,19 @@ + + tag-wip + + + + + + + + + + + +

tag-wip

\ No newline at end of file diff --git a/obsidian/00-tags/tag-writing.html b/obsidian/00-tags/tag-writing.html new file mode 100644 index 0000000..8b0fb6c --- /dev/null +++ b/obsidian/00-tags/tag-writing.html @@ -0,0 +1,19 @@ + + tag-writing + + + + + + + + + + + +

tag-writing

\ No newline at end of file diff --git a/obsidian/00-tags/tag-x3d.html b/obsidian/00-tags/tag-x3d.html new file mode 100644 index 0000000..46f69fe --- /dev/null +++ b/obsidian/00-tags/tag-x3d.html @@ -0,0 +1,19 @@ + + tag-x3d + + + + + + + + + + + +

tag-x3d

\ No newline at end of file diff --git a/obsidian/01-projects/00-school/personal/dumpmon-grabber.html b/obsidian/01-projects/00-school/personal/dumpmon-grabber.html new file mode 100644 index 0000000..680bfde --- /dev/null +++ b/obsidian/01-projects/00-school/personal/dumpmon-grabber.html @@ -0,0 +1,19 @@ + + Dumpmon grabber + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/00-school/personal/irc-bot.html b/obsidian/01-projects/00-school/personal/irc-bot.html new file mode 100644 index 0000000..8ef5219 --- /dev/null +++ b/obsidian/01-projects/00-school/personal/irc-bot.html @@ -0,0 +1,19 @@ + + IRC Bot + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/00-school/personal/personal.html b/obsidian/01-projects/00-school/personal/personal.html new file mode 100644 index 0000000..54fd781 --- /dev/null +++ b/obsidian/01-projects/00-school/personal/personal.html @@ -0,0 +1,21 @@ + + Personal + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/00-school/personal/raspberry-pi-setup-scripts.html b/obsidian/01-projects/00-school/personal/raspberry-pi-setup-scripts.html new file mode 100644 index 0000000..8bbcade --- /dev/null +++ b/obsidian/01-projects/00-school/personal/raspberry-pi-setup-scripts.html @@ -0,0 +1,19 @@ + + Raspberry Pi Setup Scripts + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/00-school/school.html b/obsidian/01-projects/00-school/school.html new file mode 100644 index 0000000..0a6896a --- /dev/null +++ b/obsidian/01-projects/00-school/school.html @@ -0,0 +1,19 @@ + + School + + + + + + + + + + + +

School

Personal

\ No newline at end of file diff --git a/obsidian/01-projects/01-college/assignments/assignments.html b/obsidian/01-projects/01-college/assignments/assignments.html new file mode 100644 index 0000000..f1308f7 --- /dev/null +++ b/obsidian/01-projects/01-college/assignments/assignments.html @@ -0,0 +1,20 @@ + + Assignments + + + + + + + + + + + +

Assignments

IRC-CaLS
+ICT Site

\ No newline at end of file diff --git a/obsidian/01-projects/01-college/assignments/ict-site.html b/obsidian/01-projects/01-college/assignments/ict-site.html new file mode 100644 index 0000000..f5f6c71 --- /dev/null +++ b/obsidian/01-projects/01-college/assignments/ict-site.html @@ -0,0 +1,19 @@ + + ICT Site + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/01-college/assignments/irc-cals.html b/obsidian/01-projects/01-college/assignments/irc-cals.html new file mode 100644 index 0000000..0218617 --- /dev/null +++ b/obsidian/01-projects/01-college/assignments/irc-cals.html @@ -0,0 +1,19 @@ + + IRC-CaLS + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/01-college/college.html b/obsidian/01-projects/01-college/college.html new file mode 100644 index 0000000..3ac9ff4 --- /dev/null +++ b/obsidian/01-projects/01-college/college.html @@ -0,0 +1,20 @@ + + College + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/01-college/personal/concatbot.html b/obsidian/01-projects/01-college/personal/concatbot.html new file mode 100644 index 0000000..6e71c1c --- /dev/null +++ b/obsidian/01-projects/01-college/personal/concatbot.html @@ -0,0 +1,19 @@ + + concatBot + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/01-college/personal/cyber-discovery-finalist-challenge.html b/obsidian/01-projects/01-college/personal/cyber-discovery-finalist-challenge.html new file mode 100644 index 0000000..be337ab --- /dev/null +++ b/obsidian/01-projects/01-college/personal/cyber-discovery-finalist-challenge.html @@ -0,0 +1,19 @@ + + Cyber Discovery Finalist Challenge + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/01-college/personal/hexbot.html b/obsidian/01-projects/01-college/personal/hexbot.html new file mode 100644 index 0000000..bcbd46c --- /dev/null +++ b/obsidian/01-projects/01-college/personal/hexbot.html @@ -0,0 +1,19 @@ + + Hexbot + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/01-college/personal/personal.html b/obsidian/01-projects/01-college/personal/personal.html new file mode 100644 index 0000000..f4da48f --- /dev/null +++ b/obsidian/01-projects/01-college/personal/personal.html @@ -0,0 +1,21 @@ + + Personal + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/aiab.html b/obsidian/01-projects/02-university/assignments/aiab.html new file mode 100644 index 0000000..065b250 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/aiab.html @@ -0,0 +1,19 @@ + + AIAB + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/assignments.html b/obsidian/01-projects/02-university/assignments/assignments.html new file mode 100644 index 0000000..6e1ff0d --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/assignments.html @@ -0,0 +1,30 @@ + + Assignments + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/checkers.html b/obsidian/01-projects/02-university/assignments/checkers.html new file mode 100644 index 0000000..4675ce5 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/checkers.html @@ -0,0 +1,19 @@ + + Checkers + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/clue.html b/obsidian/01-projects/02-university/assignments/clue.html new file mode 100644 index 0000000..3edbf9e --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/clue.html @@ -0,0 +1,19 @@ + + Clue + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/computer-vision.html b/obsidian/01-projects/02-university/assignments/computer-vision.html new file mode 100644 index 0000000..16f6967 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/computer-vision.html @@ -0,0 +1,19 @@ + + Computer Vision + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/database-design-and-sql.html b/obsidian/01-projects/02-university/assignments/database-design-and-sql.html new file mode 100644 index 0000000..ecf47e6 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/database-design-and-sql.html @@ -0,0 +1,19 @@ + + Database design and sql + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/dsa-programming-project.html b/obsidian/01-projects/02-university/assignments/dsa-programming-project.html new file mode 100644 index 0000000..6bd39e3 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/dsa-programming-project.html @@ -0,0 +1,20 @@ + + DSA Programming Project + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/individual-project.html b/obsidian/01-projects/02-university/assignments/individual-project.html new file mode 100644 index 0000000..4b5ca42 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/individual-project.html @@ -0,0 +1,19 @@ + + Individual Project + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/lovejoys-antique-evaluations.html b/obsidian/01-projects/02-university/assignments/lovejoys-antique-evaluations.html new file mode 100644 index 0000000..ab47488 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/lovejoys-antique-evaluations.html @@ -0,0 +1,19 @@ + + Lovejoys Antique Evaluations + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/machine-learning.html b/obsidian/01-projects/02-university/assignments/machine-learning.html new file mode 100644 index 0000000..fe77ea4 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/machine-learning.html @@ -0,0 +1,19 @@ + + Machine learning + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/minesweeper.html b/obsidian/01-projects/02-university/assignments/minesweeper.html new file mode 100644 index 0000000..94f5837 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/minesweeper.html @@ -0,0 +1,19 @@ + + Minesweeper + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/natural-language-engineering.html b/obsidian/01-projects/02-university/assignments/natural-language-engineering.html new file mode 100644 index 0000000..0d8e5d4 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/natural-language-engineering.html @@ -0,0 +1,19 @@ + + Natural Language Engineering + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/assignments/web-3d.html b/obsidian/01-projects/02-university/assignments/web-3d.html new file mode 100644 index 0000000..381b850 --- /dev/null +++ b/obsidian/01-projects/02-university/assignments/web-3d.html @@ -0,0 +1,19 @@ + + Web 3D + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/bandcamp-web-downloader.html b/obsidian/01-projects/02-university/personal/bandcamp-web-downloader.html new file mode 100644 index 0000000..12afa96 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/bandcamp-web-downloader.html @@ -0,0 +1,19 @@ + + Bandcamp Web Downloader + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/blaseball-peanut-clicker.html b/obsidian/01-projects/02-university/personal/blaseball-peanut-clicker.html new file mode 100644 index 0000000..3406e56 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/blaseball-peanut-clicker.html @@ -0,0 +1,19 @@ + + Blaseball Peanut Clicker + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/ghost-terminal-dracula-theme.html b/obsidian/01-projects/02-university/personal/ghost-terminal-dracula-theme.html new file mode 100644 index 0000000..0f9b67b --- /dev/null +++ b/obsidian/01-projects/02-university/personal/ghost-terminal-dracula-theme.html @@ -0,0 +1,19 @@ + + Ghost Terminal Dracula theme + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/hacksussex-2019.html b/obsidian/01-projects/02-university/personal/hacksussex-2019.html new file mode 100644 index 0000000..495b978 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/hacksussex-2019.html @@ -0,0 +1,19 @@ + + Hacksussex 2019 + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/hosting-with-vps.html b/obsidian/01-projects/02-university/personal/hosting-with-vps.html new file mode 100644 index 0000000..54d3191 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/hosting-with-vps.html @@ -0,0 +1,24 @@ + + Hosting with VPS + + + + + + + + + + + +

Hosting with VPS

tag-hosting tag-admin tag-linux tag-docker tag-domain-name-management tag-ssl

https://pastel.codes - custom site
+https://blog.pastel.codes - ghost
+https:/git.pastel.codes - gitea
+https://mumble.pastel.codes - mumble - (dead)
+https://matrix.pastel.codes - matrix
+https://possum.gay - element (frontend for matrix)

\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/i3-config.html b/obsidian/01-projects/02-university/personal/i3-config.html new file mode 100644 index 0000000..23d519c --- /dev/null +++ b/obsidian/01-projects/02-university/personal/i3-config.html @@ -0,0 +1,19 @@ + + i3 Config + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/litebin.html b/obsidian/01-projects/02-university/personal/litebin.html new file mode 100644 index 0000000..9eb8672 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/litebin.html @@ -0,0 +1,19 @@ + + litebin + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/markdown-dracula-theme.html b/obsidian/01-projects/02-university/personal/markdown-dracula-theme.html new file mode 100644 index 0000000..41fb4b4 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/markdown-dracula-theme.html @@ -0,0 +1,19 @@ + + Markdown dracula theme + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/mdview.html b/obsidian/01-projects/02-university/personal/mdview.html new file mode 100644 index 0000000..2f6e2f0 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/mdview.html @@ -0,0 +1,19 @@ + + MDView + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/nixos-config.html b/obsidian/01-projects/02-university/personal/nixos-config.html new file mode 100644 index 0000000..d061fb6 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/nixos-config.html @@ -0,0 +1,19 @@ + + nixos config + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/pastel.codes.html b/obsidian/01-projects/02-university/personal/pastel.codes.html new file mode 100644 index 0000000..55aefa2 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/pastel.codes.html @@ -0,0 +1,19 @@ + + pastel.codes + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/personal.html b/obsidian/01-projects/02-university/personal/personal.html new file mode 100644 index 0000000..ac1f63d --- /dev/null +++ b/obsidian/01-projects/02-university/personal/personal.html @@ -0,0 +1,31 @@ + + Personal + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/ttttt.uk.html b/obsidian/01-projects/02-university/personal/ttttt.uk.html new file mode 100644 index 0000000..ac3cfcb --- /dev/null +++ b/obsidian/01-projects/02-university/personal/ttttt.uk.html @@ -0,0 +1,19 @@ + + TTTTT.uk + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/personal/university-note-tools.html b/obsidian/01-projects/02-university/personal/university-note-tools.html new file mode 100644 index 0000000..45dee22 --- /dev/null +++ b/obsidian/01-projects/02-university/personal/university-note-tools.html @@ -0,0 +1,19 @@ + + University Note Tools + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/02-university/university.html b/obsidian/01-projects/02-university/university.html new file mode 100644 index 0000000..ee01c6c --- /dev/null +++ b/obsidian/01-projects/02-university/university.html @@ -0,0 +1,20 @@ + + University + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/personal/flipanalytica-hacksussex-2023.html b/obsidian/01-projects/03-work/personal/flipanalytica-hacksussex-2023.html new file mode 100644 index 0000000..4fcdd59 --- /dev/null +++ b/obsidian/01-projects/03-work/personal/flipanalytica-hacksussex-2023.html @@ -0,0 +1,23 @@ + + FlipAnalytica - Hacksussex 2023 + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/personal/hiddennet.works.html b/obsidian/01-projects/03-work/personal/hiddennet.works.html new file mode 100644 index 0000000..2fd2d31 --- /dev/null +++ b/obsidian/01-projects/03-work/personal/hiddennet.works.html @@ -0,0 +1,19 @@ + + hiddennet.works + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/personal/managing-a-minecraft-server.html b/obsidian/01-projects/03-work/personal/managing-a-minecraft-server.html new file mode 100644 index 0000000..de44253 --- /dev/null +++ b/obsidian/01-projects/03-work/personal/managing-a-minecraft-server.html @@ -0,0 +1,21 @@ + + Managing a minecraft server + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/personal/personal.html b/obsidian/01-projects/03-work/personal/personal.html new file mode 100644 index 0000000..abe808c --- /dev/null +++ b/obsidian/01-projects/03-work/personal/personal.html @@ -0,0 +1,22 @@ + + Personal + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/personal/watcher.html b/obsidian/01-projects/03-work/personal/watcher.html new file mode 100644 index 0000000..aa7b03c --- /dev/null +++ b/obsidian/01-projects/03-work/personal/watcher.html @@ -0,0 +1,20 @@ + + Watcher + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/projects/bizarrepg.html b/obsidian/01-projects/03-work/projects/bizarrepg.html new file mode 100644 index 0000000..c48ed5b --- /dev/null +++ b/obsidian/01-projects/03-work/projects/bizarrepg.html @@ -0,0 +1,19 @@ + + BizarrePG + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/projects/changewatch.html b/obsidian/01-projects/03-work/projects/changewatch.html new file mode 100644 index 0000000..a827878 --- /dev/null +++ b/obsidian/01-projects/03-work/projects/changewatch.html @@ -0,0 +1,19 @@ + + Changewatch + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/projects/heythere/heythere-extensions.html b/obsidian/01-projects/03-work/projects/heythere/heythere-extensions.html new file mode 100644 index 0000000..63163a1 --- /dev/null +++ b/obsidian/01-projects/03-work/projects/heythere/heythere-extensions.html @@ -0,0 +1,20 @@ + + Heythere Extensions + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/projects/heythere/heythere-web.html b/obsidian/01-projects/03-work/projects/heythere/heythere-web.html new file mode 100644 index 0000000..23b5bb5 --- /dev/null +++ b/obsidian/01-projects/03-work/projects/heythere/heythere-web.html @@ -0,0 +1,19 @@ + + Heythere Web + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/projects/n0rt.html b/obsidian/01-projects/03-work/projects/n0rt.html new file mode 100644 index 0000000..e8e99c9 --- /dev/null +++ b/obsidian/01-projects/03-work/projects/n0rt.html @@ -0,0 +1,19 @@ + + N0RT + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/projects/projects.html b/obsidian/01-projects/03-work/projects/projects.html new file mode 100644 index 0000000..9275ebf --- /dev/null +++ b/obsidian/01-projects/03-work/projects/projects.html @@ -0,0 +1,24 @@ + + Projects + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/projects/the-loop..html b/obsidian/01-projects/03-work/projects/the-loop..html new file mode 100644 index 0000000..2375050 --- /dev/null +++ b/obsidian/01-projects/03-work/projects/the-loop..html @@ -0,0 +1,19 @@ + + The Loop. + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/01-projects/03-work/work.html b/obsidian/01-projects/03-work/work.html new file mode 100644 index 0000000..6e1f06c --- /dev/null +++ b/obsidian/01-projects/03-work/work.html @@ -0,0 +1,20 @@ + + Work + + + + + + + + + + + +
\ No newline at end of file diff --git a/obsidian/lib/fonts/05b618077343fbbd92b7.ttf b/obsidian/lib/fonts/05b618077343fbbd92b7.ttf new file mode 100644 index 0000000..0878199 Binary files /dev/null and b/obsidian/lib/fonts/05b618077343fbbd92b7.ttf differ diff --git a/obsidian/lib/fonts/2d5198822ab091ce4305.woff2 b/obsidian/lib/fonts/2d5198822ab091ce4305.woff2 new file mode 100644 index 0000000..bc4be66 Binary files /dev/null and b/obsidian/lib/fonts/2d5198822ab091ce4305.woff2 differ diff --git a/obsidian/lib/fonts/454577c22304619db035.ttf b/obsidian/lib/fonts/454577c22304619db035.ttf new file mode 100644 index 0000000..91a2a44 Binary files /dev/null and b/obsidian/lib/fonts/454577c22304619db035.ttf differ diff --git a/obsidian/lib/fonts/4bb6ac751d1c5478ff3a.woff2 b/obsidian/lib/fonts/4bb6ac751d1c5478ff3a.woff2 new file mode 100644 index 0000000..a89cf4c Binary files /dev/null and b/obsidian/lib/fonts/4bb6ac751d1c5478ff3a.woff2 differ diff --git a/obsidian/lib/fonts/52ac8f3034507f1d9e53.ttf b/obsidian/lib/fonts/52ac8f3034507f1d9e53.ttf new file mode 100644 index 0000000..c790e04 Binary files /dev/null and b/obsidian/lib/fonts/52ac8f3034507f1d9e53.ttf differ diff --git a/obsidian/lib/fonts/535a6cf662596b3bd6a6.woff2 b/obsidian/lib/fonts/535a6cf662596b3bd6a6.woff2 new file mode 100644 index 0000000..4a81dc7 Binary files /dev/null and b/obsidian/lib/fonts/535a6cf662596b3bd6a6.woff2 differ diff --git a/obsidian/lib/fonts/70cc7ff27245e82ad414.ttf b/obsidian/lib/fonts/70cc7ff27245e82ad414.ttf new file mode 100644 index 0000000..3563e73 Binary files /dev/null and b/obsidian/lib/fonts/70cc7ff27245e82ad414.ttf differ diff --git a/obsidian/lib/fonts/72505e6a122c6acd5471.woff2 b/obsidian/lib/fonts/72505e6a122c6acd5471.woff2 new file mode 100644 index 0000000..f2ea706 Binary files /dev/null and b/obsidian/lib/fonts/72505e6a122c6acd5471.woff2 differ diff --git a/obsidian/lib/fonts/94f2f163d4b698242fef.otf b/obsidian/lib/fonts/94f2f163d4b698242fef.otf new file mode 100644 index 0000000..263ae4c Binary files /dev/null and b/obsidian/lib/fonts/94f2f163d4b698242fef.otf differ diff --git a/obsidian/lib/fonts/b5f0f109bc88052d4000.woff2 b/obsidian/lib/fonts/b5f0f109bc88052d4000.woff2 new file mode 100644 index 0000000..611e90c Binary files /dev/null and b/obsidian/lib/fonts/b5f0f109bc88052d4000.woff2 differ diff --git a/obsidian/lib/fonts/c8ba52b05a9ef10f4758.woff2 b/obsidian/lib/fonts/c8ba52b05a9ef10f4758.woff2 new file mode 100644 index 0000000..6c2b689 Binary files /dev/null and b/obsidian/lib/fonts/c8ba52b05a9ef10f4758.woff2 differ diff --git a/obsidian/lib/fonts/cb10ffd7684cd9836a05.woff2 b/obsidian/lib/fonts/cb10ffd7684cd9836a05.woff2 new file mode 100644 index 0000000..a619fc5 Binary files /dev/null and b/obsidian/lib/fonts/cb10ffd7684cd9836a05.woff2 differ diff --git a/obsidian/lib/fonts/cbe0ae49c52c920fd563.woff2 b/obsidian/lib/fonts/cbe0ae49c52c920fd563.woff2 new file mode 100644 index 0000000..c24c2bd Binary files /dev/null and b/obsidian/lib/fonts/cbe0ae49c52c920fd563.woff2 differ diff --git a/obsidian/lib/html/file-tree.html b/obsidian/lib/html/file-tree.html new file mode 100644 index 0000000..a002ad2 --- /dev/null +++ b/obsidian/lib/html/file-tree.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/obsidian/lib/media/874d8b8e340f75575caa.svg b/obsidian/lib/media/874d8b8e340f75575caa.svg new file mode 100644 index 0000000..a6471ff --- /dev/null +++ b/obsidian/lib/media/874d8b8e340f75575caa.svg @@ -0,0 +1,2 @@ + + diff --git a/obsidian/lib/media/favicon.png b/obsidian/lib/media/favicon.png new file mode 100644 index 0000000..6f99489 Binary files /dev/null and b/obsidian/lib/media/favicon.png differ diff --git a/obsidian/lib/metadata.json b/obsidian/lib/metadata.json new file mode 100644 index 0000000..92d7df2 --- /dev/null +++ b/obsidian/lib/metadata.json @@ -0,0 +1,1471 @@ +{ + "vaultName": "Work", + "lastExport": 1714398427489, + "pluginVersion": "1.8.01", + "validBodyClasses": "publish css-settings-manager native-scrollbars theme-light show-inline-title", + "useCustomHeadContent": false, + "useCustomFavicon": false, + "files": [ + "00 Tags/tag-admin.md", + "00 Tags/tag-ai.md", + "00 Tags/tag-api.md", + "00 Tags/tag-application-ui.md", + "00 Tags/tag-art.md", + "00 Tags/tag-automated-email.md", + "00 Tags/tag-backend.md", + "00 Tags/tag-bash.md", + "00 Tags/tag-blender.md", + "00 Tags/tag-bootstrap.md", + "00 Tags/tag-bot.md", + "00 Tags/tag-browser-automation.md", + "00 Tags/tag-browser-extension.md", + "00 Tags/tag-character-design.md", + "00 Tags/tag-chrome-extension.md", + "00 Tags/tag-cicd.md", + "00 Tags/tag-concurrency.md", + "00 Tags/tag-css.md", + "00 Tags/tag-cybersecurity.md", + "00 Tags/tag-data-management.md", + "00 Tags/tag-data-science.md", + "00 Tags/tag-decryption.md", + "00 Tags/tag-devops.md", + "00 Tags/tag-diffing.md", + "00 Tags/tag-discord.md", + "00 Tags/tag-django.md", + "00 Tags/tag-django-rest-framework.md", + "00 Tags/tag-docker.md", + "00 Tags/tag-domain-name-management.md", + "00 Tags/tag-DSA.md", + "00 Tags/tag-express.md", + "00 Tags/tag-firefox-extension.md", + "00 Tags/tag-frontend.md", + "00 Tags/tag-fullstack.md", + "00 Tags/tag-game-design.md", + "00 Tags/tag-game-dev.md", + "00 Tags/tag-gamejam.md", + "00 Tags/tag-gdb.md", + "00 Tags/tag-genetic-algorithm.md", + "00 Tags/tag-github-actions.md", + "00 Tags/tag-github-contributor.md", + "00 Tags/tag-go.md", + "00 Tags/tag-godot.md", + "00 Tags/tag-hackathon.md", + "00 Tags/tag-heroku.md", + "00 Tags/tag-hosting.md", + "00 Tags/tag-html.md", + "00 Tags/tag-image-gen.md", + "00 Tags/tag-irc.md", + "00 Tags/tag-java.md", + "00 Tags/tag-js.md", + "00 Tags/tag-jupyter-notebook.md", + "00 Tags/tag-LaTeX.md", + "00 Tags/tag-level-design.md", + "00 Tags/tag-linux.md", + "00 Tags/tag-low-level-debugging.md", + "00 Tags/tag-machine-learning.md", + "00 Tags/tag-matplotlib.md", + "00 Tags/tag-music.md", + "00 Tags/tag-myers-diff-algo.md", + "00 Tags/tag-network-traffic-capture.md", + "00 Tags/tag-networking.md", + "00 Tags/tag-neural-networks.md", + "00 Tags/tag-nextjs.md", + "00 Tags/tag-nltk.md", + "00 Tags/tag-nodejs.md", + "00 Tags/tag-npm.md", + "00 Tags/tag-numpy.md", + "00 Tags/tag-oauth.md", + "00 Tags/tag-oop.md", + "00 Tags/tag-openai.md", + "00 Tags/tag-pandas.md", + "00 Tags/tag-parcel.md", + "00 Tags/tag-php.md", + "00 Tags/tag-platformer.md", + "00 Tags/tag-postgres.md", + "00 Tags/tag-prod.md", + "00 Tags/tag-protocol.md", + "00 Tags/tag-proxy.md", + "00 Tags/tag-pug.md", + "00 Tags/tag-puppeteer.md", + "00 Tags/tag-pwndbg.md", + "00 Tags/tag-pygame.md", + "00 Tags/tag-python.md", + "00 Tags/tag-pytorch.md", + "00 Tags/tag-react.md", + "00 Tags/tag-realtime.md", + "00 Tags/tag-redis.md", + "00 Tags/tag-research.md", + "00 Tags/tag-reverse-engineering.md", + "00 Tags/tag-rust.md", + "00 Tags/tag-scikit.md", + "00 Tags/tag-scraping.md", + "00 Tags/tag-selenium.md", + "00 Tags/tag-server-management.md", + "00 Tags/tag-serverless.md", + "00 Tags/tag-slack-bot.md", + "00 Tags/tag-software-engineering.md", + "00 Tags/tag-sql.md", + "00 Tags/tag-sqlite.md", + "00 Tags/tag-ssl.md", + "00 Tags/tag-supabase.md", + "00 Tags/tag-svelte.md", + "00 Tags/tag-sveltekit.md", + "00 Tags/tag-tailwindcss.md", + "00 Tags/tag-TDD.md", + "00 Tags/tag-tensorflow.md", + "00 Tags/tag-threejs.md", + "00 Tags/tag-turbo-hotwired.md", + "00 Tags/tag-two-factor-auth.md", + "00 Tags/tag-typescript.md", + "00 Tags/tag-unity.md", + "00 Tags/tag-vb-net.md", + "00 Tags/tag-visual-novel.md", + "00 Tags/tag-vite.md", + "00 Tags/tag-webdesign.md", + "00 Tags/tag-webdev.md", + "00 Tags/tag-wip.md", + "00 Tags/tag-writing.md", + "00 Tags/tag-x3d.md", + "01 Projects/00 School/Personal/Dumpmon grabber.md", + "01 Projects/00 School/Personal/IRC Bot.md", + "01 Projects/00 School/Personal/Personal.md", + "01 Projects/00 School/Personal/Raspberry Pi Setup Scripts.md", + "01 Projects/00 School/School.md", + "01 Projects/01 College/Assignments/Assignments.md", + "01 Projects/01 College/Assignments/ICT Site.md", + "01 Projects/01 College/Assignments/IRC-CaLS.md", + "01 Projects/01 College/Personal/concatBot.md", + "01 Projects/01 College/Personal/Cyber Discovery Finalist Challenge.md", + "01 Projects/01 College/Personal/Hexbot.md", + "01 Projects/01 College/Personal/Personal.md", + "01 Projects/01 College/College.md", + "01 Projects/02 University/Assignments/AIAB.md", + "01 Projects/02 University/Assignments/Assignments.md", + "01 Projects/02 University/Assignments/Checkers.md", + "01 Projects/02 University/Assignments/Clue.md", + "01 Projects/02 University/Assignments/Computer Vision.md", + "01 Projects/02 University/Assignments/Database design and sql.md", + "01 Projects/02 University/Assignments/DSA Programming Project.md", + "01 Projects/02 University/Assignments/Individual Project.md", + "01 Projects/02 University/Assignments/Lovejoys Antique Evaluations.md", + "01 Projects/02 University/Assignments/Machine learning.md", + "01 Projects/02 University/Assignments/Minesweeper.md", + "01 Projects/02 University/Assignments/Natural Language Engineering.md", + "01 Projects/02 University/Assignments/Web 3D.md", + "01 Projects/02 University/Personal/Bandcamp Web Downloader.md", + "01 Projects/02 University/Personal/Blaseball Peanut Clicker.md", + "01 Projects/02 University/Personal/Ghost Terminal Dracula theme.md", + "01 Projects/02 University/Personal/Hacksussex 2019.md", + "01 Projects/02 University/Personal/Hosting with VPS.md", + "01 Projects/02 University/Personal/i3 Config.md", + "01 Projects/02 University/Personal/litebin.md", + "01 Projects/02 University/Personal/Markdown dracula theme.md", + "01 Projects/02 University/Personal/MDView.md", + "01 Projects/02 University/Personal/nixos config.md", + "01 Projects/02 University/Personal/pastel.codes.md", + "01 Projects/02 University/Personal/Personal.md", + "01 Projects/02 University/Personal/TTTTT.uk.md", + "01 Projects/02 University/Personal/University Note Tools.md", + "01 Projects/02 University/University.md", + "01 Projects/03 Work/Personal/FlipAnalytica - Hacksussex 2023.md", + "01 Projects/03 Work/Personal/hiddennet.works.md", + "01 Projects/03 Work/Personal/Managing a minecraft server.md", + "01 Projects/03 Work/Personal/Personal.md", + "01 Projects/03 Work/Personal/Watcher.md", + "01 Projects/03 Work/Projects/Heythere/Heythere Extensions.md", + "01 Projects/03 Work/Projects/Heythere/Heythere Web.md", + "01 Projects/03 Work/Projects/BizarrePG.md", + "01 Projects/03 Work/Projects/Changewatch.md", + "01 Projects/03 Work/Projects/N0RT.md", + "01 Projects/03 Work/Projects/Projects.md", + "01 Projects/03 Work/Projects/The Loop..md", + "01 Projects/03 Work/Work.md", + "Projects.md", + "lib/scripts/graph-wasm.wasm", + "lib/fonts/94f2f163d4b698242fef.otf", + "lib/fonts/72505e6a122c6acd5471.woff2", + "lib/fonts/2d5198822ab091ce4305.woff2", + "lib/fonts/c8ba52b05a9ef10f4758.woff2", + "lib/fonts/cb10ffd7684cd9836a05.woff2", + "lib/fonts/b5f0f109bc88052d4000.woff2", + "lib/fonts/cbe0ae49c52c920fd563.woff2", + "lib/fonts/535a6cf662596b3bd6a6.woff2", + "lib/fonts/70cc7ff27245e82ad414.ttf", + "lib/fonts/454577c22304619db035.ttf", + "lib/fonts/52ac8f3034507f1d9e53.ttf", + "lib/fonts/05b618077343fbbd92b7.ttf", + "lib/fonts/4bb6ac751d1c5478ff3a.woff2", + "lib/media/874d8b8e340f75575caa.svg", + "lib/html/file-tree.html", + "lib/scripts/webpage.js", + "lib/scripts/graph-view.js", + "lib/scripts/graph-wasm.js", + "lib/scripts/graph-render-worker.js", + "lib/scripts/tinycolor.js", + "lib/scripts/pixi.js", + "lib/scripts/minisearch.js", + "lib/media/favicon.png", + "lib/scripts/graph-data.js", + "lib/styles/obsidian.css", + "lib/styles/other-plugins.css", + "lib/styles/global-variable-styles.css", + "lib/styles/main-styles.css" + ], + "mainDependencies": [ + "lib/scripts/graph-wasm.wasm", + "lib/fonts/94f2f163d4b698242fef.otf", + "lib/fonts/72505e6a122c6acd5471.woff2", + "lib/fonts/2d5198822ab091ce4305.woff2", + "lib/fonts/c8ba52b05a9ef10f4758.woff2", + "lib/fonts/cb10ffd7684cd9836a05.woff2", + "lib/fonts/b5f0f109bc88052d4000.woff2", + "lib/fonts/cbe0ae49c52c920fd563.woff2", + "lib/fonts/535a6cf662596b3bd6a6.woff2", + "lib/fonts/70cc7ff27245e82ad414.ttf", + "lib/fonts/454577c22304619db035.ttf", + "lib/fonts/52ac8f3034507f1d9e53.ttf", + "lib/fonts/05b618077343fbbd92b7.ttf", + "lib/fonts/4bb6ac751d1c5478ff3a.woff2", + "lib/media/874d8b8e340f75575caa.svg", + "lib/html/file-tree.html", + "lib/scripts/webpage.js", + "lib/scripts/graph-view.js", + "lib/scripts/graph-wasm.js", + "lib/scripts/graph-render-worker.js", + "lib/scripts/tinycolor.js", + "lib/scripts/pixi.js", + "lib/scripts/minisearch.js", + "lib/media/favicon.png", + "lib/scripts/graph-data.js", + "lib/styles/obsidian.css", + "lib/styles/other-plugins.css", + "lib/styles/global-variable-styles.css", + "lib/styles/main-styles.css" + ], + "fileInfo": { + "00 Tags/tag-admin.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-admin.html", + "dependencies": [] + }, + "00 Tags/tag-ai.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-ai.html", + "dependencies": [] + }, + "00 Tags/tag-api.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-api.html", + "dependencies": [] + }, + "00 Tags/tag-application-ui.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-application-ui.html", + "dependencies": [] + }, + "00 Tags/tag-art.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-art.html", + "dependencies": [] + }, + "00 Tags/tag-automated-email.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-automated-email.html", + "dependencies": [] + }, + "00 Tags/tag-backend.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-backend.html", + "dependencies": [] + }, + "00 Tags/tag-bash.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-bash.html", + "dependencies": [] + }, + "00 Tags/tag-blender.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-blender.html", + "dependencies": [] + }, + "00 Tags/tag-bootstrap.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-bootstrap.html", + "dependencies": [] + }, + "00 Tags/tag-bot.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-bot.html", + "dependencies": [] + }, + "00 Tags/tag-browser-automation.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-browser-automation.html", + "dependencies": [] + }, + "00 Tags/tag-browser-extension.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-browser-extension.html", + "dependencies": [] + }, + "00 Tags/tag-character-design.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-character-design.html", + "dependencies": [] + }, + "00 Tags/tag-chrome-extension.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-chrome-extension.html", + "dependencies": [] + }, + "00 Tags/tag-cicd.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-cicd.html", + "dependencies": [] + }, + "00 Tags/tag-concurrency.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-concurrency.html", + "dependencies": [] + }, + "00 Tags/tag-css.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-css.html", + "dependencies": [] + }, + "00 Tags/tag-cybersecurity.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-cybersecurity.html", + "dependencies": [] + }, + "00 Tags/tag-data-management.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-data-management.html", + "dependencies": [] + }, + "00 Tags/tag-data-science.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-data-science.html", + "dependencies": [] + }, + "00 Tags/tag-decryption.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-decryption.html", + "dependencies": [] + }, + "00 Tags/tag-devops.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-devops.html", + "dependencies": [] + }, + "00 Tags/tag-diffing.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-diffing.html", + "dependencies": [] + }, + "00 Tags/tag-discord.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-discord.html", + "dependencies": [] + }, + "00 Tags/tag-django.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-django.html", + "dependencies": [] + }, + "00 Tags/tag-django-rest-framework.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-django-rest-framework.html", + "dependencies": [] + }, + "00 Tags/tag-docker.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-docker.html", + "dependencies": [] + }, + "00 Tags/tag-domain-name-management.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-domain-name-management.html", + "dependencies": [] + }, + "00 Tags/tag-DSA.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-dsa.html", + "dependencies": [] + }, + "00 Tags/tag-express.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-express.html", + "dependencies": [] + }, + "00 Tags/tag-firefox-extension.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-firefox-extension.html", + "dependencies": [] + }, + "00 Tags/tag-frontend.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-frontend.html", + "dependencies": [] + }, + "00 Tags/tag-fullstack.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-fullstack.html", + "dependencies": [] + }, + "00 Tags/tag-game-design.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-game-design.html", + "dependencies": [] + }, + "00 Tags/tag-game-dev.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-game-dev.html", + "dependencies": [] + }, + "00 Tags/tag-gamejam.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-gamejam.html", + "dependencies": [] + }, + "00 Tags/tag-gdb.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-gdb.html", + "dependencies": [] + }, + "00 Tags/tag-genetic-algorithm.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-genetic-algorithm.html", + "dependencies": [] + }, + "00 Tags/tag-github-actions.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-github-actions.html", + "dependencies": [] + }, + "00 Tags/tag-github-contributor.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-github-contributor.html", + "dependencies": [] + }, + "00 Tags/tag-go.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-go.html", + "dependencies": [] + }, + "00 Tags/tag-godot.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-godot.html", + "dependencies": [] + }, + "00 Tags/tag-hackathon.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-hackathon.html", + "dependencies": [] + }, + "00 Tags/tag-heroku.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-heroku.html", + "dependencies": [] + }, + "00 Tags/tag-hosting.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-hosting.html", + "dependencies": [] + }, + "00 Tags/tag-html.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-html.html", + "dependencies": [] + }, + "00 Tags/tag-image-gen.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-image-gen.html", + "dependencies": [] + }, + "00 Tags/tag-irc.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-irc.html", + "dependencies": [] + }, + "00 Tags/tag-java.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-java.html", + "dependencies": [] + }, + "00 Tags/tag-js.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-js.html", + "dependencies": [] + }, + "00 Tags/tag-jupyter-notebook.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-jupyter-notebook.html", + "dependencies": [] + }, + "00 Tags/tag-LaTeX.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-latex.html", + "dependencies": [] + }, + "00 Tags/tag-level-design.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-level-design.html", + "dependencies": [] + }, + "00 Tags/tag-linux.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-linux.html", + "dependencies": [] + }, + "00 Tags/tag-low-level-debugging.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-low-level-debugging.html", + "dependencies": [] + }, + "00 Tags/tag-machine-learning.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-machine-learning.html", + "dependencies": [] + }, + "00 Tags/tag-matplotlib.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-matplotlib.html", + "dependencies": [] + }, + "00 Tags/tag-music.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-music.html", + "dependencies": [] + }, + "00 Tags/tag-myers-diff-algo.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-myers-diff-algo.html", + "dependencies": [] + }, + "00 Tags/tag-network-traffic-capture.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-network-traffic-capture.html", + "dependencies": [] + }, + "00 Tags/tag-networking.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-networking.html", + "dependencies": [] + }, + "00 Tags/tag-neural-networks.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-neural-networks.html", + "dependencies": [] + }, + "00 Tags/tag-nextjs.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-nextjs.html", + "dependencies": [] + }, + "00 Tags/tag-nltk.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-nltk.html", + "dependencies": [] + }, + "00 Tags/tag-nodejs.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-nodejs.html", + "dependencies": [] + }, + "00 Tags/tag-npm.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-npm.html", + "dependencies": [] + }, + "00 Tags/tag-numpy.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-numpy.html", + "dependencies": [] + }, + "00 Tags/tag-oauth.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-oauth.html", + "dependencies": [] + }, + "00 Tags/tag-oop.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-oop.html", + "dependencies": [] + }, + "00 Tags/tag-openai.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-openai.html", + "dependencies": [] + }, + "00 Tags/tag-pandas.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-pandas.html", + "dependencies": [] + }, + "00 Tags/tag-parcel.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-parcel.html", + "dependencies": [] + }, + "00 Tags/tag-php.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-php.html", + "dependencies": [] + }, + "00 Tags/tag-platformer.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-platformer.html", + "dependencies": [] + }, + "00 Tags/tag-postgres.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-postgres.html", + "dependencies": [] + }, + "00 Tags/tag-prod.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-prod.html", + "dependencies": [] + }, + "00 Tags/tag-protocol.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-protocol.html", + "dependencies": [] + }, + "00 Tags/tag-proxy.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-proxy.html", + "dependencies": [] + }, + "00 Tags/tag-pug.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-pug.html", + "dependencies": [] + }, + "00 Tags/tag-puppeteer.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-puppeteer.html", + "dependencies": [] + }, + "00 Tags/tag-pwndbg.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-pwndbg.html", + "dependencies": [] + }, + "00 Tags/tag-pygame.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-pygame.html", + "dependencies": [] + }, + "00 Tags/tag-python.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-python.html", + "dependencies": [] + }, + "00 Tags/tag-pytorch.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-pytorch.html", + "dependencies": [] + }, + "00 Tags/tag-react.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-react.html", + "dependencies": [] + }, + "00 Tags/tag-realtime.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-realtime.html", + "dependencies": [] + }, + "00 Tags/tag-redis.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-redis.html", + "dependencies": [] + }, + "00 Tags/tag-research.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-research.html", + "dependencies": [] + }, + "00 Tags/tag-reverse-engineering.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-reverse-engineering.html", + "dependencies": [] + }, + "00 Tags/tag-rust.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-rust.html", + "dependencies": [] + }, + "00 Tags/tag-scikit.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-scikit.html", + "dependencies": [] + }, + "00 Tags/tag-scraping.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-scraping.html", + "dependencies": [] + }, + "00 Tags/tag-selenium.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-selenium.html", + "dependencies": [] + }, + "00 Tags/tag-server-management.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-server-management.html", + "dependencies": [] + }, + "00 Tags/tag-serverless.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-serverless.html", + "dependencies": [] + }, + "00 Tags/tag-slack-bot.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-slack-bot.html", + "dependencies": [] + }, + "00 Tags/tag-software-engineering.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-software-engineering.html", + "dependencies": [] + }, + "00 Tags/tag-sql.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-sql.html", + "dependencies": [] + }, + "00 Tags/tag-sqlite.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-sqlite.html", + "dependencies": [] + }, + "00 Tags/tag-ssl.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-ssl.html", + "dependencies": [] + }, + "00 Tags/tag-supabase.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-supabase.html", + "dependencies": [] + }, + "00 Tags/tag-svelte.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-svelte.html", + "dependencies": [] + }, + "00 Tags/tag-sveltekit.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-sveltekit.html", + "dependencies": [] + }, + "00 Tags/tag-tailwindcss.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-tailwindcss.html", + "dependencies": [] + }, + "00 Tags/tag-TDD.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-tdd.html", + "dependencies": [] + }, + "00 Tags/tag-tensorflow.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-tensorflow.html", + "dependencies": [] + }, + "00 Tags/tag-threejs.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-threejs.html", + "dependencies": [] + }, + "00 Tags/tag-turbo-hotwired.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-turbo-hotwired.html", + "dependencies": [] + }, + "00 Tags/tag-two-factor-auth.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-two-factor-auth.html", + "dependencies": [] + }, + "00 Tags/tag-typescript.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-typescript.html", + "dependencies": [] + }, + "00 Tags/tag-unity.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-unity.html", + "dependencies": [] + }, + "00 Tags/tag-vb-net.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-vb-net.html", + "dependencies": [] + }, + "00 Tags/tag-visual-novel.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-visual-novel.html", + "dependencies": [] + }, + "00 Tags/tag-vite.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-vite.html", + "dependencies": [] + }, + "00 Tags/tag-webdesign.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-webdesign.html", + "dependencies": [] + }, + "00 Tags/tag-webdev.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-webdev.html", + "dependencies": [] + }, + "00 Tags/tag-wip.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-wip.html", + "dependencies": [] + }, + "00 Tags/tag-writing.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-writing.html", + "dependencies": [] + }, + "00 Tags/tag-x3d.md": { + "modifiedTime": 1714398427489, + "sourceSize": 0, + "exportedPath": "00-tags/tag-x3d.html", + "dependencies": [] + }, + "01 Projects/00 School/Personal/Dumpmon grabber.md": { + "modifiedTime": 1714398427489, + "sourceSize": 149, + "exportedPath": "01-projects/00-school/personal/dumpmon-grabber.html", + "dependencies": [] + }, + "01 Projects/00 School/Personal/IRC Bot.md": { + "modifiedTime": 1714398427489, + "sourceSize": 156, + "exportedPath": "01-projects/00-school/personal/irc-bot.html", + "dependencies": [] + }, + "01 Projects/00 School/Personal/Personal.md": { + "modifiedTime": 1714398427489, + "sourceSize": 62, + "exportedPath": "01-projects/00-school/personal/personal.html", + "dependencies": [] + }, + "01 Projects/00 School/Personal/Raspberry Pi Setup Scripts.md": { + "modifiedTime": 1714398427489, + "sourceSize": 141, + "exportedPath": "01-projects/00-school/personal/raspberry-pi-setup-scripts.html", + "dependencies": [] + }, + "01 Projects/00 School/School.md": { + "modifiedTime": 1714398427489, + "sourceSize": 53, + "exportedPath": "01-projects/00-school/school.html", + "dependencies": [] + }, + "01 Projects/01 College/Assignments/Assignments.md": { + "modifiedTime": 1714398427489, + "sourceSize": 25, + "exportedPath": "01-projects/01-college/assignments/assignments.html", + "dependencies": [] + }, + "01 Projects/01 College/Assignments/ICT Site.md": { + "modifiedTime": 1714398427489, + "sourceSize": 100, + "exportedPath": "01-projects/01-college/assignments/ict-site.html", + "dependencies": [] + }, + "01 Projects/01 College/Assignments/IRC-CaLS.md": { + "modifiedTime": 1714398427489, + "sourceSize": 201, + "exportedPath": "01-projects/01-college/assignments/irc-cals.html", + "dependencies": [] + }, + "01 Projects/01 College/Personal/concatBot.md": { + "modifiedTime": 1714398427489, + "sourceSize": 171, + "exportedPath": "01-projects/01-college/personal/concatbot.html", + "dependencies": [] + }, + "01 Projects/01 College/Personal/Cyber Discovery Finalist Challenge.md": { + "modifiedTime": 1714398427489, + "sourceSize": 208, + "exportedPath": "01-projects/01-college/personal/cyber-discovery-finalist-challenge.html", + "dependencies": [] + }, + "01 Projects/01 College/Personal/Hexbot.md": { + "modifiedTime": 1714398427489, + "sourceSize": 91, + "exportedPath": "01-projects/01-college/personal/hexbot.html", + "dependencies": [] + }, + "01 Projects/01 College/Personal/Personal.md": { + "modifiedTime": 1714398427489, + "sourceSize": 64, + "exportedPath": "01-projects/01-college/personal/personal.html", + "dependencies": [] + }, + "01 Projects/01 College/College.md": { + "modifiedTime": 1714398427489, + "sourceSize": 96, + "exportedPath": "01-projects/01-college/college.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/AIAB.md": { + "modifiedTime": 1714398427489, + "sourceSize": 384, + "exportedPath": "01-projects/02-university/assignments/aiab.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Assignments.md": { + "modifiedTime": 1714398427489, + "sourceSize": 664, + "exportedPath": "01-projects/02-university/assignments/assignments.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Checkers.md": { + "modifiedTime": 1714398427489, + "sourceSize": 144, + "exportedPath": "01-projects/02-university/assignments/checkers.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Clue.md": { + "modifiedTime": 1714398427489, + "sourceSize": 141, + "exportedPath": "01-projects/02-university/assignments/clue.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Computer Vision.md": { + "modifiedTime": 1714398427489, + "sourceSize": 259, + "exportedPath": "01-projects/02-university/assignments/computer-vision.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Database design and sql.md": { + "modifiedTime": 1714398427489, + "sourceSize": 161, + "exportedPath": "01-projects/02-university/assignments/database-design-and-sql.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/DSA Programming Project.md": { + "modifiedTime": 1714398427489, + "sourceSize": 236, + "exportedPath": "01-projects/02-university/assignments/dsa-programming-project.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Individual Project.md": { + "modifiedTime": 1714398427489, + "sourceSize": 381, + "exportedPath": "01-projects/02-university/assignments/individual-project.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Lovejoys Antique Evaluations.md": { + "modifiedTime": 1714398427489, + "sourceSize": 340, + "exportedPath": "01-projects/02-university/assignments/lovejoys-antique-evaluations.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Machine learning.md": { + "modifiedTime": 1714398427489, + "sourceSize": 254, + "exportedPath": "01-projects/02-university/assignments/machine-learning.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Minesweeper.md": { + "modifiedTime": 1714398427489, + "sourceSize": 169, + "exportedPath": "01-projects/02-university/assignments/minesweeper.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Natural Language Engineering.md": { + "modifiedTime": 1714398427489, + "sourceSize": 242, + "exportedPath": "01-projects/02-university/assignments/natural-language-engineering.html", + "dependencies": [] + }, + "01 Projects/02 University/Assignments/Web 3D.md": { + "modifiedTime": 1714398427489, + "sourceSize": 173, + "exportedPath": "01-projects/02-university/assignments/web-3d.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/Bandcamp Web Downloader.md": { + "modifiedTime": 1714398427489, + "sourceSize": 248, + "exportedPath": "01-projects/02-university/personal/bandcamp-web-downloader.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/Blaseball Peanut Clicker.md": { + "modifiedTime": 1714398427489, + "sourceSize": 153, + "exportedPath": "01-projects/02-university/personal/blaseball-peanut-clicker.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/Ghost Terminal Dracula theme.md": { + "modifiedTime": 1714398427489, + "sourceSize": 114, + "exportedPath": "01-projects/02-university/personal/ghost-terminal-dracula-theme.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/Hacksussex 2019.md": { + "modifiedTime": 1714398427489, + "sourceSize": 127, + "exportedPath": "01-projects/02-university/personal/hacksussex-2019.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/Hosting with VPS.md": { + "modifiedTime": 1714398427489, + "sourceSize": 338, + "exportedPath": "01-projects/02-university/personal/hosting-with-vps.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/i3 Config.md": { + "modifiedTime": 1714398427489, + "sourceSize": 62, + "exportedPath": "01-projects/02-university/personal/i3-config.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/litebin.md": { + "modifiedTime": 1714398427489, + "sourceSize": 106, + "exportedPath": "01-projects/02-university/personal/litebin.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/Markdown dracula theme.md": { + "modifiedTime": 1714398427489, + "sourceSize": 92, + "exportedPath": "01-projects/02-university/personal/markdown-dracula-theme.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/MDView.md": { + "modifiedTime": 1714398427489, + "sourceSize": 92, + "exportedPath": "01-projects/02-university/personal/mdview.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/nixos config.md": { + "modifiedTime": 1714398427489, + "sourceSize": 59, + "exportedPath": "01-projects/02-university/personal/nixos-config.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/pastel.codes.md": { + "modifiedTime": 1714398427489, + "sourceSize": 284, + "exportedPath": "01-projects/02-university/personal/pastel.codes.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/Personal.md": { + "modifiedTime": 1714398427489, + "sourceSize": 370, + "exportedPath": "01-projects/02-university/personal/personal.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/TTTTT.uk.md": { + "modifiedTime": 1714398427489, + "sourceSize": 203, + "exportedPath": "01-projects/02-university/personal/ttttt.uk.html", + "dependencies": [] + }, + "01 Projects/02 University/Personal/University Note Tools.md": { + "modifiedTime": 1714398427489, + "sourceSize": 130, + "exportedPath": "01-projects/02-university/personal/university-note-tools.html", + "dependencies": [] + }, + "01 Projects/02 University/University.md": { + "modifiedTime": 1714398427489, + "sourceSize": 123, + "exportedPath": "01-projects/02-university/university.html", + "dependencies": [] + }, + "01 Projects/03 Work/Personal/FlipAnalytica - Hacksussex 2023.md": { + "modifiedTime": 1714398427489, + "sourceSize": 259, + "exportedPath": "01-projects/03-work/personal/flipanalytica-hacksussex-2023.html", + "dependencies": [] + }, + "01 Projects/03 Work/Personal/hiddennet.works.md": { + "modifiedTime": 1714398427489, + "sourceSize": 201, + "exportedPath": "01-projects/03-work/personal/hiddennet.works.html", + "dependencies": [] + }, + "01 Projects/03 Work/Personal/Managing a minecraft server.md": { + "modifiedTime": 1714398427489, + "sourceSize": 140, + "exportedPath": "01-projects/03-work/personal/managing-a-minecraft-server.html", + "dependencies": [] + }, + "01 Projects/03 Work/Personal/Personal.md": { + "modifiedTime": 1714398427489, + "sourceSize": 101, + "exportedPath": "01-projects/03-work/personal/personal.html", + "dependencies": [] + }, + "01 Projects/03 Work/Personal/Watcher.md": { + "modifiedTime": 1714398427489, + "sourceSize": 373, + "exportedPath": "01-projects/03-work/personal/watcher.html", + "dependencies": [] + }, + "01 Projects/03 Work/Projects/Heythere/Heythere Extensions.md": { + "modifiedTime": 1714398427489, + "sourceSize": 517, + "exportedPath": "01-projects/03-work/projects/heythere/heythere-extensions.html", + "dependencies": [] + }, + "01 Projects/03 Work/Projects/Heythere/Heythere Web.md": { + "modifiedTime": 1714398427489, + "sourceSize": 562, + "exportedPath": "01-projects/03-work/projects/heythere/heythere-web.html", + "dependencies": [] + }, + "01 Projects/03 Work/Projects/BizarrePG.md": { + "modifiedTime": 1714398427489, + "sourceSize": 296, + "exportedPath": "01-projects/03-work/projects/bizarrepg.html", + "dependencies": [] + }, + "01 Projects/03 Work/Projects/Changewatch.md": { + "modifiedTime": 1714398427489, + "sourceSize": 474, + "exportedPath": "01-projects/03-work/projects/changewatch.html", + "dependencies": [] + }, + "01 Projects/03 Work/Projects/N0RT.md": { + "modifiedTime": 1714398427489, + "sourceSize": 183, + "exportedPath": "01-projects/03-work/projects/n0rt.html", + "dependencies": [] + }, + "01 Projects/03 Work/Projects/Projects.md": { + "modifiedTime": 1714398427489, + "sourceSize": 97, + "exportedPath": "01-projects/03-work/projects/projects.html", + "dependencies": [] + }, + "01 Projects/03 Work/Projects/The Loop..md": { + "modifiedTime": 1714398427489, + "sourceSize": 205, + "exportedPath": "01-projects/03-work/projects/the-loop..html", + "dependencies": [] + }, + "01 Projects/03 Work/Work.md": { + "modifiedTime": 1714398427489, + "sourceSize": 102, + "exportedPath": "01-projects/03-work/work.html", + "dependencies": [] + }, + "Projects.md": { + "modifiedTime": 1714398427489, + "sourceSize": 50, + "exportedPath": "projects.html", + "dependencies": [] + }, + "lib/scripts/graph-wasm.wasm": { + "modifiedTime": 1714398427489, + "sourceSize": 23377, + "exportedPath": "lib/scripts/graph-wasm.wasm", + "dependencies": [] + }, + "lib/fonts/94f2f163d4b698242fef.otf": { + "modifiedTime": 1714398427489, + "sourceSize": 66800, + "exportedPath": "lib/fonts/94f2f163d4b698242fef.otf", + "dependencies": [] + }, + "lib/fonts/72505e6a122c6acd5471.woff2": { + "modifiedTime": 1714398427489, + "sourceSize": 104232, + "exportedPath": "lib/fonts/72505e6a122c6acd5471.woff2", + "dependencies": [] + }, + "lib/fonts/2d5198822ab091ce4305.woff2": { + "modifiedTime": 1714398427489, + "sourceSize": 104332, + "exportedPath": "lib/fonts/2d5198822ab091ce4305.woff2", + "dependencies": [] + }, + "lib/fonts/c8ba52b05a9ef10f4758.woff2": { + "modifiedTime": 1714398427489, + "sourceSize": 98868, + "exportedPath": "lib/fonts/c8ba52b05a9ef10f4758.woff2", + "dependencies": [] + }, + "lib/fonts/cb10ffd7684cd9836a05.woff2": { + "modifiedTime": 1714398427489, + "sourceSize": 106876, + "exportedPath": "lib/fonts/cb10ffd7684cd9836a05.woff2", + "dependencies": [] + }, + "lib/fonts/b5f0f109bc88052d4000.woff2": { + "modifiedTime": 1714398427489, + "sourceSize": 105804, + "exportedPath": "lib/fonts/b5f0f109bc88052d4000.woff2", + "dependencies": [] + }, + "lib/fonts/cbe0ae49c52c920fd563.woff2": { + "modifiedTime": 1714398427489, + "sourceSize": 106108, + "exportedPath": "lib/fonts/cbe0ae49c52c920fd563.woff2", + "dependencies": [] + }, + "lib/fonts/535a6cf662596b3bd6a6.woff2": { + "modifiedTime": 1714398427489, + "sourceSize": 111708, + "exportedPath": "lib/fonts/535a6cf662596b3bd6a6.woff2", + "dependencies": [] + }, + "lib/fonts/70cc7ff27245e82ad414.ttf": { + "modifiedTime": 1714398427489, + "sourceSize": 192740, + "exportedPath": "lib/fonts/70cc7ff27245e82ad414.ttf", + "dependencies": [] + }, + "lib/fonts/454577c22304619db035.ttf": { + "modifiedTime": 1714398427489, + "sourceSize": 161376, + "exportedPath": "lib/fonts/454577c22304619db035.ttf", + "dependencies": [] + }, + "lib/fonts/52ac8f3034507f1d9e53.ttf": { + "modifiedTime": 1714398427489, + "sourceSize": 191568, + "exportedPath": "lib/fonts/52ac8f3034507f1d9e53.ttf", + "dependencies": [] + }, + "lib/fonts/05b618077343fbbd92b7.ttf": { + "modifiedTime": 1714398427489, + "sourceSize": 155288, + "exportedPath": "lib/fonts/05b618077343fbbd92b7.ttf", + "dependencies": [] + }, + "lib/fonts/4bb6ac751d1c5478ff3a.woff2": { + "modifiedTime": 1714398427489, + "sourceSize": 7876, + "exportedPath": "lib/fonts/4bb6ac751d1c5478ff3a.woff2", + "dependencies": [] + }, + "lib/media/874d8b8e340f75575caa.svg": { + "modifiedTime": 1714398427489, + "sourceSize": 317, + "exportedPath": "lib/media/874d8b8e340f75575caa.svg", + "dependencies": [] + }, + "lib/html/file-tree.html": { + "modifiedTime": 1714398427489, + "sourceSize": 67909, + "exportedPath": "lib/html/file-tree.html", + "dependencies": [] + }, + "lib/scripts/webpage.js": { + "modifiedTime": 1714398427489, + "sourceSize": 47290, + "exportedPath": "lib/scripts/webpage.js", + "dependencies": [] + }, + "lib/scripts/graph-view.js": { + "modifiedTime": 1714398427489, + "sourceSize": 15519, + "exportedPath": "lib/scripts/graph-view.js", + "dependencies": [] + }, + "lib/scripts/graph-wasm.js": { + "modifiedTime": 1714398427489, + "sourceSize": 14021, + "exportedPath": "lib/scripts/graph-wasm.js", + "dependencies": [] + }, + "lib/scripts/graph-render-worker.js": { + "modifiedTime": 1714398427489, + "sourceSize": 5179, + "exportedPath": "lib/scripts/graph-render-worker.js", + "dependencies": [] + }, + "lib/scripts/tinycolor.js": { + "modifiedTime": 1714398427489, + "sourceSize": 29832, + "exportedPath": "lib/scripts/tinycolor.js", + "dependencies": [] + }, + "lib/scripts/pixi.js": { + "modifiedTime": 1714398427489, + "sourceSize": 449509, + "exportedPath": "lib/scripts/pixi.js", + "dependencies": [] + }, + "lib/scripts/minisearch.js": { + "modifiedTime": 1714398427489, + "sourceSize": 29422, + "exportedPath": "lib/scripts/minisearch.js", + "dependencies": [] + }, + "lib/media/favicon.png": { + "modifiedTime": 1714398427489, + "sourceSize": 1105, + "exportedPath": "lib/media/favicon.png", + "dependencies": [] + }, + "lib/scripts/graph-data.js": { + "modifiedTime": 1714398427489, + "sourceSize": 15416, + "exportedPath": "lib/scripts/graph-data.js", + "dependencies": [] + }, + "lib/styles/obsidian.css": { + "modifiedTime": 1714398427489, + "sourceSize": 157722, + "exportedPath": "lib/styles/obsidian.css", + "dependencies": [] + }, + "lib/styles/other-plugins.css": { + "modifiedTime": 1714398427489, + "sourceSize": 2416, + "exportedPath": "lib/styles/other-plugins.css", + "dependencies": [] + }, + "lib/styles/global-variable-styles.css": { + "modifiedTime": 1714398427489, + "sourceSize": 236, + "exportedPath": "lib/styles/global-variable-styles.css", + "dependencies": [] + }, + "lib/styles/main-styles.css": { + "modifiedTime": 1714398427489, + "sourceSize": 23130, + "exportedPath": "lib/styles/main-styles.css", + "dependencies": [] + } + } +} \ No newline at end of file diff --git a/obsidian/lib/rss.xml b/obsidian/lib/rss.xml new file mode 100644 index 0000000..425afef --- /dev/null +++ b/obsidian/lib/rss.xml @@ -0,0 +1,229 @@ +<![CDATA[Work]]>https://pastel.codes/obsidian/https://pastel.codes/obsidian/lib/media/favicon.pngWorkhttps://pastel.codes/obsidian/Webpage HTML Export plugin for ObsidianMon, 29 Apr 2024 13:47:13 GMTMon, 29 Apr 2024 13:47:07 GMT60<![CDATA[tag-admin]]>https://pastel.codes/obsidian/00-tags/tag-admin.html00 Tags/tag-admin.mdMon, 29 Apr 2024 13:42:19 GMT<![CDATA[tag-ai]]>https://pastel.codes/obsidian/00-tags/tag-ai.html00 Tags/tag-ai.mdMon, 29 Apr 2024 13:40:13 GMT<![CDATA[tag-api]]>https://pastel.codes/obsidian/00-tags/tag-api.html00 Tags/tag-api.mdMon, 29 Apr 2024 13:39:23 GMT<![CDATA[tag-application-ui]]>https://pastel.codes/obsidian/00-tags/tag-application-ui.html00 Tags/tag-application-ui.mdMon, 29 Apr 2024 13:40:30 GMT<![CDATA[tag-art]]>https://pastel.codes/obsidian/00-tags/tag-art.html00 Tags/tag-art.mdMon, 29 Apr 2024 13:44:04 GMT<![CDATA[tag-automated-email]]>https://pastel.codes/obsidian/00-tags/tag-automated-email.html00 Tags/tag-automated-email.mdMon, 29 Apr 2024 13:43:17 GMT<![CDATA[tag-backend]]>https://pastel.codes/obsidian/00-tags/tag-backend.html00 Tags/tag-backend.mdMon, 29 Apr 2024 13:41:11 GMT<![CDATA[tag-bash]]>https://pastel.codes/obsidian/00-tags/tag-bash.html00 Tags/tag-bash.mdMon, 29 Apr 2024 13:38:37 GMT<![CDATA[tag-blender]]>https://pastel.codes/obsidian/00-tags/tag-blender.html00 Tags/tag-blender.mdMon, 29 Apr 2024 13:41:45 GMT<![CDATA[tag-bootstrap]]>https://pastel.codes/obsidian/00-tags/tag-bootstrap.html00 Tags/tag-bootstrap.mdMon, 29 Apr 2024 13:41:43 GMT<![CDATA[tag-bot]]>https://pastel.codes/obsidian/00-tags/tag-bot.html00 Tags/tag-bot.mdMon, 29 Apr 2024 13:38:20 GMT<![CDATA[tag-browser-automation]]>https://pastel.codes/obsidian/00-tags/tag-browser-automation.html00 Tags/tag-browser-automation.mdMon, 29 Apr 2024 13:42:05 GMT<![CDATA[tag-browser-extension]]>https://pastel.codes/obsidian/00-tags/tag-browser-extension.html00 Tags/tag-browser-extension.mdMon, 29 Apr 2024 13:42:54 GMT<![CDATA[tag-character-design]]>https://pastel.codes/obsidian/00-tags/tag-character-design.html00 Tags/tag-character-design.mdMon, 29 Apr 2024 13:44:25 GMT<![CDATA[tag-chrome-extension]]>https://pastel.codes/obsidian/00-tags/tag-chrome-extension.html00 Tags/tag-chrome-extension.mdMon, 29 Apr 2024 13:43:11 GMT<![CDATA[tag-cicd]]>https://pastel.codes/obsidian/00-tags/tag-cicd.html00 Tags/tag-cicd.mdMon, 29 Apr 2024 13:41:21 GMT<![CDATA[tag-concurrency]]>https://pastel.codes/obsidian/00-tags/tag-concurrency.html00 Tags/tag-concurrency.mdMon, 29 Apr 2024 13:38:22 GMT<![CDATA[tag-css]]>https://pastel.codes/obsidian/00-tags/tag-css.html00 Tags/tag-css.mdMon, 29 Apr 2024 13:38:59 GMT<![CDATA[tag-cybersecurity]]>https://pastel.codes/obsidian/00-tags/tag-cybersecurity.html00 Tags/tag-cybersecurity.mdMon, 29 Apr 2024 13:38:13 GMT<![CDATA[tag-data-management]]>https://pastel.codes/obsidian/00-tags/tag-data-management.html00 Tags/tag-data-management.mdMon, 29 Apr 2024 13:41:00 GMT<![CDATA[tag-data-science]]>https://pastel.codes/obsidian/00-tags/tag-data-science.html00 Tags/tag-data-science.mdMon, 29 Apr 2024 13:40:56 GMT<![CDATA[tag-decryption]]>https://pastel.codes/obsidian/00-tags/tag-decryption.html00 Tags/tag-decryption.mdMon, 29 Apr 2024 13:39:33 GMT<![CDATA[tag-devops]]>https://pastel.codes/obsidian/00-tags/tag-devops.html00 Tags/tag-devops.mdMon, 29 Apr 2024 13:41:28 GMT<![CDATA[tag-diffing]]>https://pastel.codes/obsidian/00-tags/tag-diffing.html00 Tags/tag-diffing.mdMon, 29 Apr 2024 13:43:52 GMT<![CDATA[tag-discord]]>https://pastel.codes/obsidian/00-tags/tag-discord.html00 Tags/tag-discord.mdMon, 29 Apr 2024 13:39:21 GMT<![CDATA[tag-django]]>https://pastel.codes/obsidian/00-tags/tag-django.html00 Tags/tag-django.mdMon, 29 Apr 2024 13:41:23 GMT<![CDATA[tag-django-rest-framework]]>https://pastel.codes/obsidian/00-tags/tag-django-rest-framework.html00 Tags/tag-django-rest-framework.mdMon, 29 Apr 2024 13:43:30 GMT<![CDATA[tag-docker]]>https://pastel.codes/obsidian/00-tags/tag-docker.html00 Tags/tag-docker.mdMon, 29 Apr 2024 13:42:21 GMT<![CDATA[tag-domain-name-management]]>https://pastel.codes/obsidian/00-tags/tag-domain-name-management.html00 Tags/tag-domain-name-management.mdMon, 29 Apr 2024 13:42:23 GMT<![CDATA[tag-DSA]]>https://pastel.codes/obsidian/00-tags/tag-dsa.html00 Tags/tag-DSA.mdMon, 29 Apr 2024 13:40:24 GMT<![CDATA[tag-express]]>https://pastel.codes/obsidian/00-tags/tag-express.html00 Tags/tag-express.mdMon, 29 Apr 2024 13:41:58 GMT<![CDATA[tag-firefox-extension]]>https://pastel.codes/obsidian/00-tags/tag-firefox-extension.html00 Tags/tag-firefox-extension.mdMon, 29 Apr 2024 13:43:13 GMT<![CDATA[tag-frontend]]>https://pastel.codes/obsidian/00-tags/tag-frontend.html00 Tags/tag-frontend.mdMon, 29 Apr 2024 13:39:04 GMT<![CDATA[tag-fullstack]]>https://pastel.codes/obsidian/00-tags/tag-fullstack.html00 Tags/tag-fullstack.mdMon, 29 Apr 2024 13:41:09 GMT<![CDATA[tag-game-design]]>https://pastel.codes/obsidian/00-tags/tag-game-design.html00 Tags/tag-game-design.mdMon, 29 Apr 2024 13:44:14 GMT<![CDATA[tag-game-dev]]>https://pastel.codes/obsidian/00-tags/tag-game-dev.html00 Tags/tag-game-dev.mdMon, 29 Apr 2024 13:40:21 GMT<![CDATA[tag-gamejam]]>https://pastel.codes/obsidian/00-tags/tag-gamejam.html00 Tags/tag-gamejam.mdMon, 29 Apr 2024 13:44:12 GMT<![CDATA[tag-gdb]]>https://pastel.codes/obsidian/00-tags/tag-gdb.html00 Tags/tag-gdb.mdMon, 29 Apr 2024 13:39:37 GMT<![CDATA[tag-genetic-algorithm]]>https://pastel.codes/obsidian/00-tags/tag-genetic-algorithm.html00 Tags/tag-genetic-algorithm.mdMon, 29 Apr 2024 13:40:00 GMT<![CDATA[tag-github-actions]]>https://pastel.codes/obsidian/00-tags/tag-github-actions.html00 Tags/tag-github-actions.mdMon, 29 Apr 2024 13:41:30 GMT<![CDATA[tag-github-contributor]]>https://pastel.codes/obsidian/00-tags/tag-github-contributor.html00 Tags/tag-github-contributor.mdMon, 29 Apr 2024 13:42:11 GMT<![CDATA[tag-go]]>https://pastel.codes/obsidian/00-tags/tag-go.html00 Tags/tag-go.mdMon, 29 Apr 2024 13:45:11 GMT<![CDATA[tag-godot]]>https://pastel.codes/obsidian/00-tags/tag-godot.html00 Tags/tag-godot.mdMon, 29 Apr 2024 13:43:58 GMT<![CDATA[tag-hackathon]]>https://pastel.codes/obsidian/00-tags/tag-hackathon.html00 Tags/tag-hackathon.mdMon, 29 Apr 2024 13:42:14 GMT<![CDATA[tag-heroku]]>https://pastel.codes/obsidian/00-tags/tag-heroku.html00 Tags/tag-heroku.mdMon, 29 Apr 2024 13:41:25 GMT<![CDATA[tag-hosting]]>https://pastel.codes/obsidian/00-tags/tag-hosting.html00 Tags/tag-hosting.mdMon, 29 Apr 2024 13:38:39 GMT<![CDATA[tag-html]]>https://pastel.codes/obsidian/00-tags/tag-html.html00 Tags/tag-html.mdMon, 29 Apr 2024 13:38:55 GMT<![CDATA[tag-image-gen]]>https://pastel.codes/obsidian/00-tags/tag-image-gen.html00 Tags/tag-image-gen.mdMon, 29 Apr 2024 13:39:27 GMT<![CDATA[tag-irc]]>https://pastel.codes/obsidian/00-tags/tag-irc.html00 Tags/tag-irc.mdMon, 29 Apr 2024 13:38:18 GMT<![CDATA[tag-java]]>https://pastel.codes/obsidian/00-tags/tag-java.html00 Tags/tag-java.mdMon, 29 Apr 2024 13:40:51 GMT<![CDATA[tag-js]]>https://pastel.codes/obsidian/00-tags/tag-js.html00 Tags/tag-js.mdMon, 29 Apr 2024 13:38:57 GMT<![CDATA[tag-jupyter-notebook]]>https://pastel.codes/obsidian/00-tags/tag-jupyter-notebook.html00 Tags/tag-jupyter-notebook.mdMon, 29 Apr 2024 13:40:15 GMT<![CDATA[tag-LaTeX]]>https://pastel.codes/obsidian/00-tags/tag-latex.html00 Tags/tag-LaTeX.mdMon, 29 Apr 2024 13:40:11 GMT<![CDATA[tag-level-design]]>https://pastel.codes/obsidian/00-tags/tag-level-design.html00 Tags/tag-level-design.mdMon, 29 Apr 2024 13:44:00 GMT<![CDATA[tag-linux]]>https://pastel.codes/obsidian/00-tags/tag-linux.html00 Tags/tag-linux.mdMon, 29 Apr 2024 13:37:28 GMT<![CDATA[tag-low-level-debugging]]>https://pastel.codes/obsidian/00-tags/tag-low-level-debugging.html00 Tags/tag-low-level-debugging.mdMon, 29 Apr 2024 13:39:40 GMT<![CDATA[tag-machine-learning]]>https://pastel.codes/obsidian/00-tags/tag-machine-learning.html00 Tags/tag-machine-learning.mdMon, 29 Apr 2024 13:39:51 GMT<![CDATA[tag-matplotlib]]>https://pastel.codes/obsidian/00-tags/tag-matplotlib.html00 Tags/tag-matplotlib.mdMon, 29 Apr 2024 13:40:09 GMT<![CDATA[tag-music]]>https://pastel.codes/obsidian/00-tags/tag-music.html00 Tags/tag-music.mdMon, 29 Apr 2024 13:44:10 GMT<![CDATA[tag-myers-diff-algo]]>https://pastel.codes/obsidian/00-tags/tag-myers-diff-algo.html00 Tags/tag-myers-diff-algo.mdMon, 29 Apr 2024 13:43:54 GMT<![CDATA[tag-network-traffic-capture]]>https://pastel.codes/obsidian/00-tags/tag-network-traffic-capture.html00 Tags/tag-network-traffic-capture.mdMon, 29 Apr 2024 13:43:00 GMT<![CDATA[tag-networking]]>https://pastel.codes/obsidian/00-tags/tag-networking.html00 Tags/tag-networking.mdMon, 29 Apr 2024 13:39:11 GMT<![CDATA[tag-neural-networks]]>https://pastel.codes/obsidian/00-tags/tag-neural-networks.html00 Tags/tag-neural-networks.mdMon, 29 Apr 2024 13:40:02 GMT<![CDATA[tag-nextjs]]>https://pastel.codes/obsidian/00-tags/tag-nextjs.html00 Tags/tag-nextjs.mdMon, 29 Apr 2024 13:45:13 GMT<![CDATA[tag-nltk]]>https://pastel.codes/obsidian/00-tags/tag-nltk.html00 Tags/tag-nltk.mdMon, 29 Apr 2024 13:41:38 GMT<![CDATA[tag-nodejs]]>https://pastel.codes/obsidian/00-tags/tag-nodejs.html00 Tags/tag-nodejs.mdMon, 29 Apr 2024 13:41:56 GMT<![CDATA[tag-npm]]>https://pastel.codes/obsidian/00-tags/tag-npm.html00 Tags/tag-npm.mdMon, 29 Apr 2024 13:42:01 GMT<![CDATA[tag-numpy]]>https://pastel.codes/obsidian/00-tags/tag-numpy.html00 Tags/tag-numpy.mdMon, 29 Apr 2024 13:40:07 GMT<![CDATA[tag-oauth]]>https://pastel.codes/obsidian/00-tags/tag-oauth.html00 Tags/tag-oauth.mdMon, 29 Apr 2024 13:42:58 GMT<![CDATA[tag-oop]]>https://pastel.codes/obsidian/00-tags/tag-oop.html00 Tags/tag-oop.mdMon, 29 Apr 2024 13:39:25 GMT<![CDATA[tag-openai]]>https://pastel.codes/obsidian/00-tags/tag-openai.html00 Tags/tag-openai.mdMon, 29 Apr 2024 13:43:19 GMT<![CDATA[tag-pandas]]>https://pastel.codes/obsidian/00-tags/tag-pandas.html00 Tags/tag-pandas.mdMon, 29 Apr 2024 13:40:58 GMT<![CDATA[tag-parcel]]>https://pastel.codes/obsidian/00-tags/tag-parcel.html00 Tags/tag-parcel.mdMon, 29 Apr 2024 13:43:08 GMT<![CDATA[tag-php]]>https://pastel.codes/obsidian/00-tags/tag-php.html00 Tags/tag-php.mdMon, 29 Apr 2024 13:41:41 GMT<![CDATA[tag-platformer]]>https://pastel.codes/obsidian/00-tags/tag-platformer.html00 Tags/tag-platformer.mdMon, 29 Apr 2024 13:44:16 GMT<![CDATA[tag-postgres]]>https://pastel.codes/obsidian/00-tags/tag-postgres.html00 Tags/tag-postgres.mdMon, 29 Apr 2024 13:41:17 GMT<![CDATA[tag-prod]]>https://pastel.codes/obsidian/00-tags/tag-prod.html00 Tags/tag-prod.mdMon, 29 Apr 2024 13:43:10 GMT<![CDATA[tag-protocol]]>https://pastel.codes/obsidian/00-tags/tag-protocol.html00 Tags/tag-protocol.mdMon, 29 Apr 2024 13:38:24 GMT<![CDATA[tag-proxy]]>https://pastel.codes/obsidian/00-tags/tag-proxy.html00 Tags/tag-proxy.mdMon, 29 Apr 2024 13:38:15 GMT<![CDATA[tag-pug]]>https://pastel.codes/obsidian/00-tags/tag-pug.html00 Tags/tag-pug.mdMon, 29 Apr 2024 13:42:00 GMT<![CDATA[tag-puppeteer]]>https://pastel.codes/obsidian/00-tags/tag-puppeteer.html00 Tags/tag-puppeteer.mdMon, 29 Apr 2024 13:42:07 GMT<![CDATA[tag-pwndbg]]>https://pastel.codes/obsidian/00-tags/tag-pwndbg.html00 Tags/tag-pwndbg.mdMon, 29 Apr 2024 13:39:35 GMT<![CDATA[tag-pygame]]>https://pastel.codes/obsidian/00-tags/tag-pygame.html00 Tags/tag-pygame.mdMon, 29 Apr 2024 13:40:22 GMT<![CDATA[tag-python]]>https://pastel.codes/obsidian/00-tags/tag-python.html00 Tags/tag-python.mdMon, 29 Apr 2024 13:38:06 GMT<![CDATA[tag-pytorch]]>https://pastel.codes/obsidian/00-tags/tag-pytorch.html00 Tags/tag-pytorch.mdMon, 29 Apr 2024 13:40:04 GMT<![CDATA[tag-react]]>https://pastel.codes/obsidian/00-tags/tag-react.html00 Tags/tag-react.mdMon, 29 Apr 2024 13:42:56 GMT<![CDATA[tag-realtime]]>https://pastel.codes/obsidian/00-tags/tag-realtime.html00 Tags/tag-realtime.mdMon, 29 Apr 2024 13:43:43 GMT<![CDATA[tag-redis]]>https://pastel.codes/obsidian/00-tags/tag-redis.html00 Tags/tag-redis.mdMon, 29 Apr 2024 13:43:24 GMT<![CDATA[tag-research]]>https://pastel.codes/obsidian/00-tags/tag-research.html00 Tags/tag-research.mdMon, 29 Apr 2024 13:40:17 GMT<![CDATA[tag-reverse-engineering]]>https://pastel.codes/obsidian/00-tags/tag-reverse-engineering.html00 Tags/tag-reverse-engineering.mdMon, 29 Apr 2024 13:39:31 GMT<![CDATA[tag-rust]]>https://pastel.codes/obsidian/00-tags/tag-rust.html00 Tags/tag-rust.mdMon, 29 Apr 2024 13:42:32 GMT<![CDATA[tag-scikit]]>https://pastel.codes/obsidian/00-tags/tag-scikit.html00 Tags/tag-scikit.mdMon, 29 Apr 2024 13:40:39 GMT<![CDATA[tag-scraping]]>https://pastel.codes/obsidian/00-tags/tag-scraping.html00 Tags/tag-scraping.mdMon, 29 Apr 2024 13:38:11 GMT<![CDATA[tag-selenium]]>https://pastel.codes/obsidian/00-tags/tag-selenium.html00 Tags/tag-selenium.mdMon, 29 Apr 2024 13:43:47 GMT<![CDATA[tag-server-management]]>https://pastel.codes/obsidian/00-tags/tag-server-management.html00 Tags/tag-server-management.mdMon, 29 Apr 2024 13:38:35 GMT<![CDATA[tag-serverless]]>https://pastel.codes/obsidian/00-tags/tag-serverless.html00 Tags/tag-serverless.mdMon, 29 Apr 2024 13:43:49 GMT<![CDATA[tag-slack-bot]]>https://pastel.codes/obsidian/00-tags/tag-slack-bot.html00 Tags/tag-slack-bot.mdMon, 29 Apr 2024 13:43:21 GMT<![CDATA[tag-software-engineering]]>https://pastel.codes/obsidian/00-tags/tag-software-engineering.html00 Tags/tag-software-engineering.mdMon, 29 Apr 2024 13:39:13 GMT<![CDATA[tag-sql]]>https://pastel.codes/obsidian/00-tags/tag-sql.html00 Tags/tag-sql.mdMon, 29 Apr 2024 13:38:09 GMT<![CDATA[tag-sqlite]]>https://pastel.codes/obsidian/00-tags/tag-sqlite.html00 Tags/tag-sqlite.mdMon, 29 Apr 2024 13:38:08 GMT<![CDATA[tag-ssl]]>https://pastel.codes/obsidian/00-tags/tag-ssl.html00 Tags/tag-ssl.mdMon, 29 Apr 2024 13:42:25 GMT<![CDATA[tag-supabase]]>https://pastel.codes/obsidian/00-tags/tag-supabase.html00 Tags/tag-supabase.mdMon, 29 Apr 2024 13:43:39 GMT<![CDATA[tag-svelte]]>https://pastel.codes/obsidian/00-tags/tag-svelte.html00 Tags/tag-svelte.mdMon, 29 Apr 2024 13:43:37 GMT<![CDATA[tag-sveltekit]]>https://pastel.codes/obsidian/00-tags/tag-sveltekit.html00 Tags/tag-sveltekit.mdMon, 29 Apr 2024 13:43:35 GMT<![CDATA[tag-tailwindcss]]>https://pastel.codes/obsidian/00-tags/tag-tailwindcss.html00 Tags/tag-tailwindcss.mdMon, 29 Apr 2024 13:41:19 GMT<![CDATA[tag-TDD]]>https://pastel.codes/obsidian/00-tags/tag-tdd.html00 Tags/tag-TDD.mdMon, 29 Apr 2024 13:40:35 GMT<![CDATA[tag-tensorflow]]>https://pastel.codes/obsidian/00-tags/tag-tensorflow.html00 Tags/tag-tensorflow.mdMon, 29 Apr 2024 13:40:41 GMT<![CDATA[tag-threejs]]>https://pastel.codes/obsidian/00-tags/tag-threejs.html00 Tags/tag-threejs.mdMon, 29 Apr 2024 13:45:02 GMT<![CDATA[tag-turbo-hotwired]]>https://pastel.codes/obsidian/00-tags/tag-turbo-hotwired.html00 Tags/tag-turbo-hotwired.mdMon, 29 Apr 2024 13:43:27 GMT<![CDATA[tag-two-factor-auth]]>https://pastel.codes/obsidian/00-tags/tag-two-factor-auth.html00 Tags/tag-two-factor-auth.mdMon, 29 Apr 2024 13:43:29 GMT<![CDATA[tag-typescript]]>https://pastel.codes/obsidian/00-tags/tag-typescript.html00 Tags/tag-typescript.mdMon, 29 Apr 2024 13:44:51 GMT<![CDATA[tag-unity]]>https://pastel.codes/obsidian/00-tags/tag-unity.html00 Tags/tag-unity.mdMon, 29 Apr 2024 13:42:16 GMT<![CDATA[tag-vb-net]]>https://pastel.codes/obsidian/00-tags/tag-vb-net.html00 Tags/tag-vb-net.mdMon, 29 Apr 2024 13:39:09 GMT<![CDATA[tag-visual-novel]]>https://pastel.codes/obsidian/00-tags/tag-visual-novel.html00 Tags/tag-visual-novel.mdMon, 29 Apr 2024 13:44:21 GMT<![CDATA[tag-vite]]>https://pastel.codes/obsidian/00-tags/tag-vite.html00 Tags/tag-vite.mdMon, 29 Apr 2024 13:43:41 GMT<![CDATA[tag-webdesign]]>https://pastel.codes/obsidian/00-tags/tag-webdesign.html00 Tags/tag-webdesign.mdMon, 29 Apr 2024 13:41:49 GMT<![CDATA[tag-webdev]]>https://pastel.codes/obsidian/00-tags/tag-webdev.html00 Tags/tag-webdev.mdMon, 29 Apr 2024 13:41:07 GMT<![CDATA[tag-wip]]>https://pastel.codes/obsidian/00-tags/tag-wip.html00 Tags/tag-wip.mdMon, 29 Apr 2024 13:45:15 GMT<![CDATA[tag-writing]]>https://pastel.codes/obsidian/00-tags/tag-writing.html00 Tags/tag-writing.mdMon, 29 Apr 2024 13:44:23 GMT<![CDATA[tag-x3d]]>https://pastel.codes/obsidian/00-tags/tag-x3d.html00 Tags/tag-x3d.mdMon, 29 Apr 2024 13:41:47 GMT<![CDATA[Dumpmon grabber]]>tag-python tag-sqlite tag-sql tag-scraping tag-cybersecurity tag-proxy
GitLab: https://gitlab.com/BlankFace/dumpmon-checker]]>
https://pastel.codes/obsidian/01-projects/00-school/personal/dumpmon-grabber.html01 Projects/00 School/Personal/Dumpmon grabber.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[IRC Bot]]>tag-python tag-irc tag-bot tag-concurrency tag-sqlite tag-sql tag-protocol
GitLab: https://gitlab.com/BlankFace/Simple-IRC-Bot]]>
https://pastel.codes/obsidian/01-projects/00-school/personal/irc-bot.html01 Projects/00 School/Personal/IRC Bot.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Personal]]>IRC Bot
+Dumpmon grabber
+Raspberry Pi Setup Scripts]]>
https://pastel.codes/obsidian/01-projects/00-school/personal/personal.html01 Projects/00 School/Personal/Personal.mdWed, 24 Apr 2024 08:15:04 GMT
<![CDATA[Raspberry Pi Setup Scripts]]>tag-linux tag-server-management tag-bash tag-cybersecurity tag-hosting
GitHub: https://github.com/aurora-dot/rpi-setups]]>
https://pastel.codes/obsidian/01-projects/00-school/personal/raspberry-pi-setup-scripts.html01 Projects/00 School/Personal/Raspberry Pi Setup Scripts.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[School]]>Personal]]>https://pastel.codes/obsidian/01-projects/00-school/school.html01 Projects/00 School/School.mdMon, 29 Apr 2024 13:45:41 GMT<![CDATA[Assignments]]>IRC-CaLS
+ICT Site]]>
https://pastel.codes/obsidian/01-projects/01-college/assignments/assignments.html01 Projects/01 College/Assignments/Assignments.mdWed, 24 Apr 2024 08:16:43 GMT
<![CDATA[ICT Site]]>tag-html tag-js tag-css tag-frontend
GitHub: https://github.com/aurora-dot/IT-Site]]>
https://pastel.codes/obsidian/01-projects/01-college/assignments/ict-site.html01 Projects/01 College/Assignments/ICT Site.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[IRC-CaLS]]>tag-python tag-vb-net tag-networking tag-concurrency tag-irc tag-protocol tag-sqlite tag-sql tag-software-engineering
GitHub: https://github.com/aurora-dot/IRC-CLS]]>
https://pastel.codes/obsidian/01-projects/01-college/assignments/irc-cals.html01 Projects/01 College/Assignments/IRC-CaLS.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[concatBot]]>tag-python tag-discord tag-bot tag-api tag-scraping tag-oop tag-concurrency tag-image-gen
GitHub: https://github.com/aurora-dot/concatBot]]>
https://pastel.codes/obsidian/01-projects/01-college/personal/concatbot.html01 Projects/01 College/Personal/concatBot.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Cyber Discovery Finalist Challenge]]>tag-cybersecurity tag-reverse-engineering tag-decryption tag-pwndbg tag-gdb tag-low-level-debugging tag-linux
GitHub: https://gitlab.com/BlankFace/Cyber-Discovery-Badge-Challenge]]>
https://pastel.codes/obsidian/01-projects/01-college/personal/cyber-discovery-finalist-challenge.html01 Projects/01 College/Personal/Cyber Discovery Finalist Challenge.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[Hexbot]]>tag-api tag-image-gen tag-python
GitHub: https://github.com/aurora-dot/hexbot]]>
https://pastel.codes/obsidian/01-projects/01-college/personal/hexbot.html01 Projects/01 College/Personal/Hexbot.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Personal]]>Cyber Discovery Finalist Challenge
+Hexbot
+concatBot]]>
https://pastel.codes/obsidian/01-projects/01-college/personal/personal.html01 Projects/01 College/Personal/Personal.mdWed, 24 Apr 2024 08:18:41 GMT
<![CDATA[College]]>01 Projects/01 College/Personal/Personal
+01 Projects/01 College/Assignments/Assignments]]>
https://pastel.codes/obsidian/01-projects/01-college/college.html01 Projects/01 College/College.mdMon, 29 Apr 2024 13:45:41 GMT
<![CDATA[AIAB]]>tag-machine-learning tag-genetic-algorithm tag-neural-networks tag-pytorch tag-numpy tag-matplotlib tag-python tag-LaTeX tag-ai tag-jupyter-notebook tag-research
AIAB = Acquired Intelligence & Adaptive Behaviour
GitHub: https://github.com/aurora-dot/university/tree/main/Acquired%20Intelligence%20%26%20Adaptive%20Behaviour%20%5B20_21%5D]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/aiab.html01 Projects/02 University/Assignments/AIAB.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Assignments]]>Minesweeper - https://github.com/aurora-dot/Minesweeper (Uni)
+Checkers - https://github.com/aurora-dot/KR-Checkers (Uni)
+Web 3D - https://github.com/aurora-dot/Web-3D-Assignment (Uni)
+Individual Project- https://github.com/aurora-dot/FYP (Uni)
+Clue - https://github.com/Software-Engineering-Cluedo/Clue (Uni)
+Lovejoys Antique Evaluations - https://github.com/aurora-dot/Lovejoys-Antique-Evaluation (Uni)
(local, need to go into github, upload whole submissions folder with everything unzipped etc) :
+AIAB
+Computer Vision
+DSA Programming Project
+Database design and sql
+Machine learning
+Natural Language Engineering]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/assignments.html01 Projects/02 University/Assignments/Assignments.mdTue, 23 Apr 2024 11:07:42 GMT
<![CDATA[Checkers]]>tag-game-dev tag-pygame tag-ai tag-python tag-DSA tag-application-ui
GitHub: https://github.com/aurora-dot/KR-Checkers]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/checkers.html01 Projects/02 University/Assignments/Checkers.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Clue]]>tag-software-engineering tag-python tag-TDD tag-DSA tag-oop
GitHub: https://github.com/Software-Engineering-Cluedo/Clue]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/clue.html01 Projects/02 University/Assignments/Clue.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[Computer Vision]]>tag-python tag-jupyter-notebook tag-numpy tag-matplotlib tag-scikit tag-tensorflow tag-ai tag-image-gen tag-research tag-LaTeX
GitHub: https://github.com/aurora-dot/university/tree/main/Computer%20Vision%20%5B20_21%5D]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/computer-vision.html01 Projects/02 University/Assignments/Computer Vision.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Database design and sql]]>tag-sql tag-software-engineering
GitHub: https://github.com/aurora-dot/university/tree/2d7bfe64fef16444acaabc157e2bc6bacbb2b712/Databases%20%5B20_21%5D]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/database-design-and-sql.html01 Projects/02 University/Assignments/Database design and sql.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[DSA Programming Project]]>tag-java tag-DSA tag-oop
DSA = Data Structures and Algorithms
+GitHub: https://github.com/aurora-dot/university/tree/2d7bfe64fef16444acaabc157e2bc6bacbb2b712/Data%20Structures%20%26%20Algorithms%20%5B19_20%5D/dsa-assignment]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/dsa-programming-project.html01 Projects/02 University/Assignments/DSA Programming Project.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[Individual Project]]>tag-api tag-data-science tag-machine-learning tag-api tag-jupyter-notebook tag-python tag-matplotlib tag-LaTeX tag-cybersecurity tag-pandas tag-research tag-data-management tag-numpy tag-scikit
GitHub: https://github.com/aurora-dot/university/tree/2d7bfe64fef16444acaabc157e2bc6bacbb2b712/Individual%20Project%20%5B21_22%5D]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/individual-project.html01 Projects/02 University/Assignments/Individual Project.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Lovejoys Antique Evaluations]]>tag-webdev tag-fullstack tag-frontend tag-backend tag-cybersecurity tag-django tag-heroku tag-postgres tag-oop tag-python tag-html tag-css tag-tailwindcss tag-cicd tag-github-actions tag-webdev tag-devops
GitHub: https://github.com/aurora-dot/Lovejoys-Antique-Evaluation]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/lovejoys-antique-evaluations.html01 Projects/02 University/Assignments/Lovejoys Antique Evaluations.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Machine learning]]>tag-python tag-research tag-LaTeX tag-matplotlib tag-scikit tag-jupyter-notebook
GitHub: https://github.com/aurora-dot/university/tree/2d7bfe64fef16444acaabc157e2bc6bacbb2b712/Fundamentals%20of%20Machine%20Learning%20%5B20_21%5D]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/machine-learning.html01 Projects/02 University/Assignments/Machine learning.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Minesweeper]]>tag-java tag-TDD tag-game-dev tag-DSA tag-oop tag-application-ui tag-software-engineering
GitHub: https://github.com/aurora-dot/Minesweeper]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/minesweeper.html01 Projects/02 University/Assignments/Minesweeper.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Natural Language Engineering]]>tag-python tag-jupyter-notebook tag-matplotlib tag-pandas tag-nltk tag-DSA
GitHub: https://github.com/aurora-dot/university/tree/2d7bfe64fef16444acaabc157e2bc6bacbb2b712/Natural%20Language%20Engineering%20%5B20_21%5D]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/natural-language-engineering.html01 Projects/02 University/Assignments/Natural Language Engineering.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Web 3D]]>tag-html tag-php tag-css tag-bootstrap tag-blender tag-x3d tag-webdev tag-webdesign
GitHub: https://github.com/aurora-dot/Web-3D-Assignment]]>
https://pastel.codes/obsidian/01-projects/02-university/assignments/web-3d.html01 Projects/02 University/Assignments/Web 3D.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Bandcamp Web Downloader]]>tag-nodejs tag-fullstack tag-express tag-pug tag-reverse-engineering tag-frontend tag-backend tag-bootstrap tag-webdev tag-webdesign tag-npm
GitHub: https://github.com/aurora-dot/bandcamp-web-downloader]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/bandcamp-web-downloader.html01 Projects/02 University/Personal/Bandcamp Web Downloader.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Blaseball Peanut Clicker]]>tag-scraping tag-nodejs tag-browser-automation tag-puppeteer tag-npm
GitHub: https://github.com/aurora-dot/blaseball-peanut-clicker]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/blaseball-peanut-clicker.html01 Projects/02 University/Personal/Blaseball Peanut Clicker.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[Ghost Terminal Dracula theme]]>tag-css tag-html tag-github-contributor
GitHub: https://github.com/aurora-dot/dracula-terminal-theme]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/ghost-terminal-dracula-theme.html01 Projects/02 University/Personal/Ghost Terminal Dracula theme.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[Hacksussex 2019]]>tag-unity tag-application-ui tag-hackathon tag-game-dev
GitHub: https://github.com/aurora-dot/HackSussex-2019]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/hacksussex-2019.html01 Projects/02 University/Personal/Hacksussex 2019.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Hosting with VPS]]>tag-hosting tag-admin tag-linux tag-docker tag-domain-name-management tag-ssl
https://pastel.codes - custom site
+https://blog.pastel.codes - ghost
+https:/git.pastel.codes - gitea
+https://mumble.pastel.codes - mumble - (dead)
+https://matrix.pastel.codes - matrix
+https://possum.gay - element (frontend for matrix)]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/hosting-with-vps.html01 Projects/02 University/Personal/Hosting with VPS.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[i3 Config]]>tag-linux
GitHub: https://github.com/aurora-dot/dotfiles]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/i3-config.html01 Projects/02 University/Personal/i3 Config.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[litebin]]>tag-rust tag-api tag-networking tag-docker
GitHub: https://github.com/aurora-dot/litebin]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/litebin.html01 Projects/02 University/Personal/litebin.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Markdown dracula theme]]>tag-html tag-css
GitHub: https://github.com/aurora-dot/github-markdown-dracula-css]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/markdown-dracula-theme.html01 Projects/02 University/Personal/Markdown dracula theme.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[MDView]]>tag-css tag-html tag-github-contributor
GitHub: https://github.com/c3er/mdview]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/mdview.html01 Projects/02 University/Personal/MDView.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[nixos config]]>tag-linux
GitHub: https://github.com/aurora-dot/nixos]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/nixos-config.html01 Projects/02 University/Personal/nixos config.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[pastel.codes]]>tag-express tag-pug tag-fullstack tag-frontend tag-backend tag-css tag-tailwindcss tag-api tag-nodejs tag-webdev tag-docker tag-webdesign tag-npm tag-ssl
https://pastel.codes
GitHub: https://github.com/aurora-dot/pastel.codes]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/pastel.codes.html01 Projects/02 University/Personal/pastel.codes.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[Personal]]>Hacksussex 2019
+TTTTT.uk-
+University Note Tools
+Contributer to MDView
+i3 Config
+Bandcamp Web Downloader
+Blaseball Peanut Clicker
+Ghost Terminal Dracula theme
+Markdown dracula theme
+nixos config - https://github.com/aurora-dot/nixos
+pastel.codes- https://github.com/aurora-dot/pastel.codes
+litebin
+Hosting with VPS]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/personal.html01 Projects/02 University/Personal/Personal.mdWed, 24 Apr 2024 09:26:16 GMT
<![CDATA[TTTTT.uk]]>tag-html tag-css tag-domain-name-management tag-webdev tag-webdesign tag-cybersecurity tag-admin tag-ssl
https://TTTTT.uk
GitHub: https://github.com/aurora-dot/TTTTT.UK]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/ttttt.uk.html01 Projects/02 University/Personal/TTTTT.uk.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[University Note Tools]]>tag-reverse-engineering tag-sql tag-sqlite tag-python
GitHub https://github.com/aurora-dot/University-Note-Tools]]>
https://pastel.codes/obsidian/01-projects/02-university/personal/university-note-tools.html01 Projects/02 University/Personal/University Note Tools.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[University]]>Personal
+Assignments]]>
https://pastel.codes/obsidian/01-projects/02-university/university.html01 Projects/02 University/University.mdMon, 29 Apr 2024 13:45:41 GMT
<![CDATA[FlipAnalytica - Hacksussex 2023]]>tag-hackathon tag-js tag-html tag-tailwindcss tag-threejs tag-game-dev
GitHub: https://github.com/HackSussex-2023/flip-analytica
+DevPost: https://devpost.com/software/flip-analytica
Winner of:
+
The Joy of The Throw +
Hackiest Hack +]]>
https://pastel.codes/obsidian/01-projects/03-work/personal/flipanalytica-hacksussex-2023.html01 Projects/03 Work/Personal/FlipAnalytica - Hacksussex 2023.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[hiddennet.works]]>tag-domain-name-management tag-html tag-css tag-js tag-data-science tag-webdev tag-webdesign
https://hiddennet.works
GitHub: https://github.com/aurora-dot/hiddennet.works]]>
https://pastel.codes/obsidian/01-projects/03-work/personal/hiddennet.works.html01 Projects/03 Work/Personal/hiddennet.works.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Managing a minecraft server]]>tag-domain-name-management tag-admin tag-linux
https://mentallyeel.gay
+https://map.mentallyeel.gay/
+https://mc.mentallyeel.gay]]>
https://pastel.codes/obsidian/01-projects/03-work/personal/managing-a-minecraft-server.html01 Projects/03 Work/Personal/Managing a minecraft server.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Personal]]>hiddennet.works
+Watcher
+FlipAnalytica - Hacksussex 2023
+Managing a minecraft server]]>
https://pastel.codes/obsidian/01-projects/03-work/personal/personal.html01 Projects/03 Work/Personal/Personal.mdWed, 24 Apr 2024 09:17:34 GMT
<![CDATA[Watcher]]>tag-go tag-serverless tag-api tag-scraping tag-browser-automation tag-wip tag-cicd tag-github-actions tag-typescript tag-nextjs tag-nodejs tag-react tag-webdev tag-webdesign
Frontend & Backend - GitHub: https://github.com/aurora-dot/watcher
+Serverless - GitHub: https://github.com/aurora-dot/watcher-browser-service]]>
https://pastel.codes/obsidian/01-projects/03-work/personal/watcher.html01 Projects/03 Work/Personal/Watcher.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Heythere Extensions]]>tag-browser-extension tag-reverse-engineering tag-api tag-parcel tag-prod tag-tailwindcss tag-react tag-oauth tag-devops tag-TDD tag-js tag-chrome-extension tag-firefox-extension tag-networking tag-network-traffic-capture tag-webdev tag-github-actions tag-software-engineering
Firefox: https://addons.mozilla.org/en-GB/firefox/addon/heythere-extension/
+Chrome: https://chromewebstore.google.com/detail/heythere/cpjbhiflomjghkkhedimgpniomoijpjd]]>
https://pastel.codes/obsidian/01-projects/03-work/projects/heythere/heythere-extensions.html01 Projects/03 Work/Projects/Heythere/Heythere Extensions.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Heythere Web]]>tag-django tag-python tag-postgres tag-sql tag-prod tag-openai tag-api tag-tailwindcss tag-webdev tag-webdesign tag-software-engineering tag-admin tag-slack-bot tag-bot tag-automated-email tag-cicd tag-github-actions tag-cybersecurity tag-npm tag-heroku tag-openai tag-oauth tag-two-factor-auth tag-devops tag-turbo-hotwired tag-redis tag-TDD tag-js tag-html tag-prod tag-django-rest-framework tag-bash
https://www.heythereapp.co.uk]]>
https://pastel.codes/obsidian/01-projects/03-work/projects/heythere/heythere-web.html01 Projects/03 Work/Projects/Heythere/Heythere Web.mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[BizarrePG]]>tag-svelte tag-sveltekit tag-openai tag-prod tag-supabase tag-sql tag-html tag-css tag-js tag-tailwindcss tag-nodejs tag-npm tag-vite tag-postgres tag-realtime tag-game-dev tag-webdev tag-bash
https://www.playbizarrepg.com]]>
https://pastel.codes/obsidian/01-projects/03-work/projects/bizarrepg.html01 Projects/03 Work/Projects/BizarrePG.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[Changewatch]]>tag-browser-automation tag-selenium tag-scraping tag-serverless tag-heroku tag-django tag-python tag-devops tag-webdev tag-tailwindcss tag-html tag-js tag-css tag-cicd tag-TDD tag-postgres tag-sql tag-admin tag-devops tag-github-actions tag-api tag-software-engineering tag-webdev tag-webdesign tag-diffing tag-DSA tag-myers-diff-algo
https://www.changewatch.co.uk]]>
https://pastel.codes/obsidian/01-projects/03-work/projects/changewatch.html01 Projects/03 Work/Projects/Changewatch.mdMon, 29 Apr 2024 13:44:35 GMT
<![CDATA[N0RT]]>tag-godot tag-level-design tag-art tag-music tag-gamejam tag-game-dev tag-game-design tag-platformer
https://bouncetechnologies.itch.io/game-off-2023]]>
https://pastel.codes/obsidian/01-projects/03-work/projects/n0rt.html01 Projects/03 Work/Projects/N0RT.mdMon, 29 Apr 2024 13:34:17 GMT
<![CDATA[Projects]]>Changewatch
+Heythere Web
+Heythere Extensions
+BizarrePG
+The Loop.
+N0RT ]]>
https://pastel.codes/obsidian/01-projects/03-work/projects/projects.html01 Projects/03 Work/Projects/Projects.mdWed, 24 Apr 2024 10:16:05 GMT
<![CDATA[The Loop.]]>tag-godot tag-gamejam tag-art tag-music tag-writing tag-character-design tag-game-dev tag-visual-novel tag-game-design
https://itch.io/jam/scream-jam-2023/rate/2328719]]>
https://pastel.codes/obsidian/01-projects/03-work/projects/the-loop..html01 Projects/03 Work/Projects/The Loop..mdMon, 29 Apr 2024 13:33:47 GMT
<![CDATA[Work]]>Personal
+Projects]]>
https://pastel.codes/obsidian/01-projects/03-work/work.html01 Projects/03 Work/Work.mdMon, 29 Apr 2024 13:45:41 GMT
<![CDATA[Projects]]>School
College
University
Work]]>
https://pastel.codes/obsidian/projects.htmlProjects.mdTue, 23 Apr 2024 11:09:58 GMT
\ No newline at end of file diff --git a/obsidian/lib/scripts/graph-data.js b/obsidian/lib/scripts/graph-data.js new file mode 100644 index 0000000..07a4c88 --- /dev/null +++ b/obsidian/lib/scripts/graph-data.js @@ -0,0 +1 @@ +let graphData={graphOptions:{attractionForce:1,linkLength:10,repulsionForce:150,centralForce:3,edgePruning:100,minNodeRadius:3,maxNodeRadius:7},isInitialized:!0,paths:["00-tags/tag-admin.html","00-tags/tag-ai.html","00-tags/tag-api.html","00-tags/tag-application-ui.html","00-tags/tag-art.html","00-tags/tag-automated-email.html","00-tags/tag-backend.html","00-tags/tag-bash.html","00-tags/tag-blender.html","00-tags/tag-bootstrap.html","00-tags/tag-bot.html","00-tags/tag-browser-automation.html","00-tags/tag-browser-extension.html","00-tags/tag-character-design.html","00-tags/tag-chrome-extension.html","00-tags/tag-cicd.html","00-tags/tag-concurrency.html","00-tags/tag-css.html","00-tags/tag-cybersecurity.html","00-tags/tag-data-management.html","00-tags/tag-data-science.html","00-tags/tag-decryption.html","00-tags/tag-devops.html","00-tags/tag-diffing.html","00-tags/tag-discord.html","00-tags/tag-django.html","00-tags/tag-django-rest-framework.html","00-tags/tag-docker.html","00-tags/tag-domain-name-management.html","00-tags/tag-dsa.html","00-tags/tag-express.html","00-tags/tag-firefox-extension.html","00-tags/tag-frontend.html","00-tags/tag-fullstack.html","00-tags/tag-game-design.html","00-tags/tag-game-dev.html","00-tags/tag-gamejam.html","00-tags/tag-gdb.html","00-tags/tag-genetic-algorithm.html","00-tags/tag-github-actions.html","00-tags/tag-github-contributor.html","00-tags/tag-go.html","00-tags/tag-godot.html","00-tags/tag-hackathon.html","00-tags/tag-heroku.html","00-tags/tag-hosting.html","00-tags/tag-html.html","00-tags/tag-image-gen.html","00-tags/tag-irc.html","00-tags/tag-java.html","00-tags/tag-js.html","00-tags/tag-jupyter-notebook.html","00-tags/tag-latex.html","00-tags/tag-level-design.html","00-tags/tag-linux.html","00-tags/tag-low-level-debugging.html","00-tags/tag-machine-learning.html","00-tags/tag-matplotlib.html","00-tags/tag-music.html","00-tags/tag-myers-diff-algo.html","00-tags/tag-network-traffic-capture.html","00-tags/tag-networking.html","00-tags/tag-neural-networks.html","00-tags/tag-nextjs.html","00-tags/tag-nltk.html","00-tags/tag-nodejs.html","00-tags/tag-npm.html","00-tags/tag-numpy.html","00-tags/tag-oauth.html","00-tags/tag-oop.html","00-tags/tag-openai.html","00-tags/tag-pandas.html","00-tags/tag-parcel.html","00-tags/tag-php.html","00-tags/tag-platformer.html","00-tags/tag-postgres.html","00-tags/tag-prod.html","00-tags/tag-protocol.html","00-tags/tag-proxy.html","00-tags/tag-pug.html","00-tags/tag-puppeteer.html","00-tags/tag-pwndbg.html","00-tags/tag-pygame.html","00-tags/tag-python.html","00-tags/tag-pytorch.html","00-tags/tag-react.html","00-tags/tag-realtime.html","00-tags/tag-redis.html","00-tags/tag-research.html","00-tags/tag-reverse-engineering.html","00-tags/tag-rust.html","00-tags/tag-scikit.html","00-tags/tag-scraping.html","00-tags/tag-selenium.html","00-tags/tag-server-management.html","00-tags/tag-serverless.html","00-tags/tag-slack-bot.html","00-tags/tag-software-engineering.html","00-tags/tag-sql.html","00-tags/tag-sqlite.html","00-tags/tag-ssl.html","00-tags/tag-supabase.html","00-tags/tag-svelte.html","00-tags/tag-sveltekit.html","00-tags/tag-tailwindcss.html","00-tags/tag-tdd.html","00-tags/tag-tensorflow.html","00-tags/tag-threejs.html","00-tags/tag-turbo-hotwired.html","00-tags/tag-two-factor-auth.html","00-tags/tag-typescript.html","00-tags/tag-unity.html","00-tags/tag-vb-net.html","00-tags/tag-visual-novel.html","00-tags/tag-vite.html","00-tags/tag-webdesign.html","00-tags/tag-webdev.html","00-tags/tag-wip.html","00-tags/tag-writing.html","00-tags/tag-x3d.html","01-projects/00-school/personal/dumpmon-grabber.html","01-projects/00-school/personal/irc-bot.html","01-projects/00-school/personal/personal.html","01-projects/00-school/personal/raspberry-pi-setup-scripts.html","01-projects/00-school/school.html","01-projects/01-college/assignments/assignments.html","01-projects/01-college/assignments/ict-site.html","01-projects/01-college/assignments/irc-cals.html","01-projects/01-college/personal/concatbot.html","01-projects/01-college/personal/cyber-discovery-finalist-challenge.html","01-projects/01-college/personal/hexbot.html","01-projects/01-college/personal/personal.html","01-projects/01-college/college.html","01-projects/02-university/assignments/aiab.html","01-projects/02-university/assignments/assignments.html","01-projects/02-university/assignments/checkers.html","01-projects/02-university/assignments/clue.html","01-projects/02-university/assignments/computer-vision.html","01-projects/02-university/assignments/database-design-and-sql.html","01-projects/02-university/assignments/dsa-programming-project.html","01-projects/02-university/assignments/individual-project.html","01-projects/02-university/assignments/lovejoys-antique-evaluations.html","01-projects/02-university/assignments/machine-learning.html","01-projects/02-university/assignments/minesweeper.html","01-projects/02-university/assignments/natural-language-engineering.html","01-projects/02-university/assignments/web-3d.html","01-projects/02-university/personal/bandcamp-web-downloader.html","01-projects/02-university/personal/blaseball-peanut-clicker.html","01-projects/02-university/personal/ghost-terminal-dracula-theme.html","01-projects/02-university/personal/hacksussex-2019.html","01-projects/02-university/personal/hosting-with-vps.html","01-projects/02-university/personal/i3-config.html","01-projects/02-university/personal/litebin.html","01-projects/02-university/personal/markdown-dracula-theme.html","01-projects/02-university/personal/mdview.html","01-projects/02-university/personal/nixos-config.html","01-projects/02-university/personal/pastel.codes.html","01-projects/02-university/personal/personal.html","01-projects/02-university/personal/ttttt.uk.html","01-projects/02-university/personal/university-note-tools.html","01-projects/02-university/university.html","01-projects/03-work/personal/flipanalytica-hacksussex-2023.html","01-projects/03-work/personal/hiddennet.works.html","01-projects/03-work/personal/managing-a-minecraft-server.html","01-projects/03-work/personal/personal.html","01-projects/03-work/personal/watcher.html","01-projects/03-work/projects/heythere/heythere-extensions.html","01-projects/03-work/projects/heythere/heythere-web.html","01-projects/03-work/projects/bizarrepg.html","01-projects/03-work/projects/changewatch.html","01-projects/03-work/projects/n0rt.html","01-projects/03-work/projects/projects.html","01-projects/03-work/projects/the-loop..html","01-projects/03-work/work.html","projects.html"],nodeCount:175,linkSources:[120,120,120,120,120,120,121,121,121,121,121,121,121,122,122,122,123,123,123,123,123,124,125,125,126,126,126,126,127,127,127,127,127,127,127,127,127,128,128,128,128,128,128,128,128,129,129,129,129,129,129,129,130,130,130,131,131,131,132,132,133,133,133,133,133,133,133,133,133,133,133,134,134,134,134,134,134,134,134,134,134,134,134,135,135,135,135,135,135,136,136,136,136,136,137,137,137,137,137,137,137,137,137,137,138,138,139,139,139,140,140,140,140,140,140,140,140,140,140,140,140,140,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,142,142,142,142,142,142,143,143,143,143,143,143,143,144,144,144,144,144,144,145,145,145,145,145,145,145,145,146,146,146,146,146,146,146,146,146,146,146,147,147,147,147,147,148,148,148,149,149,149,149,150,150,150,150,150,150,151,152,152,152,152,153,153,154,154,154,155,156,156,156,156,156,156,156,156,156,156,156,156,156,156,157,157,157,157,157,157,157,157,157,157,157,157,157,158,158,158,158,158,158,158,158,159,159,159,159,160,160,161,161,161,161,161,161,162,162,162,162,162,162,162,163,163,163,164,164,164,164,165,165,165,165,165,165,165,165,165,165,165,165,165,165,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,170,170,170,170,170,170,170,170,171,171,171,171,171,171,172,172,172,172,172,172,172,172,172,173,173,174,174,174,174],linkTargets:[83,99,98,92,18,78,83,48,10,16,99,98,77,121,120,123,54,94,7,18,45,122,127,126,46,50,17,32,83,112,61,16,48,77,99,98,97,83,24,10,2,92,69,16,47,18,89,21,81,37,55,54,2,47,83,129,130,128,131,125,56,38,62,84,67,57,83,52,1,51,88,143,135,145,140,136,141,133,137,139,138,142,144,35,82,1,83,29,3,97,83,105,29,69,83,51,67,57,91,106,1,47,88,52,98,97,49,29,69,2,20,56,51,83,57,52,18,71,88,19,67,91,116,33,32,6,18,25,44,75,69,83,46,17,104,15,39,22,83,88,52,57,91,51,49,105,35,29,69,3,97,83,51,57,71,64,29,46,73,17,9,8,119,116,115,65,33,30,79,89,32,6,9,116,115,66,92,65,11,80,66,17,46,40,111,3,43,35,45,0,54,27,28,100,54,90,2,61,27,46,17,17,46,40,54,30,79,33,32,6,17,104,2,65,116,27,115,66,100,149,158,159,154,151,146,147,148,153,155,156,152,150,46,17,28,116,115,18,0,100,89,98,99,83,157,134,43,50,46,104,107,35,28,46,17,50,20,116,115,28,0,54,162,165,161,163,41,95,2,92,11,117,15,39,110,63,65,85,116,115,12,89,2,72,76,104,85,68,22,105,50,14,31,61,60,116,39,97,25,83,75,98,76,70,2,104,116,115,97,0,96,10,5,15,39,18,66,44,68,109,22,108,87,105,50,46,26,7,102,103,70,76,101,98,46,17,50,104,65,66,114,75,86,35,116,7,11,93,92,95,44,25,83,22,116,104,46,50,17,15,105,75,98,0,39,2,97,115,23,29,59,42,53,4,58,36,35,34,74,169,167,166,168,172,170,42,36,4,58,118,13,35,113,34,164,171,124,132,160,173],labels:["tag-admin","tag-ai","tag-api","tag-application-ui","tag-art","tag-automated-email","tag-backend","tag-bash","tag-blender","tag-bootstrap","tag-bot","tag-browser-automation","tag-browser-extension","tag-character-design","tag-chrome-extension","tag-cicd","tag-concurrency","tag-css","tag-cybersecurity","tag-data-management","tag-data-science","tag-decryption","tag-devops","tag-diffing","tag-discord","tag-django","tag-django-rest-framework","tag-docker","tag-domain-name-management","tag-DSA","tag-express","tag-firefox-extension","tag-frontend","tag-fullstack","tag-game-design","tag-game-dev","tag-gamejam","tag-gdb","tag-genetic-algorithm","tag-github-actions","tag-github-contributor","tag-go","tag-godot","tag-hackathon","tag-heroku","tag-hosting","tag-html","tag-image-gen","tag-irc","tag-java","tag-js","tag-jupyter-notebook","tag-LaTeX","tag-level-design","tag-linux","tag-low-level-debugging","tag-machine-learning","tag-matplotlib","tag-music","tag-myers-diff-algo","tag-network-traffic-capture","tag-networking","tag-neural-networks","tag-nextjs","tag-nltk","tag-nodejs","tag-npm","tag-numpy","tag-oauth","tag-oop","tag-openai","tag-pandas","tag-parcel","tag-php","tag-platformer","tag-postgres","tag-prod","tag-protocol","tag-proxy","tag-pug","tag-puppeteer","tag-pwndbg","tag-pygame","tag-python","tag-pytorch","tag-react","tag-realtime","tag-redis","tag-research","tag-reverse-engineering","tag-rust","tag-scikit","tag-scraping","tag-selenium","tag-server-management","tag-serverless","tag-slack-bot","tag-software-engineering","tag-sql","tag-sqlite","tag-ssl","tag-supabase","tag-svelte","tag-sveltekit","tag-tailwindcss","tag-TDD","tag-tensorflow","tag-threejs","tag-turbo-hotwired","tag-two-factor-auth","tag-typescript","tag-unity","tag-vb-net","tag-visual-novel","tag-vite","tag-webdesign","tag-webdev","tag-wip","tag-writing","tag-x3d","Dumpmon grabber","IRC Bot","Personal","Raspberry Pi Setup Scripts","School","Assignments","ICT Site","IRC-CaLS","concatBot","Cyber Discovery Finalist Challenge","Hexbot","Personal","College","AIAB","Assignments","Checkers","Clue","Computer Vision","Database design and sql","DSA Programming Project","Individual Project","Lovejoys Antique Evaluations","Machine learning","Minesweeper","Natural Language Engineering","Web 3D","Bandcamp Web Downloader","Blaseball Peanut Clicker","Ghost Terminal Dracula theme","Hacksussex 2019","Hosting with VPS","i3 Config","litebin","Markdown dracula theme","MDView","nixos config","pastel.codes","Personal","TTTTT.uk","University Note Tools","University","FlipAnalytica - Hacksussex 2023","hiddennet.works","Managing a minecraft server","Personal","Watcher","Heythere Extensions","Heythere Web","BizarrePG","Changewatch","N0RT","Projects","The Loop.","Work","Projects"],radii:[4.450312174817898,3.909209157127991,5.376430801248699,3.909209157127991,3.6191467221644125,3.316077003121748,3.909209157127991,3.909209157127991,3.316077003121748,3.6191467221644125,3.909209157127991,3.909209157127991,3.316077003121748,3.316077003121748,3.316077003121748,4.186264308012487,3.909209157127991,5.761446409989594,4.939386056191467,3.316077003121748,3.6191467221644125,3.316077003121748,4.186264308012487,3.316077003121748,3.316077003121748,3.909209157127991,3.316077003121748,3.909209157127991,4.186264308012487,4.701352757544225,3.6191467221644125,3.316077003121748,4.186264308012487,3.909209157127991,3.6191467221644125,4.939386056191467,3.6191467221644125,3.316077003121748,3.316077003121748,4.450312174817898,3.6191467221644125,3.316077003121748,3.6191467221644125,3.6191467221644125,3.909209157127991,3.6191467221644125,5.934443288241415,3.909209157127991,3.6191467221644125,3.6191467221644125,4.939386056191467,4.450312174817898,4.186264308012487,3.316077003121748,4.701352757544225,3.316077003121748,3.6191467221644125,4.450312174817898,3.6191467221644125,3.316077003121748,3.316077003121748,3.909209157127991,3.316077003121748,3.316077003121748,3.316077003121748,4.450312174817898,4.450312174817898,3.909209157127991,3.6191467221644125,4.450312174817898,3.6191467221644125,3.6191467221644125,3.316077003121748,3.316077003121748,3.316077003121748,4.186264308012487,3.909209157127991,3.6191467221644125,3.316077003121748,3.6191467221644125,3.316077003121748,3.316077003121748,3.316077003121748,6.496357960457857,3.316077003121748,3.6191467221644125,3.316077003121748,3.316077003121748,4.186264308012487,4.186264308012487,3.316077003121748,3.909209157127991,4.450312174817898,3.316077003121748,3.316077003121748,3.6191467221644125,3.316077003121748,4.939386056191467,5.164412070759625,4.186264308012487,3.909209157127991,3.316077003121748,3.316077003121748,3.316077003121748,4.939386056191467,4.450312174817898,3.316077003121748,3.316077003121748,3.316077003121748,3.316077003121748,3.316077003121748,3.316077003121748,3.316077003121748,3.316077003121748,3.316077003121748,5.164412070759625,5.761446409989594,3.316077003121748,3.316077003121748,3.316077003121748,4.939386056191467,5.164412070759625,4.186264308012487,4.701352757544225,3.6191467221644125,3.909209157127991,4.450312174817898,5.575442247658689,5.376430801248699,5.164412070759625,4.186264308012487,4.186264308012487,3.909209157127991,5.934443288241415,6.094432882414152,4.939386056191467,4.701352757544225,5.761446409989594,3.909209157127991,4.186264308012487,6.241415192507804,6.604318418314255,4.939386056191467,5.164412070759625,4.939386056191467,5.376430801248699,5.934443288241415,4.701352757544225,4.186264308012487,4.450312174817898,4.939386056191467,3.6191467221644125,4.450312174817898,3.909209157127991,4.186264308012487,3.6191467221644125,6.375390218522373,6.241415192507804,5.376430801248699,4.450312174817898,3.909209157127991,4.939386056191467,5.164412070759625,4.186264308012487,4.450312174817898,6.375390218522373,6.7812174817898025,7,6.7812174817898025,7,5.376430801248699,4.939386056191467,5.575442247658689,3.909209157127991,4.186264308012487],linkCount:400} \ No newline at end of file diff --git a/obsidian/lib/scripts/graph-render-worker.js b/obsidian/lib/scripts/graph-render-worker.js new file mode 100644 index 0000000..01a4c7e --- /dev/null +++ b/obsidian/lib/scripts/graph-render-worker.js @@ -0,0 +1 @@ +if("function"==typeof importScripts){let e,t,o;importScripts("https://d157l7jdn8e5sf.cloudfront.net/v7.2.0/webworker.js","./tinycolor.js"),addEventListener("message",onMessage),isDrawing=!1;let n=0,a=[],r=[],i=0,l=[],c=[],d=[],s=[],u=[],g={x:0,y:0},p=new Float32Array(0),h=0,f=0,y={background:2302755,link:11184810,node:13421772,outline:11184810,text:16777215,accent:4203434},S=-1,x=-1,v=-1,m=!1,w=[],b=-1,C=1,k=1;function toScreenSpace(e,t,o=!0){return o?{x:Math.floor(e*C+g.x),y:Math.floor(t*C+g.y)}:{x:e*C+g.x,y:t*C+g.y}}function vecToScreenSpace({x:e,y:t},o=!0){return toScreenSpace(e,t,o)}function toWorldspace(e,t){return{x:(e-g.x)/C,y:(t-g.y)/C}}function vecToWorldspace({x:e,y:t}){return toWorldspace(e,t)}function setCameraCenterWorldspace({x:e,y:t}){g.x=canvas.width/2-e*C,g.y=canvas.height/2-t*C}function getCameraCenterWorldspace(){return toWorldspace(canvas.width/2,canvas.height/2)}function getNodeScreenRadius(e){return e*k}function getNodeWorldspaceRadius(e){return e/k}function getPosition(e){return{x:p[2*e],y:p[2*e+1]}}function mixColors(e,t,o){return tinycolor.mix(tinycolor(e.toString(16)),tinycolor(t.toString(16)),o).toHexNumber()}function darkenColor(e,t){return tinycolor(e.toString(16)).darken(t).toHexNumber()}function lightenColor(e,t){return tinycolor(e.toString(16)).lighten(t).toHexNumber()}function invertColor(e,t){for(e=e.toString(16);e.length<6;)e="0"+e;if(0===e.indexOf("#")&&(e=e.slice(1)),3===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),6!==e.length)throw new Error("Invalid HEX color:"+e);var o=parseInt(e.slice(0,2),16),n=parseInt(e.slice(2,4),16),a=parseInt(e.slice(4,6),16);return t?.299*o+.587*n+.114*a>186?"#000000":"#FFFFFF":(o=(255-o).toString(16),n=(255-n).toString(16),a=(255-a).toString(16),"#"+padZero(o)+padZero(n)+padZero(a))}function clamp(e,t,o){return Math.min(Math.max(e,t),o)}function lerp(e,t,o){return e+(t-e)*o}let N=0,T=.2,F=15,M=12,P=F/M;function showLabel(e,t,o=!1){let n=u[e];if(!n)return;if(d[e]=t,!(t>.01))return void hideLabel(e);n.visible=!0,n.style.fontSize=o?F:M;let a=vecToScreenSpace(getPosition(e)),r=s[e]*(o?P:1)/2;n.x=a.x-r,n.y=a.y+getNodeScreenRadius(l[e])+9,n.alpha=t}function hideLabel(e){u[e].visible=!1}function draw(){o.clear();let e=[];m&&(w=[]),N=-1!=S||-1!=v?Math.min(1,N+T):Math.max(0,N-T),o.lineStyle(1,mixColors(y.link,y.background,50*N),.7);for(let t=0;t2){showLabel(e,lerp(0,(t-4)/8-1/k/6*.9,Math.max(1-N,.2)))}else hideLabel(e);if(S==e||x==e&&0!=N||-1!=S&&w.includes(e))continue;let n=vecToScreenSpace(getPosition(e));o.drawCircle(n.x,n.y,t)}o.endFill(),t=.7*N,o.lineStyle(1,mixColors(mixColors(y.link,y.accent,100*N),y.background,20),t);for(let t=0;tMath.max(e,r))),GraphAssembly.averageRadius=GraphAssembly.radii.reduce(((e,r)=>e+r))/GraphAssembly.radii.length,GraphAssembly.minRadius=GraphAssembly.radii.reduce(((e,r)=>Math.min(e,r))),r=this.loadState(),Module.HEAP32.set(new Int32Array(r.buffer),GraphAssembly.#e/r.BYTES_PER_ELEMENT),Module.HEAP32.set(new Int32Array(GraphAssembly.radii.buffer),GraphAssembly.#t/GraphAssembly.radii.BYTES_PER_ELEMENT),Module.HEAP32.set(new Int32Array(GraphAssembly.linkSources.buffer),GraphAssembly.#a/GraphAssembly.linkSources.BYTES_PER_ELEMENT),Module.HEAP32.set(new Int32Array(GraphAssembly.linkTargets.buffer),GraphAssembly.#s/GraphAssembly.linkTargets.BYTES_PER_ELEMENT),Module._Init(GraphAssembly.#e,GraphAssembly.#t,GraphAssembly.#a,GraphAssembly.#s,GraphAssembly.nodeCount,GraphAssembly.linkCount,batchFraction,dt,e.graphOptions.attractionForce,e.graphOptions.linkLength,e.graphOptions.repulsionForce,e.graphOptions.centralForce)}static get positions(){return Module.HEAP32.buffer.slice(GraphAssembly.#e,GraphAssembly.#e+GraphAssembly.#r)}static saveState(e){localStorage.setItem("positions",JSON.stringify(new Float32Array(GraphAssembly.positions).map((e=>Math.round(e)))))}static loadState(){let e=localStorage.getItem("positions"),r=null;if(e&&(r=new Float32Array(Object.values(JSON.parse(e)))),!r||!e||r.length!=2*GraphAssembly.nodeCount){r=new Float32Array(2*GraphAssembly.nodeCount);let e=GraphAssembly.averageRadius*Math.sqrt(GraphAssembly.nodeCount)*2;for(let t=0;t{try{var e=graphRenderer.canvasSidebar.classList.contains("is-collapsed")}catch(e){return}running&&e?running=!1:running||e||(running=!0,graphRenderer.autoResizeCanvas(),graphRenderer.centerCamera())}),1e3))}let firstUpdate=!0;function updateGraph(){if(running&&!graphRenderer.canvasSidebar.classList.contains("is-collapsed")&&(firstUpdate&&(setTimeout((()=>graphRenderer?.canvas?.classList.remove("hide")),500),firstUpdate=!1),GraphAssembly.update(mouseWorldPos,graphRenderer.grabbedNode,graphRenderer.cameraScale),GraphAssembly.hoveredNode!=graphRenderer.hoveredNode&&(graphRenderer.hoveredNode=GraphAssembly.hoveredNode,graphRenderer.canvas.style.cursor=-1==GraphAssembly.hoveredNode?"default":"pointer"),graphRenderer.autoResizeCanvas(),graphRenderer.draw(GraphAssembly.positions),averageFPS=.95*averageFPS+.05*pixiApp.ticker.FPS,averageFPS<.8*targetFPS&&batchFraction>minBatchFraction&&(batchFraction=Math.max(batchFraction-.5/targetFPS,minBatchFraction),GraphAssembly.batchFraction=batchFraction,GraphAssembly.repulsionForce=graphData.graphOptions.repulsionForce/batchFraction),averageFPS>1.2*targetFPS&&batchFraction<1&&(batchFraction=Math.min(batchFraction+.5/targetFPS,1),GraphAssembly.batchFraction=batchFraction,GraphAssembly.repulsionForce=graphData.graphOptions.repulsionForce/batchFraction),0!=scrollVelocity)){graphRenderer.getCameraCenterWorldspace();Math.abs(scrollVelocity)<.001&&(scrollVelocity=0),zoomGraphViewAroundPoint(mouseWorldPos,scrollVelocity),scrollVelocity*=.65}}function zoomGraphViewAroundPoint(e,r,t=.15,a=15){let s=graphRenderer.getCameraCenterWorldspace();if(graphRenderer.cameraScale=Math.max(Math.min(graphRenderer.cameraScale+r*graphRenderer.cameraScale,a),t),graphRenderer.cameraScale!=t&&graphRenderer.cameraScale!=a&&scrollVelocity>0&&null!=mouseWorldPos.x&&null!=mouseWorldPos.y){let t={x:e.x-s.x,y:e.y-s.y},a={x:s.x+t.x*r,y:s.y+t.y*r};graphRenderer.setCameraCenterWorldspace(a)}else graphRenderer.setCameraCenterWorldspace(s)}function scaleGraphViewAroundPoint(e,r,t=.15,a=15){let s=graphRenderer.getCameraCenterWorldspace(),i=graphRenderer.cameraScale;graphRenderer.cameraScale=Math.max(Math.min(r*graphRenderer.cameraScale,a),t);let o=(i-graphRenderer.cameraScale)/i;if(graphRenderer.cameraScale!=t&&graphRenderer.cameraScale!=a&&0!=r){let r={x:e.x-s.x,y:e.y-s.y},t={x:s.x-r.x*o,y:s.y-r.y*o};graphRenderer.setCameraCenterWorldspace(t)}else graphRenderer.setCameraCenterWorldspace(s)}function initializeGraphEvents(){window.addEventListener("beforeunload",(()=>{running=!1,GraphAssembly.free()}));let e=!1,r=graphRenderer.canvas.width;window.addEventListener("resize",(()=>{(e||graphRenderer.canvas.width!=r)&&(graphRenderer.autoResizeCanvas(),graphRenderer.centerCamera())}));let t=document.querySelector(".graph-view-container");function a(e){e.composedPath().includes(t)||s()}function s(){let r=t.clientWidth,s=t.clientHeight;t.classList.add("scale-down"),t.animate({opacity:0},{duration:100,easing:"ease-in",fill:"forwards"}).addEventListener("finish",(function(){t.classList.toggle("expanded"),graphRenderer.autoResizeCanvas(),graphRenderer.centerCamera();let e=t.clientWidth,a=t.clientHeight;graphRenderer.cameraScale*=(e/r+a/s)/2,t.classList.remove("scale-down"),t.classList.add("scale-up"),updateGraph(),t.animate({opacity:1},{duration:200,easing:"ease-out",fill:"forwards"}).addEventListener("finish",(function(){t.classList.remove("scale-up")}))})),e=!e,e?document.addEventListener("pointerdown",a):document.removeEventListener("pointerdown",a)}function i(e){var r=graphRenderer.canvas.getBoundingClientRect();let t=getPointerPosition(e);return{x:t.x-r.left,y:t.y-r.top}}let o={x:0,y:0},n={x:0,y:0},h={x:0,y:0},d={x:0,y:0},l={x:0,y:0},c=0,p=!1,m=!1,g=!1,u=document.querySelector(".graph-view-container"),y=-1;u.addEventListener("pointerenter",(function(r){let t=0,a=!1;function b(e){n=i(e),mouseWorldPos=graphRenderer.vecToWorldspace(n),d={x:n.x-h.x,y:n.y-h.y},h=n,-1!=graphRenderer.grabbedNode&&(l={x:n.x-o.x,y:n.y-o.y}),p&&-1!=graphRenderer.hoveredNode&&-1==graphRenderer.grabbedNode&&graphRenderer.hoveredNode!=graphRenderer.grabbedNode&&(graphRenderer.grabbedNode=graphRenderer.hoveredNode),p&&-1==graphRenderer.hoveredNode&&-1==graphRenderer.grabbedNode||m?graphRenderer.cameraOffset={x:graphRenderer.cameraOffset.x+d.x,y:graphRenderer.cameraOffset.y+d.y}:-1!=graphRenderer.hoveredNode?graphRenderer.canvas.style.cursor="pointer":graphRenderer.canvas.style.cursor="default"}function v(e){if(1==e.touches?.length)return a&&(h=i(e),a=!1),void b(e);if(2==e.touches?.length){let r=getTouchPosition(e.touches[0]),s=getTouchPosition(e.touches[1]);n=i(e),d={x:n.x-h.x,y:n.y-h.y},h=n;let o=Math.sqrt(Math.pow(r.x-s.x,2)+Math.pow(r.y-s.y,2));a||(a=!0,t=o,d={x:0,y:0},mouseWorldPos={x:void 0,y:void 0},graphRenderer.grabbedNode=-1,graphRenderer.hoveredNode=-1);let l=(o-t)/t;scaleGraphViewAroundPoint(graphRenderer.vecToWorldspace(n),1+l,.15,15),graphRenderer.cameraOffset={x:graphRenderer.cameraOffset.x+d.x,y:graphRenderer.cameraOffset.y+d.y},t=o}}function f(r){document.removeEventListener("pointerup",f);let t=Date.now();setTimeout((()=>{p&&-1!=graphRenderer.hoveredNode&&Math.abs(l.x)<=4&&Math.abs(l.y)<=4&&t-c<300&&async function(r){e?s():GraphAssembly.saveState(graphRenderer);let t=graphData.paths[r];window.location.pathname.endsWith(graphData.paths[r])||await loadDocument(t,!0,!0)}(graphRenderer.hoveredNode),p&&-1!=graphRenderer.grabbedNode&&(graphRenderer.grabbedNode=-1),0==r.button&&(p=!1),"touch"==r.pointerType&&y==r.pointerId&&(y=-1,p=!1),1==r.button&&(m=!1),g||(document.removeEventListener("mousemove",b),document.removeEventListener("touchmove",v))}),0)}function R(e){document.addEventListener("pointerup",f),mouseWorldPos=graphRenderer.vecToWorldspace(n),l={x:0,y:0},0==e.button&&(p=!0),"touch"==e.pointerType&&-1==y&&(y=e.pointerId,p=!0),1==e.button&&(m=!0),o=n,c=Date.now(),p&&-1!=graphRenderer.hoveredNode&&(graphRenderer.grabbedNode=graphRenderer.hoveredNode)}n=i(r),mouseWorldPos=graphRenderer.vecToWorldspace(n),h=i(r),g=!0,document.addEventListener("mousemove",b),document.addEventListener("touchmove",v),u.addEventListener("pointerdown",R),u.addEventListener("pointerleave",(function e(r){setTimeout((()=>{g=!1,p||(document.removeEventListener("mousemove",b),document.removeEventListener("touchmove",v),mouseWorldPos={x:void 0,y:void 0}),u.removeEventListener("pointerdown",R),u.removeEventListener("pointerleave",e)}),1)}))})),document.querySelector(".graph-expand.graph-icon")?.addEventListener("click",(e=>{e.stopPropagation(),s()})),u.addEventListener("wheel",(function(e){let r=.09;e.deltaY>0?(scrollVelocity>=-.09&&(scrollVelocity=-.09),scrollVelocity*=1.4):(scrollVelocity<=r&&(scrollVelocity=r),scrollVelocity*=1.4)})),u.addEventListener("dblclick",(function(e){graphRenderer.fitToNodes()})),document.querySelector(".theme-toggle-input")?.addEventListener("change",(e=>{setTimeout((()=>graphRenderer.resampleColors()),0)}))}window.addEventListener("load",(()=>{waitLoadScripts(["pixi","graph-data","graph-render-worker","graph-wasm"],(()=>{Module.onRuntimeInitialized=initializeGraphView,setTimeout((()=>Module.onRuntimeInitialized()),300)}))})) \ No newline at end of file diff --git a/obsidian/lib/scripts/graph-wasm.js b/obsidian/lib/scripts/graph-wasm.js new file mode 100644 index 0000000..6c0bc7f --- /dev/null +++ b/obsidian/lib/scripts/graph-wasm.js @@ -0,0 +1 @@ +var read_,readAsync,readBinary,setWindowTitle,Module=void 0!==Module?Module:{},moduleOverrides=Object.assign({},Module),arguments_=[],thisProgram="./this.program",quit_=(e,n)=>{throw n},ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,scriptDirectory="";function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}if(ENVIRONMENT_IS_NODE){var fs=require("fs"),nodePath=require("path");scriptDirectory=ENVIRONMENT_IS_WORKER?nodePath.dirname(scriptDirectory)+"/":__dirname+"/",read_=(e,n)=>(e=isFileURI(e)?new URL(e):nodePath.normalize(e),fs.readFileSync(e,n?void 0:"utf8")),readBinary=e=>{var n=read_(e,!0);return n.buffer||(n=new Uint8Array(n)),n},readAsync=(e,n,t)=>{e=isFileURI(e)?new URL(e):nodePath.normalize(e),fs.readFile(e,(function(e,r){e?t(e):n(r.buffer)}))},!Module.thisProgram&&process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),"undefined"!=typeof module&&(module.exports=Module),process.on("uncaughtException",(function(e){if(!("unwind"===e||e instanceof ExitStatus||e.context instanceof ExitStatus))throw e}));var nodeMajor=process.versions.node.split(".")[0];nodeMajor<15&&process.on("unhandledRejection",(function(e){throw e})),quit_=(e,n)=>{throw process.exitCode=e,n},Module.inspect=function(){return"[Emscripten Module object]"}}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:"undefined"!=typeof document&&document.currentScript&&(scriptDirectory=document.currentScript.src),scriptDirectory=0!==scriptDirectory.indexOf("blob:")?scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1):"",read_=e=>{var n=new XMLHttpRequest;return n.open("GET",e,!1),n.send(null),n.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=e=>{var n=new XMLHttpRequest;return n.open("GET",e,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}),readAsync=(e,n,t)=>{var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=()=>{200==r.status||0==r.status&&r.response?n(r.response):t()},r.onerror=t,r.send(null)},setWindowTitle=e=>document.title=e);var wasmBinary,out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit),Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var wasmMemory,noExitRuntime=Module.noExitRuntime||!0;"object"!=typeof WebAssembly&&abort("no native wasm support detected");var EXITSTATUS,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,wasmTable,ABORT=!1;function updateMemoryViews(){var e=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e)}var __ATPRERUN__=[],__ATINIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnInit(e){__ATINIT__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var n=dependenciesFulfilled;dependenciesFulfilled=null,n()}}function abort(e){throw Module.onAbort&&Module.onAbort(e),err(e="Aborted("+e+")"),ABORT=!0,EXITSTATUS=1,e+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(e)}var wasmBinaryFile,tempDouble,tempI64,dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(e){return e.startsWith(dataURIPrefix)}function isFileURI(e){return e.startsWith("file://")}function getBinary(e){try{if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}catch(e){abort(e)}}function getBinaryPromise(e){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if("function"==typeof fetch&&!isFileURI(e))return fetch(e,{credentials:"same-origin"}).then((function(n){if(!n.ok)throw"failed to load wasm binary file at '"+e+"'";return n.arrayBuffer()})).catch((function(){return getBinary(e)}));if(readAsync)return new Promise((function(n,t){readAsync(e,(function(e){n(new Uint8Array(e))}),t)}))}return Promise.resolve().then((function(){return getBinary(e)}))}function instantiateArrayBuffer(e,n,t){return getBinaryPromise(e).then((function(e){return WebAssembly.instantiate(e,n)})).then((function(e){return e})).then(t,(function(e){err("failed to asynchronously prepare wasm: "+e),abort(e)}))}function instantiateAsync(e,n,t,r){return e||"function"!=typeof WebAssembly.instantiateStreaming||isDataURI(n)||isFileURI(n)||ENVIRONMENT_IS_NODE||"function"!=typeof fetch?instantiateArrayBuffer(n,t,r):fetch(n,{credentials:"same-origin"}).then((function(e){let o=new Response(e.body,{headers:new Headers({"Content-Type":"application/wasm"})});return WebAssembly.instantiateStreaming(o,t).then(r,(function(e){return err("wasm streaming compile failed: "+e),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(n,t,r)}))}))}function createWasm(){var e={a:wasmImports};function n(e,n){var t=e.exports;return Module.asm=t,wasmMemory=Module.asm.f,updateMemoryViews(),wasmTable=Module.asm.r,addOnInit(Module.asm.g),removeRunDependency("wasm-instantiate"),t}if(addRunDependency("wasm-instantiate"),Module.instantiateWasm)try{return Module.instantiateWasm(e,n)}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(wasmBinary,wasmBinaryFile,e,(function(e){n(e.instance)})),{}}isDataURI(wasmBinaryFile="graph-wasm.wasm")||(wasmBinaryFile=locateFile(wasmBinaryFile));var ASM_CONSTS={2304:e=>{console.log(UTF8ToString(e))}};function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function callRuntimeCallbacks(e){for(;e.length>0;)e.shift()(Module)}function getValue(e,n="i8"){switch(n.endsWith("*")&&(n="*"),n){case"i1":case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];case"*":return HEAPU32[e>>2];default:abort("invalid type for getValue: "+n)}}function setValue(e,n,t="i8"){switch(t.endsWith("*")&&(t="*"),t){case"i1":case"i8":HEAP8[e>>0]=n;break;case"i16":HEAP16[e>>1]=n;break;case"i32":HEAP32[e>>2]=n;break;case"i64":tempI64=[n>>>0,(tempDouble=n,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=n;break;case"double":HEAPF64[e>>3]=n;break;case"*":HEAPU32[e>>2]=n;break;default:abort("invalid type for setValue: "+t)}}function _abort(){abort("")}var readEmAsmArgsArray=[];function readEmAsmArgs(e,n){var t;for(readEmAsmArgsArray.length=0,n>>=2;t=HEAPU8[e++];)n+=105!=t&n,readEmAsmArgsArray.push(105==t?HEAP32[n]:HEAPF64[n++>>1]),++n;return readEmAsmArgsArray}function runEmAsmFunction(e,n,t){var r=readEmAsmArgs(n,t);return ASM_CONSTS[e].apply(null,r)}function _emscripten_asm_const_int(e,n,t){return runEmAsmFunction(e,n,t)}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(e,n,t){HEAPU8.copyWithin(e,n,n+t)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(e){var n=wasmMemory.buffer;try{return wasmMemory.grow(e-n.byteLength+65535>>>16),updateMemoryViews(),1}catch(e){}}function _emscripten_resize_heap(e){var n=HEAPU8.length;e>>>=0;var t=getHeapMax();if(e>t)return!1;for(var r=1;r<=4;r*=2){var o=n*(1+.2/r);if(o=Math.min(o,e+100663296),emscripten_realloc_buffer(Math.min(t,(a=Math.max(e,o))+((i=65536)-a%i)%i)))return!0}var a,i;return!1}function getCFunc(e){return Module["_"+e]}function writeArrayToMemory(e,n){HEAP8.set(e,n)}function lengthBytesUTF8(e){for(var n=0,t=0;t=55296&&r<=57343?(n+=4,++t):n+=3}return n}function stringToUTF8Array(e,n,t,r){if(!(r>0))return 0;for(var o=t,a=t+r-1,i=0;i=55296&&u<=57343)u=65536+((1023&u)<<10)|1023&e.charCodeAt(++i);if(u<=127){if(t>=a)break;n[t++]=u}else if(u<=2047){if(t+1>=a)break;n[t++]=192|u>>6,n[t++]=128|63&u}else if(u<=65535){if(t+2>=a)break;n[t++]=224|u>>12,n[t++]=128|u>>6&63,n[t++]=128|63&u}else{if(t+3>=a)break;n[t++]=240|u>>18,n[t++]=128|u>>12&63,n[t++]=128|u>>6&63,n[t++]=128|63&u}}return n[t]=0,t-o}function stringToUTF8(e,n,t){return stringToUTF8Array(e,HEAPU8,n,t)}function stringToUTF8OnStack(e){var n=lengthBytesUTF8(e)+1,t=stackAlloc(n);return stringToUTF8(e,t,n),t}var UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(e,n,t){for(var r=n+t,o=n;e[o]&&!(o>=r);)++o;if(o-n>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(n,o));for(var a="";n>10,56320|1023&s)}}else a+=String.fromCharCode((31&i)<<6|u)}else a+=String.fromCharCode(i)}return a}function UTF8ToString(e,n){return e?UTF8ArrayToString(HEAPU8,e,n):""}function ccall(e,n,t,r,o){var a={string:e=>{var n=0;return null!=e&&0!==e&&(n=stringToUTF8OnStack(e)),n},array:e=>{var n=stackAlloc(e.length);return writeArrayToMemory(e,n),n}};var i=getCFunc(e),u=[],l=0;if(r)for(var s=0;s"number"===e||"boolean"===e));return"string"!==n&&o&&!r?getCFunc(e):function(){return ccall(e,n,t,arguments,r)}}var calledRun,wasmImports={b:_abort,e:_emscripten_asm_const_int,d:_emscripten_date_now,c:_emscripten_memcpy_big,a:_emscripten_resize_heap},asm=createWasm(),___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.asm.g).apply(null,arguments)},_SetBatchFractionSize=Module._SetBatchFractionSize=function(){return(_SetBatchFractionSize=Module._SetBatchFractionSize=Module.asm.h).apply(null,arguments)},_SetAttractionForce=Module._SetAttractionForce=function(){return(_SetAttractionForce=Module._SetAttractionForce=Module.asm.i).apply(null,arguments)},_SetLinkLength=Module._SetLinkLength=function(){return(_SetLinkLength=Module._SetLinkLength=Module.asm.j).apply(null,arguments)},_SetRepulsionForce=Module._SetRepulsionForce=function(){return(_SetRepulsionForce=Module._SetRepulsionForce=Module.asm.k).apply(null,arguments)},_SetCentralForce=Module._SetCentralForce=function(){return(_SetCentralForce=Module._SetCentralForce=Module.asm.l).apply(null,arguments)},_SetDt=Module._SetDt=function(){return(_SetDt=Module._SetDt=Module.asm.m).apply(null,arguments)},_Init=Module._Init=function(){return(_Init=Module._Init=Module.asm.n).apply(null,arguments)},_Update=Module._Update=function(){return(_Update=Module._Update=Module.asm.o).apply(null,arguments)},_SetPosition=Module._SetPosition=function(){return(_SetPosition=Module._SetPosition=Module.asm.p).apply(null,arguments)},_FreeMemory=Module._FreeMemory=function(){return(_FreeMemory=Module._FreeMemory=Module.asm.q).apply(null,arguments)},___errno_location=function(){return(___errno_location=Module.asm.__errno_location).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.s).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.t).apply(null,arguments)},stackSave=function(){return(stackSave=Module.asm.u).apply(null,arguments)},stackRestore=function(){return(stackRestore=Module.asm.v).apply(null,arguments)},stackAlloc=function(){return(stackAlloc=Module.asm.w).apply(null,arguments)},___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module.asm.__cxa_is_pointer_type).apply(null,arguments)};function run(){function e(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(initRuntime(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()))}runDependencies>0||(preRun(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),e()}),1)):e()))}if(Module.cwrap=cwrap,Module.setValue=setValue,Module.getValue=getValue,dependenciesFulfilled=function e(){calledRun||run(),calledRun||(dependenciesFulfilled=e)},Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();try{run()}catch(e){console.error(e)} \ No newline at end of file diff --git a/obsidian/lib/scripts/graph-wasm.wasm b/obsidian/lib/scripts/graph-wasm.wasm new file mode 100644 index 0000000..e94bee2 Binary files /dev/null and b/obsidian/lib/scripts/graph-wasm.wasm differ diff --git a/obsidian/lib/scripts/minisearch.js b/obsidian/lib/scripts/minisearch.js new file mode 100644 index 0000000..59455a6 --- /dev/null +++ b/obsidian/lib/scripts/minisearch.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).MiniSearch=e()}(this,(function(){"use strict";var t=function(){return t=Object.assign||function(t){for(var e,r=1,n=arguments.length;r=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function r(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),u=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)u.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return u}"function"==typeof SuppressedError&&SuppressedError;var n,i="KEYS",o="VALUES",u="",a=function(){function t(t,e){var r=t._tree,n=Array.from(r.keys());this.set=t,this._type=e,this._path=n.length>0?[{node:r,keys:n}]:[]}return t.prototype.next=function(){var t=this.dive();return this.backtrack(),t},t.prototype.dive=function(){if(0===this._path.length)return{done:!0,value:void 0};var t=s(this._path),e=t.node,r=t.keys;if(s(r)===u)return{done:!1,value:this.result()};var n=e.get(s(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},t.prototype.backtrack=function(){if(0!==this._path.length){var t=s(this._path).keys;t.pop(),t.length>0||(this._path.pop(),this.backtrack())}},t.prototype.key=function(){return this.set._prefix+this._path.map((function(t){var e=t.keys;return s(e)})).filter((function(t){return t!==u})).join("")},t.prototype.value=function(){return s(this._path).node.get(u)},t.prototype.result=function(){switch(this._type){case o:return this.value();case i:return this.key();default:return[this.key(),this.value()]}},t.prototype[Symbol.iterator]=function(){return this},t}(),s=function(t){return t[t.length-1]},l=function(t,r,n,i,o,a,s,c){var h,d,f=a*s;try{t:for(var y=e(t.keys()),v=y.next();!v.done;v=y.next()){var p=v.value;if(p===u){var m=o[f-1];m<=n&&i.set(c,[t.get(p),m])}else{for(var _=a,g=0;gn)continue t}l(t.get(p),r,n,i,o,_,s,c+p)}}}catch(t){h={error:t}}finally{try{v&&!v.done&&(d=y.return)&&d.call(y)}finally{if(h)throw h.error}}},c=function(){function t(t,e){void 0===t&&(t=new Map),void 0===e&&(e=""),this._size=void 0,this._tree=t,this._prefix=e}return t.prototype.atPrefix=function(n){var i,o;if(!n.startsWith(this._prefix))throw new Error("Mismatched prefix");var a=r(h(this._tree,n.slice(this._prefix.length)),2),s=a[0],l=a[1];if(void 0===s){var c=r(m(l),2),d=c[0],f=c[1];try{for(var y=e(d.keys()),v=y.next();!v.done;v=y.next()){var p=v.value;if(p!==u&&p.startsWith(f)){var _=new Map;return _.set(p.slice(f.length),d.get(p)),new t(_,n)}}}catch(t){i={error:t}}finally{try{v&&!v.done&&(o=y.return)&&o.call(y)}finally{if(i)throw i.error}}}return new t(s,n)},t.prototype.clear=function(){this._size=void 0,this._tree.clear()},t.prototype.delete=function(t){return this._size=void 0,y(this._tree,t)},t.prototype.entries=function(){return new a(this,"ENTRIES")},t.prototype.forEach=function(t){var n,i;try{for(var o=e(this),u=o.next();!u.done;u=o.next()){var a=r(u.value,2);t(a[0],a[1],this)}}catch(t){n={error:t}}finally{try{u&&!u.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}},t.prototype.fuzzyGet=function(t,e){return function(t,e,r){var n=new Map;if(void 0===e)return n;for(var i=e.length+1,o=i+r,u=new Uint8Array(o*i).fill(r+1),a=0;a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new c,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},n.prototype.discard=function(t){var e=this,r=this._idToShortId.get(t);if(null==r)throw new Error("MiniSearch: cannot discard document with ID ".concat(t,": it is not in the index"));this._idToShortId.delete(t),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach((function(t,n){e.removeFieldLength(r,n,e._documentCount,t)})),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},n.prototype.maybeAutoVacuum=function(){if(!1!==this._options.autoVacuum){var t=this._options.autoVacuum,e=t.minDirtFactor,r=t.minDirtCount,n=t.batchSize,i=t.batchWait;this.conditionalVacuum({batchSize:n,batchWait:i},{minDirtCount:r,minDirtFactor:e})}},n.prototype.discardAll=function(t){var r,n,i=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var o=e(t),u=o.next();!u.done;u=o.next()){var a=u.value;this.discard(a)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}}finally{this._options.autoVacuum=i}this.maybeAutoVacuum()},n.prototype.replace=function(t){var e=this._options,r=e.idField,n=(0,e.extractField)(t,r);this.discard(n),this.add(t)},n.prototype.vacuum=function(t){return void 0===t&&(t={}),this.conditionalVacuum(t)},n.prototype.conditionalVacuum=function(t,e){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&e,null!=this._enqueuedVacuum||(this._enqueuedVacuum=this._currentVacuum.then((function(){var e=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=S,r.performVacuuming(t,e)}))),this._enqueuedVacuum):!1===this.vacuumConditionsMet(e)?Promise.resolve():(this._currentVacuum=this.performVacuuming(t),this._currentVacuum)},n.prototype.performVacuuming=function(t,n){return function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function u(t){try{s(n.next(t))}catch(t){o(t)}}function a(t){try{s(n.throw(t))}catch(t){o(t)}}function s(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(u,a)}s((n=n.apply(t,e||[])).next())}))}(this,void 0,void 0,(function(){var i,o,u,a,s,l,c,h,d,f,y,v,p,m,_,g,F,x,w,b,A,C,E,S,D;return function(t,e){var r,n,i,o,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(u=0)),u;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return u.label++,{value:a[1],done:!1};case 5:u.label++,n=a[1],a=[0];continue;case 7:a=u.ops.pop(),u.trys.pop();continue;default:if(!((i=(i=u.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){u=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=e&&this.dirtFactor>=r},Object.defineProperty(n.prototype,"isVacuuming",{get:function(){return null!=this._currentVacuum},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),n.prototype.has=function(t){return this._idToShortId.has(t)},n.prototype.getStoredFields=function(t){var e=this._idToShortId.get(t);if(null!=e)return this._storedFields.get(e)},n.prototype.search=function(t,i){var o,u;void 0===i&&(i={});var a=this.executeQuery(t,i),s=[];try{for(var l=e(a),c=l.next();!c.done;c=l.next()){var h=r(c.value,2),d=h[0],f=h[1],y=f.score,v=f.terms,p=f.match,m=v.length||1,_={id:this._documentIds.get(d),score:y*m,terms:Object.keys(p),queryTerms:v,match:p};Object.assign(_,this._storedFields.get(d)),(null==i.filter||i.filter(_))&&s.push(_)}}catch(t){o={error:t}}finally{try{c&&!c.done&&(u=l.return)&&u.call(l)}finally{if(o)throw o.error}}return t===n.wildcard&&null==i.boostDocument&&null==this._options.searchOptions.boostDocument||s.sort(M),s},n.prototype.autoSuggest=function(n,i){var o,u,a,s;void 0===i&&(i={}),i=t(t({},this._options.autoSuggestOptions),i);var l=new Map;try{for(var c=e(this.search(n,i)),h=c.next();!h.done;h=c.next()){var d=h.value,f=d.score,y=(x=d.terms).join(" ");null!=(g=l.get(y))?(g.score+=f,g.count+=1):l.set(y,{score:f,terms:x,count:1})}}catch(t){o={error:t}}finally{try{h&&!h.done&&(u=c.return)&&u.call(c)}finally{if(o)throw o.error}}var v=[];try{for(var p=e(l),m=p.next();!m.done;m=p.next()){var _=r(m.value,2),g=_[0],F=_[1],x=(f=F.score,F.terms),w=F.count;v.push({suggestion:g,terms:x,score:f/w})}}catch(t){a={error:t}}finally{try{m&&!m.done&&(s=p.return)&&s.call(p)}finally{if(a)throw a.error}}return v.sort(M),v},Object.defineProperty(n.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),n.loadJSON=function(t,e){if(null==e)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(t),e)},n.getDefault=function(t){if(A.hasOwnProperty(t))return F(A,t);throw new Error('MiniSearch: unknown option "'.concat(t,'"'))},n.loadJS=function(t,i){var o,u,a,s,l,h,d=t.index,f=t.documentCount,y=t.nextId,v=t.documentIds,p=t.fieldIds,m=t.fieldLength,_=t.averageFieldLength,g=t.storedFields,F=t.dirtCount,x=t.serializationVersion;if(1!==x&&2!==x)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var w=new n(i);w._documentCount=f,w._nextId=y,w._documentIds=V(v),w._idToShortId=new Map,w._fieldIds=p,w._fieldLength=V(m),w._avgFieldLength=_,w._storedFields=V(g),w._dirtCount=F||0,w._index=new c;try{for(var b=e(w._documentIds),A=b.next();!A.done;A=b.next()){var C=r(A.value,2),E=C[0],z=C[1];w._idToShortId.set(z,E)}}catch(t){o={error:t}}finally{try{A&&!A.done&&(u=b.return)&&u.call(b)}finally{if(o)throw o.error}}try{for(var S=e(d),D=S.next();!D.done;D=S.next()){var I=r(D.value,2),k=I[0],M=I[1],O=new Map;try{for(var T=(l=void 0,e(Object.keys(M))),L=T.next();!L.done;L=T.next()){var j=L.value,B=M[j];1===x&&(B=B.ds),O.set(parseInt(j,10),V(B))}}catch(t){l={error:t}}finally{try{L&&!L.done&&(h=T.return)&&h.call(T)}finally{if(l)throw l.error}}w._index.set(k,O)}}catch(t){a={error:t}}finally{try{D&&!D.done&&(s=S.return)&&s.call(S)}finally{if(a)throw a.error}}return w},n.prototype.executeQuery=function(e,r){var i=this;if(void 0===r&&(r={}),e===n.wildcard)return this.executeWildcardQuery(r);if("string"!=typeof e){var o=t(t(t({},r),e),{queries:void 0}),u=e.queries.map((function(t){return i.executeQuery(t,o)}));return this.combineResults(u,o.combineWith)}var a=this._options,s=a.tokenize,l=a.processTerm,c=a.searchOptions,h=t(t({tokenize:s,processTerm:l},c),r),d=h.tokenize,f=h.processTerm,y=d(e).flatMap((function(t){return f(t)})).filter((function(t){return!!t})).map(b(h)).map((function(t){return i.executeQuerySpec(t,h)}));return this.combineResults(y,h.combineWith)},n.prototype.executeQuerySpec=function(n,i){var o,u,a,s,l,c,h=t(t({},this._options.searchOptions),i),d=(h.fields||this._options.fields).reduce((function(e,r){var n;return t(t({},e),((n={})[r]=F(h.boost,r)||1,n))}),{}),f=h.boostDocument,y=h.weights,v=h.maxFuzzy,p=h.bm25,m=t(t({},C.weights),y),_=m.fuzzy,g=m.prefix,x=this._index.get(n.term),w=this.termResults(n.term,n.term,1,x,d,f,p);if(n.prefix&&(l=this._index.atPrefix(n.term)),n.fuzzy){var b=!0===n.fuzzy?.2:n.fuzzy,A=b<1?Math.min(v,Math.round(n.term.length*b)):b;A&&(c=this._index.fuzzyGet(n.term,A))}if(l)try{for(var E=e(l),z=E.next();!z.done;z=E.next()){var S=r(z.value,2),D=S[0],I=S[1];if(V=D.length-n.term.length){null==c||c.delete(D);var k=g*D.length/(D.length+.3*V);this.termResults(n.term,D,k,I,d,f,p,w)}}}catch(t){o={error:t}}finally{try{z&&!z.done&&(u=E.return)&&u.call(E)}finally{if(o)throw o.error}}if(c)try{for(var M=e(c.keys()),O=M.next();!O.done;O=M.next()){D=O.value;var V,T=r(c.get(D),2),L=T[0];(V=T[1])&&(k=_*D.length/(D.length+V),this.termResults(n.term,D,k,L,d,f,p,w))}}catch(t){a={error:t}}finally{try{O&&!O.done&&(s=M.return)&&s.call(M)}finally{if(a)throw a.error}}return w},n.prototype.executeWildcardQuery=function(n){var i,o,u=new Map,a=t(t({},this._options.searchOptions),n);try{for(var s=e(this._documentIds),l=s.next();!l.done;l=s.next()){var c=r(l.value,2),h=c[0],d=c[1],f=a.boostDocument?a.boostDocument(d,"",this._storedFields.get(h)):1;u.set(h,{score:f,terms:[],match:{}})}}catch(t){i={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}return u},n.prototype.combineResults=function(t,e){if(void 0===e&&(e=_),0===t.length)return new Map;var r=e.toLowerCase();return t.reduce(x[r])||new Map},n.prototype.toJSON=function(){var t,n,i,o,u=[];try{for(var a=e(this._index),s=a.next();!s.done;s=a.next()){var l=r(s.value,2),c=l[0],h=l[1],d={};try{for(var f=(i=void 0,e(h)),y=f.next();!y.done;y=f.next()){var v=r(y.value,2),p=v[0],m=v[1];d[p]=Object.fromEntries(m)}}catch(t){i={error:t}}finally{try{y&&!y.done&&(o=f.return)&&o.call(f)}finally{if(i)throw i.error}}u.push([c,d])}}catch(n){t={error:n}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:u,serializationVersion:2}},n.prototype.termResults=function(t,r,n,i,o,u,a,s){var l,c,h,d,f;if(void 0===s&&(s=new Map),null==i)return s;try{for(var y=e(Object.keys(o)),v=y.next();!v.done;v=y.next()){var p=v.value,m=o[p],_=this._fieldIds[p],g=i.get(_);if(null!=g){var x=g.size,b=this._avgFieldLength[_];try{for(var A=(h=void 0,e(g.keys())),C=A.next();!C.done;C=A.next()){var E=C.value;if(this._documentIds.has(E)){var z=u?u(this._documentIds.get(E),r,this._storedFields.get(E)):1;if(z){var S=g.get(E),D=this._fieldLength.get(E)[_],k=n*m*z*w(S,x,this._documentCount,D,b,a),M=s.get(E);if(M){M.score+=k,I(M.terms,t);var O=F(M.match,r);O?O.push(p):M.match[r]=[p]}else s.set(E,{score:k,terms:[t],match:(f={},f[r]=[p],f)})}}else this.removeTerm(_,E,r),x-=1}}catch(t){h={error:t}}finally{try{C&&!C.done&&(d=A.return)&&d.call(A)}finally{if(h)throw h.error}}}}}catch(t){l={error:t}}finally{try{v&&!v.done&&(c=y.return)&&c.call(y)}finally{if(l)throw l.error}}return s},n.prototype.addTerm=function(t,e,r){var n=this._index.fetch(r,O),i=n.get(t);if(null==i)(i=new Map).set(e,1),n.set(t,i);else{var o=i.get(e);i.set(e,(o||0)+1)}},n.prototype.removeTerm=function(t,e,r){if(this._index.has(r)){var n=this._index.fetch(r,O),i=n.get(t);null==i||null==i.get(e)?this.warnDocumentChanged(e,t,r):i.get(e)<=1?i.size<=1?n.delete(t):i.delete(e):i.set(e,i.get(e)-1),0===this._index.get(r).size&&this._index.delete(r)}else this.warnDocumentChanged(e,t,r)},n.prototype.warnDocumentChanged=function(t,r,n){var i,o;try{for(var u=e(Object.keys(this._fieldIds)),a=u.next();!a.done;a=u.next()){var s=a.value;if(this._fieldIds[s]===r)return void this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(t),' has changed before removal: term "').concat(n,'" was not present in field "').concat(s,'". Removing a document after it has changed can corrupt the index!'),"version_conflict")}}catch(t){i={error:t}}finally{try{a&&!a.done&&(o=u.return)&&o.call(u)}finally{if(i)throw i.error}}},n.prototype.addDocumentId=function(t){var e=this._nextId;return this._idToShortId.set(t,e),this._documentIds.set(e,t),this._documentCount+=1,this._nextId+=1,e},n.prototype.addFields=function(t){for(var e=0;ee in t?qd(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,bt=(t,e)=>{for(var s in e||(e={}))$h.call(e,s)&&Wh(t,s,e[s]);if(ir)for(var s of ir(e))jh.call(e,s)&&Wh(t,s,e[s]);return t},Qi=(t,e)=>Kd(t,Zd(e)),zn=(t,e)=>{var s={};for(var i in t)$h.call(t,i)&&e.indexOf(i)<0&&(s[i]=t[i]);if(null!=t&&ir)for(var i of ir(t))e.indexOf(i)<0&&jh.call(t,i)&&(s[i]=t[i]);return s},PIXI=function(t){var e,s,i=((s=i||{})[s.WEBGL_LEGACY=0]="WEBGL_LEGACY",s[s.WEBGL=1]="WEBGL",s[s.WEBGL2=2]="WEBGL2",s),r=(t=>(t[t.UNKNOWN=0]="UNKNOWN",t[t.WEBGL=1]="WEBGL",t[t.CANVAS=2]="CANVAS",t))(r||{}),n=(t=>(t[t.COLOR=16384]="COLOR",t[t.DEPTH=256]="DEPTH",t[t.STENCIL=1024]="STENCIL",t))(n||{}),a=(t=>(t[t.NORMAL=0]="NORMAL",t[t.ADD=1]="ADD",t[t.MULTIPLY=2]="MULTIPLY",t[t.SCREEN=3]="SCREEN",t[t.OVERLAY=4]="OVERLAY",t[t.DARKEN=5]="DARKEN",t[t.LIGHTEN=6]="LIGHTEN",t[t.COLOR_DODGE=7]="COLOR_DODGE",t[t.COLOR_BURN=8]="COLOR_BURN",t[t.HARD_LIGHT=9]="HARD_LIGHT",t[t.SOFT_LIGHT=10]="SOFT_LIGHT",t[t.DIFFERENCE=11]="DIFFERENCE",t[t.EXCLUSION=12]="EXCLUSION",t[t.HUE=13]="HUE",t[t.SATURATION=14]="SATURATION",t[t.COLOR=15]="COLOR",t[t.LUMINOSITY=16]="LUMINOSITY",t[t.NORMAL_NPM=17]="NORMAL_NPM",t[t.ADD_NPM=18]="ADD_NPM",t[t.SCREEN_NPM=19]="SCREEN_NPM",t[t.NONE=20]="NONE",t[t.SRC_OVER=0]="SRC_OVER",t[t.SRC_IN=21]="SRC_IN",t[t.SRC_OUT=22]="SRC_OUT",t[t.SRC_ATOP=23]="SRC_ATOP",t[t.DST_OVER=24]="DST_OVER",t[t.DST_IN=25]="DST_IN",t[t.DST_OUT=26]="DST_OUT",t[t.DST_ATOP=27]="DST_ATOP",t[t.ERASE=26]="ERASE",t[t.SUBTRACT=28]="SUBTRACT",t[t.XOR=29]="XOR",t))(a||{}),o=(t=>(t[t.POINTS=0]="POINTS",t[t.LINES=1]="LINES",t[t.LINE_LOOP=2]="LINE_LOOP",t[t.LINE_STRIP=3]="LINE_STRIP",t[t.TRIANGLES=4]="TRIANGLES",t[t.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",t[t.TRIANGLE_FAN=6]="TRIANGLE_FAN",t))(o||{}),h=(t=>(t[t.RGBA=6408]="RGBA",t[t.RGB=6407]="RGB",t[t.RG=33319]="RG",t[t.RED=6403]="RED",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.ALPHA=6406]="ALPHA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",t))(h||{}),l=(t=>(t[t.TEXTURE_2D=3553]="TEXTURE_2D",t[t.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",t[t.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",t[t.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",t[t.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",t[t.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",t[t.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",t))(l||{}),u=(t=>(t[t.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",t[t.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",t[t.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",t[t.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",t[t.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",t[t.UNSIGNED_INT=5125]="UNSIGNED_INT",t[t.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",t[t.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",t[t.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",t[t.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",t[t.BYTE=5120]="BYTE",t[t.SHORT=5122]="SHORT",t[t.INT=5124]="INT",t[t.FLOAT=5126]="FLOAT",t[t.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",t[t.HALF_FLOAT=36193]="HALF_FLOAT",t))(u||{}),d=(t=>(t[t.FLOAT=0]="FLOAT",t[t.INT=1]="INT",t[t.UINT=2]="UINT",t))(d||{}),c=(t=>(t[t.NEAREST=0]="NEAREST",t[t.LINEAR=1]="LINEAR",t))(c||{}),p=(t=>(t[t.CLAMP=33071]="CLAMP",t[t.REPEAT=10497]="REPEAT",t[t.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",t))(p||{}),f=(t=>(t[t.OFF=0]="OFF",t[t.POW2=1]="POW2",t[t.ON=2]="ON",t[t.ON_MANUAL=3]="ON_MANUAL",t))(f||{}),m=(t=>(t[t.NPM=0]="NPM",t[t.UNPACK=1]="UNPACK",t[t.PMA=2]="PMA",t[t.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",t[t.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",t[t.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",t))(m||{}),_=(t=>(t[t.NO=0]="NO",t[t.YES=1]="YES",t[t.AUTO=2]="AUTO",t[t.BLEND=0]="BLEND",t[t.CLEAR=1]="CLEAR",t[t.BLIT=2]="BLIT",t))(_||{}),g=(t=>(t[t.AUTO=0]="AUTO",t[t.MANUAL=1]="MANUAL",t))(g||{}),x=(t=>(t.LOW="lowp",t.MEDIUM="mediump",t.HIGH="highp",t))(x||{}),v=(t=>(t[t.NONE=0]="NONE",t[t.SCISSOR=1]="SCISSOR",t[t.STENCIL=2]="STENCIL",t[t.SPRITE=3]="SPRITE",t[t.COLOR=4]="COLOR",t))(v||{}),y=(t=>(t[t.RED=1]="RED",t[t.GREEN=2]="GREEN",t[t.BLUE=4]="BLUE",t[t.ALPHA=8]="ALPHA",t))(y||{}),T=(t=>(t[t.NONE=0]="NONE",t[t.LOW=2]="LOW",t[t.MEDIUM=4]="MEDIUM",t[t.HIGH=8]="HIGH",t))(T||{}),b=(t=>(t[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",t))(b||{});const E={createCanvas:(t,e)=>{const s=document.createElement("canvas");return s.width=t,s.height=e,s},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>{var t;return null!=(t=document.baseURI)?t:window.location.href},getFontFaceSet:()=>document.fonts,fetch:(t,e)=>fetch(t,e),parseXML:t=>(new DOMParser).parseFromString(t,"text/xml")},A={ADAPTER:E,RESOLUTION:1,CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};var R=/iPhone/i,S=/iPod/i,w=/iPad/i,I=/\biOS-universal(?:.+)Mac\b/i,M=/\bAndroid(?:.+)Mobile\b/i,C=/Android/i,D=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,P=/Silk/i,O=/Windows Phone/i,F=/\bWindows(?:.+)ARM\b/i,B=/BlackBerry/i,N=/BB10/i,L=/Opera Mini/i,G=/\b(CriOS|Chrome)(?:.+)Mobile/i,U=/Mobile(?:.+)Firefox\b/i,k=function(t){return void 0!==t&&"MacIntel"===t.platform&&"number"==typeof t.maxTouchPoints&&t.maxTouchPoints>1&&"undefined"==typeof MSStream};function X(t){var e={userAgent:"",platform:"",maxTouchPoints:0};t||"undefined"==typeof navigator?"string"==typeof t?e.userAgent=t:t&&t.userAgent&&(e={userAgent:t.userAgent,platform:t.platform,maxTouchPoints:t.maxTouchPoints||0}):e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0};var s=e.userAgent,i=s.split("[FBAN");void 0!==i[1]&&(s=i[0]),void 0!==(i=s.split("Twitter"))[1]&&(s=i[0]);var r=function(t){return function(e){return e.test(t)}}(s),n={apple:{phone:r(R)&&!r(O),ipod:r(S),tablet:!r(R)&&(r(w)||k(e))&&!r(O),universal:r(I),device:(r(R)||r(S)||r(w)||r(I)||k(e))&&!r(O)},amazon:{phone:r(D),tablet:!r(D)&&r(P),device:r(D)||r(P)},android:{phone:!r(O)&&r(D)||!r(O)&&r(M),tablet:!r(O)&&!r(D)&&!r(M)&&(r(P)||r(C)),device:!r(O)&&(r(D)||r(P)||r(M)||r(C))||r(/\bokhttp\b/i)},windows:{phone:r(O),tablet:r(F),device:r(O)||r(F)},other:{blackberry:r(B),blackberry10:r(N),opera:r(L),firefox:r(U),chrome:r(G),device:r(B)||r(N)||r(L)||r(U)||r(G)},any:!1,phone:!1,tablet:!1};return n.any=n.apple.device||n.android.device||n.windows.device||n.other.device,n.phone=n.apple.phone||n.android.phone||n.windows.phone,n.tablet=n.apple.tablet||n.android.tablet||n.windows.tablet,n}const H=(null!=(e=X.default)?e:X)(globalThis.navigator);A.RETINA_PREFIX=/@([0-9\.]+)x/,A.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var V="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function z(t,e,s){return t(s={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&s.path)}},s.exports),s.exports}var W=z((function(t){"use strict";var e=Object.prototype.hasOwnProperty,s="~";function i(){}function r(t,e,s){this.fn=t,this.context=e,this.once=s||!1}function n(t,e,i,n,a){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new r(i,n||t,a),h=s?s+e:e;return t._events[h]?t._events[h].fn?t._events[h]=[t._events[h],o]:t._events[h].push(o):(t._events[h]=o,t._eventsCount++),t}function a(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(s=!1)),o.prototype.eventNames=function(){var t,i,r=[];if(0===this._eventsCount)return r;for(i in t=this._events)e.call(t,i)&&r.push(s?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(t)):r},o.prototype.listeners=function(t){var e=s?s+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var r=0,n=i.length,a=new Array(n);r80*s){i=n=t[0],r=a=t[1];for(var f=s;fn&&(n=o),h>a&&(a=h);l=0!==(l=Math.max(n-i,a-r))?32767/l:0}return Z(c,p,s,i,r,l,0),p}function q(t,e,s,i,r){var n,a;if(r===vt(t,e,s,i)>0)for(n=e;n=e;n-=i)a=_t(n,t[n],t[n+1],a);return a&&ut(a,a.next)&&(gt(a),a=a.next),a}function K(t,e){if(!t)return t;e||(e=t);var s,i=t;do{if(s=!1,i.steiner||!ut(i,i.next)&&0!==lt(i.prev,i,i.next))i=i.next;else{if(gt(i),(i=e=i.prev)===i.next)break;s=!0}}while(s||i!==e);return e}function Z(t,e,s,i,r,n,a){if(t){!a&&n&&function(t,e,s,i){var r=t;do{0===r.z&&(r.z=nt(r.x,r.y,e,s,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,function(t){var e,s,i,r,n,a,o,h,l=1;do{for(s=t,t=null,n=null,a=0;s;){for(a++,i=s,o=0,e=0;e0||h>0&&i;)0!==o&&(0===h||!i||s.z<=i.z)?(r=s,s=s.nextZ,o--):(r=i,i=i.nextZ,h--),n?n.nextZ=r:t=r,r.prevZ=n,n=r;s=i}n.nextZ=null,l*=2}while(a>1)}(r)}(t,i,r,n);for(var o,h,l=t;t.prev!==t.next;)if(o=t.prev,h=t.next,n?J(t,i,r,n):Q(t))e.push(o.i/s|0),e.push(t.i/s|0),e.push(h.i/s|0),gt(t),t=h.next,l=h.next;else if((t=h)===l){a?1===a?Z(t=tt(K(t),e,s),e,s,i,r,n,2):2===a&&et(t,e,s,i,r,n):Z(K(t),e,s,i,r,n,1);break}}}function Q(t){var e=t.prev,s=t,i=t.next;if(lt(e,s,i)>=0)return!1;for(var r=e.x,n=s.x,a=i.x,o=e.y,h=s.y,l=i.y,u=rn?r>a?r:a:n>a?n:a,p=o>h?o>l?o:l:h>l?h:l,f=i.next;f!==e;){if(f.x>=u&&f.x<=c&&f.y>=d&&f.y<=p&&ot(r,o,n,h,a,l,f.x,f.y)&<(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function J(t,e,s,i){var r=t.prev,n=t,a=t.next;if(lt(r,n,a)>=0)return!1;for(var o=r.x,h=n.x,l=a.x,u=r.y,d=n.y,c=a.y,p=oh?o>l?o:l:h>l?h:l,_=u>d?u>c?u:c:d>c?d:c,g=nt(p,f,e,s,i),x=nt(m,_,e,s,i),v=t.prevZ,y=t.nextZ;v&&v.z>=g&&y&&y.z<=x;){if(v.x>=p&&v.x<=m&&v.y>=f&&v.y<=_&&v!==r&&v!==a&&ot(o,u,h,d,l,c,v.x,v.y)&<(v.prev,v,v.next)>=0||(v=v.prevZ,y.x>=p&&y.x<=m&&y.y>=f&&y.y<=_&&y!==r&&y!==a&&ot(o,u,h,d,l,c,y.x,y.y)&<(y.prev,y,y.next)>=0))return!1;y=y.nextZ}for(;v&&v.z>=g;){if(v.x>=p&&v.x<=m&&v.y>=f&&v.y<=_&&v!==r&&v!==a&&ot(o,u,h,d,l,c,v.x,v.y)&<(v.prev,v,v.next)>=0)return!1;v=v.prevZ}for(;y&&y.z<=x;){if(y.x>=p&&y.x<=m&&y.y>=f&&y.y<=_&&y!==r&&y!==a&&ot(o,u,h,d,l,c,y.x,y.y)&<(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}function tt(t,e,s){var i=t;do{var r=i.prev,n=i.next.next;!ut(r,n)&&dt(r,i,i.next,n)&&ft(r,n)&&ft(n,r)&&(e.push(r.i/s|0),e.push(i.i/s|0),e.push(n.i/s|0),gt(i),gt(i.next),i=t=n),i=i.next}while(i!==t);return K(i)}function et(t,e,s,i,r,n){var a=t;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&ht(a,o)){var h=mt(a,o);return a=K(a,a.next),h=K(h,h.next),Z(a,e,s,i,r,n,0),void Z(h,e,s,i,r,n,0)}o=o.next}a=a.next}while(a!==t)}function st(t,e){return t.x-e.x}function it(t,e){var s=function(t,e){var s,i=e,r=t.x,n=t.y,a=-1/0;do{if(n<=i.y&&n>=i.next.y&&i.next.y!==i.y){var o=i.x+(n-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(o<=r&&o>a&&(a=o,s=i.x=i.x&&i.x>=u&&r!==i.x&&ot(ns.x||i.x===s.x&&rt(s,i)))&&(s=i,c=h)),i=i.next}while(i!==l);return s}(t,e);if(!s)return e;var i=mt(s,t);return K(i,i.next),K(s,s.next)}function rt(t,e){return lt(t.prev,t,e.prev)<0&<(e.next,t,t.next)<0}function nt(t,e,s,i,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-s)*r|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*r|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function at(t){var e=t,s=t;do{(e.x=(t-a)*(n-o)&&(t-a)*(i-o)>=(s-a)*(e-o)&&(s-a)*(n-o)>=(r-a)*(i-o)}function ht(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var s=t;do{if(s.i!==t.i&&s.next.i!==t.i&&s.i!==e.i&&s.next.i!==e.i&&dt(s,s.next,t,e))return!0;s=s.next}while(s!==t);return!1}(t,e)&&(ft(t,e)&&ft(e,t)&&function(t,e){var s=t,i=!1,r=(t.x+e.x)/2,n=(t.y+e.y)/2;do{s.y>n!=s.next.y>n&&s.next.y!==s.y&&r<(s.next.x-s.x)*(n-s.y)/(s.next.y-s.y)+s.x&&(i=!i),s=s.next}while(s!==t);return i}(t,e)&&(lt(t.prev,t,e.prev)||lt(t,e.prev,e))||ut(t,e)&<(t.prev,t,t.next)>0&<(e.prev,e,e.next)>0)}function lt(t,e,s){return(e.y-t.y)*(s.x-e.x)-(e.x-t.x)*(s.y-e.y)}function ut(t,e){return t.x===e.x&&t.y===e.y}function dt(t,e,s,i){var r=pt(lt(t,e,s)),n=pt(lt(t,e,i)),a=pt(lt(s,i,t)),o=pt(lt(s,i,e));return!!(r!==n&&a!==o||0===r&&ct(t,s,e)||0===n&&ct(t,i,e)||0===a&&ct(s,t,i)||0===o&&ct(s,e,i))}function ct(t,e,s){return e.x<=Math.max(t.x,s.x)&&e.x>=Math.min(t.x,s.x)&&e.y<=Math.max(t.y,s.y)&&e.y>=Math.min(t.y,s.y)}function pt(t){return t>0?1:t<0?-1:0}function ft(t,e){return lt(t.prev,t,t.next)<0?lt(t,e,t.next)>=0&<(t,t.prev,e)>=0:lt(t,e,t.prev)<0||lt(t,t.next,e)<0}function mt(t,e){var s=new xt(t.i,t.x,t.y),i=new xt(e.i,e.x,e.y),r=t.next,n=e.prev;return t.next=e,e.prev=t,s.next=r,r.prev=s,i.next=s,s.prev=i,n.next=i,i.prev=n,i}function _t(t,e,s,i){var r=new xt(t,e,s);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function gt(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function xt(t,e,s){this.i=t,this.x=e,this.y=s,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function vt(t,e,s,i){for(var r=0,n=e,a=s-i;n0&&(i+=t[r-1].length,s.holes.push(i))}return s},Y.default=j;var yt=z((function(t,e){/*! https://mths.be/punycode v1.3.2 by @mathias */!function(s){var i=e&&!e.nodeType&&e,r=t&&!t.nodeType&&t,n="object"==typeof V&&V;(n.global===n||n.window===n||n.self===n)&&(s=n);var a,o,h=2147483647,l=36,u=1,d=26,c=38,p=700,f=72,m=128,_="-",g=/^xn--/,x=/[^\x20-\x7E]/,v=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},T=l-u,b=Math.floor,E=String.fromCharCode;function A(t){throw RangeError(y[t])}function R(t,e){for(var s=t.length,i=[];s--;)i[s]=e(t[s]);return i}function S(t,e){var s=t.split("@"),i="";return s.length>1&&(i=s[0]+"@",t=s[1]),i+R((t=t.replace(v,".")).split("."),e).join(".")}function w(t){for(var e,s,i=[],r=0,n=t.length;r=55296&&e<=56319&&r65535&&(e+=E((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=E(t)})).join("")}function M(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:l}function C(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function D(t,e,s){var i=0;for(t=s?b(t/p):t>>1,t+=b(t/e);t>T*d>>1;i+=l)t=b(t/T);return b(i+(T+1)*t/(t+c))}function P(t){var e,s,i,r,n,a,o,c,p,g,x=[],v=t.length,y=0,T=m,E=f;for((s=t.lastIndexOf(_))<0&&(s=0),i=0;i=128&&A("not-basic"),x.push(t.charCodeAt(i));for(r=s>0?s+1:0;r=v&&A("invalid-input"),((c=M(t.charCodeAt(r++)))>=l||c>b((h-y)/a))&&A("overflow"),y+=c*a,!(c<(p=o<=E?u:o>=E+d?d:o-E));o+=l)a>b(h/(g=l-p))&&A("overflow"),a*=g;E=D(y-n,e=x.length+1,0==n),b(y/e)>h-T&&A("overflow"),T+=b(y/e),y%=e,x.splice(y++,0,T)}return I(x)}function O(t){var e,s,i,r,n,a,o,c,p,g,x,v,y,T,R,S=[];for(v=(t=w(t)).length,e=m,s=0,n=f,a=0;a=e&&xb((h-s)/(y=i+1))&&A("overflow"),s+=(o-e)*y,e=o,a=0;ah&&A("overflow"),x==e){for(c=s,p=l;!(c<(g=p<=n?u:p>=n+d?d:p-n));p+=l)R=c-g,T=l-g,S.push(E(C(g+R%T,0))),c=b(R/T);S.push(E(C(c,0))),n=D(s,y,i==r),s=0,++i}++s,++e}return S.join("")}if(a={version:"1.3.2",ucs2:{decode:w,encode:I},decode:P,encode:O,toASCII:function(t){return S(t,(function(t){return x.test(t)?"xn--"+O(t):t}))},toUnicode:function(t){return S(t,(function(t){return g.test(t)?P(t.slice(4).toLowerCase()):t}))}},i&&r)if(t.exports==i)r.exports=a;else for(o in a)a.hasOwnProperty(o)&&(i[o]=a[o]);else s.punycode=a}(V)})),Tt={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}};function Et(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var At=function(t,e,s,i){e=e||"&",s=s||"=";var r={};if("string"!=typeof t||0===t.length)return r;var n=/\+/g;t=t.split(e);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var o=t.length;a>0&&o>a&&(o=a);for(var h=0;h=0?(l=p.substr(0,f),u=p.substr(f+1)):(l=p,u=""),d=decodeURIComponent(l),c=decodeURIComponent(u),Et(r,d)?Array.isArray(r[d])?r[d].push(c):r[d]=[r[d],c]:r[d]=c}return r},Rt=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}},St=function(t,e,s,i){return e=e||"&",s=s||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map((function(i){var r=encodeURIComponent(Rt(i))+s;return Array.isArray(t[i])?t[i].map((function(t){return r+encodeURIComponent(Rt(t))})).join(e):r+encodeURIComponent(Rt(t[i]))})).join(e):i?encodeURIComponent(Rt(i))+s+encodeURIComponent(Rt(t)):""},wt=z((function(t,e){"use strict";e.decode=e.parse=At,e.encode=e.stringify=St})),It=zt,Mt=function(t,e){return zt(t,!1,!0).resolve(e)},Ct=function(t){return Tt.isString(t)&&(t=zt(t)),t instanceof Dt?t.format():Dt.prototype.format.call(t)};function Dt(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var Pt=/^([a-z0-9.+-]+:)/i,Ot=/:[0-9]*$/,Ft=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,Bt=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),Nt=["'"].concat(Bt),Lt=["%","/","?",";","#"].concat(Nt),Gt=["/","?","#"],Ut=/^[+a-z0-9A-Z_-]{0,63}$/,kt=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Xt={javascript:!0,"javascript:":!0},Ht={javascript:!0,"javascript:":!0},Vt={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function zt(t,e,s){if(t&&Tt.isObject(t)&&t instanceof Dt)return t;var i=new Dt;return i.parse(t,e,s),i}Dt.prototype.parse=function(t,e,s){if(!Tt.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),r=-1!==i&&i127?y+="x":y+=v[T];if(!y.match(Ut)){var E=g.slice(0,c),A=g.slice(c+1),R=v.match(kt);R&&(E.push(R[1]),A.unshift(R[2])),A.length&&(a="/"+A.join(".")+a),this.hostname=E.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),_||(this.hostname=yt.toASCII(this.hostname));var S=this.port?":"+this.port:"",w=this.hostname||"";this.host=w+S,this.href+=this.host,_&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!Xt[l])for(c=0,x=Nt.length;c0)&&s.host.split("@"))&&(s.auth=R.shift(),s.host=s.hostname=R.shift());return s.search=t.search,s.query=t.query,(!Tt.isNull(s.pathname)||!Tt.isNull(s.search))&&(s.path=(s.pathname?s.pathname:"")+(s.search?s.search:"")),s.href=s.format(),s}if(!v.length)return s.pathname=null,s.search?s.path="/"+s.search:s.path=null,s.href=s.format(),s;for(var T=v.slice(-1)[0],b=(s.host||t.host||v.length>1)&&("."===T||".."===T)||""===T,E=0,A=v.length;A>=0;A--)"."===(T=v[A])?v.splice(A,1):".."===T?(v.splice(A,1),E++):E&&(v.splice(A,1),E--);if(!g&&!x)for(;E--;E)v.unshift("..");g&&""!==v[0]&&(!v[0]||"/"!==v[0].charAt(0))&&v.unshift(""),b&&"/"!==v.join("/").substr(-1)&&v.push("");var R,S=""===v[0]||v[0]&&"/"===v[0].charAt(0);y&&(s.hostname=s.host=S?"":v.length?v.shift():"",(R=!!(s.host&&s.host.indexOf("@")>0)&&s.host.split("@"))&&(s.auth=R.shift(),s.host=s.hostname=R.shift()));return(g=g||s.host&&v.length)&&!S&&v.unshift(""),v.length?s.pathname=v.join("/"):(s.pathname=null,s.path=null),(!Tt.isNull(s.pathname)||!Tt.isNull(s.search))&&(s.path=(s.pathname?s.pathname:"")+(s.search?s.search:"")),s.auth=t.auth||s.auth,s.slashes=s.slashes||t.slashes,s.href=s.format(),s},Dt.prototype.parseHost=function(){var t=this.host,e=Ot.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)};const Wt={parse:It,format:Ct,resolve:Mt};function Yt(t){if("string"!=typeof t)throw new TypeError(`Path must be a string. Received ${JSON.stringify(t)}`)}function jt(t){return t.split("?")[0].split("#")[0]}const $t={toPosix:t=>function(t,e,s){return t.replace(new RegExp(function(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(e),"g"),s)}(t,"\\","/"),isUrl(t){return/^https?:/.test(this.toPosix(t))},isDataUrl:t=>/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(t),hasProtocol(t){return/^[^/:]+:\//.test(this.toPosix(t))},getProtocol(t){Yt(t),t=this.toPosix(t);let e="";const s=/^file:\/\/\//.exec(t),i=/^[^/:]+:\/\//.exec(t),r=/^[^/:]+:\//.exec(t);if(s||i||r){const n=(null==s?void 0:s[0])||(null==i?void 0:i[0])||(null==r?void 0:r[0]);e=n,t=t.slice(n.length)}return e},toAbsolute(t,e,s){if(this.isDataUrl(t))return t;const i=jt(this.toPosix(null!=e?e:A.ADAPTER.getBaseUrl())),r=jt(this.toPosix(null!=s?s:this.rootname(i)));return Yt(t),(t=this.toPosix(t)).startsWith("/")?$t.join(r,t.slice(1)):this.isAbsolute(t)?t:this.join(i,t)},normalize(t){if(Yt(t=this.toPosix(t)),0===t.length)return".";let e="";const s=t.startsWith("/");this.hasProtocol(t)&&(e=this.rootname(t),t=t.slice(e.length));const i=t.endsWith("/");return t=function(t,e){let s="",i=0,r=-1,n=0,a=-1;for(let o=0;o<=t.length;++o){if(o2){const t=s.lastIndexOf("/");if(t!==s.length-1){-1===t?(s="",i=0):(s=s.slice(0,t),i=s.length-1-s.lastIndexOf("/")),r=o,n=0;continue}}else if(2===s.length||1===s.length){s="",i=0,r=o,n=0;continue}e&&(s.length>0?s+="/..":s="..",i=2)}else s.length>0?s+=`/${t.slice(r+1,o)}`:s=t.slice(r+1,o),i=o-r-1;r=o,n=0}else 46===a&&-1!==n?++n:n=-1}return s}(t,!1),t.length>0&&i&&(t+="/"),s?`/${t}`:e+t},isAbsolute(t){return Yt(t),t=this.toPosix(t),!!this.hasProtocol(t)||t.startsWith("/")},join(...t){var e;if(0===t.length)return".";let s;for(let i=0;i0)if(void 0===s)s=r;else{const n=null!=(e=t[i-1])?e:"";this.extname(n)?s+=`/../${r}`:s+=`/${r}`}}return void 0===s?".":this.normalize(s)},dirname(t){if(Yt(t),0===t.length)return".";let e=(t=this.toPosix(t)).charCodeAt(0);const s=47===e;let i=-1,r=!0;const n=this.getProtocol(t),a=t;for(let s=(t=t.slice(n.length)).length-1;s>=1;--s)if(e=t.charCodeAt(s),47===e){if(!r){i=s;break}}else r=!1;return-1===i?s?"/":this.isUrl(a)?n+t:n:s&&1===i?"//":n+t.slice(0,i)},rootname(t){Yt(t);let e="";if(e=(t=this.toPosix(t)).startsWith("/")?"/":this.getProtocol(t),this.isUrl(t)){const s=t.indexOf("/",e.length);e=-1!==s?t.slice(0,s):t,e.endsWith("/")||(e+="/")}return e},basename(t,e){Yt(t),e&&Yt(e),t=jt(this.toPosix(t));let s,i=0,r=-1,n=!0;if(void 0!==e&&e.length>0&&e.length<=t.length){if(e.length===t.length&&e===t)return"";let a=e.length-1,o=-1;for(s=t.length-1;s>=0;--s){const h=t.charCodeAt(s);if(47===h){if(!n){i=s+1;break}}else-1===o&&(n=!1,o=s+1),a>=0&&(h===e.charCodeAt(a)?-1==--a&&(r=s):(a=-1,r=o))}return i===r?r=o:-1===r&&(r=t.length),t.slice(i,r)}for(s=t.length-1;s>=0;--s)if(47===t.charCodeAt(s)){if(!n){i=s+1;break}}else-1===r&&(n=!1,r=s+1);return-1===r?"":t.slice(i,r)},extname(t){Yt(t);let e=-1,s=0,i=-1,r=!0,n=0;for(let a=(t=jt(this.toPosix(t))).length-1;a>=0;--a){const o=t.charCodeAt(a);if(47!==o)-1===i&&(r=!1,i=a+1),46===o?-1===e?e=a:1!==n&&(n=1):-1!==e&&(n=-1);else if(!r){s=a+1;break}}return-1===e||-1===i||0===n||1===n&&e===i-1&&e===s+1?"":t.slice(e,i)},parse(t){Yt(t);const e={root:"",dir:"",base:"",ext:"",name:""};if(0===t.length)return e;let s=(t=jt(this.toPosix(t))).charCodeAt(0);const i=this.isAbsolute(t);let r;e.root=this.rootname(t),r=i||this.hasProtocol(t)?1:0;let n=-1,a=0,o=-1,h=!0,l=t.length-1,u=0;for(;l>=r;--l)if(s=t.charCodeAt(l),47!==s)-1===o&&(h=!1,o=l+1),46===s?-1===n?n=l:1!==u&&(u=1):-1!==n&&(u=-1);else if(!h){a=l+1;break}return-1===n||-1===o||0===u||1===u&&n===o-1&&n===a+1?-1!==o&&(e.base=e.name=0===a&&i?t.slice(1,o):t.slice(a,o)):(0===a&&i?(e.name=t.slice(1,n),e.base=t.slice(1,o)):(e.name=t.slice(a,n),e.base=t.slice(a,o)),e.ext=t.slice(n,o)),e.dir=this.dirname(t),e},sep:"/",delimiter:":"},qt={};function Kt(t,e,s=3){if(qt[e])return;let i=(new Error).stack;void 0===i?console.warn("PixiJS Deprecation Warning: ",`${e}\nDeprecated since v${t}`):(i=i.split("\n").splice(s).join("\n"),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",`${e}\nDeprecated since v${t}`),console.warn(i),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",`${e}\nDeprecated since v${t}`),console.warn(i))),qt[e]=!0}let Zt;function Qt(){return void 0===Zt&&(Zt=function(){var t;const e={stencil:!0,failIfMajorPerformanceCaveat:A.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!A.ADAPTER.getWebGLRenderingContext())return!1;const s=A.ADAPTER.createCanvas();let i=s.getContext("webgl",e)||s.getContext("experimental-webgl",e);const r=!(null==(t=null==i?void 0:i.getContextAttributes())||!t.stencil);if(i){const t=i.getExtension("WEBGL_lose_context");t&&t.loseContext()}return i=null,r}catch(t){return!1}}()),Zt}var Jt={grad:.9,turn:360,rad:360/(2*Math.PI)},te=function(t){return"string"==typeof t?t.length>0:"number"==typeof t},ee=function(t,e,s){return void 0===e&&(e=0),void 0===s&&(s=Math.pow(10,e)),Math.round(s*t)/s+0},se=function(t,e,s){return void 0===e&&(e=0),void 0===s&&(s=1),t>s?s:t>e?t:e},ie=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},re=function(t){return{r:se(t.r,0,255),g:se(t.g,0,255),b:se(t.b,0,255),a:se(t.a)}},ne=function(t){return{r:ee(t.r),g:ee(t.g),b:ee(t.b),a:ee(t.a,3)}},ae=/^#([0-9a-f]{3,8})$/i,oe=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},he=function(t){var e=t.r,s=t.g,i=t.b,r=t.a,n=Math.max(e,s,i),a=n-Math.min(e,s,i),o=a?n===e?(s-i)/a:n===s?2+(i-e)/a:4+(e-s)/a:0;return{h:60*(o<0?o+6:o),s:n?a/n*100:0,v:n/255*100,a:r}},le=function(t){var e=t.h,s=t.s,i=t.v,r=t.a;e=e/360*6,s/=100,i/=100;var n=Math.floor(e),a=i*(1-s),o=i*(1-(e-n)*s),h=i*(1-(1-e+n)*s),l=n%6;return{r:255*[i,o,a,a,h,i][l],g:255*[h,i,i,o,a,a][l],b:255*[a,a,h,i,i,o][l],a:r}},ue=function(t){return{h:ie(t.h),s:se(t.s,0,100),l:se(t.l,0,100),a:se(t.a)}},de=function(t){return{h:ee(t.h),s:ee(t.s),l:ee(t.l),a:ee(t.a,3)}},ce=function(t){return le((s=(e=t).s,{h:e.h,s:(s*=((i=e.l)<50?i:100-i)/100)>0?2*s/(i+s)*100:0,v:i+s,a:e.a}));var e,s,i},pe=function(t){return{h:(e=he(t)).h,s:(r=(200-(s=e.s))*(i=e.v)/100)>0&&r<200?s*i/100/(r<=100?r:200-r)*100:0,l:r/2,a:e.a};var e,s,i,r},fe=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,me=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,_e=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ge=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,xe={string:[[function(t){var e=ae.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:4===t.length?ee(parseInt(t[3]+t[3],16)/255,2):1}:6===t.length||8===t.length?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:8===t.length?ee(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=_e.exec(t)||ge.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:re({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:void 0===e[7]?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=fe.exec(t)||me.exec(t);if(!e)return null;var s,i,r=ue({h:(s=e[1],i=e[2],void 0===i&&(i="deg"),Number(s)*(Jt[i]||1)),s:Number(e[3]),l:Number(e[4]),a:void 0===e[5]?1:Number(e[5])/(e[6]?100:1)});return ce(r)},"hsl"]],object:[[function(t){var e=t.r,s=t.g,i=t.b,r=t.a,n=void 0===r?1:r;return te(e)&&te(s)&&te(i)?re({r:Number(e),g:Number(s),b:Number(i),a:Number(n)}):null},"rgb"],[function(t){var e=t.h,s=t.s,i=t.l,r=t.a,n=void 0===r?1:r;if(!te(e)||!te(s)||!te(i))return null;var a=ue({h:Number(e),s:Number(s),l:Number(i),a:Number(n)});return ce(a)},"hsl"],[function(t){var e=t.h,s=t.s,i=t.v,r=t.a,n=void 0===r?1:r;if(!te(e)||!te(s)||!te(i))return null;var a,o=(a={h:Number(e),s:Number(s),v:Number(i),a:Number(n)},{h:ie(a.h),s:se(a.s,0,100),v:se(a.v,0,100),a:se(a.a)});return le(o)},"hsv"]]},ve=function(t,e){for(var s=0;s=.5},t.prototype.toHex=function(){return e=(t=ne(this.rgba)).r,s=t.g,i=t.b,n=(r=t.a)<1?oe(ee(255*r)):"","#"+oe(e)+oe(s)+oe(i)+n;var t,e,s,i,r,n},t.prototype.toRgb=function(){return ne(this.rgba)},t.prototype.toRgbString=function(){return e=(t=ne(this.rgba)).r,s=t.g,i=t.b,(r=t.a)<1?"rgba("+e+", "+s+", "+i+", "+r+")":"rgb("+e+", "+s+", "+i+")";var t,e,s,i,r},t.prototype.toHsl=function(){return de(pe(this.rgba))},t.prototype.toHslString=function(){return e=(t=de(pe(this.rgba))).h,s=t.s,i=t.l,(r=t.a)<1?"hsla("+e+", "+s+"%, "+i+"%, "+r+")":"hsl("+e+", "+s+"%, "+i+"%)";var t,e,s,i,r},t.prototype.toHsv=function(){return t=he(this.rgba),{h:ee(t.h),s:ee(t.s),v:ee(t.v),a:ee(t.a,3)};var t},t.prototype.invert=function(){return Re({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},t.prototype.saturate=function(t){return void 0===t&&(t=.1),Re(Te(this.rgba,t))},t.prototype.desaturate=function(t){return void 0===t&&(t=.1),Re(Te(this.rgba,-t))},t.prototype.grayscale=function(){return Re(Te(this.rgba,-1))},t.prototype.lighten=function(t){return void 0===t&&(t=.1),Re(Ee(this.rgba,t))},t.prototype.darken=function(t){return void 0===t&&(t=.1),Re(Ee(this.rgba,-t))},t.prototype.rotate=function(t){return void 0===t&&(t=15),this.hue(this.hue()+t)},t.prototype.alpha=function(t){return"number"==typeof t?Re({r:(e=this.rgba).r,g:e.g,b:e.b,a:t}):ee(this.rgba.a,3);var e},t.prototype.hue=function(t){var e=pe(this.rgba);return"number"==typeof t?Re({h:t,s:e.s,l:e.l,a:e.a}):ee(e.h)},t.prototype.isEqual=function(t){return this.toHex()===Re(t).toHex()},t}(),Re=function(t){return t instanceof Ae?t:new Ae(t)},Se=[];!function(t){t.forEach((function(t){Se.indexOf(t)<0&&(t(Ae,xe),Se.push(t))}))}([function(t,e){var s={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},i={};for(var r in s)i[s[r]]=r;var n={};t.prototype.toName=function(e){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var r,a,o=i[this.toHex()];if(o)return o;if(null!=e&&e.closest){var h=this.toRgb(),l=1/0,u="black";if(!n.length)for(var d in s)n[d]=new t(s[d]).toRgb();for(var c in s){var p=(r=h,a=n[c],Math.pow(r.r-a.r,2)+Math.pow(r.g-a.g,2)+Math.pow(r.b-a.b,2));pt===e[s]));if(null!==t&&null!==e){const s=Object.keys(t),i=Object.keys(e);return s.length===i.length&&s.every((s=>t[s]===e[s]))}return t===e}toRgba(){const[t,e,s,i]=this._components;return{r:t,g:e,b:s,a:i}}toRgb(){const[t,e,s]=this._components;return{r:t,g:e,b:s}}toRgbaString(){const[t,e,s]=this.toUint8RgbArray();return`rgba(${t},${e},${s},${this.alpha})`}toUint8RgbArray(t){const[e,s,i]=this._components;return(t=null!=t?t:[])[0]=Math.round(255*e),t[1]=Math.round(255*s),t[2]=Math.round(255*i),t}toRgbArray(t){t=null!=t?t:[];const[e,s,i]=this._components;return t[0]=e,t[1]=s,t[2]=i,t}toNumber(){return this._int}toLittleEndianNumber(){const t=this._int;return(t>>16)+(65280&t)+((255&t)<<16)}multiply(t){const[e,s,i,r]=we.temp.setValue(t)._components;return this._components[0]*=e,this._components[1]*=s,this._components[2]*=i,this._components[3]*=r,this.refreshInt(),this._value=null,this}premultiply(t,e=!0){return e&&(this._components[0]*=t,this._components[1]*=t,this._components[2]*=t),this._components[3]=t,this.refreshInt(),this._value=null,this}toPremultiplied(t,e=!0){if(1===t)return(255<<24)+this._int;if(0===t)return e?0:this._int;let s=this._int>>16&255,i=this._int>>8&255,r=255&this._int;return e&&(s=s*t+.5|0,i=i*t+.5|0,r=r*t+.5|0),(255*t<<24)+(s<<16)+(i<<8)+r}toHex(){const t=this._int.toString(16);return`#${"000000".substring(0,6-t.length)+t}`}toHexa(){const t=Math.round(255*this._components[3]).toString(16);return this.toHex()+"00".substring(0,2-t.length)+t}setAlpha(t){return this._components[3]=this._clamp(t),this}round(t){const[e,s,i]=this._components;return this._components[0]=Math.round(e*t)/t,this._components[1]=Math.round(s*t)/t,this._components[2]=Math.round(i*t)/t,this.refreshInt(),this._value=null,this}toArray(t){t=null!=t?t:[];const[e,s,i,r]=this._components;return t[0]=e,t[1]=s,t[2]=i,t[3]=r,t}normalize(t){let e,s,i,r;if(("number"==typeof t||t instanceof Number)&&t>=0&&t<=16777215){e=(t>>16&255)/255,s=(t>>8&255)/255,i=(255&t)/255,r=1}else if((Array.isArray(t)||t instanceof Float32Array)&&t.length>=3&&t.length<=4)t=this._clamp(t),[e,s,i,r=1]=t;else if((t instanceof Uint8Array||t instanceof Uint8ClampedArray)&&t.length>=3&&t.length<=4)t=this._clamp(t,0,255),[e,s,i,r=255]=t,e/=255,s/=255,i/=255,r/=255;else if("string"==typeof t||"object"==typeof t){if("string"==typeof t){const e=we.HEX_PATTERN.exec(t);e&&(t=`#${e[2]}`)}const n=Re(t);n.isValid()&&(({r:e,g:s,b:i,a:r}=n.rgba),e/=255,s/=255,i/=255)}if(void 0===e)throw new Error(`Unable to convert color ${t}`);this._components[0]=e,this._components[1]=s,this._components[2]=i,this._components[3]=r,this.refreshInt()}refreshInt(){this._clamp(this._components);const[t,e,s]=this._components;this._int=(255*t<<16)+(255*e<<8)+(255*s|0)}_clamp(t,e=0,s=1){return"number"==typeof t?Math.min(Math.max(t,e),s):(t.forEach(((i,r)=>{t[r]=Math.min(Math.max(i,e),s)})),t)}};let Ie=we;function Me(t){return Kt("7.2.0","utils.hex2string is deprecated, use Color#toHex instead"),Ie.shared.setValue(t).toHex()}function Ce(t){return Kt("7.2.0","utils.rgb2hex is deprecated, use Color#toNumber instead"),Ie.shared.setValue(t).toNumber()}Ie.shared=new we,Ie.temp=new we,Ie.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;const De=function(){const t=[],e=[];for(let s=0;s<32;s++)t[s]=s,e[s]=s;t[a.NORMAL_NPM]=a.NORMAL,t[a.ADD_NPM]=a.ADD,t[a.SCREEN_NPM]=a.SCREEN,e[a.NORMAL]=a.NORMAL_NPM,e[a.ADD]=a.ADD_NPM,e[a.SCREEN]=a.SCREEN_NPM;const s=[];return s.push(e),s.push(t),s}();function Pe(t,e){return De[e?1:0][t]}const Oe=/^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;charset=([\w-]+))?(?:;(base64))?,(.*)/i;function Fe(t,e=null){const s=6*t;if((e=e||new Uint16Array(s)).length!==s)throw new Error(`Out buffer length is incorrect, got ${e.length} and expected ${s}`);for(let t=0,i=0;t>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)+1}function Ge(t){return!(t&t-1||!t)}function Ue(t){let e=(t>65535?1:0)<<4,s=((t>>>=e)>255?1:0)<<3;return e|=s,s=((t>>>=s)>15?1:0)<<2,e|=s,s=((t>>>=s)>3?1:0)<<1,e|=s,e|(t>>>=s)>>1}function ke(t,e,s){const i=t.length;let r;if(e>=i||0===s)return;const n=i-(s=e+s>i?i-e:s);for(r=e;r(t.Renderer="renderer",t.Application="application",t.RendererSystem="renderer-webgl-system",t.RendererPlugin="renderer-webgl-plugin",t.CanvasRendererSystem="renderer-canvas-system",t.CanvasRendererPlugin="renderer-canvas-plugin",t.Asset="asset",t.LoadParser="load-parser",t.ResolveParser="resolve-parser",t.CacheParser="cache-parser",t.DetectionParser="detection-parser",t))(rs||{});const ns=t=>{if("function"==typeof t||"object"==typeof t&&t.extension){if(!t.extension)throw new Error("Extension class must have an extension object");const e="object"!=typeof t.extension?{type:t.extension}:t.extension;t=Qi(bt({},e),{ref:t})}if("object"!=typeof t)throw new Error("Invalid extension type");return"string"==typeof(t=bt({},t)).type&&(t.type=[t.type]),t},as=(t,e)=>{var s;return null!=(s=ns(t).priority)?s:e},os={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...t){return t.map(ns).forEach((t=>{t.type.forEach((e=>{var s,i;return null==(i=(s=this._removeHandlers)[e])?void 0:i.call(s,t)}))})),this},add(...t){return t.map(ns).forEach((t=>{t.type.forEach((e=>{const s=this._addHandlers,i=this._queue;s[e]?s[e](t):(i[e]=i[e]||[],i[e].push(t))}))})),this},handle(t,e,s){const i=this._addHandlers,r=this._removeHandlers;if(i[t]||r[t])throw new Error(`Extension type ${t} already has a handler`);i[t]=e,r[t]=s;const n=this._queue;return n[t]&&(n[t].forEach((t=>e(t))),delete n[t]),this},handleByMap(t,e){return this.handle(t,(t=>{e[t.name]=t.ref}),(t=>{delete e[t.name]}))},handleByList(t,e,s=-1){return this.handle(t,(t=>{e.includes(t.ref)||(e.push(t.ref),e.sort(((t,e)=>as(e,s)-as(t,s))))}),(t=>{const s=e.indexOf(t.ref);-1!==s&&e.splice(s,1)}))}};class hs{constructor(t){"number"==typeof t?this.rawBinaryData=new ArrayBuffer(t):t instanceof Uint8Array?this.rawBinaryData=t.buffer:this.rawBinaryData=t,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData)}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get uint16View(){return this._uint16View||(this._uint16View=new Uint16Array(this.rawBinaryData)),this._uint16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}view(t){return this[`${t}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(t){switch(t){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${t} isn't a valid view type`)}}}const ls=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join("\n");function us(t){let e="";for(let s=0;s0&&(e+="\nelse "),s=0;--i){const r=ps[i];if(r.test&&r.test(t,s))return new r(t,e)}throw new Error("Unrecognized source type to auto-detect Resource")}class ms{constructor(t){this.items=[],this._name=t,this._aliasCount=0}emit(t,e,s,i,r,n,a,o){if(arguments.length>8)throw new Error("max arguments reached");const{name:h,items:l}=this;this._aliasCount++;for(let u=0,d=l.length;u0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(t){return t[this._name]&&(this.ensureNonAliasedItems(),this.remove(t),this.items.push(t)),this}remove(t){const e=this.items.indexOf(t);return-1!==e&&(this.ensureNonAliasedItems(),this.items.splice(e,1)),this}contains(t){return this.items.includes(t)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items=null,this._name=null}get empty(){return 0===this.items.length}get name(){return this._name}}Object.defineProperties(ms.prototype,{dispatch:{value:ms.prototype.emit},run:{value:ms.prototype.emit}});class _s{constructor(t=0,e=0){this._width=t,this._height=e,this.destroyed=!1,this.internal=!1,this.onResize=new ms("setRealSize"),this.onUpdate=new ms("update"),this.onError=new ms("onError")}bind(t){this.onResize.add(t),this.onUpdate.add(t),this.onError.add(t),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(t){this.onResize.remove(t),this.onUpdate.remove(t),this.onError.remove(t)}resize(t,e){(t!==this._width||e!==this._height)&&(this._width=t,this._height=e,this.onResize.emit(t,e))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(t,e,s){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(t,e){return!1}}class gs extends _s{constructor(t,e){const{width:s,height:i}=e||{};if(!s||!i)throw new Error("BufferResource width or height invalid");super(s,i),this.data=t}upload(t,e,s){const i=t.gl;i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.alphaMode===m.UNPACK);const r=e.realWidth,n=e.realHeight;return s.width===r&&s.height===n?i.texSubImage2D(e.target,0,0,0,r,n,e.format,s.type,this.data):(s.width=r,s.height=n,i.texImage2D(e.target,0,s.internalFormat,r,n,0,e.format,s.type,this.data)),!0}dispose(){this.data=null}static test(t){return t instanceof Float32Array||t instanceof Uint8Array||t instanceof Uint32Array}}const xs={scaleMode:c.NEAREST,format:h.RGBA,alphaMode:m.NPM},vs=class extends W{constructor(t=null,e=null){super(),e=Object.assign({},vs.defaultOptions,e);const{alphaMode:s,mipmap:i,anisotropicLevel:r,scaleMode:n,width:a,height:o,wrapMode:h,format:l,type:u,target:d,resolution:c,resourceOptions:p}=e;t&&!(t instanceof _s)&&((t=fs(t,p)).internal=!0),this.resolution=c||A.RESOLUTION,this.width=Math.round((a||0)*this.resolution)/this.resolution,this.height=Math.round((o||0)*this.resolution)/this.resolution,this._mipmap=i,this.anisotropicLevel=r,this._wrapMode=h,this._scaleMode=n,this.format=l,this.type=u,this.target=d,this.alphaMode=s,this.uid=Ve(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=a>0&&o>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource(t)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap(t){this._mipmap!==t&&(this._mipmap=t,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode(t){this._scaleMode!==t&&(this._scaleMode=t,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode(t){this._wrapMode!==t&&(this._wrapMode=t,this.dirtyStyleId++)}setStyle(t,e){let s;return void 0!==t&&t!==this.scaleMode&&(this.scaleMode=t,s=!0),void 0!==e&&e!==this.mipmap&&(this.mipmap=e,s=!0),s&&this.dirtyStyleId++,this}setSize(t,e,s){return s=s||this.resolution,this.setRealSize(t*s,e*s,s)}setRealSize(t,e,s){return this.resolution=s||this.resolution,this.width=Math.round(t)/this.resolution,this.height=Math.round(e)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=Ge(this.realWidth)&&Ge(this.realHeight)}setResolution(t){const e=this.resolution;return e===t||(this.resolution=t,this.valid&&(this.width=Math.round(this.width*e)/t,this.height=Math.round(this.height*e)/t,this.emit("update",this)),this._refreshPOT()),this}setResource(t){if(this.resource===t)return this;if(this.resource)throw new Error("Resource can be set only once");return t.bind(this),this.resource=t,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError(t){this.emit("error",this,t)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete $e[this.cacheId],delete je[this.cacheId],this.cacheId=null),this.dispose(),vs.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from(t,e,s=A.STRICT_TEXTURE_CACHE){const i="string"==typeof t;let r=null;if(i)r=t;else{if(!t._pixiId){const s=(null==e?void 0:e.pixiIdPrefix)||"pixiid";t._pixiId=`${s}_${Ve()}`}r=t._pixiId}let n=$e[r];if(i&&s&&!n)throw new Error(`The cacheId "${r}" does not exist in BaseTextureCache.`);return n||(n=new vs(t,e),n.cacheId=r,vs.addToCache(n,r)),n}static fromBuffer(t,e,s,i){t=t||new Float32Array(e*s*4);const r=new gs(t,{width:e,height:s}),n=t instanceof Float32Array?u.FLOAT:u.UNSIGNED_BYTE;return new vs(r,Object.assign({},xs,{type:n},i))}static addToCache(t,e){e&&(t.textureCacheIds.includes(e)||t.textureCacheIds.push(e),$e[e]&&$e[e]!==t&&console.warn(`BaseTexture added to the cache with an id [${e}] that already had an entry`),$e[e]=t)}static removeFromCache(t){if("string"==typeof t){const e=$e[t];if(e){const s=e.textureCacheIds.indexOf(t);return s>-1&&e.textureCacheIds.splice(s,1),delete $e[t],e}}else if(null!=t&&t.textureCacheIds){for(let e=0;e1){for(let t=0;t(t[t.POLY=0]="POLY",t[t.RECT=1]="RECT",t[t.CIRC=2]="CIRC",t[t.ELIP=3]="ELIP",t[t.RREC=4]="RREC",t))(Fs||{});class Bs{constructor(t=0,e=0){this.x=0,this.y=0,this.x=t,this.y=e}clone(){return new Bs(this.x,this.y)}copyFrom(t){return this.set(t.x,t.y),this}copyTo(t){return t.set(this.x,this.y),t}equals(t){return t.x===this.x&&t.y===this.y}set(t=0,e=t){return this.x=t,this.y=e,this}toString(){return`[@pixi/math:Point x=${this.x} y=${this.y}]`}}const Ns=[new Bs,new Bs,new Bs,new Bs];class Ls{constructor(t=0,e=0,s=0,i=0){this.x=Number(t),this.y=Number(e),this.width=Number(s),this.height=Number(i),this.type=Fs.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new Ls(0,0,0,0)}clone(){return new Ls(this.x,this.y,this.width,this.height)}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.x=this.x,t.y=this.y,t.width=this.width,t.height=this.height,t}contains(t,e){return!(this.width<=0||this.height<=0)&&(t>=this.x&&t=this.y&&et.right?t.right:this.right)<=e)return!1;const s=this.yt.bottom?t.bottom:this.bottom)>s}const s=this.left,i=this.right,r=this.top,n=this.bottom;if(i<=s||n<=r)return!1;const a=Ns[0].set(t.left,t.top),o=Ns[1].set(t.left,t.bottom),h=Ns[2].set(t.right,t.top),l=Ns[3].set(t.right,t.bottom);if(h.x<=a.x||o.y<=a.y)return!1;const u=Math.sign(e.a*e.d-e.b*e.c);if(0===u||(e.apply(a,a),e.apply(o,o),e.apply(h,h),e.apply(l,l),Math.max(a.x,o.x,h.x,l.x)<=s||Math.min(a.x,o.x,h.x,l.x)>=i||Math.max(a.y,o.y,h.y,l.y)<=r||Math.min(a.y,o.y,h.y,l.y)>=n))return!1;const d=u*(o.y-a.y),c=u*(a.x-o.x),p=d*s+c*r,f=d*i+c*r,m=d*s+c*n,_=d*i+c*n;if(Math.max(p,f,m,_)<=d*a.x+c*a.y||Math.min(p,f,m,_)>=d*l.x+c*l.y)return!1;const g=u*(a.y-h.y),x=u*(h.x-a.x),v=g*s+x*r,y=g*i+x*r,T=g*s+x*n,b=g*i+x*n;return!(Math.max(v,y,T,b)<=g*a.x+x*a.y||Math.min(v,y,T,b)>=g*l.x+x*l.y)}pad(t=0,e=t){return this.x-=t,this.y-=e,this.width+=2*t,this.height+=2*e,this}fit(t){const e=Math.max(this.x,t.x),s=Math.min(this.x+this.width,t.x+t.width),i=Math.max(this.y,t.y),r=Math.min(this.y+this.height,t.y+t.height);return this.x=e,this.width=Math.max(s-e,0),this.y=i,this.height=Math.max(r-i,0),this}ceil(t=1,e=.001){const s=Math.ceil((this.x+this.width-e)*t)/t,i=Math.ceil((this.y+this.height-e)*t)/t;return this.x=Math.floor((this.x+e)*t)/t,this.y=Math.floor((this.y+e)*t)/t,this.width=s-this.x,this.height=i-this.y,this}enlarge(t){const e=Math.min(this.x,t.x),s=Math.max(this.x+this.width,t.x+t.width),i=Math.min(this.y,t.y),r=Math.max(this.y+this.height,t.y+t.height);return this.x=e,this.width=s-e,this.y=i,this.height=r-i,this}toString(){return`[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}class Gs{constructor(t=0,e=0,s=0){this.x=t,this.y=e,this.radius=s,this.type=Fs.CIRC}clone(){return new Gs(this.x,this.y,this.radius)}contains(t,e){if(this.radius<=0)return!1;const s=this.radius*this.radius;let i=this.x-t,r=this.y-e;return i*=i,r*=r,i+r<=s}getBounds(){return new Ls(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)}toString(){return`[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`}}class Us{constructor(t=0,e=0,s=0,i=0){this.x=t,this.y=e,this.width=s,this.height=i,this.type=Fs.ELIP}clone(){return new Us(this.x,this.y,this.width,this.height)}contains(t,e){if(this.width<=0||this.height<=0)return!1;let s=(t-this.x)/this.width,i=(e-this.y)/this.height;return s*=s,i*=i,s+i<=1}getBounds(){return new Ls(this.x-this.width,this.y-this.height,this.width,this.height)}toString(){return`[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}class ks{constructor(...t){let e=Array.isArray(t[0])?t[0]:t;if("number"!=typeof e[0]){const t=[];for(let s=0,i=e.length;se!=h>e&&t<(e-a)/(h-a)*(o-i)+i&&(s=!s)}return s}toString(){return`[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce(((t,e)=>`${t}, ${e}`),"")}]`}}class Xs{constructor(t=0,e=0,s=0,i=0,r=20){this.x=t,this.y=e,this.width=s,this.height=i,this.radius=r,this.type=Fs.RREC}clone(){return new Xs(this.x,this.y,this.width,this.height,this.radius)}contains(t,e){if(this.width<=0||this.height<=0)return!1;if(t>=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){const s=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(e>=this.y+s&&e<=this.y+this.height-s||t>=this.x+s&&t<=this.x+this.width-s)return!0;let i=t-(this.x+s),r=e-(this.y+s);const n=s*s;if(i*i+r*r<=n||(i=t-(this.x+this.width-s),i*i+r*r<=n)||(r=e-(this.y+this.height-s),i*i+r*r<=n)||(i=t-(this.x+s),i*i+r*r<=n))return!0}return!1}toString(){return`[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`}}class Hs{constructor(t=1,e=0,s=0,i=1,r=0,n=0){this.array=null,this.a=t,this.b=e,this.c=s,this.d=i,this.tx=r,this.ty=n}fromArray(t){this.a=t[0],this.b=t[1],this.c=t[3],this.d=t[4],this.tx=t[2],this.ty=t[5]}set(t,e,s,i,r,n){return this.a=t,this.b=e,this.c=s,this.d=i,this.tx=r,this.ty=n,this}toArray(t,e){this.array||(this.array=new Float32Array(9));const s=e||this.array;return t?(s[0]=this.a,s[1]=this.b,s[2]=0,s[3]=this.c,s[4]=this.d,s[5]=0,s[6]=this.tx,s[7]=this.ty,s[8]=1):(s[0]=this.a,s[1]=this.c,s[2]=this.tx,s[3]=this.b,s[4]=this.d,s[5]=this.ty,s[6]=0,s[7]=0,s[8]=1),s}apply(t,e){e=e||new Bs;const s=t.x,i=t.y;return e.x=this.a*s+this.c*i+this.tx,e.y=this.b*s+this.d*i+this.ty,e}applyInverse(t,e){e=e||new Bs;const s=1/(this.a*this.d+this.c*-this.b),i=t.x,r=t.y;return e.x=this.d*s*i+-this.c*s*r+(this.ty*this.c-this.tx*this.d)*s,e.y=this.a*s*r+-this.b*s*i+(-this.ty*this.a+this.tx*this.b)*s,e}translate(t,e){return this.tx+=t,this.ty+=e,this}scale(t,e){return this.a*=t,this.d*=e,this.c*=t,this.b*=e,this.tx*=t,this.ty*=e,this}rotate(t){const e=Math.cos(t),s=Math.sin(t),i=this.a,r=this.c,n=this.tx;return this.a=i*e-this.b*s,this.b=i*s+this.b*e,this.c=r*e-this.d*s,this.d=r*s+this.d*e,this.tx=n*e-this.ty*s,this.ty=n*s+this.ty*e,this}append(t){const e=this.a,s=this.b,i=this.c,r=this.d;return this.a=t.a*e+t.b*i,this.b=t.a*s+t.b*r,this.c=t.c*e+t.d*i,this.d=t.c*s+t.d*r,this.tx=t.tx*e+t.ty*i+this.tx,this.ty=t.tx*s+t.ty*r+this.ty,this}setTransform(t,e,s,i,r,n,a,o,h){return this.a=Math.cos(a+h)*r,this.b=Math.sin(a+h)*r,this.c=-Math.sin(a-o)*n,this.d=Math.cos(a-o)*n,this.tx=t-(s*this.a+i*this.c),this.ty=e-(s*this.b+i*this.d),this}prepend(t){const e=this.tx;if(1!==t.a||0!==t.b||0!==t.c||1!==t.d){const e=this.a,s=this.c;this.a=e*t.a+this.b*t.c,this.b=e*t.b+this.b*t.d,this.c=s*t.a+this.d*t.c,this.d=s*t.b+this.d*t.d}return this.tx=e*t.a+this.ty*t.c+t.tx,this.ty=e*t.b+this.ty*t.d+t.ty,this}decompose(t){const e=this.a,s=this.b,i=this.c,r=this.d,n=t.pivot,a=-Math.atan2(-i,r),o=Math.atan2(s,e),h=Math.abs(a+o);return h<1e-5||Math.abs(Ds-h)<1e-5?(t.rotation=o,t.skew.x=t.skew.y=0):(t.rotation=0,t.skew.x=a,t.skew.y=o),t.scale.x=Math.sqrt(e*e+s*s),t.scale.y=Math.sqrt(i*i+r*r),t.position.x=this.tx+(n.x*e+n.y*i),t.position.y=this.ty+(n.x*s+n.y*r),t}invert(){const t=this.a,e=this.b,s=this.c,i=this.d,r=this.tx,n=t*i-e*s;return this.a=i/n,this.b=-e/n,this.c=-s/n,this.d=t/n,this.tx=(s*this.ty-i*r)/n,this.ty=-(t*this.ty-e*r)/n,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const t=new Hs;return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyTo(t){return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyFrom(t){return this.a=t.a,this.b=t.b,this.c=t.c,this.d=t.d,this.tx=t.tx,this.ty=t.ty,this}toString(){return`[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`}static get IDENTITY(){return new Hs}static get TEMP_MATRIX(){return new Hs}}const Vs=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],zs=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],Ws=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],Ys=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],js=[],$s=[],qs=Math.sign;!function(){for(let t=0;t<16;t++){const e=[];js.push(e);for(let s=0;s<16;s++){const i=qs(Vs[t]*Vs[s]+Ws[t]*zs[s]),r=qs(zs[t]*Vs[s]+Ys[t]*zs[s]),n=qs(Vs[t]*Ws[s]+Ws[t]*Ys[s]),a=qs(zs[t]*Ws[s]+Ys[t]*Ys[s]);for(let t=0;t<16;t++)if(Vs[t]===i&&zs[t]===r&&Ws[t]===n&&Ys[t]===a){e.push(t);break}}}for(let t=0;t<16;t++){const e=new Hs;e.set(Vs[t],zs[t],Ws[t],Ys[t],0,0),$s.push(e)}}();const Ks={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:t=>Vs[t],uY:t=>zs[t],vX:t=>Ws[t],vY:t=>Ys[t],inv:t=>8&t?15&t:7&-t,add:(t,e)=>js[t][e],sub:(t,e)=>js[t][Ks.inv(e)],rotate180:t=>4^t,isVertical:t=>2==(3&t),byDirection:(t,e)=>2*Math.abs(t)<=Math.abs(e)?e>=0?Ks.S:Ks.N:2*Math.abs(e)<=Math.abs(t)?t>0?Ks.E:Ks.W:e>0?t>0?Ks.SE:Ks.SW:t>0?Ks.NE:Ks.NW,matrixAppendRotationInv:(t,e,s=0,i=0)=>{const r=$s[Ks.inv(e)];r.tx=s,r.ty=i,t.append(r)}};class Zs{constructor(t,e,s=0,i=0){this._x=s,this._y=i,this.cb=t,this.scope=e}clone(t=this.cb,e=this.scope){return new Zs(t,e,this._x,this._y)}set(t=0,e=t){return(this._x!==t||this._y!==e)&&(this._x=t,this._y=e,this.cb.call(this.scope)),this}copyFrom(t){return(this._x!==t.x||this._y!==t.y)&&(this._x=t.x,this._y=t.y,this.cb.call(this.scope)),this}copyTo(t){return t.set(this._x,this._y),t}equals(t){return t.x===this._x&&t.y===this._y}toString(){return`[@pixi/math:ObservablePoint x=0 y=0 scope=${this.scope}]`}get x(){return this._x}set x(t){this._x!==t&&(this._x=t,this.cb.call(this.scope))}get y(){return this._y}set y(t){this._y!==t&&(this._y=t,this.cb.call(this.scope))}}const Qs=class{constructor(){this.worldTransform=new Hs,this.localTransform=new Hs,this.position=new Zs(this.onChange,this,0,0),this.scale=new Zs(this.onChange,this,1,1),this.pivot=new Zs(this.onChange,this,0,0),this.skew=new Zs(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++}toString(){return`[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`}updateLocalTransform(){const t=this.localTransform;this._localID!==this._currentLocalID&&(t.a=this._cx*this.scale.x,t.b=this._sx*this.scale.x,t.c=this._cy*this.scale.y,t.d=this._sy*this.scale.y,t.tx=this.position.x-(this.pivot.x*t.a+this.pivot.y*t.c),t.ty=this.position.y-(this.pivot.x*t.b+this.pivot.y*t.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(t){const e=this.localTransform;if(this._localID!==this._currentLocalID&&(e.a=this._cx*this.scale.x,e.b=this._sx*this.scale.x,e.c=this._cy*this.scale.y,e.d=this._sy*this.scale.y,e.tx=this.position.x-(this.pivot.x*e.a+this.pivot.y*e.c),e.ty=this.position.y-(this.pivot.x*e.b+this.pivot.y*e.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==t._worldID){const s=t.worldTransform,i=this.worldTransform;i.a=e.a*s.a+e.b*s.c,i.b=e.a*s.b+e.b*s.d,i.c=e.c*s.a+e.d*s.c,i.d=e.c*s.b+e.d*s.d,i.tx=e.tx*s.a+e.ty*s.c+s.tx,i.ty=e.tx*s.b+e.ty*s.d+s.ty,this._parentID=t._worldID,this._worldID++}}setFromMatrix(t){t.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(t){this._rotation!==t&&(this._rotation=t,this.updateSkew())}};let Js=Qs;Js.IDENTITY=new Qs;function ti(t,e,s){const i=t.createShader(e);return t.shaderSource(i,s),t.compileShader(i),i}function ei(t){const e=new Array(t);for(let t=0;t"float"===t.type&&1===t.size&&!t.isArray,code:t=>`\n if(uv["${t}"] !== ud["${t}"].value)\n {\n ud["${t}"].value = uv["${t}"]\n gl.uniform1f(ud["${t}"].location, uv["${t}"])\n }\n `},{test:(t,e)=>!("sampler2D"!==t.type&&"samplerCube"!==t.type&&"sampler2DArray"!==t.type||1!==t.size||t.isArray||null!=e&&void 0===e.castToBaseTexture),code:t=>`t = syncData.textureCount++;\n\n renderer.texture.bind(uv["${t}"], t);\n\n if(ud["${t}"].value !== t)\n {\n ud["${t}"].value = t;\n gl.uniform1i(ud["${t}"].location, t);\n; // eslint-disable-line max-len\n }`},{test:(t,e)=>"mat3"===t.type&&1===t.size&&!t.isArray&&void 0!==e.a,code:t=>`\n gl.uniformMatrix3fv(ud["${t}"].location, false, uv["${t}"].toArray(true));\n `,codeUbo:t=>`\n var ${t}_matrix = uv.${t}.toArray(true);\n\n data[offset] = ${t}_matrix[0];\n data[offset+1] = ${t}_matrix[1];\n data[offset+2] = ${t}_matrix[2];\n \n data[offset + 4] = ${t}_matrix[3];\n data[offset + 5] = ${t}_matrix[4];\n data[offset + 6] = ${t}_matrix[5];\n \n data[offset + 8] = ${t}_matrix[6];\n data[offset + 9] = ${t}_matrix[7];\n data[offset + 10] = ${t}_matrix[8];\n `},{test:(t,e)=>"vec2"===t.type&&1===t.size&&!t.isArray&&void 0!==e.x,code:t=>`\n cv = ud["${t}"].value;\n v = uv["${t}"];\n\n if(cv[0] !== v.x || cv[1] !== v.y)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud["${t}"].location, v.x, v.y);\n }`,codeUbo:t=>`\n v = uv.${t};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n `},{test:t=>"vec2"===t.type&&1===t.size&&!t.isArray,code:t=>`\n cv = ud["${t}"].value;\n v = uv["${t}"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(ud["${t}"].location, v[0], v[1]);\n }\n `},{test:(t,e)=>"vec4"===t.type&&1===t.size&&!t.isArray&&void 0!==e.width,code:t=>`\n cv = ud["${t}"].value;\n v = uv["${t}"];\n\n if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud["${t}"].location, v.x, v.y, v.width, v.height)\n }`,codeUbo:t=>`\n v = uv.${t};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n data[offset+2] = v.width;\n data[offset+3] = v.height;\n `},{test:(t,e)=>"vec4"===t.type&&1===t.size&&!t.isArray&&void 0!==e.red,code:t=>`\n cv = ud["${t}"].value;\n v = uv["${t}"];\n\n if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha)\n {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n cv[3] = v.alpha;\n gl.uniform4f(ud["${t}"].location, v.red, v.green, v.blue, v.alpha)\n }`,codeUbo:t=>`\n v = uv.${t};\n\n data[offset] = v.red;\n data[offset+1] = v.green;\n data[offset+2] = v.blue;\n data[offset+3] = v.alpha;\n `},{test:(t,e)=>"vec3"===t.type&&1===t.size&&!t.isArray&&void 0!==e.red,code:t=>`\n cv = ud["${t}"].value;\n v = uv["${t}"];\n\n if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.a)\n {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n \n gl.uniform3f(ud["${t}"].location, v.red, v.green, v.blue)\n }`,codeUbo:t=>`\n v = uv.${t};\n\n data[offset] = v.red;\n data[offset+1] = v.green;\n data[offset+2] = v.blue;\n `},{test:t=>"vec4"===t.type&&1===t.size&&!t.isArray,code:t=>`\n cv = ud["${t}"].value;\n v = uv["${t}"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(ud["${t}"].location, v[0], v[1], v[2], v[3])\n }`}],ri={float:"\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1f(location, v);\n }",vec2:"\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2f(location, v[0], v[1])\n }",vec3:"\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3f(location, v[0], v[1], v[2])\n }",vec4:"\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }",int:"\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }",ivec2:"\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }",ivec3:"\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }",ivec4:"\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }",uint:"\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1ui(location, v);\n }",uvec2:"\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2ui(location, v[0], v[1]);\n }",uvec3:"\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }",uvec4:"\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }",bool:"\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1i(location, v);\n }",bvec2:"\n if (cv[0] != v[0] || cv[1] != v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }",bvec3:"\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }",bvec4:"\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }",mat2:"gl.uniformMatrix2fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",sampler2D:"\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }",samplerCube:"\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }",sampler2DArray:"\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }"},ni={float:"gl.uniform1fv(location, v)",vec2:"gl.uniform2fv(location, v)",vec3:"gl.uniform3fv(location, v)",vec4:"gl.uniform4fv(location, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat2:"gl.uniformMatrix2fv(location, false, v)",int:"gl.uniform1iv(location, v)",ivec2:"gl.uniform2iv(location, v)",ivec3:"gl.uniform3iv(location, v)",ivec4:"gl.uniform4iv(location, v)",uint:"gl.uniform1uiv(location, v)",uvec2:"gl.uniform2uiv(location, v)",uvec3:"gl.uniform3uiv(location, v)",uvec4:"gl.uniform4uiv(location, v)",bool:"gl.uniform1iv(location, v)",bvec2:"gl.uniform2iv(location, v)",bvec3:"gl.uniform3iv(location, v)",bvec4:"gl.uniform4iv(location, v)",sampler2D:"gl.uniform1iv(location, v)",samplerCube:"gl.uniform1iv(location, v)",sampler2DArray:"gl.uniform1iv(location, v)"};const ai={};let oi,hi=ai;function li(){if(hi===ai||(null==hi?void 0:hi.isContextLost())){const t=A.ADAPTER.createCanvas();let e;A.PREFER_ENV>=i.WEBGL2&&(e=t.getContext("webgl2",{})),e||(e=t.getContext("webgl",{})||t.getContext("experimental-webgl",{}),e?e.getExtension("WEBGL_draw_buffers"):e=null),hi=e}return hi}function ui(t,e){const s=t.getShaderSource(e).split("\n").map(((t,e)=>`${e}: ${t}`)),i=t.getShaderInfoLog(e),r=i.split("\n"),n={},a=r.map((t=>parseFloat(t.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1")))).filter((t=>!(!t||n[t])&&(n[t]=!0,!0))),o=[""];a.forEach((t=>{s[t-1]=`%c${s[t-1]}%c`,o.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")}));const h=s.join("\n");o[0]=h,console.error(i),console.groupCollapsed("click to view full shader code"),console.warn(...o),console.groupEnd()}const di={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,uint:1,uvec2:2,uvec3:3,uvec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};function ci(t){return di[t]}let pi=null;const fi={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",UNSIGNED_INT:"uint",UNSIGNED_INT_VEC2:"uvec2",UNSIGNED_INT_VEC3:"uvec3",UNSIGNED_INT_VEC4:"uvec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",INT_SAMPLER_2D:"sampler2D",UNSIGNED_INT_SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",INT_SAMPLER_CUBE:"samplerCube",UNSIGNED_INT_SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray",INT_SAMPLER_2D_ARRAY:"sampler2DArray",UNSIGNED_INT_SAMPLER_2D_ARRAY:"sampler2DArray"};function mi(t,e){if(!pi){const e=Object.keys(fi);pi={};for(let s=0;s0&&(e+="\nelse "),sthis.size&&this.flush(),this._vertexCount+=t.vertexData.length/2,this._indexCount+=t.indices.length,this._bufferedTextures[this._bufferSize]=t._texture.baseTexture,this._bufferedElements[this._bufferSize++]=t)}buildTexturesAndDrawCalls(){const{_bufferedTextures:t,maxTextures:e}=this,s=Mi._textureArrayPool,i=this.renderer.batch,r=this._tempBoundTextures,n=this.renderer.textureGC.count;let a=++ys._globalBatch,o=0,h=s[0],l=0;i.copyBoundTextures(r,e);for(let u=0;u=e&&(i.boundArray(h,r,a,e),this.buildDrawCalls(h,l,u),l=u,h=s[++o],++a),d._batchEnabled=a,d.touched=n,h.elements[h.count++]=d)}h.count>0&&(i.boundArray(h,r,a,e),this.buildDrawCalls(h,l,this._bufferSize),++o,++a);for(let t=0;t0);for(let t=0;t=0;--i)t[i]=s[i]||null,t[i]&&(t[i]._batchLocation=i)}boundArray(t,e,s,i){const{elements:r,ids:n,count:a}=t;let o=0;for(let t=0;t=0&&h=i.WEBGL2&&(s=t.getContext("webgl2",e)),s)this.webGLVersion=2;else if(this.webGLVersion=1,s=t.getContext("webgl",e)||t.getContext("experimental-webgl",e),!s)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=s,this.getExtensions(),this.gl}getExtensions(){const{gl:t}=this,e={loseContext:t.getExtension("WEBGL_lose_context"),anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),s3tc:t.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:t.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:t.getExtension("WEBGL_compressed_texture_etc"),etc1:t.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:t.getExtension("WEBGL_compressed_texture_atc"),astc:t.getExtension("WEBGL_compressed_texture_astc")};1===this.webGLVersion?Object.assign(this.extensions,e,{drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBGL_depth_texture"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear")}):2===this.webGLVersion&&Object.assign(this.extensions,e,{colorBufferFloat:t.getExtension("EXT_color_buffer_float")})}handleContextLost(t){t.preventDefault(),setTimeout((()=>{this.gl.isContextLost()&&this.extensions.loseContext&&this.extensions.loseContext.restoreContext()}),0)}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){const t=this.renderer.view;this.renderer=null,void 0!==t.removeEventListener&&(t.removeEventListener("webglcontextlost",this.handleContextLost),t.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(t){const e=t.getContextAttributes(),s="WebGL2RenderingContext"in globalThis&&t instanceof globalThis.WebGL2RenderingContext;s&&(this.webGLVersion=2),e&&!e.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const i=s||!!t.getExtension("OES_element_index_uint");this.supports.uint32Indices=i,i||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}Ni.defaultOptions={context:null,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"},Ni.extension={type:rs.RendererSystem,name:"context"},os.add(Ni);class Li extends gs{upload(t,e,s){const i=t.gl;i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.alphaMode===m.UNPACK);const r=e.realWidth,n=e.realHeight;return s.width===r&&s.height===n?i.texSubImage2D(e.target,0,0,0,r,n,e.format,s.type,this.data):(s.width=r,s.height=n,i.texImage2D(e.target,0,s.internalFormat,r,n,0,e.format,s.type,this.data)),!0}}class Gi{constructor(t,e){this.width=Math.round(t||100),this.height=Math.round(e||100),this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new ms("disposeFramebuffer"),this.multisample=T.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(t=0,e){return this.colorTextures[t]=e||new ys(null,{scaleMode:c.NEAREST,resolution:1,mipmap:f.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(t){return this.depthTexture=t||new ys(new Li(null,{width:this.width,height:this.height}),{scaleMode:c.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:f.OFF,format:h.DEPTH_COMPONENT,type:u.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(t,e){if(t=Math.round(t),e=Math.round(e),t!==this.width||e!==this.height){this.width=t,this.height=e,this.dirtyId++,this.dirtySize++;for(let s=0;s{const s=this.source;this.url=s.src;const i=()=>{this.destroyed||(s.onload=null,s.onerror=null,this.resize(s.width,s.height),this._load=null,this.createBitmap?t(this.process()):t(this))};s.complete&&s.src?i():(s.onload=i,s.onerror=t=>{e(t),this.onError.emit(t)})}))),this._load}process(){const t=this.source;if(null!==this._process)return this._process;if(null!==this.bitmap||!globalThis.createImageBitmap)return Promise.resolve(this);const e=globalThis.createImageBitmap,s=!t.crossOrigin||"anonymous"===t.crossOrigin;return this._process=fetch(t.src,{mode:s?"cors":"no-cors"}).then((t=>t.blob())).then((s=>e(s,0,0,t.width,t.height,{premultiplyAlpha:null===this.alphaMode||this.alphaMode===m.UNPACK?"premultiply":"none"}))).then((t=>this.destroyed?Promise.reject():(this.bitmap=t,this.update(),this._process=null,Promise.resolve(this)))),this._process}upload(t,e,s){if("number"==typeof this.alphaMode&&(e.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(t,e,s);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(t,e,s,this.bitmap),!this.preserveBitmap){let t=!0;const i=e._glTextures;for(const r in i){const n=i[r];if(n!==s&&n.dirtyId!==e.dirtyId){t=!1;break}}t&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(t){return"undefined"!=typeof HTMLImageElement&&("string"==typeof t||t instanceof HTMLImageElement)}}class Hi{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(t,e,s){const i=e.width,r=e.height;if(s){const e=t.width/2/i,n=t.height/2/r,a=t.x/i+e,o=t.y/r+n;s=Ks.add(s,Ks.NW),this.x0=a+e*Ks.uX(s),this.y0=o+n*Ks.uY(s),s=Ks.add(s,2),this.x1=a+e*Ks.uX(s),this.y1=o+n*Ks.uY(s),s=Ks.add(s,2),this.x2=a+e*Ks.uX(s),this.y2=o+n*Ks.uY(s),s=Ks.add(s,2),this.x3=a+e*Ks.uX(s),this.y3=o+n*Ks.uY(s)}else this.x0=t.x/i,this.y0=t.y/r,this.x1=(t.x+t.width)/i,this.y1=t.y/r,this.x2=(t.x+t.width)/i,this.y2=(t.y+t.height)/r,this.x3=t.x/i,this.y3=(t.y+t.height)/r;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}toString(){return`[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`}}const Vi=new Hi;function zi(t){t.destroy=function(){},t.on=function(){},t.once=function(){},t.emit=function(){}}class Wi extends W{constructor(t,e,s,i,r,n,a){if(super(),this.noFrame=!1,e||(this.noFrame=!0,e=new Ls(0,0,1,1)),t instanceof Wi&&(t=t.baseTexture),this.baseTexture=t,this._frame=e,this.trim=i,this.valid=!1,this._uvs=Vi,this.uvMatrix=null,this.orig=s||e,this._rotate=Number(r||0),!0===r)this._rotate=2;else if(this._rotate%2!=0)throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");this.defaultAnchor=n?new Bs(n.x,n.y):new Bs(0,0),this.defaultBorders=a,this._updateID=0,this.textureCacheIds=[],t.valid?this.noFrame?t.valid&&this.onBaseTextureUpdated(t):this.frame=e:t.once("loaded",this.onBaseTextureUpdated,this),this.noFrame&&t.on("update",this.onBaseTextureUpdated,this)}update(){this.baseTexture.resource&&this.baseTexture.resource.update()}onBaseTextureUpdated(t){if(this.noFrame){if(!this.baseTexture.valid)return;this._frame.width=t.width,this._frame.height=t.height,this.valid=!0,this.updateUvs()}else this.frame=this._frame;this.emit("update",this)}destroy(t){if(this.baseTexture){if(t){const{resource:t}=this.baseTexture;(null==t?void 0:t.url)&&je[t.url]&&Wi.removeFromCache(t.url),this.baseTexture.destroy()}this.baseTexture.off("loaded",this.onBaseTextureUpdated,this),this.baseTexture.off("update",this.onBaseTextureUpdated,this),this.baseTexture=null}this._frame=null,this._uvs=null,this.trim=null,this.orig=null,this.valid=!1,Wi.removeFromCache(this),this.textureCacheIds=null}clone(){var t;const e=this._frame.clone(),s=this._frame===this.orig?e:this.orig.clone(),i=new Wi(this.baseTexture,!this.noFrame&&e,s,null==(t=this.trim)?void 0:t.clone(),this.rotate,this.defaultAnchor,this.defaultBorders);return this.noFrame&&(i._frame=e),i}updateUvs(){this._uvs===Vi&&(this._uvs=new Hi),this._uvs.set(this._frame,this.baseTexture,this.rotate),this._updateID++}static from(t,e={},s=A.STRICT_TEXTURE_CACHE){const i="string"==typeof t;let r=null;if(i)r=t;else if(t instanceof ys){if(!t.cacheId){const s=(null==e?void 0:e.pixiIdPrefix)||"pixiid";t.cacheId=`${s}-${Ve()}`,ys.addToCache(t,t.cacheId)}r=t.cacheId}else{if(!t._pixiId){const s=(null==e?void 0:e.pixiIdPrefix)||"pixiid";t._pixiId=`${s}_${Ve()}`}r=t._pixiId}let n=je[r];if(i&&s&&!n)throw new Error(`The cacheId "${r}" does not exist in TextureCache.`);return n||t instanceof ys?!n&&t instanceof ys&&(n=new Wi(t),Wi.addToCache(n,r)):(e.resolution||(e.resolution=ss(t)),n=new Wi(new ys(t,e)),n.baseTexture.cacheId=r,ys.addToCache(n.baseTexture,r),Wi.addToCache(n,r)),n}static fromURL(t,e){const s=Object.assign({autoLoad:!1},null==e?void 0:e.resourceOptions),i=Wi.from(t,Object.assign({resourceOptions:s},e),!1),r=i.baseTexture.resource;return i.baseTexture.valid?Promise.resolve(i):r.load().then((()=>Promise.resolve(i)))}static fromBuffer(t,e,s,i){return new Wi(ys.fromBuffer(t,e,s,i))}static fromLoader(t,e,s,i){const r=new ys(t,Object.assign({scaleMode:ys.defaultOptions.scaleMode,resolution:ss(e)},i)),{resource:n}=r;n instanceof Xi&&(n.url=e);const a=new Wi(r);return s||(s=e),ys.addToCache(a.baseTexture,s),Wi.addToCache(a,s),s!==e&&(ys.addToCache(a.baseTexture,e),Wi.addToCache(a,e)),a.baseTexture.valid?Promise.resolve(a):new Promise((t=>{a.baseTexture.once("loaded",(()=>t(a)))}))}static addToCache(t,e){e&&(t.textureCacheIds.includes(e)||t.textureCacheIds.push(e),je[e]&&je[e]!==t&&console.warn(`Texture added to the cache with an id [${e}] that already had an entry`),je[e]=t)}static removeFromCache(t){if("string"==typeof t){const e=je[t];if(e){const s=e.textureCacheIds.indexOf(t);return s>-1&&e.textureCacheIds.splice(s,1),delete je[t],e}}else if(null!=t&&t.textureCacheIds){for(let e=0;ethis.baseTexture.width,a=s+r>this.baseTexture.height;if(n||a){const t=n&&a?"and":"or",o=`X: ${e} + ${i} = ${e+i} > ${this.baseTexture.width}`,h=`Y: ${s} + ${r} = ${s+r} > ${this.baseTexture.height}`;throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${o} ${t} ${h}`)}this.valid=i&&r&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=t),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(t){this._rotate=t,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return Wi._EMPTY||(Wi._EMPTY=new Wi(new ys),zi(Wi._EMPTY),zi(Wi._EMPTY.baseTexture)),Wi._EMPTY}static get WHITE(){if(!Wi._WHITE){const t=A.ADAPTER.createCanvas(16,16),e=t.getContext("2d");t.width=16,t.height=16,e.fillStyle="white",e.fillRect(0,0,16,16),Wi._WHITE=new Wi(ys.from(t)),zi(Wi._WHITE),zi(Wi._WHITE.baseTexture)}return Wi._WHITE}}class Yi extends Wi{constructor(t,e){super(t,e),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(t){this.framebuffer.multisample=t}resize(t,e,s=!0){const i=this.baseTexture.resolution,r=Math.round(t*i)/i,n=Math.round(e*i)/i;this.valid=r>0&&n>0,this._frame.width=this.orig.width=r,this._frame.height=this.orig.height=n,s&&this.baseTexture.resize(r,n),this.updateUvs()}setResolution(t){const{baseTexture:e}=this;e.resolution!==t&&(e.setResolution(t),this.resize(e.width,e.height,!1))}static create(t){return new Yi(new Ui(t))}}class ji{constructor(t){this.texturePool={},this.textureOptions=t||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(t,e,s=T.NONE){const i=new Ui(Object.assign({width:t,height:e,resolution:1,multisample:s},this.textureOptions));return new Yi(i)}getOptimalTexture(t,e,s=1,i=T.NONE){let r;t=Math.ceil(t*s-1e-6),e=Math.ceil(e*s-1e-6),this.enableFullScreen&&t===this._pixelsWidth&&e===this._pixelsHeight?r=i>1?-i:-1:(r=((65535&(t=Le(t)))<<16|65535&(e=Le(e)))>>>0,i>1&&(r+=4294967296*i)),this.texturePool[r]||(this.texturePool[r]=[]);let n=this.texturePool[r].pop();return n||(n=this.createTexture(t,e,i)),n.filterPoolKey=r,n.setResolution(s),n}getFilterTexture(t,e,s){const i=this.getOptimalTexture(t.width,t.height,e||t.resolution,s||T.NONE);return i.filterFrame=t.filterFrame,i}returnTexture(t){const e=t.filterPoolKey;t.filterFrame=null,this.texturePool[e].push(t)}returnFilterTexture(t){this.returnTexture(t)}clear(t){if(t=!1!==t)for(const t in this.texturePool){const e=this.texturePool[t];if(e)for(let t=0;t0&&t.height>0;for(const t in this.texturePool){if(!(Number(t)<0))continue;const e=this.texturePool[t];if(e)for(let t=0;t1&&(i=this.getOptimalFilterTexture(t.width,t.height,e.resolution),i.filterFrame=t.filterFrame),s[r].apply(this,t,i,_.CLEAR,e);const n=t;t=i,i=n}s[r].apply(this,t,o.renderTexture,_.BLEND,e),r>1&&e.multisample>1&&this.returnFilterTexture(e.renderTexture),this.returnFilterTexture(t),this.returnFilterTexture(i)}e.clear(),this.statePool.push(e)}bindAndClear(t,e=_.CLEAR){const{renderTexture:s,state:i}=this.renderer;if(t===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,null!=t&&t.filterFrame){const e=this.tempRect;e.x=0,e.y=0,e.width=t.filterFrame.width,e.height=t.filterFrame.height,s.bind(t,t.filterFrame,e)}else t!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?s.bind(t):this.renderer.renderTexture.bind(t,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);const r=1&i.stateId||this.forceClear;(e===_.CLEAR||e===_.BLIT&&r)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(t,e,s,i){const r=this.renderer;r.state.set(t.state),this.bindAndClear(s,i),t.uniforms.uSampler=e,t.uniforms.filterGlobals=this.globalUniforms,r.shader.bind(t),t.legacy=!!t.program.attributeData.aTextureCoord,t.legacy?(this.quadUv.map(e._frame,e.filterFrame),r.geometry.bind(this.quadUv),r.geometry.draw(o.TRIANGLES)):(r.geometry.bind(this.quad),r.geometry.draw(o.TRIANGLE_STRIP))}calculateSpriteMatrix(t,e){const{sourceFrame:s,destinationFrame:i}=this.activeState,{orig:r}=e._texture,n=t.set(i.width,0,0,i.height,s.x,s.y),a=e.worldTransform.copyTo(Hs.TEMP_MATRIX);return a.invert(),n.prepend(a),n.scale(1/r.width,1/r.height),n.translate(e.anchor.x,e.anchor.y),n}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(t,e,s=1,i=T.NONE){return this.texturePool.getOptimalTexture(t,e,s,i)}getFilterTexture(t,e,s){if("number"==typeof t){const s=t;t=e,e=s}t=t||this.activeState.renderTexture;const i=this.texturePool.getOptimalTexture(t.width,t.height,e||t.resolution,s||T.NONE);return i.filterFrame=t.filterFrame,i}returnFilterTexture(t){this.texturePool.returnTexture(t)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(t,e){const s=Zi[0],i=Zi[1],r=Zi[2],n=Zi[3];s.set(e.left,e.top),i.set(e.left,e.bottom),r.set(e.right,e.top),n.set(e.right,e.bottom),t.apply(s,s),t.apply(i,i),t.apply(r,r),t.apply(n,n);const a=Math.min(s.x,i.x,r.x,n.x),o=Math.min(s.y,i.y,r.y,n.y),h=Math.max(s.x,i.x,r.x,n.x),l=Math.max(s.y,i.y,r.y,n.y);e.x=a,e.y=o,e.width=h-a,e.height=l-o}roundFrame(t,e,s,i,r){if(!(t.width<=0||t.height<=0||s.width<=0||s.height<=0)){if(r){const{a:t,b:e,c:s,d:i}=r;if((Math.abs(e)>1e-4||Math.abs(s)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(i)>1e-4))return}(r=r?Ji.copyFrom(r):Ji.identity()).translate(-s.x,-s.y).scale(i.width/s.width,i.height/s.height).translate(i.x,i.y),this.transformAABB(r,t),t.ceil(e),this.transformAABB(r.invert(),t)}}}tr.extension={type:rs.RendererSystem,name:"filter"},os.add(tr);class er{constructor(t){this.framebuffer=t,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=T.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}const sr=new Ls;class ir{constructor(t){this.renderer=t,this.managedFramebuffers=[],this.unknownFramebuffer=new Gi(10,10),this.msaaSamples=null}contextChange(){this.disposeAll(!0);const t=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new Ls,this.hasMRT=!0,this.writeDepthTexture=!0,1===this.renderer.context.webGLVersion){let e=this.renderer.context.extensions.drawBuffers,s=this.renderer.context.extensions.depthTexture;A.PREFER_ENV===i.WEBGL_LEGACY&&(e=null,s=null),e?t.drawBuffers=t=>e.drawBuffersWEBGL(t):(this.hasMRT=!1,t.drawBuffers=()=>{}),s||(this.writeDepthTexture=!1)}else this.msaaSamples=t.getInternalformatParameter(t.RENDERBUFFER,t.RGBA8,t.SAMPLES)}bind(t,e,s=0){const{gl:i}=this;if(t){const r=t.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(t);this.current!==t&&(this.current=t,i.bindFramebuffer(i.FRAMEBUFFER,r.framebuffer)),r.mipLevel!==s&&(t.dirtyId++,t.dirtyFormat++,r.mipLevel=s),r.dirtyId!==t.dirtyId&&(r.dirtyId=t.dirtyId,r.dirtyFormat!==t.dirtyFormat?(r.dirtyFormat=t.dirtyFormat,r.dirtySize=t.dirtySize,this.updateFramebuffer(t,s)):r.dirtySize!==t.dirtySize&&(r.dirtySize=t.dirtySize,this.resizeFramebuffer(t)));for(let e=0;e>s,i=e.height>>s,r=t/e.width;this.setViewport(e.x*r,e.y*r,t,i)}else{const e=t.width>>s,i=t.height>>s;this.setViewport(0,0,e,i)}}else this.current&&(this.current=null,i.bindFramebuffer(i.FRAMEBUFFER,null)),e?this.setViewport(e.x,e.y,e.width,e.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(t,e,s,i){const r=this.viewport;t=Math.round(t),e=Math.round(e),s=Math.round(s),i=Math.round(i),(r.width!==s||r.height!==i||r.x!==t||r.y!==e)&&(r.x=t,r.y=e,r.width=s,r.height=i,this.gl.viewport(t,e,s,i))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(t,e,s,i,r=n.COLOR|n.DEPTH){const{gl:a}=this;a.clearColor(t,e,s,i),a.clear(r)}initFramebuffer(t){const{gl:e}=this,s=new er(e.createFramebuffer());return s.multisample=this.detectSamples(t.multisample),t.glFramebuffers[this.CONTEXT_UID]=s,this.managedFramebuffers.push(t),t.disposeRunner.add(this),s}resizeFramebuffer(t){const{gl:e}=this,s=t.glFramebuffers[this.CONTEXT_UID];s.stencil&&(e.bindRenderbuffer(e.RENDERBUFFER,s.stencil),s.msaaBuffer?e.renderbufferStorageMultisample(e.RENDERBUFFER,s.multisample,e.DEPTH24_STENCIL8,t.width,t.height):e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,t.width,t.height));const i=t.colorTextures;let r=i.length;e.drawBuffers||(r=Math.min(r,1));for(let n=0;n1&&this.canMultisampleFramebuffer(t)?i.msaaBuffer=i.msaaBuffer||s.createRenderbuffer():i.msaaBuffer&&(s.deleteRenderbuffer(i.msaaBuffer),i.msaaBuffer=null,i.blitFramebuffer&&(i.blitFramebuffer.dispose(),i.blitFramebuffer=null));const a=[];for(let o=0;o1&&s.drawBuffers(a),t.depthTexture&&this.writeDepthTexture){const i=t.depthTexture;this.renderer.texture.bind(i,0),s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,i._glTextures[this.CONTEXT_UID].texture,e)}!t.stencil&&!t.depth||t.depthTexture&&this.writeDepthTexture?i.stencil&&(s.deleteRenderbuffer(i.stencil),i.stencil=null):(i.stencil=i.stencil||s.createRenderbuffer(),s.bindRenderbuffer(s.RENDERBUFFER,i.stencil),i.msaaBuffer?s.renderbufferStorageMultisample(s.RENDERBUFFER,i.multisample,s.DEPTH24_STENCIL8,t.width,t.height):s.renderbufferStorage(s.RENDERBUFFER,s.DEPTH_STENCIL,t.width,t.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.RENDERBUFFER,i.stencil))}canMultisampleFramebuffer(t){return 1!==this.renderer.context.webGLVersion&&t.colorTextures.length<=1&&!t.depthTexture}detectSamples(t){const{msaaSamples:e}=this;let s=T.NONE;if(t<=1||null===e)return s;for(let i=0;i=0&&this.managedFramebuffers.splice(r,1),t.disposeRunner.remove(this),e||(i.deleteFramebuffer(s.framebuffer),s.msaaBuffer&&i.deleteRenderbuffer(s.msaaBuffer),s.stencil&&i.deleteRenderbuffer(s.stencil)),s.blitFramebuffer&&this.disposeFramebuffer(s.blitFramebuffer,e)}disposeAll(t){const e=this.managedFramebuffers;this.managedFramebuffers=[];for(let s=0;se.createVertexArrayOES(),t.bindVertexArray=t=>e.bindVertexArrayOES(t),t.deleteVertexArray=t=>e.deleteVertexArrayOES(t)):(this.hasVao=!1,t.createVertexArray=()=>null,t.bindVertexArray=()=>null,t.deleteVertexArray=()=>null)}if(2!==e.webGLVersion){const e=t.getExtension("ANGLE_instanced_arrays");e?(t.vertexAttribDivisor=(t,s)=>e.vertexAttribDivisorANGLE(t,s),t.drawElementsInstanced=(t,s,i,r,n)=>e.drawElementsInstancedANGLE(t,s,i,r,n),t.drawArraysInstanced=(t,s,i,r)=>e.drawArraysInstancedANGLE(t,s,i,r)):this.hasInstance=!1}this.canUseUInt32ElementIndex=2===e.webGLVersion||!!e.extensions.uint32ElementIndex}bind(t,e){e=e||this.renderer.shader.shader;const{gl:s}=this;let i=t.glVertexArrayObjects[this.CONTEXT_UID],r=!1;i||(this.managedGeometries[t.id]=t,t.disposeRunner.add(this),t.glVertexArrayObjects[this.CONTEXT_UID]=i={},r=!0);const n=i[e.program.id]||this.initGeometryVao(t,e,r);this._activeGeometry=t,this._activeVao!==n&&(this._activeVao=n,this.hasVao?s.bindVertexArray(n):this.activateVao(t,e.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const t=this._activeGeometry,e=this.renderer.buffer;for(let s=0;s0?this.maskStack[this.maskStack.length-1]._colorMask:15;s!==e&&this.renderer.gl.colorMask(0!=(1&s),0!=(2&s),0!=(4&s),0!=(8&s))}destroy(){this.renderer=null}}ur.extension={type:rs.RendererSystem,name:"mask"},os.add(ur);class dr{constructor(t){this.renderer=t,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(t){const{gl:e}=this.renderer,s=this.getStackLength();this.maskStack=t;const i=this.getStackLength();i!==s&&(0===i?e.disable(this.glConst):(e.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const cr=new Hs,pr=[],fr=class extends dr{constructor(t){super(t),this.glConst=A.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const t=this.maskStack[this.maskStack.length-1];return t?t._scissorCounter:0}calcScissorRect(t){var e;if(t._scissorRectLocal)return;const s=t._scissorRect,{maskObject:i}=t,{renderer:r}=this,n=r.renderTexture,a=i.getBounds(!0,null!=(e=pr.pop())?e:new Ls);this.roundFrameToPixels(a,n.current?n.current.resolution:r.resolution,n.sourceFrame,n.destinationFrame,r.projection.transform),s&&a.fit(s),t._scissorRectLocal=a}static isMatrixRotated(t){if(!t)return!1;const{a:e,b:s,c:i,d:r}=t;return(Math.abs(s)>1e-4||Math.abs(i)>1e-4)&&(Math.abs(e)>1e-4||Math.abs(r)>1e-4)}testScissor(t){const{maskObject:e}=t;if(!e.isFastRect||!e.isFastRect()||fr.isMatrixRotated(e.worldTransform)||fr.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(t);const s=t._scissorRectLocal;return s.width>0&&s.height>0}roundFrameToPixels(t,e,s,i,r){fr.isMatrixRotated(r)||((r=r?cr.copyFrom(r):cr.identity()).translate(-s.x,-s.y).scale(i.width/s.width,i.height/s.height).translate(i.x,i.y),this.renderer.filter.transformAABB(r,t),t.fit(i),t.x=Math.round(t.x*e),t.y=Math.round(t.y*e),t.width=Math.round(t.width*e),t.height=Math.round(t.height*e))}push(t){t._scissorRectLocal||this.calcScissorRect(t);const{gl:e}=this.renderer;t._scissorRect||e.enable(e.SCISSOR_TEST),t._scissorCounter++,t._scissorRect=t._scissorRectLocal,this._useCurrent()}pop(t){const{gl:e}=this.renderer;t&&pr.push(t._scissorRectLocal),this.getStackLength()>0?this._useCurrent():e.disable(e.SCISSOR_TEST)}_useCurrent(){const t=this.maskStack[this.maskStack.length-1]._scissorRect;let e;e=this.renderer.renderTexture.current?t.y:this.renderer.height-t.height-t.y,this.renderer.gl.scissor(t.x,e,t.width,t.height)}};let mr=fr;mr.extension={type:rs.RendererSystem,name:"scissor"},os.add(mr);class _r extends dr{constructor(t){super(t),this.glConst=A.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const t=this.maskStack[this.maskStack.length-1];return t?t._stencilCounter:0}push(t){const e=t.maskObject,{gl:s}=this.renderer,i=t._stencilCounter;0===i&&(this.renderer.framebuffer.forceStencil(),s.clearStencil(0),s.clear(s.STENCIL_BUFFER_BIT),s.enable(s.STENCIL_TEST)),t._stencilCounter++;const r=t._colorMask;0!==r&&(t._colorMask=0,s.colorMask(!1,!1,!1,!1)),s.stencilFunc(s.EQUAL,i,4294967295),s.stencilOp(s.KEEP,s.KEEP,s.INCR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,0!==r&&(t._colorMask=r,s.colorMask(0!=(1&r),0!=(2&r),0!=(4&r),0!=(8&r))),this._useCurrent()}pop(t){const e=this.renderer.gl;if(0===this.getStackLength())e.disable(e.STENCIL_TEST);else{const s=0!==this.maskStack.length?this.maskStack[this.maskStack.length-1]:null,i=s?s._colorMask:15;0!==i&&(s._colorMask=0,e.colorMask(!1,!1,!1,!1)),e.stencilOp(e.KEEP,e.KEEP,e.DECR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,0!==i&&(s._colorMask=i,e.colorMask(0!=(1&i),0!=(2&i),0!=(4&i),0!=(8&i))),this._useCurrent()}}_useCurrent(){const t=this.renderer.gl;t.stencilFunc(t.EQUAL,this.getStackLength(),4294967295),t.stencilOp(t.KEEP,t.KEEP,t.KEEP)}}_r.extension={type:rs.RendererSystem,name:"stencil"},os.add(_r);class gr{constructor(t){this.renderer=t,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get:()=>(Kt("7.0.0","renderer.plugins.extract has moved to renderer.extract"),t.extract)},prepare:{enumerable:!1,get:()=>(Kt("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),t.prepare)},interaction:{enumerable:!1,get:()=>(Kt("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),t.events)}})}init(){const t=this.rendererPlugins;for(const e in t)this.plugins[e]=new t[e](this.renderer)}destroy(){for(const t in this.plugins)this.plugins[t].destroy(),this.plugins[t]=null}}gr.extension={type:[rs.RendererSystem,rs.CanvasRendererSystem],name:"_plugin"},os.add(gr);class xr{constructor(t){this.renderer=t,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new Hs,this.transform=null}update(t,e,s,i){this.destinationFrame=t||this.destinationFrame||this.defaultFrame,this.sourceFrame=e||this.sourceFrame||t,this.calculateProjection(this.destinationFrame,this.sourceFrame,s,i),this.transform&&this.projectionMatrix.append(this.transform);const r=this.renderer;r.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,r.globalUniforms.update(),r.shader.shader&&r.shader.syncUniformGroup(r.shader.shader.uniforms.globals)}calculateProjection(t,e,s,i){const r=this.projectionMatrix,n=i?-1:1;r.identity(),r.a=1/e.width*2,r.d=n*(1/e.height*2),r.tx=-1-e.x*r.a,r.ty=-n-e.y*r.d}setTransform(t){}destroy(){this.renderer=null}}xr.extension={type:rs.RendererSystem,name:"projection"},os.add(xr);const vr=new Js;class yr{constructor(t){this.renderer=t,this._tempMatrix=new Hs}generateTexture(t,e){const s=e||{},{region:i}=s,r=zn(s,["region"]),n=i||t.getLocalBounds(null,!0);0===n.width&&(n.width=1),0===n.height&&(n.height=1);const a=Yi.create(bt({width:n.width,height:n.height},r));this._tempMatrix.tx=-n.x,this._tempMatrix.ty=-n.y;const o=t.transform;return t.transform=vr,this.renderer.render(t,{renderTexture:a,transform:this._tempMatrix,skipUpdateTransform:!!t.parent,blit:!0}),t.transform=o,a}destroy(){}}yr.extension={type:[rs.RendererSystem,rs.CanvasRendererSystem],name:"textureGenerator"},os.add(yr);const Tr=new Ls,br=new Ls;class Er{constructor(t){this.renderer=t,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new Ls,this.destinationFrame=new Ls,this.viewportFrame=new Ls}contextChange(){var t;const e=null==(t=this.renderer)?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}bind(t=null,e,s){const i=this.renderer;let r,n,a;this.current=t,t?(r=t.baseTexture,a=r.resolution,e||(Tr.width=t.frame.width,Tr.height=t.frame.height,e=Tr),s||(br.x=t.frame.x,br.y=t.frame.y,br.width=e.width,br.height=e.height,s=br),n=r.framebuffer):(a=i.resolution,e||(Tr.width=i._view.screen.width,Tr.height=i._view.screen.height,e=Tr),s||((s=Tr).width=e.width,s.height=e.height));const o=this.viewportFrame;o.x=s.x*a,o.y=s.y*a,o.width=s.width*a,o.height=s.height*a,t||(o.y=i.view.height-(o.y+o.height)),o.ceil(),this.renderer.framebuffer.bind(n,o),this.renderer.projection.update(s,e,a,!n),t?this.renderer.mask.setMaskStack(r.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(e),this.destinationFrame.copyFrom(s)}clear(t,e){const s=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,i=Ie.shared.setValue(t||s);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&i.premultiply(i.alpha);const r=this.destinationFrame,n=this.current?this.current.baseTexture:this.renderer._view.screen,a=r.width!==n.width||r.height!==n.height;if(a){let{x:t,y:e,width:s,height:i}=this.viewportFrame;t=Math.round(t),e=Math.round(e),s=Math.round(s),i=Math.round(i),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(t,e,s,i)}this.renderer.framebuffer.clear(i.red,i.green,i.blue,i.alpha,e),a&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}Er.extension={type:rs.RendererSystem,name:"renderTexture"},os.add(Er);class Ar{constructor(t,e){this.program=t,this.uniformData=e,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function Rr(t,e){var s;const i=ti(t,t.VERTEX_SHADER,e.vertexSrc),r=ti(t,t.FRAGMENT_SHADER,e.fragmentSrc),n=t.createProgram();t.attachShader(n,i),t.attachShader(n,r);const a=null==(s=e.extra)?void 0:s.transformFeedbackVaryings;if(a&&("function"!=typeof t.transformFeedbackVaryings?console.warn("TransformFeedback is not supported but TransformFeedbackVaryings are given."):t.transformFeedbackVaryings(n,a.names,"separate"===a.bufferMode?t.SEPARATE_ATTRIBS:t.INTERLEAVED_ATTRIBS)),t.linkProgram(n),t.getProgramParameter(n,t.LINK_STATUS)||function(t,e,s,i){t.getProgramParameter(e,t.LINK_STATUS)||(t.getShaderParameter(s,t.COMPILE_STATUS)||ui(t,s),t.getShaderParameter(i,t.COMPILE_STATUS)||ui(t,i),console.error("PixiJS Error: Could not initialize shader."),""!==t.getProgramInfoLog(e)&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",t.getProgramInfoLog(e)))}(t,n,i,r),e.attributeData=function(t,e){const s={},i=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let r=0;rt>e?1:-1));for(let i=0;i({data:t,offset:0,dataLen:0,dirty:0})));let s=0,i=0,r=0;for(let t=0;t1&&(s=Math.max(s,16)*n.data.size),n.dataLen=s,i%s!=0&&i<16){const t=i%s%16;i+=t,r+=t}i+s>16?(r=16*Math.ceil(r/16),n.offset=r,r+=s,i=s):(n.offset=r,i+=s,r+=s)}return r=16*Math.ceil(r/16),{uboElements:e,size:r}}function Cr(t,e){const s=[];for(const i in t)e[i]&&s.push(e[i]);return s.sort(((t,e)=>t.index-e.index)),s}function Dr(t,e){if(!t.autoManage)return{size:0,syncFunc:Sr};const s=Cr(t.uniforms,e),{uboElements:i,size:r}=Mr(s),n=["\n var v = null;\n var v2 = null;\n var cv = null;\n var t = 0;\n var gl = renderer.gl\n var index = 0;\n var data = buffer.data;\n "];for(let e=0;e1){const t=ci(s.data.type),e=Math.max(Ir[s.data.type]/16,1),i=t/e,r=(4-i%4)%4;n.push(`\n cv = ud.${a}.value;\n v = uv.${a};\n offset = ${s.offset/4};\n\n t = 0;\n\n for(var i=0; i < ${s.data.size*e}; i++)\n {\n for(var j = 0; j < ${i}; j++)\n {\n data[offset++] = v[t++];\n }\n offset += ${r};\n }\n\n `)}else{const t=wr[s.data.type];n.push(`\n cv = ud.${a}.value;\n v = uv.${a};\n offset = ${s.offset/4};\n ${t};\n `)}}return n.push("\n renderer.buffer.update(buffer);\n "),{size:r,syncFunc:new Function("ud","uv","renderer","syncData","buffer",n.join("\n"))}}let Pr=0;const Or={textureCount:0,uboCount:0};class Fr{constructor(t){this.destroyed=!1,this.renderer=t,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=Pr++}systemCheck(){if(!xi())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(t){this.gl=t,this.reset()}bind(t,e){t.disposeRunner.add(this),t.uniforms.globals=this.renderer.globalUniforms;const s=t.program,i=s.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(t);return this.shader=t,this.program!==s&&(this.program=s,this.gl.useProgram(i.program)),e||(Or.textureCount=0,Or.uboCount=0,this.syncUniformGroup(t.uniformGroup,Or)),i}setUniforms(t){const e=this.shader.program,s=e.glPrograms[this.renderer.CONTEXT_UID];e.syncUniforms(s.uniformData,t,this.renderer)}syncUniformGroup(t,e){const s=this.getGlProgram();(!t.static||t.dirtyId!==s.uniformDirtyGroups[t.id])&&(s.uniformDirtyGroups[t.id]=t.dirtyId,this.syncUniforms(t,s,e))}syncUniforms(t,e,s){(t.syncUniforms[this.shader.program.id]||this.createSyncGroups(t))(e.uniformData,t.uniforms,this.renderer,s)}createSyncGroups(t){const e=this.getSignature(t,this.shader.program.uniformData,"u");return this.cache[e]||(this.cache[e]=function(t,e){var s;const i=["\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n "];for(const r in t.uniforms){const n=e[r];if(!n){null!=(s=t.uniforms[r])&&s.group&&(t.uniforms[r].ubo?i.push(`\n renderer.shader.syncUniformBufferGroup(uv.${r}, '${r}');\n `):i.push(`\n renderer.shader.syncUniformGroup(uv.${r}, syncData);\n `));continue}const a=t.uniforms[r];let o=!1;for(let t=0;t>=1,s++;this.stateId=t.data}for(let e=0;et.systems[e])),i=[...s,...Object.keys(t.systems).filter((t=>!s.includes(t)))];for(const e of i)this.addSystem(t.systems[e],e)}addRunners(...t){t.forEach((t=>{this.runners[t]=new ms(t)}))}addSystem(t,e){const s=new t(this);if(this[e])throw new Error(`Whoops! The name "${e}" is already in use`);this[e]=s,this._systemsHash[e]=s;for(const t in this.runners)this.runners[t].add(s);return this}emitWithCustomOptions(t,e){const s=Object.keys(this._systemsHash);t.items.forEach((i=>{const r=s.find((t=>this._systemsHash[t]===i));i[t.name](e[r])}))}destroy(){Object.values(this.runners).forEach((t=>{t.destroy()})),this._systemsHash={}}}const Ur=class{constructor(t){this.renderer=t,this.count=0,this.checkCount=0,this.maxIdle=Ur.defaultMaxIdle,this.checkCountMax=Ur.defaultCheckCountMax,this.mode=Ur.defaultMode}postrender(){!this.renderer.objectRenderer.renderingToScreen||(this.count++,this.mode!==g.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const t=this.renderer.texture,e=t.managedTextures;let s=!1;for(let i=0;ithis.maxIdle&&(t.destroyTexture(r,!0),e[i]=null,s=!0)}if(s){let t=0;for(let s=0;s=0;e--)this.unload(t.children[e])}destroy(){this.renderer=null}};let kr=Ur;kr.defaultMode=g.AUTO,kr.defaultMaxIdle=3600,kr.defaultCheckCountMax=600,kr.extension={type:rs.RendererSystem,name:"textureGC"},os.add(kr);class Xr{constructor(t){this.texture=t,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=u.UNSIGNED_BYTE,this.internalFormat=h.RGBA,this.samplerType=0}}class Hr{constructor(t){this.renderer=t,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new ys,this.hasIntegerTextures=!1}contextChange(){const t=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=function(t){let e;return e="WebGL2RenderingContext"in globalThis&&t instanceof globalThis.WebGL2RenderingContext?{[u.UNSIGNED_BYTE]:{[h.RGBA]:t.RGBA8,[h.RGB]:t.RGB8,[h.RG]:t.RG8,[h.RED]:t.R8,[h.RGBA_INTEGER]:t.RGBA8UI,[h.RGB_INTEGER]:t.RGB8UI,[h.RG_INTEGER]:t.RG8UI,[h.RED_INTEGER]:t.R8UI,[h.ALPHA]:t.ALPHA,[h.LUMINANCE]:t.LUMINANCE,[h.LUMINANCE_ALPHA]:t.LUMINANCE_ALPHA},[u.BYTE]:{[h.RGBA]:t.RGBA8_SNORM,[h.RGB]:t.RGB8_SNORM,[h.RG]:t.RG8_SNORM,[h.RED]:t.R8_SNORM,[h.RGBA_INTEGER]:t.RGBA8I,[h.RGB_INTEGER]:t.RGB8I,[h.RG_INTEGER]:t.RG8I,[h.RED_INTEGER]:t.R8I},[u.UNSIGNED_SHORT]:{[h.RGBA_INTEGER]:t.RGBA16UI,[h.RGB_INTEGER]:t.RGB16UI,[h.RG_INTEGER]:t.RG16UI,[h.RED_INTEGER]:t.R16UI,[h.DEPTH_COMPONENT]:t.DEPTH_COMPONENT16},[u.SHORT]:{[h.RGBA_INTEGER]:t.RGBA16I,[h.RGB_INTEGER]:t.RGB16I,[h.RG_INTEGER]:t.RG16I,[h.RED_INTEGER]:t.R16I},[u.UNSIGNED_INT]:{[h.RGBA_INTEGER]:t.RGBA32UI,[h.RGB_INTEGER]:t.RGB32UI,[h.RG_INTEGER]:t.RG32UI,[h.RED_INTEGER]:t.R32UI,[h.DEPTH_COMPONENT]:t.DEPTH_COMPONENT24},[u.INT]:{[h.RGBA_INTEGER]:t.RGBA32I,[h.RGB_INTEGER]:t.RGB32I,[h.RG_INTEGER]:t.RG32I,[h.RED_INTEGER]:t.R32I},[u.FLOAT]:{[h.RGBA]:t.RGBA32F,[h.RGB]:t.RGB32F,[h.RG]:t.RG32F,[h.RED]:t.R32F,[h.DEPTH_COMPONENT]:t.DEPTH_COMPONENT32F},[u.HALF_FLOAT]:{[h.RGBA]:t.RGBA16F,[h.RGB]:t.RGB16F,[h.RG]:t.RG16F,[h.RED]:t.R16F},[u.UNSIGNED_SHORT_5_6_5]:{[h.RGB]:t.RGB565},[u.UNSIGNED_SHORT_4_4_4_4]:{[h.RGBA]:t.RGBA4},[u.UNSIGNED_SHORT_5_5_5_1]:{[h.RGBA]:t.RGB5_A1},[u.UNSIGNED_INT_2_10_10_10_REV]:{[h.RGBA]:t.RGB10_A2,[h.RGBA_INTEGER]:t.RGB10_A2UI},[u.UNSIGNED_INT_10F_11F_11F_REV]:{[h.RGB]:t.R11F_G11F_B10F},[u.UNSIGNED_INT_5_9_9_9_REV]:{[h.RGB]:t.RGB9_E5},[u.UNSIGNED_INT_24_8]:{[h.DEPTH_STENCIL]:t.DEPTH24_STENCIL8},[u.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[h.DEPTH_STENCIL]:t.DEPTH32F_STENCIL8}}:{[u.UNSIGNED_BYTE]:{[h.RGBA]:t.RGBA,[h.RGB]:t.RGB,[h.ALPHA]:t.ALPHA,[h.LUMINANCE]:t.LUMINANCE,[h.LUMINANCE_ALPHA]:t.LUMINANCE_ALPHA},[u.UNSIGNED_SHORT_5_6_5]:{[h.RGB]:t.RGB},[u.UNSIGNED_SHORT_4_4_4_4]:{[h.RGBA]:t.RGBA},[u.UNSIGNED_SHORT_5_5_5_1]:{[h.RGBA]:t.RGBA}},e}(t);const e=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=e;for(let t=0;t=0;--s){const t=e[s];t&&t._glTextures[i].samplerType!==d.FLOAT&&this.renderer.texture.unbind(t)}}initTexture(t){const e=new Xr(this.gl.createTexture());return e.dirtyId=-1,t._glTextures[this.CONTEXT_UID]=e,this.managedTextures.push(t),t.on("dispose",this.destroyTexture,this),e}initTextureType(t,e){var s,i;e.internalFormat=null!=(i=null==(s=this.internalFormats[t.type])?void 0:s[t.format])?i:t.format,2===this.webGLVersion&&t.type===u.HALF_FLOAT?e.type=this.gl.HALF_FLOAT:e.type=t.type}updateTexture(t){var e;const s=t._glTextures[this.CONTEXT_UID];if(!s)return;const i=this.renderer;if(this.initTextureType(t,s),null!=(e=t.resource)&&e.upload(i,t,s))s.samplerType!==d.FLOAT&&(this.hasIntegerTextures=!0);else{const e=t.realWidth,r=t.realHeight,n=i.gl;(s.width!==e||s.height!==r||s.dirtyId<0)&&(s.width=e,s.height=r,n.texImage2D(t.target,0,s.internalFormat,e,r,0,t.format,s.type,null))}t.dirtyStyleId!==s.dirtyStyleId&&this.updateTextureStyle(t),s.dirtyId=t.dirtyId}destroyTexture(t,e){const{gl:s}=this;if((t=t.castToBaseTexture())._glTextures[this.CONTEXT_UID]&&(this.unbind(t),s.deleteTexture(t._glTextures[this.CONTEXT_UID].texture),t.off("dispose",this.destroyTexture,this),delete t._glTextures[this.CONTEXT_UID],!e)){const e=this.managedTextures.indexOf(t);-1!==e&&ke(this.managedTextures,e,1)}}updateTextureStyle(t){var e;const s=t._glTextures[this.CONTEXT_UID];!s||(t.mipmap!==f.POW2&&2===this.webGLVersion||t.isPowerOfTwo?s.mipmap=t.mipmap>=1:s.mipmap=!1,2===this.webGLVersion||t.isPowerOfTwo?s.wrapMode=t.wrapMode:s.wrapMode=p.CLAMP,null!=(e=t.resource)&&e.style(this.renderer,t,s)||this.setStyle(t,s),s.dirtyStyleId=t.dirtyStyleId)}setStyle(t,e){const s=this.gl;if(e.mipmap&&t.mipmap!==f.ON_MANUAL&&s.generateMipmap(t.target),s.texParameteri(t.target,s.TEXTURE_WRAP_S,e.wrapMode),s.texParameteri(t.target,s.TEXTURE_WRAP_T,e.wrapMode),e.mipmap){s.texParameteri(t.target,s.TEXTURE_MIN_FILTER,t.scaleMode===c.LINEAR?s.LINEAR_MIPMAP_LINEAR:s.NEAREST_MIPMAP_NEAREST);const e=this.renderer.context.extensions.anisotropicFiltering;if(e&&t.anisotropicLevel>0&&t.scaleMode===c.LINEAR){const i=Math.min(t.anisotropicLevel,s.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT));s.texParameterf(t.target,e.TEXTURE_MAX_ANISOTROPY_EXT,i)}}else s.texParameteri(t.target,s.TEXTURE_MIN_FILTER,t.scaleMode===c.LINEAR?s.LINEAR:s.NEAREST);s.texParameteri(t.target,s.TEXTURE_MAG_FILTER,t.scaleMode===c.LINEAR?s.LINEAR:s.NEAREST)}destroy(){this.renderer=null}}Hr.extension={type:rs.RendererSystem,name:"texture"},os.add(Hr);class Vr{constructor(t){this.renderer=t}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(t){const{gl:e,CONTEXT_UID:s}=this,i=t._glTransformFeedbacks[s]||this.createGLTransformFeedback(t);e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,i)}unbind(){const{gl:t}=this;t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(t,e){const{gl:s,renderer:i}=this;e&&i.shader.bind(e),s.beginTransformFeedback(t)}endTransformFeedback(){const{gl:t}=this;t.endTransformFeedback()}createGLTransformFeedback(t){const{gl:e,renderer:s,CONTEXT_UID:i}=this,r=e.createTransformFeedback();t._glTransformFeedbacks[i]=r,e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,r);for(let r=0;rys.defaultOptions.wrapMode,set(t){Kt("7.1.0","settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode"),ys.defaultOptions.wrapMode=t}},SCALE_MODE:{get:()=>ys.defaultOptions.scaleMode,set(t){Kt("7.1.0","settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode"),ys.defaultOptions.scaleMode=t}},MIPMAP_TEXTURES:{get:()=>ys.defaultOptions.mipmap,set(t){Kt("7.1.0","settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap"),ys.defaultOptions.mipmap=t}},ANISOTROPIC_LEVEL:{get:()=>ys.defaultOptions.anisotropicLevel,set(t){Kt("7.1.0","settings.ANISOTROPIC_LEVEL is deprecated, use BaseTexture.defaultOptions.anisotropicLevel"),ys.defaultOptions.anisotropicLevel=t}},FILTER_RESOLUTION:{get:()=>(Kt("7.1.0","settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution"),Pi.defaultResolution),set(t){Pi.defaultResolution=t}},FILTER_MULTISAMPLE:{get:()=>(Kt("7.1.0","settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample"),Pi.defaultMultisample),set(t){Pi.defaultMultisample=t}},SPRITE_MAX_TEXTURES:{get:()=>Ci.defaultMaxTextures,set(t){Kt("7.1.0","settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures"),Ci.defaultMaxTextures=t}},SPRITE_BATCH_SIZE:{get:()=>Ci.defaultBatchSize,set(t){Kt("7.1.0","settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize"),Ci.defaultBatchSize=t}},CAN_UPLOAD_SAME_BUFFER:{get:()=>Ci.canUploadSameBuffer,set(t){Kt("7.1.0","settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer"),Ci.canUploadSameBuffer=t}},GC_MODE:{get:()=>kr.defaultMode,set(t){Kt("7.1.0","settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode"),kr.defaultMode=t}},GC_MAX_IDLE:{get:()=>kr.defaultMaxIdle,set(t){Kt("7.1.0","settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle"),kr.defaultMaxIdle=t}},GC_MAX_CHECK_COUNT:{get:()=>kr.defaultCheckCountMax,set(t){Kt("7.1.0","settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax"),kr.defaultCheckCountMax=t}},PRECISION_VERTEX:{get:()=>bi.defaultVertexPrecision,set(t){Kt("7.1.0","settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision"),bi.defaultVertexPrecision=t}},PRECISION_FRAGMENT:{get:()=>bi.defaultFragmentPrecision,set(t){Kt("7.1.0","settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision"),bi.defaultFragmentPrecision=t}}});var Wr=(t=>(t[t.INTERACTION=50]="INTERACTION",t[t.HIGH=25]="HIGH",t[t.NORMAL=0]="NORMAL",t[t.LOW=-25]="LOW",t[t.UTILITY=-50]="UTILITY",t))(Wr||{});class Yr{constructor(t,e=null,s=0,i=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=t,this.context=e,this.priority=s,this.once=i}match(t,e=null){return this.fn===t&&this.context===e}emit(t){this.fn&&(this.context?this.fn.call(this.context,t):this.fn(t));const e=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),e}connect(t){this.previous=t,t.next&&(t.next.previous=this),this.next=t.next,t.next=this}destroy(t=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const e=this.next;return this.next=t?null:e,this.previous=null,e}}const jr=class{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new Yr(null,null,1/0),this.deltaMS=1/jr.targetFPMS,this.elapsedMS=1/jr.targetFPMS,this._tick=t=>{this._requestId=null,this.started&&(this.update(t),this.started&&null===this._requestId&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){null===this._requestId&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){null!==this._requestId&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(t,e,s=Wr.NORMAL){return this._addListener(new Yr(t,e,s))}addOnce(t,e,s=Wr.NORMAL){return this._addListener(new Yr(t,e,s,!0))}_addListener(t){let e=this._head.next,s=this._head;if(e){for(;e;){if(t.priority>e.priority){t.connect(s);break}s=e,e=e.next}t.previous||t.connect(s)}else t.connect(s);return this._startIfPossible(),this}remove(t,e){let s=this._head.next;for(;s;)s=s.match(t,e)?s.destroy():s.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let t=0,e=this._head;for(;e=e.next;)t++;return t}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let t=this._head.next;for(;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}}update(t=performance.now()){let e;if(t>this.lastTime){if(e=this.elapsedMS=t-this.lastTime,e>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){const e=t-this._lastFrame|0;if(e$r.targetFPMS,set(t){Kt("7.1.0","settings.TARGET_FPMS is deprecated, use Ticker.targetFPMS"),$r.targetFPMS=t}}});class qr{static init(t){t=Object.assign({autoStart:!0,sharedTicker:!1},t),Object.defineProperty(this,"ticker",{set(t){this._ticker&&this._ticker.remove(this.render,this),this._ticker=t,t&&t.add(this.render,this,Wr.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=t.sharedTicker?$r.shared:new $r,t.autoStart&&this.start()}static destroy(){if(this._ticker){const t=this._ticker;this.ticker=null,t.destroy()}}}qr.extension=rs.Application,os.add(qr);const Kr=[];function Zr(t){for(const e of Kr)if(e.test(t))return new e(t);throw new Error("Unable to auto-detect a suitable renderer.")}os.handleByList(rs.Renderer,Kr);const Qr="attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}",Jr="attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n";class tn{constructor(t){this.renderer=t}contextChange(t){let e;if(1===this.renderer.context.webGLVersion){const s=t.getParameter(t.FRAMEBUFFER_BINDING);t.bindFramebuffer(t.FRAMEBUFFER,null),e=t.getParameter(t.SAMPLES),t.bindFramebuffer(t.FRAMEBUFFER,s)}else{const s=t.getParameter(t.DRAW_FRAMEBUFFER_BINDING);t.bindFramebuffer(t.DRAW_FRAMEBUFFER,null),e=t.getParameter(t.SAMPLES),t.bindFramebuffer(t.DRAW_FRAMEBUFFER,s)}e>=T.HIGH?this.multisample=T.HIGH:e>=T.MEDIUM?this.multisample=T.MEDIUM:e>=T.LOW?this.multisample=T.LOW:this.multisample=T.NONE}destroy(){}}tn.extension={type:rs.RendererSystem,name:"_multisample"},os.add(tn);class en{constructor(t){this.buffer=t||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class sn{constructor(t){this.renderer=t,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(t){const{gl:e,CONTEXT_UID:s}=this,i=t._glBuffers[s]||this.createGLBuffer(t);e.bindBuffer(t.type,i.buffer)}unbind(t){const{gl:e}=this;e.bindBuffer(t,null)}bindBufferBase(t,e){const{gl:s,CONTEXT_UID:i}=this;if(this.boundBufferBases[e]!==t){const r=t._glBuffers[i]||this.createGLBuffer(t);this.boundBufferBases[e]=t,s.bindBufferBase(s.UNIFORM_BUFFER,e,r.buffer)}}bindBufferRange(t,e,s){const{gl:i,CONTEXT_UID:r}=this;s=s||0;const n=t._glBuffers[r]||this.createGLBuffer(t);i.bindBufferRange(i.UNIFORM_BUFFER,e||0,n.buffer,256*s,256)}update(t){const{gl:e,CONTEXT_UID:s}=this,i=t._glBuffers[s]||this.createGLBuffer(t);if(t._updateID!==i.updateID)if(i.updateID=t._updateID,e.bindBuffer(t.type,i.buffer),i.byteLength>=t.data.byteLength)e.bufferSubData(t.type,0,t.data);else{const s=t.static?e.STATIC_DRAW:e.DYNAMIC_DRAW;i.byteLength=t.data.byteLength,e.bufferData(t.type,t.data,s)}}dispose(t,e){if(!this.managedBuffers[t.id])return;delete this.managedBuffers[t.id];const s=t._glBuffers[this.CONTEXT_UID],i=this.gl;t.disposeRunner.remove(this),s&&(e||i.deleteBuffer(s.buffer),delete t._glBuffers[this.CONTEXT_UID])}disposeAll(t){const e=Object.keys(this.managedBuffers);for(let s=0;st.resource)).filter((t=>t)).map((t=>t.load()));return this._load=Promise.all(t).then((()=>{const{realWidth:t,realHeight:e}=this.items[0];return this.resize(t,e),Promise.resolve(this)})),this._load}}class hn extends on{constructor(t,e){const{width:s,height:i}=e||{};let r,n;Array.isArray(t)?(r=t,n=t.length):n=t,super(n,{width:s,height:i}),r&&this.initFromArray(r,e)}addBaseTextureAt(t,e){if(!t.resource)throw new Error("ArrayResource does not support RenderTexture");return this.addResourceAt(t.resource,e),this}bind(t){super.bind(t),t.target=l.TEXTURE_2D_ARRAY}upload(t,e,s){const{length:i,itemDirtyIds:r,items:n}=this,{gl:a}=t;s.dirtyId<0&&a.texImage3D(a.TEXTURE_2D_ARRAY,0,s.internalFormat,this._width,this._height,i,0,e.format,s.type,null);for(let t=0;t0){if(!t.resource)throw new Error("CubeResource does not support copying of renderTexture.");this.addResourceAt(t.resource,e)}else t.target=l.TEXTURE_CUBE_MAP_POSITIVE_X+e,t.parentTextureArray=this.baseTexture,this.items[e]=t;return t.valid&&!this.valid&&this.resize(t.realWidth,t.realHeight),this.items[e]=t,this}upload(t,e,s){const i=this.itemDirtyIds;for(let r=0;r{if(null!==this.url)try{const e=await A.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const s=await e.blob();if(this.destroyed)return;const i=await createImageBitmap(s,{premultiplyAlpha:null===this.alphaMode||this.alphaMode===m.UNPACK?"premultiply":"none"});if(this.destroyed)return;this.source=i,this.update(),t(this)}catch(t){if(this.destroyed)return;e(t),this.onError.emit(t)}else t(this)}))),this._load}upload(t,e,s){return this.source instanceof ImageBitmap?("number"==typeof this.alphaMode&&(e.alphaMode=this.alphaMode),super.upload(t,e,s)):(this.load(),!1)}dispose(){this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(t){return!!globalThis.createImageBitmap&&"undefined"!=typeof ImageBitmap&&("string"==typeof t||t instanceof ImageBitmap)}static get EMPTY(){var t;return cn._EMPTY=null!=(t=cn._EMPTY)?t:A.ADAPTER.createCanvas(0,0),cn._EMPTY}}const pn=class extends ki{constructor(t,e){e=e||{},super(A.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=t,this.scale=e.scale||1,this._overrideWidth=e.width,this._overrideHeight=e.height,this._resolve=null,this._crossorigin=e.crossorigin,this._load=null,!1!==e.autoLoad&&this.load()}load(){return this._load||(this._load=new Promise((t=>{if(this._resolve=()=>{this.resize(this.source.width,this.source.height),t(this)},pn.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}))),this._load}_loadSvg(){const t=new Image;ki.crossOrigin(t,this.svg,this._crossorigin),t.src=this.svg,t.onerror=e=>{!this._resolve||(t.onerror=null,this.onError.emit(e))},t.onload=()=>{if(!this._resolve)return;const e=t.width,s=t.height;if(!e||!s)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let i=e*this.scale,r=s*this.scale;(this._overrideWidth||this._overrideHeight)&&(i=this._overrideWidth||this._overrideHeight/s*e,r=this._overrideHeight||this._overrideWidth/e*s),i=Math.round(i),r=Math.round(r);const n=this.source;n.width=i,n.height=r,n._pixiId=`canvas_${Ve()}`,n.getContext("2d").drawImage(t,0,0,e,s,0,0,i,r),this._resolve(),this._resolve=null}}static getSize(t){const e=pn.SVG_SIZE.exec(t),s={};return e&&(s[e[1]]=Math.round(parseFloat(e[3])),s[e[5]]=Math.round(parseFloat(e[7]))),s}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(t,e){return"svg"===e||"string"==typeof t&&t.startsWith("data:image/svg+xml")||"string"==typeof t&&pn.SVG_XML.test(t)}};let fn=pn;fn.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;const mn=class extends ki{constructor(t,e){if(e=e||{},!(t instanceof HTMLVideoElement)){const s=document.createElement("video");s.setAttribute("preload","auto"),s.setAttribute("webkit-playsinline",""),s.setAttribute("playsinline",""),"string"==typeof t&&(t=[t]);const i=t[0].src||t[0];ki.crossOrigin(s,i,e.crossorigin);for(let e=0;e{this.valid?e(this):(this._resolve=e,t.load())})),this._load}_onError(t){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(t)}_isSourcePlaying(){const t=this.source;return!t.paused&&!t.ended&&this._isSourceReady()}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this.autoUpdate&&!this._isConnectedToTicker&&($r.shared.add(this.update,this),this._isConnectedToTicker=!0)}_onPlayStop(){this._isConnectedToTicker&&($r.shared.remove(this.update,this),this._isConnectedToTicker=!1)}_onCanPlay(){const t=this.source;t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlay);const e=this.valid;this.resize(t.videoWidth,t.videoHeight),!e&&this._resolve&&(this._resolve(this),this._resolve=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&t.play()}dispose(){this._isConnectedToTicker&&($r.shared.remove(this.update,this),this._isConnectedToTicker=!1);const t=this.source;t&&(t.removeEventListener("error",this._onError,!0),t.pause(),t.src="",t.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?($r.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._isSourcePlaying()&&($r.shared.add(this.update,this),this._isConnectedToTicker=!0))}get updateFPS(){return this._updateFPS}set updateFPS(t){t!==this._updateFPS&&(this._updateFPS=t)}static test(t,e){return globalThis.HTMLVideoElement&&t instanceof HTMLVideoElement||mn.TYPES.includes(e)}};let _n=mn;_n.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],_n.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"},ps.push(cn,Xi,ln,_n,fn,gs,dn,hn);class gn{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(t){return this.minX>this.maxX||this.minY>this.maxY?Ls.EMPTY:((t=t||new Ls(0,0,1,1)).x=this.minX,t.y=this.minY,t.width=this.maxX-this.minX,t.height=this.maxY-this.minY,t)}addPoint(t){this.minX=Math.min(this.minX,t.x),this.maxX=Math.max(this.maxX,t.x),this.minY=Math.min(this.minY,t.y),this.maxY=Math.max(this.maxY,t.y)}addPointMatrix(t,e){const{a:s,b:i,c:r,d:n,tx:a,ty:o}=t,h=s*e.x+r*e.y+a,l=i*e.x+n*e.y+o;this.minX=Math.min(this.minX,h),this.maxX=Math.max(this.maxX,h),this.minY=Math.min(this.minY,l),this.maxY=Math.max(this.maxY,l)}addQuad(t){let e=this.minX,s=this.minY,i=this.maxX,r=this.maxY,n=t[0],a=t[1];e=ni?n:i,r=a>r?a:r,n=t[2],a=t[3],e=ni?n:i,r=a>r?a:r,n=t[4],a=t[5],e=ni?n:i,r=a>r?a:r,n=t[6],a=t[7],e=ni?n:i,r=a>r?a:r,this.minX=e,this.minY=s,this.maxX=i,this.maxY=r}addFrame(t,e,s,i,r){this.addFrameMatrix(t.worldTransform,e,s,i,r)}addFrameMatrix(t,e,s,i,r){const n=t.a,a=t.b,o=t.c,h=t.d,l=t.tx,u=t.ty;let d=this.minX,c=this.minY,p=this.maxX,f=this.maxY,m=n*e+o*s+l,_=a*e+h*s+u;d=mp?m:p,f=_>f?_:f,m=n*i+o*s+l,_=a*i+h*s+u,d=mp?m:p,f=_>f?_:f,m=n*e+o*r+l,_=a*e+h*r+u,d=mp?m:p,f=_>f?_:f,m=n*i+o*r+l,_=a*i+h*r+u,d=mp?m:p,f=_>f?_:f,this.minX=d,this.minY=c,this.maxX=p,this.maxY=f}addVertexData(t,e,s){let i=this.minX,r=this.minY,n=this.maxX,a=this.maxY;for(let o=e;on?e:n,a=s>a?s:a}this.minX=i,this.minY=r,this.maxX=n,this.maxY=a}addVertices(t,e,s,i){this.addVerticesMatrix(t.worldTransform,e,s,i)}addVerticesMatrix(t,e,s,i,r=0,n=r){const a=t.a,o=t.b,h=t.c,l=t.d,u=t.tx,d=t.ty;let c=this.minX,p=this.minY,f=this.maxX,m=this.maxY;for(let t=s;ti?t.maxX:i,this.maxY=t.maxY>r?t.maxY:r}addBoundsMask(t,e){const s=t.minX>e.minX?t.minX:e.minX,i=t.minY>e.minY?t.minY:e.minY,r=t.maxXa?r:a,this.maxY=n>o?n:o}}addBoundsMatrix(t,e){this.addFrameMatrix(e,t.minX,t.minY,t.maxX,t.maxY)}addBoundsArea(t,e){const s=t.minX>e.x?t.minX:e.x,i=t.minY>e.y?t.minY:e.y,r=t.maxXa?r:a,this.maxY=n>o?n:o}}pad(t=0,e=t){this.isEmpty()||(this.minX-=t,this.maxX+=t,this.minY-=e,this.maxY+=e)}addFramePad(t,e,s,i,r,n){t-=r,e-=n,s+=r,i+=n,this.minX=this.minXs?this.maxX:s,this.minY=this.minYi?this.maxY:i}}class xn extends W{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new Js,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new gn,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(t){const e=Object.keys(t);for(let s=0;s1)for(let e=0;ethis.children.length)throw new Error(`${t}addChildAt: The index ${e} supplied is out of bounds ${this.children.length}`);return t.parent&&t.parent.removeChild(t),t.parent=this,this.sortDirty=!0,t.transform._parentID=-1,this.children.splice(e,0,t),this._boundsID++,this.onChildrenChange(e),t.emit("added",this),this.emit("childAdded",t,this,e),t}swapChildren(t,e){if(t===e)return;const s=this.getChildIndex(t),i=this.getChildIndex(e);this.children[s]=e,this.children[i]=t,this.onChildrenChange(s=this.children.length)throw new Error(`The index ${e} supplied is out of bounds ${this.children.length}`);const s=this.getChildIndex(t);ke(this.children,s,1),this.children.splice(e,0,t),this.onChildrenChange(e)}getChildAt(t){if(t<0||t>=this.children.length)throw new Error(`getChildAt: Index (${t}) does not exist.`);return this.children[t]}removeChild(...t){if(t.length>1)for(let e=0;e0&&i<=e){r=this.children.splice(s,i);for(let t=0;t1&&this.children.sort(Tn),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let t=0,e=this.children.length;t0&&e.height>0))return;let s,i;this.cullArea?(s=this.cullArea,i=this.worldTransform):this._render!==bn.prototype._render&&(s=this.getBounds(!0));const r=t.projection.transform;if(r&&(i?(i=yn.copyFrom(i),i.prepend(r)):i=r),s&&e.intersects(s,i))this._render(t);else if(this.cullArea)return;for(let e=0,s=this.children.length;eEn.defaultSortableChildren,set(t){Kt("7.1.0","settings.SORTABLE_CHILDREN is deprecated, use Container.defaultSortableChildren"),En.defaultSortableChildren=t}}});const An=new Bs,Rn=new Uint16Array([0,1,2,0,2,3]);class Sn extends En{constructor(t){super(),this._anchor=new Zs(this._onAnchorUpdate,this,t?t.defaultAnchor.x:0,t?t.defaultAnchor.y:0),this._texture=null,this._width=0,this._height=0,this._tintColor=new Ie(16777215),this._tintRGB=null,this.tint=16777215,this.blendMode=a.NORMAL,this._cachedTint=16777215,this.uvs=null,this.texture=t||Wi.EMPTY,this.vertexData=new Float32Array(8),this.vertexTrimmedData=null,this._transformID=-1,this._textureID=-1,this._transformTrimmedID=-1,this._textureTrimmedID=-1,this.indices=Rn,this.pluginName="batch",this.isSprite=!0,this._roundPixels=A.ROUND_PIXELS}_onTextureUpdate(){this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this._width&&(this.scale.x=Xe(this.scale.x)*this._width/this._texture.orig.width),this._height&&(this.scale.y=Xe(this.scale.y)*this._height/this._texture.orig.height)}_onAnchorUpdate(){this._transformID=-1,this._transformTrimmedID=-1}calculateVertices(){const t=this._texture;if(this._transformID===this.transform._worldID&&this._textureID===t._updateID)return;this._textureID!==t._updateID&&(this.uvs=this._texture._uvs.uvsFloat32),this._transformID=this.transform._worldID,this._textureID=t._updateID;const e=this.transform.worldTransform,s=e.a,i=e.b,r=e.c,n=e.d,a=e.tx,o=e.ty,h=this.vertexData,l=t.trim,u=t.orig,d=this._anchor;let c=0,p=0,f=0,m=0;if(l?(p=l.x-d._x*u.width,c=p+l.width,m=l.y-d._y*u.height,f=m+l.height):(p=-d._x*u.width,c=p+u.width,m=-d._y*u.height,f=m+u.height),h[0]=s*p+r*m+a,h[1]=n*m+i*p+o,h[2]=s*c+r*m+a,h[3]=n*m+i*c+o,h[4]=s*c+r*f+a,h[5]=n*f+i*c+o,h[6]=s*p+r*f+a,h[7]=n*f+i*p+o,this._roundPixels){const t=A.RESOLUTION;for(let e=0;e=i&&An.x=r&&An.y=s&&(i=t-r-1),a=a.replace("%value%",e[i].toString()),n+=a,n+="\n"}return r=r.replace("%blur%",n),r=r.replace("%size%",t.toString()),r}(r);super(n,a),this.horizontal=t,this.resolution=i,this._quality=0,this.quality=s,this.blur=e}apply(t,e,s,i){if(s?this.horizontal?this.uniforms.strength=1/s.width*(s.width/e.width):this.uniforms.strength=1/s.height*(s.height/e.height):this.horizontal?this.uniforms.strength=1/t.renderer.width*(t.renderer.width/e.width):this.uniforms.strength=1/t.renderer.height*(t.renderer.height/e.height),this.uniforms.strength*=this.strength,this.uniforms.strength/=this.passes,1===this.passes)t.applyFilter(this,e,s,i);else{const r=t.getFilterTexture(),n=t.renderer;let a=e,o=r;this.state.blend=!1,t.applyFilter(this,a,o,_.CLEAR);for(let e=1;e 0.0) {\n c.rgb /= c.a;\n }\n\n vec4 result;\n\n result.r = (m[0] * c.r);\n result.r += (m[1] * c.g);\n result.r += (m[2] * c.b);\n result.r += (m[3] * c.a);\n result.r += m[4];\n\n result.g = (m[5] * c.r);\n result.g += (m[6] * c.g);\n result.g += (m[7] * c.b);\n result.g += (m[8] * c.a);\n result.g += m[9];\n\n result.b = (m[10] * c.r);\n result.b += (m[11] * c.g);\n result.b += (m[12] * c.b);\n result.b += (m[13] * c.a);\n result.b += m[14];\n\n result.a = (m[15] * c.r);\n result.a += (m[16] * c.g);\n result.a += (m[17] * c.b);\n result.a += (m[18] * c.a);\n result.a += m[19];\n\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n // Premultiply alpha again.\n rgb *= result.a;\n\n gl_FragColor = vec4(rgb, result.a);\n}\n",t),this.alpha=1}_loadMatrix(t,e=!1){let s=t;e&&(this._multiply(s,this.uniforms.m,t),s=this._colorMatrix(s)),this.uniforms.m=s}_multiply(t,e,s){return t[0]=e[0]*s[0]+e[1]*s[5]+e[2]*s[10]+e[3]*s[15],t[1]=e[0]*s[1]+e[1]*s[6]+e[2]*s[11]+e[3]*s[16],t[2]=e[0]*s[2]+e[1]*s[7]+e[2]*s[12]+e[3]*s[17],t[3]=e[0]*s[3]+e[1]*s[8]+e[2]*s[13]+e[3]*s[18],t[4]=e[0]*s[4]+e[1]*s[9]+e[2]*s[14]+e[3]*s[19]+e[4],t[5]=e[5]*s[0]+e[6]*s[5]+e[7]*s[10]+e[8]*s[15],t[6]=e[5]*s[1]+e[6]*s[6]+e[7]*s[11]+e[8]*s[16],t[7]=e[5]*s[2]+e[6]*s[7]+e[7]*s[12]+e[8]*s[17],t[8]=e[5]*s[3]+e[6]*s[8]+e[7]*s[13]+e[8]*s[18],t[9]=e[5]*s[4]+e[6]*s[9]+e[7]*s[14]+e[8]*s[19]+e[9],t[10]=e[10]*s[0]+e[11]*s[5]+e[12]*s[10]+e[13]*s[15],t[11]=e[10]*s[1]+e[11]*s[6]+e[12]*s[11]+e[13]*s[16],t[12]=e[10]*s[2]+e[11]*s[7]+e[12]*s[12]+e[13]*s[17],t[13]=e[10]*s[3]+e[11]*s[8]+e[12]*s[13]+e[13]*s[18],t[14]=e[10]*s[4]+e[11]*s[9]+e[12]*s[14]+e[13]*s[19]+e[14],t[15]=e[15]*s[0]+e[16]*s[5]+e[17]*s[10]+e[18]*s[15],t[16]=e[15]*s[1]+e[16]*s[6]+e[17]*s[11]+e[18]*s[16],t[17]=e[15]*s[2]+e[16]*s[7]+e[17]*s[12]+e[18]*s[17],t[18]=e[15]*s[3]+e[16]*s[8]+e[17]*s[13]+e[18]*s[18],t[19]=e[15]*s[4]+e[16]*s[9]+e[17]*s[14]+e[18]*s[19]+e[19],t}_colorMatrix(t){const e=new Float32Array(t);return e[4]/=255,e[9]/=255,e[14]/=255,e[19]/=255,e}brightness(t,e){const s=[t,0,0,0,0,0,t,0,0,0,0,0,t,0,0,0,0,0,1,0];this._loadMatrix(s,e)}tint(t,e){const[s,i,r]=Ie.shared.setValue(t).toArray(),n=[s,0,0,0,0,0,i,0,0,0,0,0,r,0,0,0,0,0,1,0];this._loadMatrix(n,e)}greyscale(t,e){const s=[t,t,t,0,0,t,t,t,0,0,t,t,t,0,0,0,0,0,1,0];this._loadMatrix(s,e)}blackAndWhite(t){this._loadMatrix([.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0],t)}hue(t,e){t=(t||0)/180*Math.PI;const s=Math.cos(t),i=Math.sin(t),r=1/3,n=(0,Math.sqrt)(r),a=[s+(1-s)*r,r*(1-s)-n*i,r*(1-s)+n*i,0,0,r*(1-s)+n*i,s+r*(1-s),r*(1-s)-n*i,0,0,r*(1-s)-n*i,r*(1-s)+n*i,s+r*(1-s),0,0,0,0,0,1,0];this._loadMatrix(a,e)}contrast(t,e){const s=(t||0)+1,i=-.5*(s-1),r=[s,0,0,0,i,0,s,0,0,i,0,0,s,0,i,0,0,0,1,0];this._loadMatrix(r,e)}saturate(t=0,e){const s=2*t/3+1,i=-.5*(s-1),r=[s,i,i,0,0,i,s,i,0,0,i,i,s,0,0,0,0,0,1,0];this._loadMatrix(r,e)}desaturate(){this.saturate(-1)}negative(t){this._loadMatrix([-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0],t)}sepia(t){this._loadMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0],t)}technicolor(t){this._loadMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0],t)}polaroid(t){this._loadMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0],t)}toBGR(t){this._loadMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0],t)}kodachrome(t){this._loadMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0],t)}browni(t){this._loadMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0],t)}vintage(t){this._loadMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0],t)}colorTone(t,e,s,i,r){t=t||.2,e=e||.15,s=s||16770432,i=i||3375104;const n=Ie.shared,[a,o,h]=n.setValue(s).toArray(),[l,u,d]=n.setValue(i).toArray(),c=[.3,.59,.11,0,0,a,o,h,t,0,l,u,d,e,0,a-l,o-u,h-d,0,0];this._loadMatrix(c,r)}night(t,e){const s=[-2*(t=t||.1),-t,0,0,0,-t,0,t,0,0,0,t,2*t,0,0,0,0,0,1,0];this._loadMatrix(s,e)}predator(t,e){const s=[11.224130630493164*t,-4.794486999511719*t,-2.8746118545532227*t,0*t,.40342438220977783*t,-3.6330697536468506*t,9.193157196044922*t,-2.951810836791992*t,0*t,-1.316135048866272*t,-3.2184197902679443*t,-4.2375030517578125*t,7.476448059082031*t,0*t,.8044459223747253*t,0,0,0,1,0];this._loadMatrix(s,e)}lsd(t){this._loadMatrix([2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0],t)}reset(){this._loadMatrix([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],!1)}get matrix(){return this.uniforms.m}set matrix(t){this.uniforms.m=t}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}}Fn.prototype.grayscale=Fn.prototype.greyscale;class Bn extends Pi{constructor(t,e){const s=new Hs;t.renderable=!1,super("attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n\tgl_Position = filterVertexPosition();\n\tvTextureCoord = filterTextureCoord();\n\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\n}\n","varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\nuniform mat2 rotation;\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform highp vec4 inputSize;\nuniform vec4 inputClamp;\n\nvoid main(void)\n{\n vec4 map = texture2D(mapSampler, vFilterCoord);\n\n map -= 0.5;\n map.xy = scale * inputSize.zw * (rotation * map.xy);\n\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\n}\n",{mapSampler:t._texture,filterMatrix:s,scale:{x:1,y:1},rotation:new Float32Array([1,0,0,1])}),this.maskSprite=t,this.maskMatrix=s,null==e&&(e=20),this.scale=new Bs(e,e)}apply(t,e,s,i){this.uniforms.filterMatrix=t.calculateSpriteMatrix(this.maskMatrix,this.maskSprite),this.uniforms.scale.x=this.scale.x,this.uniforms.scale.y=this.scale.y;const r=this.maskSprite.worldTransform,n=Math.sqrt(r.a*r.a+r.b*r.b),a=Math.sqrt(r.c*r.c+r.d*r.d);0!==n&&0!==a&&(this.uniforms.rotation[0]=r.a/n,this.uniforms.rotation[1]=r.b/n,this.uniforms.rotation[2]=r.c/a,this.uniforms.rotation[3]=r.d/a),t.applyFilter(this,e,s,i)}get map(){return this.uniforms.mapSampler}set map(t){this.uniforms.mapSampler=t}}class Nn extends Pi{constructor(){super("\nattribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\n out vec2 v_rgbNW, out vec2 v_rgbNE,\n out vec2 v_rgbSW, out vec2 v_rgbSE,\n out vec2 v_rgbM) {\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n gl_Position = filterVertexPosition();\n\n vFragCoord = aVertexPosition * outputFrame.zw;\n\n texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n",'varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\nuniform sampler2D uSampler;\nuniform highp vec4 inputSize;\n\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it\'s\n unsupported by WebGL.\n\n --\n\n From:\n https://github.com/mitsuhiko/webgl-meincraft\n\n Copyright (c) 2011 by Armin Ronacher.\n\n Some rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX 8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\n vec2 v_rgbNW, vec2 v_rgbNE,\n vec2 v_rgbSW, vec2 v_rgbSE,\n vec2 v_rgbM) {\n vec4 color;\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n vec4 texColor = texture2D(tex, v_rgbM);\n vec3 rgbM = texColor.xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec3 rgbA = 0.5 * (\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, texColor.a);\n else\n color = vec4(rgbB, texColor.a);\n return color;\n}\n\nvoid main() {\n\n vec4 color;\n\n color = fxaa(uSampler, vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n gl_FragColor = color;\n}\n')}}class Ln extends Pi{constructor(t=.5,e=Math.random()){super(Jr,"precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float randomValue = rand(gl_FragCoord.xy * uSeed);\n float diff = (randomValue - 0.5) * uNoise;\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (color.a > 0.0) {\n color.rgb /= color.a;\n }\n\n color.r += diff;\n color.g += diff;\n color.b += diff;\n\n // Premultiply alpha again.\n color.rgb *= color.a;\n\n gl_FragColor = color;\n}\n",{uNoise:0,uSeed:0}),this.noise=t,this.seed=e}get noise(){return this.uniforms.uNoise}set noise(t){this.uniforms.uNoise=t}get seed(){return this.uniforms.uSeed}set seed(t){this.uniforms.uSeed=t}}const Gn={AlphaFilter:Mn,BlurFilter:On,BlurFilterPass:Pn,ColorMatrixFilter:Fn,DisplacementFilter:Bn,FXAAFilter:Nn,NoiseFilter:Ln};Object.entries(Gn).forEach((([t,e])=>{Object.defineProperty(Gn,t,{get:()=>e})}));const Un=new class{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(t){this.removeTickerListener(),this.events=t,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(t){this._pauseUpdate=t}addTickerListener(){this.tickerAdded||!this.domElement||($r.system.add(this.tickerUpdate,this,Wr.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){!this.tickerAdded||($r.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove)return void(this._didMove=!1);const t=this.events.rootPointerEvent;this.events.supportsTouchEvents&&"touch"===t.pointerType||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:t.clientX,clientY:t.clientY}))}tickerUpdate(t){this._deltaTime+=t,!(this._deltaTimet.priority-e.priority))}dispatchEvent(t,e){t.propagationStopped=!1,t.propagationImmediatelyStopped=!1,this.propagate(t,e),this.dispatch.emit(e||t.type,t)}mapEvent(t){if(!this.rootTarget)return;const e=this.mappingTable[t.type];if(e)for(let s=0,i=e.length;s=0;i--)if(t.currentTarget=s[i],this.notifyTarget(t,e),t.propagationStopped||t.propagationImmediatelyStopped)return}}all(t,e,s=this._allInteractiveElements){if(0===s.length)return;t.eventPhase=t.BUBBLING_PHASE;const i=Array.isArray(e)?e:[e];for(let e=s.length-1;e>=0;e--)i.forEach((i=>{t.currentTarget=s[e],this.notifyTarget(t,i)}))}propagationPath(t){const e=[t];for(let s=0;s<2048&&t!==this.rootTarget;s++){if(!t.parent)throw new Error("Cannot find propagation path to disconnected target");e.push(t.parent),t=t.parent}return e.reverse(),e}hitTestMoveRecursive(t,e,s,i,r,n=!1){let a=!1;if(this._interactivePrune(t))return null;if(("dynamic"===t.eventMode||"dynamic"===e)&&(Un.pauseUpdate=!1),t.interactiveChildren&&t.children){const o=t.children;for(let h=o.length-1;h>=0;h--){const l=o[h],u=this.hitTestMoveRecursive(l,this._isInteractive(e)?e:l.eventMode,s,i,r,n||r(t,s));if(u){if(u.length>0&&!u[u.length-1].parent)continue;const e=t.isInteractive();(u.length>0||e)&&(e&&this._allInteractiveElements.push(t),u.push(t)),0===this._hitElements.length&&(this._hitElements=u),a=!0}}}const o=this._isInteractive(e),h=t.isInteractive();return h&&h&&this._allInteractiveElements.push(t),n||this._hitElements.length>0?null:a?this._hitElements:o&&!r(t,s)&&i(t,s)?h?[t]:[]:null}hitTestRecursive(t,e,s,i,r){if(this._interactivePrune(t)||r(t,s))return null;if(("dynamic"===t.eventMode||"dynamic"===e)&&(Un.pauseUpdate=!1),t.interactiveChildren&&t.children){const n=t.children;for(let a=n.length-1;a>=0;a--){const o=n[a],h=this.hitTestRecursive(o,this._isInteractive(e)?e:o.eventMode,s,i,r);if(h){if(h.length>0&&!h[h.length-1].parent)continue;const e=t.isInteractive();return(h.length>0||e)&&h.push(t),h}}}const n=this._isInteractive(e),a=t.isInteractive();return n&&i(t,s)?a?[t]:[]:null}_isInteractive(t){return"static"===t||"dynamic"===t}_interactivePrune(t){return!(t&&!t.isMask&&t.visible&&t.renderable&&"none"!==t.eventMode&&("passive"!==t.eventMode||t.interactiveChildren)&&!t.isMask)}hitPruneFn(t,e){var s;if(t.hitArea&&(t.worldTransform.applyInverse(e,Yn),!t.hitArea.contains(Yn.x,Yn.y)))return!0;if(t._mask){const i=t._mask.isMaskData?t._mask.maskObject:t._mask;if(i&&(null==(s=i.containsPoint)||!s.call(i,e)))return!0}return!1}hitTestFn(t,e){return"passive"!==t.eventMode&&(!!t.hitArea||!!t.containsPoint&&t.containsPoint(e))}notifyTarget(t,e){var s,i;const r=`on${e=null!=e?e:t.type}`;null==(i=(s=t.currentTarget)[r])||i.call(s,t);const n=t.eventPhase===t.CAPTURING_PHASE||t.eventPhase===t.AT_TARGET?`${e}capture`:e;this.notifyListeners(t,n),t.eventPhase===t.AT_TARGET&&this.notifyListeners(t,e)}mapPointerDown(t){if(!(t instanceof Hn))return void console.warn("EventBoundary cannot map a non-pointer event as a pointer event");const e=this.createPointerEvent(t);if(this.dispatchEvent(e,"pointerdown"),"touch"===e.pointerType)this.dispatchEvent(e,"touchstart");else if("mouse"===e.pointerType||"pen"===e.pointerType){const t=2===e.button;this.dispatchEvent(e,t?"rightdown":"mousedown")}this.trackingData(t.pointerId).pressTargetsByButton[t.button]=e.composedPath(),this.freeEvent(e)}mapPointerMove(t){var e,s,i;if(!(t instanceof Hn))return void console.warn("EventBoundary cannot map a non-pointer event as a pointer event");this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const r=this.createPointerEvent(t);this._isPointerMoveEvent=!1;const n="mouse"===r.pointerType||"pen"===r.pointerType,a=this.trackingData(t.pointerId),o=this.findMountedTarget(a.overTargets);if((null==(e=a.overTargets)?void 0:e.length)>0&&o!==r.target){const e="mousemove"===t.type?"mouseout":"pointerout",s=this.createPointerEvent(t,e,o);if(this.dispatchEvent(s,"pointerout"),n&&this.dispatchEvent(s,"mouseout"),!r.composedPath().includes(o)){const e=this.createPointerEvent(t,"pointerleave",o);for(e.eventPhase=e.AT_TARGET;e.target&&!r.composedPath().includes(e.target);)e.currentTarget=e.target,this.notifyTarget(e),n&&this.notifyTarget(e,"mouseleave"),e.target=e.target.parent;this.freeEvent(e)}this.freeEvent(s)}if(o!==r.target){const e="mousemove"===t.type?"mouseover":"pointerover",s=this.clonePointerEvent(r,e);this.dispatchEvent(s,"pointerover"),n&&this.dispatchEvent(s,"mouseover");let i=null==o?void 0:o.parent;for(;i&&i!==this.rootTarget.parent&&i!==r.target;)i=i.parent;if(!i||i===this.rootTarget.parent){const t=this.clonePointerEvent(r,"pointerenter");for(t.eventPhase=t.AT_TARGET;t.target&&t.target!==o&&t.target!==this.rootTarget.parent;)t.currentTarget=t.target,this.notifyTarget(t),n&&this.notifyTarget(t,"mouseenter"),t.target=t.target.parent;this.freeEvent(t)}this.freeEvent(s)}const h=[],l=null==(s=this.enableGlobalMoveEvents)||s;this.moveOnAll?h.push("pointermove"):this.dispatchEvent(r,"pointermove"),l&&h.push("globalpointermove"),"touch"===r.pointerType&&(this.moveOnAll?h.splice(1,0,"touchmove"):this.dispatchEvent(r,"touchmove"),l&&h.push("globaltouchmove")),n&&(this.moveOnAll?h.splice(1,0,"mousemove"):this.dispatchEvent(r,"mousemove"),l&&h.push("globalmousemove"),this.cursor=null==(i=r.target)?void 0:i.cursor),h.length>0&&this.all(r,h),this._allInteractiveElements.length=0,this._hitElements.length=0,a.overTargets=r.composedPath(),this.freeEvent(r)}mapPointerOver(t){var e;if(!(t instanceof Hn))return void console.warn("EventBoundary cannot map a non-pointer event as a pointer event");const s=this.trackingData(t.pointerId),i=this.createPointerEvent(t),r="mouse"===i.pointerType||"pen"===i.pointerType;this.dispatchEvent(i,"pointerover"),r&&this.dispatchEvent(i,"mouseover"),"mouse"===i.pointerType&&(this.cursor=null==(e=i.target)?void 0:e.cursor);const n=this.clonePointerEvent(i,"pointerenter");for(n.eventPhase=n.AT_TARGET;n.target&&n.target!==this.rootTarget.parent;)n.currentTarget=n.target,this.notifyTarget(n),r&&this.notifyTarget(n,"mouseenter"),n.target=n.target.parent;s.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(n)}mapPointerOut(t){if(!(t instanceof Hn))return void console.warn("EventBoundary cannot map a non-pointer event as a pointer event");const e=this.trackingData(t.pointerId);if(e.overTargets){const s="mouse"===t.pointerType||"pen"===t.pointerType,i=this.findMountedTarget(e.overTargets),r=this.createPointerEvent(t,"pointerout",i);this.dispatchEvent(r),s&&this.dispatchEvent(r,"mouseout");const n=this.createPointerEvent(t,"pointerleave",i);for(n.eventPhase=n.AT_TARGET;n.target&&n.target!==this.rootTarget.parent;)n.currentTarget=n.target,this.notifyTarget(n),s&&this.notifyTarget(n,"mouseleave"),n.target=n.target.parent;e.overTargets=null,this.freeEvent(r),this.freeEvent(n)}this.cursor=null}mapPointerUp(t){if(!(t instanceof Hn))return void console.warn("EventBoundary cannot map a non-pointer event as a pointer event");const e=performance.now(),s=this.createPointerEvent(t);if(this.dispatchEvent(s,"pointerup"),"touch"===s.pointerType)this.dispatchEvent(s,"touchend");else if("mouse"===s.pointerType||"pen"===s.pointerType){const t=2===s.button;this.dispatchEvent(s,t?"rightup":"mouseup")}const i=this.trackingData(t.pointerId),r=this.findMountedTarget(i.pressTargetsByButton[t.button]);let n=r;if(r&&!s.composedPath().includes(r)){let e=r;for(;e&&!s.composedPath().includes(e);){if(s.currentTarget=e,this.notifyTarget(s,"pointerupoutside"),"touch"===s.pointerType)this.notifyTarget(s,"touchendoutside");else if("mouse"===s.pointerType||"pen"===s.pointerType){const t=2===s.button;this.notifyTarget(s,t?"rightupoutside":"mouseupoutside")}e=e.parent}delete i.pressTargetsByButton[t.button],n=e}if(n){const r=this.clonePointerEvent(s,"click");r.target=n,r.path=null,i.clicksByButton[t.button]||(i.clicksByButton[t.button]={clickCount:0,target:r.target,timeStamp:e});const a=i.clicksByButton[t.button];if(a.target===r.target&&e-a.timeStamp<200?++a.clickCount:a.clickCount=1,a.target=r.target,a.timeStamp=e,r.detail=a.clickCount,"mouse"===r.pointerType){const t=2===r.button;this.dispatchEvent(r,t?"rightclick":"click")}else"touch"===r.pointerType&&this.dispatchEvent(r,"tap");this.dispatchEvent(r,"pointertap"),this.freeEvent(r)}this.freeEvent(s)}mapPointerUpOutside(t){if(!(t instanceof Hn))return void console.warn("EventBoundary cannot map a non-pointer event as a pointer event");const e=this.trackingData(t.pointerId),s=this.findMountedTarget(e.pressTargetsByButton[t.button]),i=this.createPointerEvent(t);if(s){let r=s;for(;r;)i.currentTarget=r,this.notifyTarget(i,"pointerupoutside"),"touch"===i.pointerType?this.notifyTarget(i,"touchendoutside"):("mouse"===i.pointerType||"pen"===i.pointerType)&&this.notifyTarget(i,2===i.button?"rightupoutside":"mouseupoutside"),r=r.parent;delete e.pressTargetsByButton[t.button]}this.freeEvent(i)}mapWheel(t){if(!(t instanceof Vn))return void console.warn("EventBoundary cannot map a non-wheel event as a wheel event");const e=this.createWheelEvent(t);this.dispatchEvent(e),this.freeEvent(e)}findMountedTarget(t){if(!t)return null;let e=t[0];for(let s=1;s("globalMove"===e&&(this.rootBoundary.enableGlobalMoveEvents=s),t[e]=s,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(t){var e,s;const{view:i,resolution:r}=this.renderer;this.setTargetElement(i),this.resolution=r,qn._defaultEventMode=null!=(e=t.eventMode)?e:"auto",Object.assign(this.features,null!=(s=t.eventFeatures)?s:{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(t){this.resolution=t}destroy(){this.setTargetElement(null),this.renderer=null}setCursor(t){t=t||"default";let e=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(e=!1),this.currentCursor===t)return;this.currentCursor=t;const s=this.cursorStyles[t];if(s)switch(typeof s){case"string":e&&(this.domElement.style.cursor=s);break;case"function":s(t);break;case"object":e&&Object.assign(this.domElement.style,s)}else e&&"string"==typeof t&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,t)&&(this.domElement.style.cursor=t)}get pointer(){return this.rootPointerEvent}onPointerDown(t){if(!this.features.click||(this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,this.supportsTouchEvents&&"touch"===t.pointerType))return;const e=this.normalizeToPointerData(t);this.autoPreventDefault&&e[0].isNormalized&&(t.cancelable||!("cancelable"in t))&&t.preventDefault();for(let t=0,s=e.length;t0&&(e=t.composedPath()[0]);const s=e!==this.domElement?"outside":"",i=this.normalizeToPointerData(t);for(let t=0,e=i.length;t{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()})),document.body.appendChild(t),this._hookDiv=t}destroyTouchHook(){!this._hookDiv||(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){var t;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),null==(t=this.renderer.view.parentNode)||t.appendChild(this.div))}deactivate(){var t;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),null==(t=this.div.parentNode)||t.removeChild(this.div))}updateAccessibleObjects(t){if(!t.visible||!t.accessibleChildren)return;t.accessible&&t.isInteractive()&&(t._accessibleActive||this.addChild(t),t.renderId=this.renderId);const e=t.children;if(e)for(let t=0;t title : ${t.title}
tabIndex: ${t.tabIndex}`}capHitArea(t){t.x<0&&(t.width+=t.x,t.x=0),t.y<0&&(t.height+=t.y,t.y=0);const{width:e,height:s}=this.renderer;t.x+t.width>e&&(t.width=e-t.x),t.y+t.height>s&&(t.height=s-t.y)}addChild(t){let e=this.pool.pop();e||(e=document.createElement("button"),e.style.width="100px",e.style.height="100px",e.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",e.style.position="absolute",e.style.zIndex=2..toString(),e.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?e.setAttribute("aria-live","off"):e.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?e.setAttribute("aria-relevant","additions"):e.setAttribute("aria-relevant","text"),e.addEventListener("click",this._onClick.bind(this)),e.addEventListener("focus",this._onFocus.bind(this)),e.addEventListener("focusout",this._onFocusOut.bind(this))),e.style.pointerEvents=t.accessiblePointerEvents,e.type=t.accessibleType,t.accessibleTitle&&null!==t.accessibleTitle?e.title=t.accessibleTitle:(!t.accessibleHint||null===t.accessibleHint)&&(e.title=`displayObject ${t.tabIndex}`),t.accessibleHint&&null!==t.accessibleHint&&e.setAttribute("aria-label",t.accessibleHint),this.debug&&this.updateDebugHTML(e),t._accessibleActive=!0,t._accessibleDiv=e,e.displayObject=t,this.children.push(t),this.div.appendChild(t._accessibleDiv),t._accessibleDiv.tabIndex=t.tabIndex}_dispatchEvent(t,e){const{displayObject:s}=t.target,i=this.renderer.events.rootBoundary,r=Object.assign(new kn(i),{target:s});i.rootTarget=this.renderer.lastObjectRendered,e.forEach((t=>i.dispatchEvent(r,t)))}_onClick(t){this._dispatchEvent(t,["click","pointertap","tap"])}_onFocus(t){t.target.getAttribute("aria-live")||t.target.setAttribute("aria-live","assertive"),this._dispatchEvent(t,["mouseover"])}_onFocusOut(t){t.target.getAttribute("aria-live")||t.target.setAttribute("aria-live","polite"),this._dispatchEvent(t,["mouseout"])}_onKeyDown(t){9===t.keyCode&&this.activate()}_onMouseMove(t){0===t.movementX&&0===t.movementY||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}ta.extension={name:"accessibility",type:[rs.RendererPlugin,rs.CanvasRendererPlugin]},os.add(ta);const ea=class{constructor(t){this.stage=new En,t=Object.assign({forceCanvas:!1},t),this.renderer=Zr(t),ea._plugins.forEach((e=>{e.init.call(this,t)}))}render(){this.renderer.render(this.stage)}get view(){return this.renderer.view}get screen(){return this.renderer.screen}destroy(t,e){const s=ea._plugins.slice(0);s.reverse(),s.forEach((t=>{t.destroy.call(this)})),this.stage.destroy(e),this.stage=null,this.renderer.destroy(t),this.renderer=null}};let sa=ea;sa._plugins=[],os.handleByList(rs.Application,sa._plugins);class ia{static init(t){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{!this._resizeTo||(this.cancelResize(),this._resizeId=requestAnimationFrame((()=>this.resize())))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;let t,e;if(this.cancelResize(),this._resizeTo===globalThis.window)t=globalThis.innerWidth,e=globalThis.innerHeight;else{const{clientWidth:s,clientHeight:i}=this._resizeTo;t=s,e=i}this.renderer.resize(t,e),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=t.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}ia.extension=rs.Application,os.add(ia);const ra={loader:rs.LoadParser,resolver:rs.ResolveParser,cache:rs.CacheParser,detection:rs.DetectionParser};os.handle(rs.Asset,(t=>{const e=t.ref;Object.entries(ra).filter((([t])=>!!e[t])).forEach((([t,s])=>{var i;return os.add(Object.assign(e[t],{extension:null!=(i=e[t].extension)?i:s}))}))}),(t=>{const e=t.ref;Object.keys(ra).filter((t=>!!e[t])).forEach((t=>os.remove(e[t])))}));class na{constructor(t,e=!1){this._loader=t,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=e}add(t){t.forEach((t=>{this._assetList.push(t)})),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const t=[],e=Math.min(this._assetList.length,this._maxConcurrent);for(let s=0;s(Array.isArray(t)||(t=[t]),e?t.map((t=>"string"==typeof t?e(t):t)):t),la=(t,e)=>{const s=e.split("?")[1];return s&&(t+=`?${s}`),t};function ua(t,e,s,i,r){const n=e[s];for(let a=0;a{const e=t.substring(1,t.length-1).split(",");i.push(e)})),ua(t,i,0,e,s)}else s.push(t);return s}const ca=t=>!Array.isArray(t);const pa=new class{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(t){return this._cache.has(t)}get(t){const e=this._cache.get(t);return e||console.warn(`[Assets] Asset id ${t} was not found in the Cache`),e}set(t,e){const s=ha(t);let i;for(let t=0;t{i[t]=e})));const r=Object.keys(i),n={cacheKeys:r,keys:s};if(s.forEach((t=>{this._cacheMap.set(t,n)})),r.forEach((t=>{this._cache.has(t)&&this._cache.get(t)!==e&&console.warn("[Cache] already has key:",t),this._cache.set(t,i[t])})),e instanceof Wi){const t=e;s.forEach((e=>{t.baseTexture!==Wi.EMPTY.baseTexture&&ys.addToCache(t.baseTexture,e),Wi.addToCache(t,e)}))}}remove(t){if(this._cacheMap.get(t),!this._cacheMap.has(t))return void console.warn(`[Assets] Asset id ${t} was not found in the Cache`);const e=this._cacheMap.get(t);e.cacheKeys.forEach((t=>{this._cache.delete(t)})),e.keys.forEach((t=>{this._cacheMap.delete(t)}))}get parsers(){return this._parsers}};class fa{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(t,e,s)=>(this._parsersValidated=!1,t[e]=s,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(t,e){const s={promise:null,parser:null};return s.promise=(async()=>{var i,r;let n=null,a=null;if(e.loadParser&&(a=this._parserHash[e.loadParser],a||console.warn(`[Assets] specified load parser "${e.loadParser}" not found while loading ${t}`)),!a){for(let s=0;s({src:t}))),a=n.length,o=n.map((async t=>{const r=$t.toAbsolute(t.src);if(!i[t.src])try{this.promiseCache[r]||(this.promiseCache[r]=this._getLoadPromiseAndParser(r,t)),i[t.src]=await this.promiseCache[r].promise,e&&e(++s/a)}catch(e){throw delete this.promiseCache[r],delete i[t.src],new Error(`[Loader.load] Failed to load ${r}.\n${e}`)}}));return await Promise.all(o),r?i[n[0].src]:i}async unload(t){const e=ha(t,(t=>({src:t}))).map((async t=>{var e,s;const i=$t.toAbsolute(t.src),r=this.promiseCache[i];if(r){const n=await r.promise;null==(s=null==(e=r.parser)?void 0:e.unload)||s.call(e,n,t,this),delete this.promiseCache[i]}}));await Promise.all(e)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter((t=>t.name)).reduce(((t,e)=>(t[e.name]&&console.warn(`[Assets] loadParser name conflict "${e.name}"`),Qi(bt({},t),{[e.name]:e}))),{})}}var ma=(t=>(t[t.Low=0]="Low",t[t.Normal=1]="Normal",t[t.High=2]="High",t))(ma||{});const _a={extension:{type:rs.LoadParser,priority:ma.Low},name:"loadJson",test:t=>aa(t,"application/json")||oa(t,".json"),load:async t=>await(await A.ADAPTER.fetch(t)).json()};os.add(_a);const ga={name:"loadTxt",extension:{type:rs.LoadParser,priority:ma.Low},test:t=>aa(t,"text/plain")||oa(t,".txt"),load:async t=>await(await A.ADAPTER.fetch(t)).text()};os.add(ga);const xa=["normal","bold","100","200","300","400","500","600","700","800","900"],va=[".ttf",".otf",".woff",".woff2"],ya=["font/ttf","font/otf","font/woff","font/woff2"],Ta=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function ba(t){const e=$t.extname(t),s=$t.basename(t,e).replace(/(-|_)/g," ").toLowerCase().split(" ").map((t=>t.charAt(0).toUpperCase()+t.slice(1)));let i=s.length>0;for(const t of s)if(!t.match(Ta)){i=!1;break}let r=s.join(" ");return i||(r=`"${r.replace(/[\\"]/g,"\\$&")}"`),r}const Ea={extension:{type:rs.LoadParser,priority:ma.Low},name:"loadWebFont",test:t=>aa(t,ya)||oa(t,va),async load(t,e){var s,i,r,n,a,o;const h=A.ADAPTER.getFontFaceSet();if(h){const l=[],u=null!=(i=null==(s=e.data)?void 0:s.family)?i:ba(t),d=null!=(a=null==(n=null==(r=e.data)?void 0:r.weights)?void 0:n.filter((t=>xa.includes(t))))?a:["normal"],c=null!=(o=e.data)?o:{};for(let e=0;eA.ADAPTER.getFontFaceSet().delete(t)))}};os.add(Ea);let Aa,Ra=0;const Sa={id:"checkImageBitmap",code:"\n async function checkImageBitmap()\n {\n try\n {\n if (typeof createImageBitmap !== 'function') return false;\n\n const response = await fetch('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=');\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap.width === 1 && imageBitmap.height === 1;\n }\n catch (e)\n {\n return false;\n }\n }\n checkImageBitmap().then((result) => { self.postMessage(result); });\n "},wa={id:"loadImageBitmap",code:"\n async function loadImageBitmap(url)\n {\n const response = await fetch(url);\n\n if (!response.ok)\n {\n throw new Error(`[WorkerManager.loadImageBitmap] Failed to fetch ${url}: `\n + `${response.status} ${response.statusText}`);\n }\n\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap;\n }\n self.onmessage = async (event) =>\n {\n try\n {\n const imageBitmap = await loadImageBitmap(event.data.data[0]);\n\n self.postMessage({\n data: imageBitmap,\n uuid: event.data.uuid,\n id: event.data.id,\n }, [imageBitmap]);\n }\n catch(e)\n {\n self.postMessage({\n error: e,\n uuid: event.data.uuid,\n id: event.data.id,\n });\n }\n };"};let Ia;const Ma=new class{constructor(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}isImageBitmapSupported(){return void 0!==this._isImageBitmapSupported||(this._isImageBitmapSupported=new Promise((t=>{const e=URL.createObjectURL(new Blob([Sa.code],{type:"application/javascript"})),s=new Worker(e);s.addEventListener("message",(i=>{s.terminate(),URL.revokeObjectURL(e),t(i.data)}))}))),this._isImageBitmapSupported}loadImageBitmap(t){return this._run("loadImageBitmap",[t])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){void 0===Aa&&(Aa=navigator.hardwareConcurrency||4);let t=this.workerPool.pop();return!t&&this._createdWorkers{this.complete(t.data),this.returnWorker(t.target),this.next()}))),t}returnWorker(t){this.workerPool.push(t)}complete(t){void 0!==t.error?this.resolveHash[t.uuid].reject(t.error):this.resolveHash[t.uuid].resolve(t.data),this.resolveHash[t.uuid]=null}async _run(t,e){await this._initWorkers();const s=new Promise(((s,i)=>{this.queue.push({id:t,arguments:e,resolve:s,reject:i})}));return this.next(),s}next(){if(!this.queue.length)return;const t=this.getWorker();if(!t)return;const e=this.queue.pop(),s=e.id;this.resolveHash[Ra]={resolve:e.resolve,reject:e.reject},t.postMessage({data:e.arguments,uuid:Ra++,id:s})}};function Ca(t,e,s){const i=new Wi(t);return i.baseTexture.on("dispose",(()=>{delete e.promiseCache[s]})),i}const Da=[".jpeg",".jpg",".png",".webp",".avif"],Pa=["image/jpeg","image/png","image/webp","image/avif"];async function Oa(t){const e=await A.ADAPTER.fetch(t);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${t}: ${e.status} ${e.statusText}`);const s=await e.blob();return await createImageBitmap(s)}const Fa={name:"loadTextures",extension:{type:rs.LoadParser,priority:ma.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test:t=>aa(t,Pa)||oa(t,Da),async load(t,e,s){let i=null;i=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await Ma.isImageBitmapSupported()?await Ma.loadImageBitmap(t):await Oa(t):await new Promise((e=>{i=new Image,i.crossOrigin=this.config.crossOrigin,i.src=t,i.complete?e(i):i.onload=()=>{e(i)}}));const r=new ys(i,bt({resolution:ss(t)},e.data));return r.resource.src=t,Ca(r,s,t)},unload(t){t.destroy(!0)}};os.add(Fa);const Ba={extension:{type:rs.LoadParser,priority:ma.High},name:"loadSVG",test:t=>aa(t,"image/svg+xml")||oa(t,".svg"),testParse:async t=>fn.test(t),async parse(t,e,s){var i;const r=new fn(t,null==(i=null==e?void 0:e.data)?void 0:i.resourceOptions);await r.load();const n=new ys(r,bt({resolution:ss(t)},null==e?void 0:e.data));return n.resource.src=t,Ca(n,s,t)},load:async(t,e)=>(await A.ADAPTER.fetch(t)).text(),unload:Fa.unload};os.add(Ba);class Na{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(t,e)=>`${t}${this._bundleIdConnector}${e}`,extractAssetIdFromBundle:(t,e)=>e.replace(`${t}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(t){var e,s,i;if(this._bundleIdConnector=null!=(e=t.connector)?e:this._bundleIdConnector,this._createBundleAssetId=null!=(s=t.createBundleAssetId)?s:this._createBundleAssetId,this._extractAssetIdFromBundle=null!=(i=t.extractAssetIdFromBundle)?i:this._extractAssetIdFromBundle,"bar"!==this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar")))throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...t){t.forEach((t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))})),this._resolverHash={}}set basePath(t){this._basePath=t}get basePath(){return this._basePath}set rootPath(t){this._rootPath=t}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(t){if("string"==typeof t)this._defaultSearchParams=t;else{const e=t;this._defaultSearchParams=Object.keys(e).map((t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`)).join("&")}}addManifest(t){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=t,t.bundles.forEach((t=>{this.addBundle(t.name,t.assets)}))}addBundle(t,e){const s=[];Array.isArray(e)?e.forEach((e=>{if("string"==typeof e.name){const i=this._createBundleAssetId(t,e.name);s.push(i),this.add([e.name,i],e.srcs,e.data)}else{const i=e.name.map((e=>this._createBundleAssetId(t,e)));i.forEach((t=>{s.push(t)})),this.add([...e.name,...i],e.srcs)}})):Object.keys(e).forEach((i=>{s.push(this._createBundleAssetId(t,i)),this.add([i,this._createBundleAssetId(t,i)],e[i])})),this._bundles[t]=s}add(t,e,s){const i=ha(t);i.forEach((t=>{this.hasKey(t)&&console.warn(`[Resolver] already has key: ${t} overwriting`)})),Array.isArray(e)||(e="string"==typeof e?da(e):[e]);const r=e.map((t=>{var e;let r=t;if("string"==typeof t){let e=!1;for(let s=0;s{this._assetMap[t]=r}))}resolveBundle(t){const e=ca(t);t=ha(t);const s={};return t.forEach((t=>{const e=this._bundles[t];if(e){const i=this.resolve(e),r={};for(const e in i){const s=i[e];r[this._extractAssetIdFromBundle(t,e)]=s}s[t]=r}})),e?s[t[0]]:s}resolveUrl(t){const e=this.resolve(t);if("string"!=typeof t){const t={};for(const s in e)t[s]=e[s].src;return t}return e.src}resolve(t){const e=ca(t);t=ha(t);const s={};return t.forEach((t=>{var e;if(!this._resolverHash[t])if(this._assetMap[t]){let s=this._assetMap[t];const i=this._getPreferredOrder(s),r=s[0];null==i||i.priority.forEach((t=>{i.params[t].forEach((e=>{const i=s.filter((s=>!!s[t]&&s[t]===e));i.length&&(s=i)}))})),this._resolverHash[t]=null!=(e=s[0])?e:r}else{let e=t;(this._basePath||this._rootPath)&&(e=$t.toAbsolute(e,this._basePath,this._rootPath)),e=this._appendDefaultSearchParams(e),this._resolverHash[t]={src:e}}s[t]=this._resolverHash[t]})),e?s[t[0]]:s}hasKey(t){return!!this._assetMap[t]}hasBundle(t){return!!this._bundles[t]}_getPreferredOrder(t){for(let e=0;et.params.format.includes(e.format)));if(s)return s}return this._preferredOrder[0]}_appendDefaultSearchParams(t){if(!this._defaultSearchParams)return t;return`${t}${/\?/.test(t)?"&":"?"}${this._defaultSearchParams}`}}class La{constructor(){this._detections=[],this._initialized=!1,this.resolver=new Na,this.loader=new fa,this.cache=pa,this._backgroundLoader=new na(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(t={}){var e,s,i,r;if(this._initialized)return void console.warn("[Assets]AssetManager already initialized, did you load before calling this Asset.init()?");if(this._initialized=!0,t.defaultSearchParams&&this.resolver.setDefaultSearchParams(t.defaultSearchParams),t.basePath&&(this.resolver.basePath=t.basePath),t.bundleIdentifier&&this.resolver.setBundleIdentifier(t.bundleIdentifier),t.manifest){let e=t.manifest;"string"==typeof e&&(e=await this.load(e)),this.resolver.addManifest(e)}const n=null!=(s=null==(e=t.texturePreference)?void 0:e.resolution)?s:1,a="number"==typeof n?[n]:n;let o=[];if(null!=(i=t.texturePreference)&&i.format){const e=null==(r=t.texturePreference)?void 0:r.format;o="string"==typeof e?[e]:e;for(const t of this._detections)await t.test()||(o=await t.remove(o))}else for(const t of this._detections)await t.test()&&(o=await t.add(o));this.resolver.prefer({params:{format:o,resolution:a}}),t.preferences&&this.setPreferences(t.preferences)}add(t,e,s){this.resolver.add(t,e,s)}async load(t,e){this._initialized||await this.init();const s=ca(t),i=ha(t).map((t=>"string"!=typeof t?(this.resolver.add(t.src,t),t.src):(this.resolver.hasKey(t)||this.resolver.add(t,t),t))),r=this.resolver.resolve(i),n=await this._mapLoadToResolve(r,e);return s?n[i[0]]:n}addBundle(t,e){this.resolver.addBundle(t,e)}async loadBundle(t,e){this._initialized||await this.init();let s=!1;"string"==typeof t&&(s=!0,t=[t]);const i=this.resolver.resolveBundle(t),r={},n=Object.keys(i);let a=0,o=0;const h=()=>{null==e||e(++a/o)},l=n.map((t=>{const e=i[t];return o+=Object.keys(e).length,this._mapLoadToResolve(e,h).then((e=>{r[t]=e}))}));return await Promise.all(l),s?r[t[0]]:r}async backgroundLoad(t){this._initialized||await this.init(),"string"==typeof t&&(t=[t]);const e=this.resolver.resolve(t);this._backgroundLoader.add(Object.values(e))}async backgroundLoadBundle(t){this._initialized||await this.init(),"string"==typeof t&&(t=[t]);const e=this.resolver.resolveBundle(t);Object.values(e).forEach((t=>{this._backgroundLoader.add(Object.values(t))}))}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(t){if("string"==typeof t)return pa.get(t);const e={};for(let s=0;s{const s=r[t.src],a=[t.src];t.alias&&a.push(...t.alias),n[i[e]]=s,pa.set(a,s)})),n}async unload(t){this._initialized||await this.init();const e=ha(t).map((t=>"string"!=typeof t?t.src:t)),s=this.resolver.resolve(e);await this._unloadFromResolved(s)}async unloadBundle(t){this._initialized||await this.init(),t=ha(t);const e=this.resolver.resolveBundle(t),s=Object.keys(e).map((t=>this._unloadFromResolved(e[t])));await Promise.all(s)}async _unloadFromResolved(t){const e=Object.values(t);e.forEach((t=>{pa.remove(t.src)})),await this.loader.unload(e)}get detections(){return this._detections}get preferWorkers(){return Fa.config.preferWorkers}set preferWorkers(t){Kt("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:t})}setPreferences(t){this.loader.parsers.forEach((e=>{!e.config||Object.keys(e.config).filter((e=>e in t)).forEach((s=>{e.config[s]=t[s]}))}))}}const Ga=new La;os.handleByList(rs.LoadParser,Ga.loader.parsers).handleByList(rs.ResolveParser,Ga.resolver.parsers).handleByList(rs.CacheParser,Ga.cache.parsers).handleByList(rs.DetectionParser,Ga.detections);const Ua={extension:rs.CacheParser,test:t=>Array.isArray(t)&&t.every((t=>t instanceof Wi)),getCacheableAssets:(t,e)=>{const s={};return t.forEach((t=>{e.forEach(((e,i)=>{s[t+(0===i?"":i+1)]=e}))})),s}};os.add(Ua);const ka={extension:{type:rs.DetectionParser,priority:1},test:async()=>{if(!globalThis.createImageBitmap)return!1;const t=await A.ADAPTER.fetch("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=").then((t=>t.blob()));return createImageBitmap(t).then((()=>!0),(()=>!1))},add:async t=>[...t,"avif"],remove:async t=>t.filter((t=>"avif"!==t))};os.add(ka);const Xa={extension:{type:rs.DetectionParser,priority:0},test:async()=>{if(!globalThis.createImageBitmap)return!1;const t=await A.ADAPTER.fetch("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=").then((t=>t.blob()));return createImageBitmap(t).then((()=>!0),(()=>!1))},add:async t=>[...t,"webp"],remove:async t=>t.filter((t=>"webp"!==t))};os.add(Xa);const Ha=["png","jpg","jpeg"],Va={extension:{type:rs.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async t=>[...t,...Ha],remove:async t=>t.filter((t=>!Ha.includes(t)))};os.add(Va);const za={extension:rs.ResolveParser,test:Fa.test,parse:t=>{var e,s;return{resolution:parseFloat(null!=(s=null==(e=A.RETINA_PREFIX.exec(t))?void 0:e[1])?s:"1"),format:t.split(".").pop(),src:t}}};os.add(za);var Wa=(t=>(t[t.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",t[t.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",t[t.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",t[t.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",t[t.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",t[t.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",t[t.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",t[t.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",t[t.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",t[t.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",t[t.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",t[t.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",t[t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",t[t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",t[t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",t[t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",t[t.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",t[t.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",t[t.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",t[t.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",t[t.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",t))(Wa||{});const Ya={33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,35840:.5,35842:.5,35841:.25,35843:.25,36196:.5,35986:.5,35986:1,34798:1,37808:1};let ja,$a;function qa(){$a={s3tc:ja.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:ja.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:ja.getExtension("WEBGL_compressed_texture_etc"),etc1:ja.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:ja.getExtension("WEBGL_compressed_texture_pvrtc")||ja.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:ja.getExtension("WEBGL_compressed_texture_atc"),astc:ja.getExtension("WEBGL_compressed_texture_astc")}}const Ka={extension:{type:rs.DetectionParser,priority:2},test:async()=>{const t=A.ADAPTER.createCanvas().getContext("webgl");return t?(ja=t,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async t=>{$a||qa();const e=[];for(const t in $a)!$a[t]||e.push(t);return[...e,...t]},remove:async t=>($a||qa(),t.filter((t=>!(t in $a))))};os.add(Ka);class Za extends gs{constructor(t,e={width:1,height:1,autoLoad:!0}){let s,i;"string"==typeof t?(s=t,i=new Uint8Array):(s=null,i=t),super(i,e),this.origin=s,this.buffer=i?new hs(i):null,this._load=null,this.loaded=!1,null!==this.origin&&!1!==e.autoLoad&&this.load(),null===this.origin&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(t){}load(){return this._load||(this._load=fetch(this.origin).then((t=>t.blob())).then((t=>t.arrayBuffer())).then((t=>(this.data=new Uint32Array(t),this.buffer=new hs(t),this.loaded=!0,this.onBlobLoaded(t),this.update(),this)))),this._load}}class Qa extends Za{constructor(t,e){super(t,e),this.format=e.format,this.levels=e.levels||1,this._width=e.width,this._height=e.height,this._extension=Qa._formatToExtension(this.format),(e.levelBuffers||this.buffer)&&(this._levelBuffers=e.levelBuffers||Qa._createLevelBuffers(t instanceof Uint8Array?t:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(t,e,s){const i=t.gl;if(!t.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;for(let t=0,e=this.levels;t=33776&&t<=33779)return"s3tc";if(t>=37488&&t<=37497)return"etc";if(t>=35840&&t<=35843)return"pvrtc";if(t>=36196)return"etc1";if(t>=35986&&t<=34798)return"atc";throw new Error("Invalid (compressed) texture format given!")}static _createLevelBuffers(t,e,s,i,r,n,a){const o=new Array(s);let h=t.byteOffset,l=n,u=a,d=l+i-1&~(i-1),c=u+r-1&~(r-1),p=d*c*Ya[e];for(let n=0;n1?l:d,levelHeight:s>1?u:c,levelBuffer:new Uint8Array(t.buffer,h,p)},h+=p,l=l>>1||1,u=u>>1||1,d=l+i-1&~(i-1),c=u+r-1&~(r-1),p=d*c*Ya[e];return o}}const Ja=124,to=3,eo=4,so=7,io=19,ro=2,no=0,ao=1,oo=2,ho=3;var lo=(t=>(t[t.DXGI_FORMAT_UNKNOWN=0]="DXGI_FORMAT_UNKNOWN",t[t.DXGI_FORMAT_R32G32B32A32_TYPELESS=1]="DXGI_FORMAT_R32G32B32A32_TYPELESS",t[t.DXGI_FORMAT_R32G32B32A32_FLOAT=2]="DXGI_FORMAT_R32G32B32A32_FLOAT",t[t.DXGI_FORMAT_R32G32B32A32_UINT=3]="DXGI_FORMAT_R32G32B32A32_UINT",t[t.DXGI_FORMAT_R32G32B32A32_SINT=4]="DXGI_FORMAT_R32G32B32A32_SINT",t[t.DXGI_FORMAT_R32G32B32_TYPELESS=5]="DXGI_FORMAT_R32G32B32_TYPELESS",t[t.DXGI_FORMAT_R32G32B32_FLOAT=6]="DXGI_FORMAT_R32G32B32_FLOAT",t[t.DXGI_FORMAT_R32G32B32_UINT=7]="DXGI_FORMAT_R32G32B32_UINT",t[t.DXGI_FORMAT_R32G32B32_SINT=8]="DXGI_FORMAT_R32G32B32_SINT",t[t.DXGI_FORMAT_R16G16B16A16_TYPELESS=9]="DXGI_FORMAT_R16G16B16A16_TYPELESS",t[t.DXGI_FORMAT_R16G16B16A16_FLOAT=10]="DXGI_FORMAT_R16G16B16A16_FLOAT",t[t.DXGI_FORMAT_R16G16B16A16_UNORM=11]="DXGI_FORMAT_R16G16B16A16_UNORM",t[t.DXGI_FORMAT_R16G16B16A16_UINT=12]="DXGI_FORMAT_R16G16B16A16_UINT",t[t.DXGI_FORMAT_R16G16B16A16_SNORM=13]="DXGI_FORMAT_R16G16B16A16_SNORM",t[t.DXGI_FORMAT_R16G16B16A16_SINT=14]="DXGI_FORMAT_R16G16B16A16_SINT",t[t.DXGI_FORMAT_R32G32_TYPELESS=15]="DXGI_FORMAT_R32G32_TYPELESS",t[t.DXGI_FORMAT_R32G32_FLOAT=16]="DXGI_FORMAT_R32G32_FLOAT",t[t.DXGI_FORMAT_R32G32_UINT=17]="DXGI_FORMAT_R32G32_UINT",t[t.DXGI_FORMAT_R32G32_SINT=18]="DXGI_FORMAT_R32G32_SINT",t[t.DXGI_FORMAT_R32G8X24_TYPELESS=19]="DXGI_FORMAT_R32G8X24_TYPELESS",t[t.DXGI_FORMAT_D32_FLOAT_S8X24_UINT=20]="DXGI_FORMAT_D32_FLOAT_S8X24_UINT",t[t.DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS=21]="DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS",t[t.DXGI_FORMAT_X32_TYPELESS_G8X24_UINT=22]="DXGI_FORMAT_X32_TYPELESS_G8X24_UINT",t[t.DXGI_FORMAT_R10G10B10A2_TYPELESS=23]="DXGI_FORMAT_R10G10B10A2_TYPELESS",t[t.DXGI_FORMAT_R10G10B10A2_UNORM=24]="DXGI_FORMAT_R10G10B10A2_UNORM",t[t.DXGI_FORMAT_R10G10B10A2_UINT=25]="DXGI_FORMAT_R10G10B10A2_UINT",t[t.DXGI_FORMAT_R11G11B10_FLOAT=26]="DXGI_FORMAT_R11G11B10_FLOAT",t[t.DXGI_FORMAT_R8G8B8A8_TYPELESS=27]="DXGI_FORMAT_R8G8B8A8_TYPELESS",t[t.DXGI_FORMAT_R8G8B8A8_UNORM=28]="DXGI_FORMAT_R8G8B8A8_UNORM",t[t.DXGI_FORMAT_R8G8B8A8_UNORM_SRGB=29]="DXGI_FORMAT_R8G8B8A8_UNORM_SRGB",t[t.DXGI_FORMAT_R8G8B8A8_UINT=30]="DXGI_FORMAT_R8G8B8A8_UINT",t[t.DXGI_FORMAT_R8G8B8A8_SNORM=31]="DXGI_FORMAT_R8G8B8A8_SNORM",t[t.DXGI_FORMAT_R8G8B8A8_SINT=32]="DXGI_FORMAT_R8G8B8A8_SINT",t[t.DXGI_FORMAT_R16G16_TYPELESS=33]="DXGI_FORMAT_R16G16_TYPELESS",t[t.DXGI_FORMAT_R16G16_FLOAT=34]="DXGI_FORMAT_R16G16_FLOAT",t[t.DXGI_FORMAT_R16G16_UNORM=35]="DXGI_FORMAT_R16G16_UNORM",t[t.DXGI_FORMAT_R16G16_UINT=36]="DXGI_FORMAT_R16G16_UINT",t[t.DXGI_FORMAT_R16G16_SNORM=37]="DXGI_FORMAT_R16G16_SNORM",t[t.DXGI_FORMAT_R16G16_SINT=38]="DXGI_FORMAT_R16G16_SINT",t[t.DXGI_FORMAT_R32_TYPELESS=39]="DXGI_FORMAT_R32_TYPELESS",t[t.DXGI_FORMAT_D32_FLOAT=40]="DXGI_FORMAT_D32_FLOAT",t[t.DXGI_FORMAT_R32_FLOAT=41]="DXGI_FORMAT_R32_FLOAT",t[t.DXGI_FORMAT_R32_UINT=42]="DXGI_FORMAT_R32_UINT",t[t.DXGI_FORMAT_R32_SINT=43]="DXGI_FORMAT_R32_SINT",t[t.DXGI_FORMAT_R24G8_TYPELESS=44]="DXGI_FORMAT_R24G8_TYPELESS",t[t.DXGI_FORMAT_D24_UNORM_S8_UINT=45]="DXGI_FORMAT_D24_UNORM_S8_UINT",t[t.DXGI_FORMAT_R24_UNORM_X8_TYPELESS=46]="DXGI_FORMAT_R24_UNORM_X8_TYPELESS",t[t.DXGI_FORMAT_X24_TYPELESS_G8_UINT=47]="DXGI_FORMAT_X24_TYPELESS_G8_UINT",t[t.DXGI_FORMAT_R8G8_TYPELESS=48]="DXGI_FORMAT_R8G8_TYPELESS",t[t.DXGI_FORMAT_R8G8_UNORM=49]="DXGI_FORMAT_R8G8_UNORM",t[t.DXGI_FORMAT_R8G8_UINT=50]="DXGI_FORMAT_R8G8_UINT",t[t.DXGI_FORMAT_R8G8_SNORM=51]="DXGI_FORMAT_R8G8_SNORM",t[t.DXGI_FORMAT_R8G8_SINT=52]="DXGI_FORMAT_R8G8_SINT",t[t.DXGI_FORMAT_R16_TYPELESS=53]="DXGI_FORMAT_R16_TYPELESS",t[t.DXGI_FORMAT_R16_FLOAT=54]="DXGI_FORMAT_R16_FLOAT",t[t.DXGI_FORMAT_D16_UNORM=55]="DXGI_FORMAT_D16_UNORM",t[t.DXGI_FORMAT_R16_UNORM=56]="DXGI_FORMAT_R16_UNORM",t[t.DXGI_FORMAT_R16_UINT=57]="DXGI_FORMAT_R16_UINT",t[t.DXGI_FORMAT_R16_SNORM=58]="DXGI_FORMAT_R16_SNORM",t[t.DXGI_FORMAT_R16_SINT=59]="DXGI_FORMAT_R16_SINT",t[t.DXGI_FORMAT_R8_TYPELESS=60]="DXGI_FORMAT_R8_TYPELESS",t[t.DXGI_FORMAT_R8_UNORM=61]="DXGI_FORMAT_R8_UNORM",t[t.DXGI_FORMAT_R8_UINT=62]="DXGI_FORMAT_R8_UINT",t[t.DXGI_FORMAT_R8_SNORM=63]="DXGI_FORMAT_R8_SNORM",t[t.DXGI_FORMAT_R8_SINT=64]="DXGI_FORMAT_R8_SINT",t[t.DXGI_FORMAT_A8_UNORM=65]="DXGI_FORMAT_A8_UNORM",t[t.DXGI_FORMAT_R1_UNORM=66]="DXGI_FORMAT_R1_UNORM",t[t.DXGI_FORMAT_R9G9B9E5_SHAREDEXP=67]="DXGI_FORMAT_R9G9B9E5_SHAREDEXP",t[t.DXGI_FORMAT_R8G8_B8G8_UNORM=68]="DXGI_FORMAT_R8G8_B8G8_UNORM",t[t.DXGI_FORMAT_G8R8_G8B8_UNORM=69]="DXGI_FORMAT_G8R8_G8B8_UNORM",t[t.DXGI_FORMAT_BC1_TYPELESS=70]="DXGI_FORMAT_BC1_TYPELESS",t[t.DXGI_FORMAT_BC1_UNORM=71]="DXGI_FORMAT_BC1_UNORM",t[t.DXGI_FORMAT_BC1_UNORM_SRGB=72]="DXGI_FORMAT_BC1_UNORM_SRGB",t[t.DXGI_FORMAT_BC2_TYPELESS=73]="DXGI_FORMAT_BC2_TYPELESS",t[t.DXGI_FORMAT_BC2_UNORM=74]="DXGI_FORMAT_BC2_UNORM",t[t.DXGI_FORMAT_BC2_UNORM_SRGB=75]="DXGI_FORMAT_BC2_UNORM_SRGB",t[t.DXGI_FORMAT_BC3_TYPELESS=76]="DXGI_FORMAT_BC3_TYPELESS",t[t.DXGI_FORMAT_BC3_UNORM=77]="DXGI_FORMAT_BC3_UNORM",t[t.DXGI_FORMAT_BC3_UNORM_SRGB=78]="DXGI_FORMAT_BC3_UNORM_SRGB",t[t.DXGI_FORMAT_BC4_TYPELESS=79]="DXGI_FORMAT_BC4_TYPELESS",t[t.DXGI_FORMAT_BC4_UNORM=80]="DXGI_FORMAT_BC4_UNORM",t[t.DXGI_FORMAT_BC4_SNORM=81]="DXGI_FORMAT_BC4_SNORM",t[t.DXGI_FORMAT_BC5_TYPELESS=82]="DXGI_FORMAT_BC5_TYPELESS",t[t.DXGI_FORMAT_BC5_UNORM=83]="DXGI_FORMAT_BC5_UNORM",t[t.DXGI_FORMAT_BC5_SNORM=84]="DXGI_FORMAT_BC5_SNORM",t[t.DXGI_FORMAT_B5G6R5_UNORM=85]="DXGI_FORMAT_B5G6R5_UNORM",t[t.DXGI_FORMAT_B5G5R5A1_UNORM=86]="DXGI_FORMAT_B5G5R5A1_UNORM",t[t.DXGI_FORMAT_B8G8R8A8_UNORM=87]="DXGI_FORMAT_B8G8R8A8_UNORM",t[t.DXGI_FORMAT_B8G8R8X8_UNORM=88]="DXGI_FORMAT_B8G8R8X8_UNORM",t[t.DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM=89]="DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM",t[t.DXGI_FORMAT_B8G8R8A8_TYPELESS=90]="DXGI_FORMAT_B8G8R8A8_TYPELESS",t[t.DXGI_FORMAT_B8G8R8A8_UNORM_SRGB=91]="DXGI_FORMAT_B8G8R8A8_UNORM_SRGB",t[t.DXGI_FORMAT_B8G8R8X8_TYPELESS=92]="DXGI_FORMAT_B8G8R8X8_TYPELESS",t[t.DXGI_FORMAT_B8G8R8X8_UNORM_SRGB=93]="DXGI_FORMAT_B8G8R8X8_UNORM_SRGB",t[t.DXGI_FORMAT_BC6H_TYPELESS=94]="DXGI_FORMAT_BC6H_TYPELESS",t[t.DXGI_FORMAT_BC6H_UF16=95]="DXGI_FORMAT_BC6H_UF16",t[t.DXGI_FORMAT_BC6H_SF16=96]="DXGI_FORMAT_BC6H_SF16",t[t.DXGI_FORMAT_BC7_TYPELESS=97]="DXGI_FORMAT_BC7_TYPELESS",t[t.DXGI_FORMAT_BC7_UNORM=98]="DXGI_FORMAT_BC7_UNORM",t[t.DXGI_FORMAT_BC7_UNORM_SRGB=99]="DXGI_FORMAT_BC7_UNORM_SRGB",t[t.DXGI_FORMAT_AYUV=100]="DXGI_FORMAT_AYUV",t[t.DXGI_FORMAT_Y410=101]="DXGI_FORMAT_Y410",t[t.DXGI_FORMAT_Y416=102]="DXGI_FORMAT_Y416",t[t.DXGI_FORMAT_NV12=103]="DXGI_FORMAT_NV12",t[t.DXGI_FORMAT_P010=104]="DXGI_FORMAT_P010",t[t.DXGI_FORMAT_P016=105]="DXGI_FORMAT_P016",t[t.DXGI_FORMAT_420_OPAQUE=106]="DXGI_FORMAT_420_OPAQUE",t[t.DXGI_FORMAT_YUY2=107]="DXGI_FORMAT_YUY2",t[t.DXGI_FORMAT_Y210=108]="DXGI_FORMAT_Y210",t[t.DXGI_FORMAT_Y216=109]="DXGI_FORMAT_Y216",t[t.DXGI_FORMAT_NV11=110]="DXGI_FORMAT_NV11",t[t.DXGI_FORMAT_AI44=111]="DXGI_FORMAT_AI44",t[t.DXGI_FORMAT_IA44=112]="DXGI_FORMAT_IA44",t[t.DXGI_FORMAT_P8=113]="DXGI_FORMAT_P8",t[t.DXGI_FORMAT_A8P8=114]="DXGI_FORMAT_A8P8",t[t.DXGI_FORMAT_B4G4R4A4_UNORM=115]="DXGI_FORMAT_B4G4R4A4_UNORM",t[t.DXGI_FORMAT_P208=116]="DXGI_FORMAT_P208",t[t.DXGI_FORMAT_V208=117]="DXGI_FORMAT_V208",t[t.DXGI_FORMAT_V408=118]="DXGI_FORMAT_V408",t[t.DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE=119]="DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE",t[t.DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE=120]="DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE",t[t.DXGI_FORMAT_FORCE_UINT=121]="DXGI_FORMAT_FORCE_UINT",t))(lo||{}),uo=(t=>(t[t.DDS_DIMENSION_TEXTURE1D=2]="DDS_DIMENSION_TEXTURE1D",t[t.DDS_DIMENSION_TEXTURE2D=3]="DDS_DIMENSION_TEXTURE2D",t[t.DDS_DIMENSION_TEXTURE3D=6]="DDS_DIMENSION_TEXTURE3D",t))(uo||{});const co={827611204:Wa.COMPRESSED_RGBA_S3TC_DXT1_EXT,861165636:Wa.COMPRESSED_RGBA_S3TC_DXT3_EXT,894720068:Wa.COMPRESSED_RGBA_S3TC_DXT5_EXT},po={70:Wa.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:Wa.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:Wa.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:Wa.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:Wa.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:Wa.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:Wa.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:Wa.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:Wa.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT};function fo(t){const e=new Uint32Array(t);if(542327876!==e[0])throw new Error("Invalid DDS file magic word");const s=new Uint32Array(t,0,Ja/Uint32Array.BYTES_PER_ELEMENT),i=s[to],r=s[eo],n=s[so],a=new Uint32Array(t,io*Uint32Array.BYTES_PER_ELEMENT,32/Uint32Array.BYTES_PER_ELEMENT),o=a[1];if(4&o){const s=a[ro];if(808540228!==s){const e=co[s],a=new Uint8Array(t,128);return[new Qa(a,{format:e,width:r,height:i,levels:n})]}const o=128,h=new Uint32Array(e.buffer,o,20/Uint32Array.BYTES_PER_ELEMENT),l=h[no],u=h[ao],d=h[oo],c=h[ho],p=po[l];if(void 0===p)throw new Error(`DDSParser cannot parse texture data with DXGI format ${l}`);if(4===d)throw new Error("DDSParser does not support cubemap textures");if(6===u)throw new Error("DDSParser does not supported 3D texture data");const f=new Array,m=148;if(1===c)f.push(new Uint8Array(t,m));else{const e=Ya[p];let s=0,a=r,o=i;for(let t=0;t>>=1,o>>>=1}let h=m;for(let e=0;enew Qa(t,{format:p,width:r,height:i,levels:n})))}throw 64&o?new Error("DDSParser does not support uncompressed texture data."):512&o?new Error("DDSParser does not supported YUV uncompressed texture data."):131072&o?new Error("DDSParser does not support single-channel (lumninance) texture data!"):2&o?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const mo=[171,75,84,88,32,49,49,187,13,10,26,10],_o=12,go=16,xo=24,vo=28,yo=36,To=40,bo=44,Eo=48,Ao=52,Ro=56,So=60,wo=64,Io={[u.UNSIGNED_BYTE]:1,[u.UNSIGNED_SHORT]:2,[u.INT]:4,[u.UNSIGNED_INT]:4,[u.FLOAT]:4,[u.HALF_FLOAT]:8},Mo={[h.RGBA]:4,[h.RGB]:3,[h.RG]:2,[h.RED]:1,[h.LUMINANCE]:1,[h.LUMINANCE_ALPHA]:2,[h.ALPHA]:1},Co={[u.UNSIGNED_SHORT_4_4_4_4]:2,[u.UNSIGNED_SHORT_5_5_5_1]:2,[u.UNSIGNED_SHORT_5_6_5]:2};function Do(t,e,s=!1){const i=new DataView(e);if(!function(t,e){for(let s=0;se-r){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let h=0;for(;h1||0!==n?E:R,levelHeight:f>1||0!==n?A:S,levelBuffer:new Uint8Array(e,a,b)},a+=b}w+=s+4,w=w%4!=0?w+4-w%4:w,E=E>>1||1,A=A>>1||1,R=E+4-1&-4,S=A+4-1&-4,b=R*S*v}return 0!==n?{uncompressed:x.map((t=>{let e=t[0].levelBuffer,s=!1;return n===u.FLOAT?e=new Float32Array(t[0].levelBuffer.buffer,t[0].levelBuffer.byteOffset,t[0].levelBuffer.byteLength/4):n===u.UNSIGNED_INT?(s=!0,e=new Uint32Array(t[0].levelBuffer.buffer,t[0].levelBuffer.byteOffset,t[0].levelBuffer.byteLength/4)):n===u.INT&&(s=!0,e=new Int32Array(t[0].levelBuffer.buffer,t[0].levelBuffer.byteOffset,t[0].levelBuffer.byteLength/4)),{resource:new gs(e,{width:t[0].levelWidth,height:t[0].levelHeight}),type:n,format:s?Po(a):a}})),kvData:T}:{compressed:x.map((t=>new Qa(null,{format:o,width:h,height:l,levels:f,levelBuffers:t}))),kvData:T}}function Po(t){switch(t){case h.RGBA:return h.RGBA_INTEGER;case h.RGB:return h.RGB_INTEGER;case h.RG:return h.RG_INTEGER;case h.RED:return h.RED_INTEGER;default:return t}}const Oo={extension:{type:rs.LoadParser,priority:ma.High},name:"loadDDS",test:t=>oa(t,".dds"),async load(t,e,s){const i=fo(await(await A.ADAPTER.fetch(t)).arrayBuffer()).map((i=>Ca(new ys(i,bt({mipmap:f.OFF,alphaMode:m.NO_PREMULTIPLIED_ALPHA,resolution:ss(t)},e.data)),s,t)));return 1===i.length?i[0]:i},unload(t){Array.isArray(t)?t.forEach((t=>t.destroy(!0))):t.destroy(!0)}};os.add(Oo);const Fo={extension:{type:rs.LoadParser,priority:ma.High},name:"loadKTX",test:t=>oa(t,".ktx"),async load(t,e,s){const i=await(await A.ADAPTER.fetch(t)).arrayBuffer(),{compressed:r,uncompressed:n,kvData:a}=Do(t,i),o=null!=r?r:n,h=bt({mipmap:f.OFF,alphaMode:m.NO_PREMULTIPLIED_ALPHA,resolution:ss(t)},e.data),l=o.map((e=>{o===n&&Object.assign(h,{type:e.type,format:e.format});const i=new ys(e,h);return i.ktxKeyValueData=a,Ca(i,s,t)}));return 1===l.length?l[0]:l},unload(t){Array.isArray(t)?t.forEach((t=>t.destroy(!0))):t.destroy(!0)}};os.add(Fo);const Bo={extension:rs.ResolveParser,test:t=>{const e=t.split("?")[0].split(".").pop();return["basis","ktx","dds"].includes(e)},parse:t=>{var e,s,i,r;if("ktx"===t.split("?")[0].split(".").pop()){const i=[".s3tc.ktx",".s3tc_sRGB.ktx",".etc.ktx",".etc1.ktx",".pvrt.ktx",".atc.ktx",".astc.ktx"];if(i.some((e=>t.endsWith(e))))return{resolution:parseFloat(null!=(s=null==(e=A.RETINA_PREFIX.exec(t))?void 0:e[1])?s:"1"),format:i.find((e=>t.endsWith(e))),src:t}}return{resolution:parseFloat(null!=(r=null==(i=A.RETINA_PREFIX.exec(t))?void 0:i[1])?r:"1"),format:t.split(".").pop(),src:t}}};os.add(Bo);const No=new Ls,Lo=class{constructor(t){this.renderer=t}async image(t,e,s){const i=new Image;return i.src=await this.base64(t,e,s),i}async base64(t,e,s){const i=this.canvas(t);if(void 0!==i.toBlob)return new Promise(((t,r)=>{i.toBlob((e=>{if(!e)return void r(new Error("ICanvas.toBlob failed!"));const s=new FileReader;s.onload=()=>t(s.result),s.onerror=r,s.readAsDataURL(e)}),e,s)}));if(void 0!==i.toDataURL)return i.toDataURL(e,s);if(void 0!==i.convertToBlob){const t=await i.convertToBlob({type:e,quality:s});return new Promise(((e,s)=>{const i=new FileReader;i.onload=()=>e(i.result),i.onerror=s,i.readAsDataURL(t)}))}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(t,e){const{pixels:s,width:i,height:r,flipY:n}=this._rawPixels(t,e);n&&Lo._flipY(s,i,r),Lo._unpremultiplyAlpha(s);const a=new qe(i,r,1),o=new ImageData(new Uint8ClampedArray(s.buffer),i,r);return a.context.putImageData(o,0,0),a.canvas}pixels(t,e){const{pixels:s,width:i,height:r,flipY:n}=this._rawPixels(t,e);return n&&Lo._flipY(s,i,r),Lo._unpremultiplyAlpha(s),s}_rawPixels(t,e){const s=this.renderer;if(!s)throw new Error("The Extract has already been destroyed");let i,r,n=!1,a=!1;if(t&&(t instanceof Yi?r=t:(r=s.generateTexture(t,{resolution:s.resolution,multisample:s.multisample}),a=!0)),r){if(i=r.baseTexture.resolution,e=null!=e?e:r.frame,n=!1,!a){s.renderTexture.bind(r);const t=r.framebuffer.glFramebuffers[s.CONTEXT_UID];t.blitFramebuffer&&s.framebuffer.bind(t.blitFramebuffer)}}else i=s.resolution,e||((e=No).width=s.width/i,e.height=s.height/i),n=!0,s.renderTexture.bind();const o=Math.round(e.width*i),h=Math.round(e.height*i),l=new Uint8Array(4*o*h),u=s.gl;return u.readPixels(Math.round(e.x*i),Math.round(e.y*i),o,h,u.RGBA,u.UNSIGNED_BYTE,l),a&&(null==r||r.destroy(!0)),{pixels:l,width:o,height:h,flipY:n}}destroy(){this.renderer=null}static _flipY(t,e,s){const i=e<<2,r=s>>1,n=new Uint8Array(i);for(let e=0;e=0&&o>=0&&r>=0&&n>=0))return void(e.length=0);const h=Math.ceil(2.3*Math.sqrt(a+o)),l=8*h+(r?4:0)+(n?4:0);if(e.length=l,0===l)return;if(0===h)return e.length=8,e[0]=e[6]=s+r,e[1]=e[3]=i+n,e[2]=e[4]=s-r,void(e[5]=e[7]=i-n);let u=0,d=4*h+(r?2:0)+2,c=d,p=l;{const t=r+a,o=n,h=s+t,l=s-t,f=i+o;if(e[u++]=h,e[u++]=f,e[--d]=f,e[--d]=l,n){const t=i-o;e[c++]=l,e[c++]=t,e[--p]=t,e[--p]=h}}for(let t=1;t0||e&&i<=0){const e=s/2;for(let i=e+e%2;i=6){ko(s,!1);const t=[];for(let e=0;e=0&&n>=0&&a.push(s,i,s+r,i,s+r,i+n,s,i+n)},triangulate(t,e){const s=t.points,i=e.points;if(0===s.length)return;const r=i.length/2;i.push(s[0],s[1],s[2],s[3],s[6],s[7],s[4],s[5]),e.indices.push(r,r+1,r+2,r+1,r+2,r+3)}},Vo={build(t){Uo.build(t)},triangulate(t,e){Uo.triangulate(t,e)}};var zo=(t=>(t.MITER="miter",t.BEVEL="bevel",t.ROUND="round",t))(zo||{}),Wo=(t=>(t.BUTT="butt",t.ROUND="round",t.SQUARE="square",t))(Wo||{});const Yo={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(t,e=20){if(!this.adaptive||!t||isNaN(t))return e;let s=Math.ceil(t/this.maxLength);return sthis.maxSegments&&(s=this.maxSegments),s}},jo=Yo;class $o{static curveTo(t,e,s,i,r,n){const a=n[n.length-2],o=n[n.length-1]-e,h=a-t,l=i-e,u=s-t,d=Math.abs(o*u-h*l);if(d<1e-8||0===r)return(n[n.length-2]!==t||n[n.length-1]!==e)&&n.push(t,e),null;const c=o*o+h*h,p=l*l+u*u,f=o*l+h*u,m=r*Math.sqrt(c)/d,_=r*Math.sqrt(p)/d,g=m*f/c,x=_*f/p,v=m*u+_*h,y=m*l+_*o,T=h*(_+g),b=o*(_+g),E=u*(m+x),A=l*(m+x);return{cx:v+t,cy:y+e,radius:r,startAngle:Math.atan2(b-y,T-v),endAngle:Math.atan2(A-y,E-v),anticlockwise:h*l>u*o}}static arc(t,e,s,i,r,n,a,o,h){const l=a-n,u=Yo._segmentsCount(Math.abs(l)*r,40*Math.ceil(Math.abs(l)/Ds)),d=l/(2*u),c=2*d,p=Math.cos(d),f=Math.sin(d),m=u-1,_=m%1/m;for(let t=0;t<=m;++t){const e=d+n+c*(t+_*t),a=Math.cos(e),o=-Math.sin(e);h.push((p*a+f*o)*r+s,(p*-o+f*a)*r+i)}}}class qo{constructor(){this.reset()}begin(t,e,s){this.reset(),this.style=t,this.start=e,this.attribStart=s}end(t,e){this.attribSize=e-this.attribStart,this.size=t-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class Ko{static curveLength(t,e,s,i,r,n,a,o){let h=0,l=0,u=0,d=0,c=0,p=0,f=0,m=0,_=0,g=0,x=0,v=t,y=e;for(let T=1;T<=10;++T)l=T/10,u=l*l,d=u*l,c=1-l,p=c*c,f=p*c,m=f*t+3*p*l*s+3*c*u*r+d*a,_=f*e+3*p*l*i+3*c*u*n+d*o,g=v-m,x=y-_,v=m,y=_,h+=Math.sqrt(g*g+x*x);return h}static curveTo(t,e,s,i,r,n,a){const o=a[a.length-2],h=a[a.length-1];a.length-=2;const l=Yo._segmentsCount(Ko.curveLength(o,h,t,e,s,i,r,n));let u=0,d=0,c=0,p=0,f=0;a.push(o,h);for(let m=1,_=0;m<=l;++m)_=m/l,u=1-_,d=u*u,c=d*u,p=_*_,f=p*_,a.push(c*o+3*d*_*t+3*u*p*s+f*r,c*h+3*d*_*e+3*u*p*i+f*n)}}function Zo(t,e,s,i,r,n,a,o){let h,l;a?(h=i,l=-s):(h=-i,l=s);const u=t-s*r+h,d=e-i*r+l,c=t+s*n+h,p=e+i*n+l;return o.push(u,d,c,p),2}function Qo(t,e,s,i,r,n,a,o){const h=s-t,l=i-e;let u=Math.atan2(h,l),d=Math.atan2(r-t,n-e);o&&ud&&(d+=2*Math.PI);let c=u;const p=d-u,f=Math.abs(p),m=Math.sqrt(h*h+l*l),_=1+(15*f*Math.sqrt(m)/Math.PI>>0),g=p/_;if(c+=g,o){a.push(t,e,s,i);for(let s=1,i=c;s<_;s++,i+=g)a.push(t,e,t+Math.sin(i)*m,e+Math.cos(i)*m);a.push(t,e,r,n)}else{a.push(s,i,t,e);for(let s=1,i=c;s<_;s++,i+=g)a.push(t+Math.sin(i)*m,e+Math.cos(i)*m,t,e);a.push(r,n,t,e)}return 2*_}function Jo(t,e){t.lineStyle.native?function(t,e){let s=0;const i=t.shape,r=t.points||i.points,n=i.type!==Fs.POLY||i.closeStroke;if(0===r.length)return;const a=e.points,o=e.indices,h=r.length/2,l=a.length/2;let u=l;for(a.push(r[0],r[1]),s=1;s=0&&(n.join===zo.ROUND?c+=Qo(v,y,v-E*M,y-A*M,v-R*M,y-S*M,u,!1)+4:c+=2,u.push(v-R*C,y-S*C,v+R*M,y+S*M));continue}const d=(-E+g)*(-A+y)-(-E+v)*(-A+x),p=(-R+T)*(-S+y)-(-R+v)*(-S+b),I=(e*p-r*d)/h,D=(a*d-s*p)/h,P=(I-v)*(I-v)+(D-y)*(D-y),O=v+(I-v)*M,F=y+(D-y)*M,B=v-(I-v)*C,N=y-(D-y)*C,L=l?M:C,G=P<=Math.min(e*e+s*s,r*r+a*a)+L*L*m;let U=n.join;if(U===zo.MITER&&P/m>_&&(U=zo.BEVEL),G)switch(U){case zo.MITER:u.push(O,F,B,N);break;case zo.BEVEL:l?u.push(O,F,v+E*C,y+A*C,O,F,v+R*C,y+S*C):u.push(v-E*M,y-A*M,B,N,v-R*M,y-S*M,B,N),c+=2;break;case zo.ROUND:l?(u.push(O,F,v+E*C,y+A*C),c+=Qo(v,y,v+E*C,y+A*C,v+R*C,y+S*C,u,!0)+4,u.push(O,F,v+R*C,y+S*C)):(u.push(v-E*M,y-A*M,B,N),c+=Qo(v,y,v-E*M,y-A*M,v-R*M,y-S*M,u,!1)+4,u.push(v-R*M,y-S*M,B,N))}else{switch(u.push(v-E*M,y-A*M,v+E*C,y+A*C),U){case zo.MITER:l?u.push(B,N,B,N):u.push(O,F,O,F),c+=2;break;case zo.ROUND:c+=l?Qo(v,y,v+E*C,y+A*C,v+R*C,y+S*C,u,!0)+2:Qo(v,y,v-E*M,y-A*M,v-R*M,y-S*M,u,!1)+2}u.push(v-R*M,y-S*M,v+R*C,y+S*C),c+=2}}g=i[2*(d-2)],x=i[2*(d-2)+1],v=i[2*(d-1)],y=i[2*(d-1)+1],E=-(x-y),A=g-v,w=Math.sqrt(E*E+A*A),E/=w,A/=w,E*=f,A*=f,u.push(v-E*M,y-A*M,v+E*C,y+A*C),h||(n.cap===Wo.ROUND?c+=Qo(v-E*(M-C)*.5,y-A*(M-C)*.5,v-E*M,y-A*M,v+E*C,y+A*C,u,!1)+2:n.cap===Wo.SQUARE&&(c+=Zo(v,y,E,A,M,C,!1,u)));const D=e.indices,P=Yo.epsilon*Yo.epsilon;for(let t=p;t0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(t,e=null,s=null,i=null){const r=new rh(t,e,s,i);return this.graphicsData.push(r),this.dirty++,this}drawHole(t,e=null){if(!this.graphicsData.length)return null;const s=new rh(t,null,null,e),i=this.graphicsData[this.graphicsData.length-1];return s.lineStyle=i.lineStyle,i.holes.push(s),this.dirty++,this}destroy(){super.destroy();for(let t=0;t0&&(s=this.batches[this.batches.length-1],i=s.style);for(let r=this.shapeIndex;r65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&a===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=a?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(t,e){return!(!t||!e||t.texture.baseTexture!==e.texture.baseTexture||t.color+t.alpha!==e.color+e.alpha||!!t.native!=!!e.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let t=0,e=this.graphicsData.length;t131070)return!1;const t=this.batches;for(let e=0;e0&&(i=ih.pop(),i||(i=new Ts,i.texArray=new wi),this.drawCalls.push(i)),i.start=u,i.size=0,i.texArray.count=0,i.type=l),_.touched=1,_._batchEnabled=t,_._batchLocation=r,_.wrapMode=p.REPEAT,i.texArray.elements[i.texArray.count++]=_,r++)),i.size+=c.size,u+=c.size,a=_._batchLocation,this.addColors(e,m.color,m.alpha,c.attribSize,c.attribStart),this.addTextureIds(s,a,c.attribSize,c.attribStart)}ys._globalBatch=t,this.packAttributes()}packAttributes(){const t=this.points,e=this.uvs,s=this.colors,i=this.textureIds,r=new ArrayBuffer(3*t.length*4),n=new Float32Array(r),a=new Uint32Array(r);let o=0;for(let r=0;r0&&t.alpha>0;return s?(t.matrix&&(t.matrix=t.matrix.clone(),t.matrix.invert()),Object.assign(this._lineStyle,{visible:s},t)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const t=this.currentPath.points,e=this.currentPath.points.length;e>2&&(this.drawShape(this.currentPath),this.currentPath=new ks,this.currentPath.closeStroke=!1,this.currentPath.points.push(t[e-2],t[e-1]))}else this.currentPath=new ks,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(t,e){return this.startPoly(),this.currentPath.points[0]=t,this.currentPath.points[1]=e,this}lineTo(t,e){this.currentPath||this.moveTo(0,0);const s=this.currentPath.points,i=s[s.length-2],r=s[s.length-1];return(i!==t||r!==e)&&s.push(t,e),this}_initCurve(t=0,e=0){this.currentPath?0===this.currentPath.points.length&&(this.currentPath.points=[t,e]):this.moveTo(t,e)}quadraticCurveTo(t,e,s,i){this._initCurve();const r=this.currentPath.points;return 0===r.length&&this.moveTo(0,0),th.curveTo(t,e,s,i,r),this}bezierCurveTo(t,e,s,i,r,n){return this._initCurve(),Ko.curveTo(t,e,s,i,r,n,this.currentPath.points),this}arcTo(t,e,s,i,r){this._initCurve(t,e);const n=this.currentPath.points,a=$o.curveTo(t,e,s,i,r,n);if(a){const{cx:t,cy:e,radius:s,startAngle:i,endAngle:r,anticlockwise:n}=a;this.arc(t,e,s,i,r,n)}return this}arc(t,e,s,i,r,n=!1){if(i===r)return this;if(!n&&r<=i?r+=Ds:n&&i<=r&&(i+=Ds),r-i==0)return this;const a=t+Math.cos(i)*s,o=e+Math.sin(i)*s,h=this._geometry.closePointEps;let l=this.currentPath?this.currentPath.points:null;if(l){const t=Math.abs(l[l.length-2]-a),e=Math.abs(l[l.length-1]-o);t0;return s?(t.matrix&&(t.matrix=t.matrix.clone(),t.matrix.invert()),Object.assign(this._fillStyle,{visible:s},t)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(t,e,s,i){return this.drawShape(new Ls(t,e,s,i))}drawRoundedRect(t,e,s,i,r){return this.drawShape(new Xs(t,e,s,i,r))}drawCircle(t,e,s){return this.drawShape(new Gs(t,e,s))}drawEllipse(t,e,s,i){return this.drawShape(new Us(t,e,s,i))}drawPolygon(...t){let e,s=!0;const i=t[0];i.points?(s=i.closeStroke,e=i.points):e=Array.isArray(t[0])?t[0]:t;const r=new ks(e);return r.closeStroke=s,this.drawShape(r),this}drawShape(t){return this._holeMode?this._geometry.drawHole(t,this._matrix):this._geometry.drawShape(t,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const t=this._geometry.graphicsData;return!(1!==t.length||t[0].shape.type!==Fs.RECT||t[0].matrix||t[0].holes.length||t[0].lineStyle.visible&&t[0].lineStyle.width)}_render(t){this.finishPoly();const e=this._geometry;e.updateBatches(),e.batchable?(this.batchDirty!==e.batchDirty&&this._populateBatches(),this._renderBatched(t)):(t.batch.flush(),this._renderDirect(t))}_populateBatches(){const t=this._geometry,e=this.blendMode,s=t.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=t.batchDirty,this.batches.length=s,this.vertexData=new Float32Array(t.points);for(let i=0;i0){const s=o.x-t[e].x,i=o.y-t[e].y,r=Math.sqrt(s*s+i*i);o=t[e],a+=r/h}else a=e/(l-1);r[s]=a,r[s+1]=0,r[s+2]=a,r[s+3]=1}let u=0;for(let t=0;t0?this.textureScale*this._width/2:this._width/2;for(let h=0;h1&&(d=1);const c=Math.sqrt(i*i+r*r);c<1e-6?(i=0,r=0):(i/=c,r/=c,i*=o,r*=o),n[u]=l.x+i,n[u+1]=l.y+r,n[u+2]=l.x-i,n[u+3]=l.y-r,s=l}this.buffers[0].update()}update(){this.textureScale>0?this.build():this.updateVertices()}}class Eh extends xh{constructor(t,e,s){super(new Th(t.width,t.height,e,s),new yh(Wi.WHITE)),this.texture=t,this.autoResize=!0}textureUpdated(){this._textureID=this.shader.texture._updateID;const t=this.geometry,{width:e,height:s}=this.shader.texture;this.autoResize&&(t.width!==e||t.height!==s)&&(t.width=this.shader.texture.width,t.height=this.shader.texture.height,t.build())}set texture(t){this.shader.texture!==t&&(this.shader.texture=t,this._textureID=-1,t.baseTexture.valid?this.textureUpdated():t.once("update",this.textureUpdated,this))}get texture(){return this.shader.texture}_render(t){this._textureID!==this.shader.texture._updateID&&this.textureUpdated(),super._render(t)}destroy(t){this.shader.texture.off("update",this.textureUpdated,this),super.destroy(t)}}class Ah{constructor(t,e,s){this.geometry=new Ms,this.indexBuffer=null,this.size=s,this.dynamicProperties=[],this.staticProperties=[];for(let s=0;ss&&!t.autoResize&&(n=s);let a=t._buffers;a||(a=t._buffers=this.generateBuffers(t));const o=e[0]._texture.baseTexture,h=o.alphaMode>0;this.state.blendMode=Pe(t.blendMode,h),r.state.set(this.state);const l=r.gl,u=t.worldTransform.copyTo(this.tempMatrix);u.prepend(r.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=u.toArray(!0),this.shader.uniforms.uColor=Ie.shared.setValue(t.tintRgb).premultiply(t.worldAlpha,h).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=o,this.renderer.shader.bind(this.shader);let d=!1;for(let s=0,o=0;si&&(h=i),o>=a.length&&a.push(this._generateOneMoreBuffer(t));const u=a[o];u.uploadDynamic(e,s,h);const c=t._bufferUpdateIDs[o]||0;d=d||u._updateID0);i[n]=o,i[n+r]=o,i[n+2*r]=o,i[n+3*r]=o,n+=4*r}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}Rh.extension={name:"particle",type:rs.RendererPlugin},os.add(Rh);var Sh=(t=>(t[t.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",t[t.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",t))(Sh||{});const wh={willReadFrequently:!0},Ih=class{static get experimentalLetterSpacingSupported(){let t=Ih._experimentalLetterSpacingSupported;if(void 0!==t){const e=A.ADAPTER.getCanvasRenderingContext2D().prototype;t=Ih._experimentalLetterSpacingSupported="letterSpacing"in e||"textLetterSpacing"in e}return t}constructor(t,e,s,i,r,n,a,o,h){this.text=t,this.style=e,this.width=s,this.height=i,this.lines=r,this.lineWidths=n,this.lineHeight=a,this.maxLineWidth=o,this.fontProperties=h}static measureText(t,e,s,i=Ih._canvas){s=null==s?e.wordWrap:s;const r=e.toFontString(),n=Ih.measureFont(r);0===n.fontSize&&(n.fontSize=e.fontSize,n.ascent=e.fontSize);const a=i.getContext("2d",wh);a.font=r;const o=(s?Ih.wordWrap(t,e,i):t).split(/(?:\r\n|\r|\n)/),h=new Array(o.length);let l=0;for(let t=0;t0&&(i?r-=e:r+=(Ih.graphemeSegmenter(t).length-1)*e),r}static wordWrap(t,e,s=Ih._canvas){const i=s.getContext("2d",wh);let r=0,n="",a="";const o=Object.create(null),{letterSpacing:h,whiteSpace:l}=e,u=Ih.collapseSpaces(l),d=Ih.collapseNewlines(l);let c=!u;const p=e.wordWrapWidth+h,f=Ih.tokenize(t);for(let t=0;tp)if(""!==n&&(a+=Ih.addLine(n),n="",r=0),Ih.canBreakWords(s,e.breakWords)){const t=Ih.wordWrapSplit(s);for(let l=0;lp&&(a+=Ih.addLine(n),c=!1,n="",r=0),n+=u,r+=m}}else{n.length>0&&(a+=Ih.addLine(n),n="",r=0);const e=t===f.length-1;a+=Ih.addLine(s,!e),c=!1,n="",r=0}else l+r>p&&(c=!1,a+=Ih.addLine(n),n="",r=0),(n.length>0||!Ih.isBreakingSpace(s)||c)&&(n+=s,r+=l)}return a+=Ih.addLine(n,!1),a}static addLine(t,e=!0){return t=Ih.trimRight(t),t=e?`${t}\n`:t}static getFromCache(t,e,s,i){let r=s[t];return"number"!=typeof r&&(r=Ih._measureText(t,e,i)+e,s[t]=r),r}static collapseSpaces(t){return"normal"===t||"pre-line"===t}static collapseNewlines(t){return"normal"===t}static trimRight(t){if("string"!=typeof t)return"";for(let e=t.length-1;e>=0;e--){const s=t[e];if(!Ih.isBreakingSpace(s))break;t=t.slice(0,-1)}return t}static isNewline(t){return"string"==typeof t&&Ih._newlines.includes(t.charCodeAt(0))}static isBreakingSpace(t,e){return"string"==typeof t&&Ih._breakingSpaces.includes(t.charCodeAt(0))}static tokenize(t){const e=[];let s="";if("string"!=typeof t)return e;for(let i=0;ia;--d){for(let t=0;t{if("function"==typeof(null==Intl?void 0:Intl.Segmenter)){const t=new Intl.Segmenter;return e=>[...t.segment(e)].map((t=>t.segment))}return t=>[...t]})(),Mh.experimentalLetterSpacing=!1,Mh._fonts={},Mh._newlines=[10,13],Mh._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];const Ch=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],Dh=class{constructor(t){this.styleID=0,this.reset(),Fh(this,t,t)}clone(){const t={};return Fh(t,this,Dh.defaultStyle),new Dh(t)}reset(){Fh(this,Dh.defaultStyle,Dh.defaultStyle)}get align(){return this._align}set align(t){this._align!==t&&(this._align=t,this.styleID++)}get breakWords(){return this._breakWords}set breakWords(t){this._breakWords!==t&&(this._breakWords=t,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow(t){this._dropShadow!==t&&(this._dropShadow=t,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha(t){this._dropShadowAlpha!==t&&(this._dropShadowAlpha=t,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle(t){this._dropShadowAngle!==t&&(this._dropShadowAngle=t,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur(t){this._dropShadowBlur!==t&&(this._dropShadowBlur=t,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor(t){const e=Oh(t);this._dropShadowColor!==e&&(this._dropShadowColor=e,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance(t){this._dropShadowDistance!==t&&(this._dropShadowDistance=t,this.styleID++)}get fill(){return this._fill}set fill(t){const e=Oh(t);this._fill!==e&&(this._fill=e,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType(t){this._fillGradientType!==t&&(this._fillGradientType=t,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops(t){(function(t,e){if(!Array.isArray(t)||!Array.isArray(e)||t.length!==e.length)return!1;for(let s=0;s=0;t--){let s=e[t].trim();!/([\"\'])[^\'\"]+\1/.test(s)&&!Ch.includes(s)&&(s=`"${s}"`),e[t]=s}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${t} ${e.join(",")}`}};let Ph=Dh;function Oh(t){const e=Ie.shared;return Array.isArray(t)?t.map((t=>e.setValue(t).toHex())):e.setValue(t).toHex()}function Fh(t,e,s){for(const i in s)Array.isArray(e[i])?t[i]=e[i].slice():t[i]=e[i]}Ph.defaultStyle={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:Sh.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};const Bh={texture:!0,children:!1,baseTexture:!0},Nh=class extends Sn{constructor(t,e,s){var i;let r=!1;s||(s=A.ADAPTER.createCanvas(),r=!0),s.width=3,s.height=3;const n=Wi.from(s);n.orig=new Ls,n.trim=new Ls,super(n),this._ownCanvas=r,this.canvas=s,this.context=s.getContext("2d",{willReadFrequently:!0}),this._resolution=null!=(i=Nh.defaultResolution)?i:A.RESOLUTION,this._autoResolution=Nh.defaultAutoResolution,this._text=null,this._style=null,this._styleListener=null,this._font="",this.text=t,this.style=e,this.localStyleID=-1}static get experimentalLetterSpacing(){return Mh.experimentalLetterSpacing}static set experimentalLetterSpacing(t){Kt("7.1.0","Text.experimentalLetterSpacing is deprecated, use TextMetrics.experimentalLetterSpacing"),Mh.experimentalLetterSpacing=t}updateText(t){const e=this._style;if(this.localStyleID!==e.styleID&&(this.dirty=!0,this.localStyleID=e.styleID),!this.dirty&&t)return;this._font=this._style.toFontString();const s=this.context,i=Mh.measureText(this._text||" ",this._style,this._style.wordWrap,this.canvas),r=i.width,n=i.height,a=i.lines,o=i.lineHeight,h=i.lineWidths,l=i.maxLineWidth,u=i.fontProperties;let d,c;this.canvas.width=Math.ceil(Math.ceil(Math.max(1,r)+2*e.padding)*this._resolution),this.canvas.height=Math.ceil(Math.ceil(Math.max(1,n)+2*e.padding)*this._resolution),s.scale(this._resolution,this._resolution),s.clearRect(0,0,this.canvas.width,this.canvas.height),s.font=this._font,s.lineWidth=e.strokeThickness,s.textBaseline=e.textBaseline,s.lineJoin=e.lineJoin,s.miterLimit=e.miterLimit;const p=e.dropShadow?2:1;for(let t=0;t0&&n>a&&(o=(a+n)/2);const d=a+i,c=s.lineHeight*(t+1);let p=d;t+10}}function Uh(t,e){var s;let i=!1;if(null!=(s=null==t?void 0:t._textures)&&s.length)for(let s=0;s{!this.queue||this.prepareItems()},this.registerFindHook(zh),this.registerFindHook(Wh),this.registerFindHook(Uh),this.registerFindHook(kh),this.registerFindHook(Xh),this.registerUploadHook(Hh),this.registerUploadHook(Vh)}upload(t){return new Promise((e=>{t&&this.add(t),this.queue.length?(this.completes.push(e),this.ticking||(this.ticking=!0,$r.system.addOnce(this.tick,this,Wr.UTILITY))):e()}))}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){const t=this.queue[0];let e=!1;if(t&&!t._destroyed)for(let s=0,i=this.uploadHooks.length;s=0;e--)this.add(t.children[e]);return this}destroy(){this.ticking&&$r.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}};let jh=Yh;function $h(t,e){return e instanceof ys&&(e._glTextures[t.CONTEXT_UID]||t.texture.bind(e),!0)}function qh(t,e){if(!(e instanceof ch))return!1;const{geometry:s}=e;e.finishPoly(),s.updateBatches();const{batches:i}=s;for(let e=0;ejh.uploadsPerFrame,set(t){Kt("7.1.0","settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"),jh.uploadsPerFrame=t}}});class Zh extends jh{constructor(t){super(t),this.uploadHookHelper=this.renderer,this.registerFindHook(Kh),this.registerUploadHook($h),this.registerUploadHook(qh)}}Zh.extension={name:"prepare",type:rs.RendererSystem},os.add(Zh);class Qh extends Sn{constructor(t,e=!0){super(t[0]instanceof Wi?t[0]:t[0].texture),this._textures=null,this._durations=null,this._autoUpdate=e,this._isConnectedToTicker=!1,this.animationSpeed=1,this.loop=!0,this.updateAnchor=!1,this.onComplete=null,this.onFrameChange=null,this.onLoop=null,this._currentTime=0,this._playing=!1,this._previousFrame=null,this.textures=t}stop(){!this._playing||(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&($r.shared.remove(this.update,this),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&($r.shared.add(this.update,this,Wr.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(t){this.stop(),this.currentFrame=t}gotoAndPlay(t){this.currentFrame=t,this.play()}update(t){if(!this._playing)return;const e=this.animationSpeed*t,s=this.currentFrame;if(null!==this._durations){let s=this._currentTime%1*this._durations[this.currentFrame];for(s+=e/60*1e3;s<0;)this._currentTime--,s+=this._durations[this.currentFrame];const i=Math.sign(this.animationSpeed*t);for(this._currentTime=Math.floor(this._currentTime);s>=this._durations[this.currentFrame];)s-=this._durations[this.currentFrame]*i,this._currentTime+=i;this._currentTime+=s/this._durations[this.currentFrame]}else this._currentTime+=e;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):s!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFrames)&&this.onLoop(),this.updateTexture())}updateTexture(){const t=this.currentFrame;this._previousFrame!==t&&(this._previousFrame=t,this._texture=this._textures[t],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame))}destroy(t){this.stop(),super.destroy(t),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}static fromFrames(t){const e=[];for(let s=0;sthis.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${t}, expected to be between 0 and totalFrames ${this.totalFrames}.`);const e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?($r.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&($r.shared.add(this.update,this),this._isConnectedToTicker=!0))}}const Jh=new Bs;class tl extends Sn{constructor(t,e=100,s=100){super(t),this.tileTransform=new Js,this._width=e,this._height=s,this.uvMatrix=this.texture.uvMatrix||new or(t),this.pluginName="tilingSprite",this.uvRespectAnchor=!1}get clampMargin(){return this.uvMatrix.clampMargin}set clampMargin(t){this.uvMatrix.clampMargin=t,this.uvMatrix.update(!0)}get tileScale(){return this.tileTransform.scale}set tileScale(t){this.tileTransform.scale.copyFrom(t)}get tilePosition(){return this.tileTransform.position}set tilePosition(t){this.tileTransform.position.copyFrom(t)}_onTextureUpdate(){this.uvMatrix&&(this.uvMatrix.texture=this._texture),this._cachedTint=16777215}_render(t){const e=this._texture;!e||!e.valid||(this.tileTransform.updateLocalTransform(),this.uvMatrix.update(),t.batch.setObjectRenderer(t.plugins[this.pluginName]),t.plugins[this.pluginName].render(this))}_calculateBounds(){const t=this._width*-this._anchor._x,e=this._height*-this._anchor._y,s=this._width*(1-this._anchor._x),i=this._height*(1-this._anchor._y);this._bounds.addFrame(this.transform,t,e,s,i)}getLocalBounds(t){return 0===this.children.length?(this._bounds.minX=this._width*-this._anchor._x,this._bounds.minY=this._height*-this._anchor._y,this._bounds.maxX=this._width*(1-this._anchor._x),this._bounds.maxY=this._height*(1-this._anchor._y),t||(this._localBoundsRect||(this._localBoundsRect=new Ls),t=this._localBoundsRect),this._bounds.getRectangle(t)):super.getLocalBounds.call(this,t)}containsPoint(t){this.worldTransform.applyInverse(t,Jh);const e=this._width,s=this._height,i=-e*this.anchor._x;if(Jh.x>=i&&Jh.x=t&&Jh.y1?Ri.from("#version 300 es\n#define SHADER_NAME Tiling-Sprite-300\n\nprecision lowp float;\n\nin vec2 aVertexPosition;\nin vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nout vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n","#version 300 es\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nin vec2 vTextureCoord;\n\nout vec4 fragmentColor;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 texSample = texture(uSampler, coord, unclamped == coord ? 0.0f : -32.0f);// lod-bias very negative to force lod 0\n\n fragmentColor = texSample * uColor;\n}\n",e):Ri.from(el,"#version 100\n#ifdef GL_EXT_shader_texture_lod\n #extension GL_EXT_shader_texture_lod : enable\n#endif\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n #ifdef GL_EXT_shader_texture_lod\n vec4 texSample = unclamped == coord\n ? texture2D(uSampler, coord) \n : texture2DLodEXT(uSampler, coord, 0);\n #else\n vec4 texSample = texture2D(uSampler, coord);\n #endif\n\n gl_FragColor = texSample * uColor;\n}\n",e)}render(t){const e=this.renderer,s=this.quad;let i=s.vertices;i[0]=i[6]=t._width*-t.anchor.x,i[1]=i[3]=t._height*-t.anchor.y,i[2]=i[4]=t._width*(1-t.anchor.x),i[5]=i[7]=t._height*(1-t.anchor.y);const r=t.uvRespectAnchor?t.anchor.x:0,n=t.uvRespectAnchor?t.anchor.y:0;i=s.uvs,i[0]=i[6]=-r,i[1]=i[3]=-n,i[2]=i[4]=1-r,i[5]=i[7]=1-n,s.invalidate();const a=t._texture,o=a.baseTexture,h=o.alphaMode>0,l=t.tileTransform.localTransform,u=t.uvMatrix;let d=o.isPowerOfTwo&&a.frame.width===o.width&&a.frame.height===o.height;d&&(o._glTextures[e.CONTEXT_UID]?d=o.wrapMode!==p.CLAMP:o.wrapMode===p.CLAMP&&(o.wrapMode=p.REPEAT));const c=d?this.simpleShader:this.shader,f=a.width,m=a.height,_=t._width,g=t._height;sl.set(l.a*f/_,l.b*f/g,l.c*m/_,l.d*m/g,l.tx/_,l.ty/g),sl.invert(),d?sl.prepend(u.mapCoord):(c.uniforms.uMapCoord=u.mapCoord.toArray(!0),c.uniforms.uClampFrame=u.uClampFrame,c.uniforms.uClampOffset=u.uClampOffset),c.uniforms.uTransform=sl.toArray(!0),c.uniforms.uColor=Ie.shared.setValue(t.tint).premultiply(t.worldAlpha,h).toArray(c.uniforms.uColor),c.uniforms.translationMatrix=t.transform.worldTransform.toArray(!0),c.uniforms.uSampler=a,e.shader.bind(c),e.geometry.bind(s),this.state.blendMode=Pe(t.blendMode,h),e.state.set(this.state),e.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}il.extension={name:"tilingSprite",type:rs.RendererPlugin},os.add(il);const rl=class{constructor(t,e,s=null){this.linkedSheets=[],this._texture=t instanceof Wi?t:null,this.baseTexture=t instanceof ys?t:this._texture.baseTexture,this.textures={},this.animations={},this.data=e;const i=this.baseTexture.resource;this.resolution=this._updateResolution(s||(i?i.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(t=null){const{scale:e}=this.data.meta;let s=ss(t,null);return null===s&&(s=parseFloat(null!=e?e:"1")),1!==s&&this.baseTexture.setResolution(s),s}parse(){return new Promise((t=>{this._callback=t,this._batchIndex=0,this._frameKeys.length<=rl.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()}))}_processFrames(t){let e=t;const s=rl.BATCH_SIZE;for(;e-t{this._batchIndex*rl.BATCH_SIZE{i[t]=e})),Object.keys(e.textures).forEach((t=>{i[t]=e.textures[t]})),!s){const s=$t.dirname(t[0]);e.linkedSheets.forEach(((t,r)=>{const n=ol([`${s}/${e.data.meta.related_multi_packs[r]}`],t,!0);Object.assign(i,n)}))}return i}const hl={extension:rs.Asset,cache:{test:t=>t instanceof nl,getCacheableAssets:(t,e)=>ol(t,e,!1)},resolver:{test:t=>{const e=t.split("?")[0].split("."),s=e.pop(),i=e.pop();return"json"===s&&al.includes(i)},parse:t=>{var e,s;const i=t.split(".");return{resolution:parseFloat(null!=(s=null==(e=A.RETINA_PREFIX.exec(t))?void 0:e[1])?s:"1"),format:i[i.length-2],src:t}}},loader:{name:"spritesheetLoader",extension:{type:rs.LoadParser,priority:ma.Normal},testParse:async(t,e)=>".json"===$t.extname(e.src).toLowerCase()&&!!t.frames,async parse(t,e,s){var i,r;let n=$t.dirname(e.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");let a=n+t.meta.image;a=la(a,e.src);const o=(await s.load([a]))[a],h=new nl(o.baseTexture,t,e.src);await h.parse();const l=null==(i=null==t?void 0:t.meta)?void 0:i.related_multi_packs;if(Array.isArray(l)){const t=[];for(const i of l){if("string"!=typeof i)continue;let a=n+i;null!=(r=e.data)&&r.ignoreMultiPack||(a=la(a,e.src),t.push(s.load({src:a,data:{ignoreMultiPack:!0}})))}const i=await Promise.all(t);h.linkedSheets=i,i.forEach((t=>{t.linkedSheets=[h].concat(h.linkedSheets.filter((e=>e!==t)))}))}return h},unload(t){t.destroy(!0)}}};os.add(hl);class ll{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class ul{static test(t){return"string"==typeof t&&t.startsWith("info face=")}static parse(t){const e=t.match(/^[a-z]+\s+.+$/gm),s={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const t in e){const i=e[t].match(/^[a-z]+/gm)[0],r=e[t].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),n={};for(const t in r){const e=r[t].split("="),s=e[0],i=e[1].replace(/"/gm,""),a=parseFloat(i),o=isNaN(a)?i:a;n[s]=o}s[i].push(n)}const i=new ll;return s.info.forEach((t=>i.info.push({face:t.face,size:parseInt(t.size,10)}))),s.common.forEach((t=>i.common.push({lineHeight:parseInt(t.lineHeight,10)}))),s.page.forEach((t=>i.page.push({id:parseInt(t.id,10),file:t.file}))),s.char.forEach((t=>i.char.push({id:parseInt(t.id,10),page:parseInt(t.page,10),x:parseInt(t.x,10),y:parseInt(t.y,10),width:parseInt(t.width,10),height:parseInt(t.height,10),xoffset:parseInt(t.xoffset,10),yoffset:parseInt(t.yoffset,10),xadvance:parseInt(t.xadvance,10)}))),s.kerning.forEach((t=>i.kerning.push({first:parseInt(t.first,10),second:parseInt(t.second,10),amount:parseInt(t.amount,10)}))),s.distanceField.forEach((t=>i.distanceField.push({distanceRange:parseInt(t.distanceRange,10),fieldType:t.fieldType}))),i}}class dl{static test(t){const e=t;return"getElementsByTagName"in e&&e.getElementsByTagName("page").length&&null!==e.getElementsByTagName("info")[0].getAttribute("face")}static parse(t){const e=new ll,s=t.getElementsByTagName("info"),i=t.getElementsByTagName("common"),r=t.getElementsByTagName("page"),n=t.getElementsByTagName("char"),a=t.getElementsByTagName("kerning"),o=t.getElementsByTagName("distanceField");for(let t=0;t"))&&dl.test(A.ADAPTER.parseXML(t))}static parse(t){return dl.parse(A.ADAPTER.parseXML(t))}}const pl=[ul,dl,cl];function fl(t){for(let e=0;e=h-r*a){if(0===x)throw new Error(`[BitmapFont] textureHeight ${h}px is too small (fontFamily: '${d.fontFamily}', fontSize: ${d.fontSize}px, char: '${e}')`);--t,f=null,m=null,_=null,x=0,g=0,v=0;continue}if(v=Math.max(r+s.fontProperties.descent,v),b*a+g>=c){if(0===g)throw new Error(`[BitmapFont] textureWidth ${o}px is too small (fontFamily: '${d.fontFamily}', fontSize: ${d.fontSize}px, char: '${e}')`);--t,x+=v*a,x=Math.ceil(x),g=0,v=0;continue}ml(f,m,s,g,x,a,d);const E=_l(s.text);p.char.push({id:E,page:T.length-1,x:g/a,y:x/a,width:b,height:r,xoffset:0,yoffset:0,xadvance:i-(d.dropShadow?d.dropShadowDistance:0)-(d.stroke?d.strokeThickness:0)}),g+=(b+2*n)*a,g=Math.ceil(g)}for(let t=0,e=u.length;t{this.dirty=!0}),this,0,0),this._roundPixels=A.ROUND_PIXELS,this.dirty=!0,this._resolution=A.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){var t;const e=vl.available[this._fontName],s=this.fontSize,i=s/e.size,r=new Bs,n=[],o=[],h=[],l=gl(this._text.replace(/(?:\r\n|\r)/g,"\n")||" "),u=this._maxWidth*e.size/s,d="none"===e.distanceFieldType?yl:Tl;let c=null,p=0,f=0,m=0,_=-1,g=0,x=0,v=0,y=0;for(let t=0;t0&&r.x>u&&(++x,ke(n,1+_-x,1+t-_),t=_,_=-1,o.push(g),h.push(n.length>0?n[n.length-1].prevSpaces:0),f=Math.max(f,g),m++,r.x=0,r.y+=e.lineHeight,c=null,y=0)}const T=l[l.length-1];"\r"!==T&&"\n"!==T&&(/(?:\s)/.test(T)&&(p=g),o.push(p),f=Math.max(f,p),h.push(-1));const b=[];for(let t=0;t<=m;t++){let e=0;"right"===this._align?e=f-o[t]:"center"===this._align?e=(f-o[t])/2:"justify"===this._align&&(e=h[t]<0?0:(f-o[t])/h[t]),b.push(e)}const E=n.length,A={},R=[],S=this._activePagesMeshData;d.push(...S);for(let t=0;t 0.99) {\r\n alpha = 1.0;\r\n }\r\n\r\n // Gamma correction for coverage-like alpha\r\n float luma = dot(uColor.rgb, vec3(0.299, 0.587, 0.114));\r\n float gamma = mix(1.0, 1.0 / 2.2, luma);\r\n float coverage = pow(uColor.a * alpha, gamma); \r\n\r\n // NPM Textures, NPM outputs\r\n gl_FragColor = vec4(uColor.rgb, coverage);\r\n}\r\n"),uniforms:{uFWidth:0}}),r=a.NORMAL_NPM);const n=new xh(s,i);n.blendMode=r,t={index:0,indexCount:0,vertexCount:0,uvsCount:0,total:0,mesh:n,vertices:null,uvs:null,indices:null}}t.index=0,t.indexCount=0,t.vertexCount=0,t.uvsCount=0,t.total=0;const{_textureCache:r}=this;r[i]=r[i]||new Wi(s.baseTexture),t.mesh.texture=r[i],t.mesh.tint=this._tintColor.value,R.push(t),A[i]=t}A[i].total++}for(let t=0;t6*i)||s.vertices.length<2*xh.BATCHABLE_SIZE)s.vertices=new Float32Array(8*i),s.uvs=new Float32Array(8*i),s.indices=new Uint16Array(6*i);else{const t=s.total,e=s.vertices;for(let s=4*t*2;se[t.mesh.texture.baseTexture.uid])).forEach((t=>{t.mesh.texture=Wi.EMPTY}));for(const t in e)e[t].destroy(),delete e[t];this._font=null,this._tintColor=null,this._textureCache=null,super.destroy(t)}};let Al=El;Al.styleDefaults={align:"left",tint:16777215,maxWidth:0,letterSpacing:0};const Rl=[".xml",".fnt"],Sl={extension:{type:rs.LoadParser,priority:ma.Normal},name:"loadBitmapFont",test:t=>Rl.includes($t.extname(t).toLowerCase()),testParse:async t=>ul.test(t)||cl.test(t),async parse(t,e,s){const i=ul.test(t)?ul.parse(t):cl.parse(t),{src:r}=e,{page:n}=i,a=[];for(let t=0;to[t]));return vl.install(i,h,!0)},load:async(t,e)=>(await A.ADAPTER.fetch(t)).text(),unload(t){t.destroy()}};os.add(Sl);const wl=class extends Ph{constructor(){super(...arguments),this._fonts=[],this._overrides=[],this._stylesheet="",this.fontsDirty=!1}static from(t){return new wl(Object.keys(wl.defaultOptions).reduce(((e,s)=>Qi(bt({},e),{[s]:t[s]})),{}))}cleanFonts(){this._fonts.length>0&&(this._fonts.forEach((t=>{URL.revokeObjectURL(t.src),t.refs--,0===t.refs&&(t.fontFace&&document.fonts.delete(t.fontFace),delete wl.availableFonts[t.originalUrl])})),this.fontFamily="Arial",this._fonts.length=0,this.styleID++,this.fontsDirty=!0)}loadFont(t,e={}){const{availableFonts:s}=wl;if(s[t]){const e=s[t];return this._fonts.push(e),e.refs++,this.styleID++,this.fontsDirty=!0,Promise.resolve()}return A.ADAPTER.fetch(t).then((t=>t.blob())).then((async t=>new Promise(((e,s)=>{const i=URL.createObjectURL(t),r=new FileReader;r.onload=()=>e([i,r.result]),r.onerror=s,r.readAsDataURL(t)})))).then((async([i,r])=>{const n=Object.assign({family:$t.basename(t,$t.extname(t)),weight:"normal",style:"normal",src:i,dataSrc:r,refs:1,originalUrl:t,fontFace:null},e);s[t]=n,this._fonts.push(n),this.styleID++;const a=new FontFace(n.family,`url(${n.src})`,{weight:n.weight,style:n.style});n.fontFace=a,await a.load(),document.fonts.add(a),await document.fonts.ready,this.styleID++,this.fontsDirty=!0}))}addOverride(...t){const e=t.filter((t=>!this._overrides.includes(t)));e.length>0&&(this._overrides.push(...e),this.styleID++)}removeOverride(...t){const e=t.filter((t=>this._overrides.includes(t)));e.length>0&&(this._overrides=this._overrides.filter((t=>!e.includes(t))),this.styleID++)}toCSS(t){return[`transform: scale(${t})`,"transform-origin: top left","display: inline-block",`color: ${this.normalizeColor(this.fill)}`,`font-size: ${this.fontSize}px`,`font-family: ${this.fontFamily}`,`font-weight: ${this.fontWeight}`,`font-style: ${this.fontStyle}`,`font-variant: ${this.fontVariant}`,`letter-spacing: ${this.letterSpacing}px`,`text-align: ${this.align}`,`padding: ${this.padding}px`,`white-space: ${this.whiteSpace}`,...this.lineHeight?[`line-height: ${this.lineHeight}px`]:[],...this.wordWrap?["word-wrap: "+(this.breakWords?"break-all":"break-word"),`max-width: ${this.wordWrapWidth}px`]:[],...this.strokeThickness?[`-webkit-text-stroke-width: ${this.strokeThickness}px`,`-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,`text-stroke-width: ${this.strokeThickness}px`,`text-stroke-color: ${this.normalizeColor(this.stroke)}`,"paint-order: stroke"]:[],...this.dropShadow?[this.dropShadowToCSS()]:[],...this._overrides].join(";")}toGlobalCSS(){return this._fonts.reduce(((t,e)=>`${t}\n @font-face {\n font-family: "${e.family}";\n src: url('${e.dataSrc}');\n font-weight: ${e.weight};\n font-style: ${e.style}; \n }`),this._stylesheet)}get stylesheet(){return this._stylesheet}set stylesheet(t){this._stylesheet!==t&&(this._stylesheet=t,this.styleID++)}normalizeColor(t){return Array.isArray(t)&&(t=Ce(t)),"number"==typeof t?Me(t):t}dropShadowToCSS(){let t=this.normalizeColor(this.dropShadowColor);const e=this.dropShadowAlpha,s=Math.round(Math.cos(this.dropShadowAngle)*this.dropShadowDistance),i=Math.round(Math.sin(this.dropShadowAngle)*this.dropShadowDistance);t.startsWith("#")&&e<1&&(t+=(255*e|0).toString(16).padStart(2,"0"));const r=`${s}px ${i}px`;return this.dropShadowBlur>0?`text-shadow: ${r} ${this.dropShadowBlur}px ${t}`:`text-shadow: ${r} ${t}`}reset(){Object.assign(this,wl.defaultOptions)}onBeforeDraw(){const{fontsDirty:t}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&t?new Promise((t=>setTimeout(t,100))):Promise.resolve()}get isSafari(){const{userAgent:t}=A.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(t)}set fillGradientStops(t){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(t){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(t){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(t){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(t){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(t){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(t){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};let Il=wl;Il.availableFonts={},Il.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};const Ml=class extends Sn{constructor(t="",e={}){var s;super(Wi.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this._loading=!1,this.localStyleID=-1,this.dirty=!1,this.ownsStyle=!1;const i=new Image,r=Wi.from(i,{scaleMode:A.SCALE_MODE,resourceOptions:{autoLoad:!1}});r.orig=new Ls,r.trim=new Ls,this.texture=r;const n="http://www.w3.org/2000/svg",a="http://www.w3.org/1999/xhtml",o=document.createElementNS(n,"svg"),h=document.createElementNS(n,"foreignObject"),l=document.createElementNS(a,"div"),u=document.createElementNS(a,"style");h.setAttribute("width","10000"),h.setAttribute("height","10000"),h.style.overflow="hidden",o.appendChild(h),this.maxWidth=Ml.defaultMaxWidth,this.maxHeight=Ml.defaultMaxHeight,this._domElement=l,this._styleElement=u,this._svgRoot=o,this._foreignObject=h,this._foreignObject.appendChild(u),this._foreignObject.appendChild(l),this._image=i,this._loadImage=new Image,this._autoResolution=Ml.defaultAutoResolution,this._resolution=null!=(s=Ml.defaultResolution)?s:A.RESOLUTION,this.text=t,this.style=e}measureText(t){var e,s;const{text:i,style:r,resolution:n}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},t);Object.assign(this._domElement,{innerHTML:i,style:r.toCSS(n)}),this._styleElement.textContent=r.toGlobalCSS(),document.body.appendChild(this._svgRoot);const a=this._domElement.getBoundingClientRect();this._svgRoot.remove();const o=Math.min(this.maxWidth,Math.ceil(a.width)),h=Math.min(this.maxHeight,Math.ceil(a.height));return this._svgRoot.setAttribute("width",o.toString()),this._svgRoot.setAttribute("height",h.toString()),i!==this._text&&(this._domElement.innerHTML=this._text),r!==this._style&&(Object.assign(this._domElement,{style:null==(e=this._style)?void 0:e.toCSS(n)}),this._styleElement.textContent=null==(s=this._style)?void 0:s.toGlobalCSS()),{width:o+2*r.padding,height:h+2*r.padding}}async updateText(t=!0){const{style:e,_image:s,_loadImage:i}=this;if(this.localStyleID!==e.styleID&&(this.dirty=!0,this.localStyleID=e.styleID),!this.dirty&&t)return;const{width:r,height:n}=this.measureText();s.width=i.width=Math.ceil(Math.max(1,r)),s.height=i.height=Math.ceil(Math.max(1,n)),this._loading||(this._loading=!0,await new Promise((t=>{i.onload=async()=>{await e.onBeforeDraw(),this._loading=!1,s.src=i.src,i.onload=null,i.src="",this.updateTexture(),t()};const r=(new XMLSerializer).serializeToString(this._svgRoot);i.src=`data:image/svg+xml;charset=utf8,${encodeURIComponent(r)}`})))}get source(){return this._image}updateTexture(){const{style:t,texture:e,_image:s,resolution:i}=this,{padding:r}=t,{baseTexture:n}=e;e.trim.width=e._frame.width=s.width/i,e.trim.height=e._frame.height=s.height/i,e.trim.x=-r,e.trim.y=-r,e.orig.width=e._frame.width-2*r,e.orig.height=e._frame.height-2*r,this._onTextureUpdate(),n.setRealSize(s.width,s.height,i),this.dirty=!1}_render(t){this._autoResolution&&this._resolution!==t.resolution&&(this._resolution=t.resolution,this.dirty=!0),this.updateText(!0),super._render(t)}_renderCanvas(t){this._autoResolution&&this._resolution!==t.resolution&&(this._resolution=t.resolution,this.dirty=!0),this.updateText(!0),super._renderCanvas(t)}getLocalBounds(t){return this.updateText(!0),super.getLocalBounds(t)}_calculateBounds(){this.updateText(!0),this.calculateVertices(),this._bounds.addQuad(this.vertexData)}_onStyleChange(){this.dirty=!0}destroy(t){var e,s,i,r,n;"boolean"==typeof t&&(t={children:t}),t=Object.assign({},Ml.defaultDestroyOptions,t),super.destroy(t);const a=null;this.ownsStyle&&(null==(e=this._style)||e.cleanFonts()),this._style=a,null==(s=this._svgRoot)||s.remove(),this._svgRoot=a,null==(i=this._domElement)||i.remove(),this._domElement=a,null==(r=this._foreignObject)||r.remove(),this._foreignObject=a,null==(n=this._styleElement)||n.remove(),this._styleElement=a,this._loadImage.src="",this._loadImage.onload=null,this._loadImage=a,this._image.src="",this._image=a}get width(){return this.updateText(!0),Math.abs(this.scale.x)*this._image.width/this.resolution}set width(t){this.updateText(!0);const e=Xe(this.scale.x)||1;this.scale.x=e*t/this._image.width/this.resolution,this._width=t}get height(){return this.updateText(!0),Math.abs(this.scale.y)*this._image.height/this.resolution}set height(t){this.updateText(!0);const e=Xe(this.scale.y)||1;this.scale.y=e*t/this._image.height/this.resolution,this._height=t}get style(){return this._style}set style(t){this._style!==t&&((t=t||{})instanceof Il?(this.ownsStyle=!1,this._style=t):t instanceof Ph?(console.warn("[HTMLText] Cloning TextStyle, if this is not what you want, use HTMLTextStyle"),this.ownsStyle=!0,this._style=Il.from(t)):(this.ownsStyle=!0,this._style=new Il(t)),this.localStyleID=-1,this.dirty=!0)}get text(){return this._text}set text(t){t=String(""===t||null==t?" ":t),t=this.sanitiseText(t),this._text!==t&&(this._text=t,this.dirty=!0)}get resolution(){return this._resolution}set resolution(t){this._autoResolution=!1,this._resolution!==t&&(this._resolution=t,this.dirty=!0)}sanitiseText(t){return t.replace(/

/gi,"
").replace(/
/gi,"
").replace(/ /gi," ")}};let Cl=Ml;return Cl.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},Cl.defaultMaxWidth=2024,Cl.defaultMaxHeight=2024,Cl.defaultAutoResolution=!0,t.ALPHA_MODES=m,t.AbstractMultiResource=on,t.AccessibilityManager=ta,t.AlphaFilter=Mn,t.AnimatedSprite=Qh,t.Application=sa,t.ArrayResource=hn,t.Assets=Ga,t.AssetsClass=La,t.Attribute=As,t.BLEND_MODES=a,t.BUFFER_BITS=n,t.BUFFER_TYPE=b,t.BackgroundSystem=Oi,t.BaseImageResource=ki,t.BasePrepare=jh,t.BaseRenderTexture=Ui,t.BaseTexture=ys,t.BatchDrawCall=Ts,t.BatchGeometry=Cs,t.BatchRenderer=Ci,t.BatchShaderGenerator=Si,t.BatchSystem=Fi,t.BatchTextureArray=wi,t.BitmapFont=vl,t.BitmapFontData=ll,t.BitmapText=Al,t.BlobResource=Za,t.BlurFilter=On,t.BlurFilterPass=Pn,t.Bounds=gn,t.BrowserAdapter=E,t.Buffer=Es,t.BufferResource=gs,t.BufferSystem=sn,t.CLEAR_MODES=_,t.COLOR_MASK_BITS=y,t.Cache=pa,t.CanvasResource=ln,t.Circle=Gs,t.Color=Ie,t.ColorMatrixFilter=Fn,t.CompressedTextureResource=Qa,t.Container=En,t.ContextSystem=Ni,t.CountLimiter=Gh,t.CubeResource=dn,t.DEG_TO_RAD=Os,t.DRAW_MODES=o,t.DisplacementFilter=Bn,t.DisplayObject=xn,t.ENV=i,t.Ellipse=Us,t.EventBoundary=jn,t.EventSystem=Kn,t.ExtensionType=rs,t.Extract=Go,t.FORMATS=h,t.FORMATS_TO_COMPONENTS=Mo,t.FXAAFilter=Nn,t.FederatedDisplayObject=Qn,t.FederatedEvent=kn,t.FederatedMouseEvent=Xn,t.FederatedPointerEvent=Hn,t.FederatedWheelEvent=Vn,t.FillStyle=hh,t.Filter=Pi,t.FilterState=Ki,t.FilterSystem=tr,t.Framebuffer=Gi,t.FramebufferSystem=ir,t.GC_MODES=g,t.GLFramebuffer=er,t.GLProgram=Ar,t.GLTexture=Xr,t.GRAPHICS_CURVES=jo,t.GenerateTextureSystem=yr,t.Geometry=Ms,t.GeometrySystem=nr,t.Graphics=ch,t.GraphicsData=rh,t.GraphicsGeometry=oh,t.HTMLText=Cl,t.HTMLTextStyle=Il,t.IGLUniformData=class{},t.INSTALLED=ps,t.INTERNAL_FORMATS=Wa,t.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL=Ya,t.ImageBitmapResource=cn,t.ImageResource=Xi,t.LINE_CAP=Wo,t.LINE_JOIN=zo,t.LineStyle=lh,t.LoaderParserPriority=ma,t.MASK_TYPES=v,t.MIPMAP_MODES=f,t.MSAA_QUALITY=T,t.MaskData=lr,t.MaskSystem=ur,t.Matrix=Hs,t.Mesh=xh,t.MeshBatchUvs=fh,t.MeshGeometry=vh,t.MeshMaterial=yh,t.MultisampleSystem=tn,t.NineSlicePlane=class extends Eh{constructor(t,e,s,i,r){var n,a,o,h,l,u,d,c;super(Wi.WHITE,4,4),this._origWidth=t.orig.width,this._origHeight=t.orig.height,this._width=this._origWidth,this._height=this._origHeight,this._leftWidth=null!=(a=null!=e?e:null==(n=t.defaultBorders)?void 0:n.left)?a:10,this._rightWidth=null!=(h=null!=i?i:null==(o=t.defaultBorders)?void 0:o.right)?h:10,this._topHeight=null!=(u=null!=s?s:null==(l=t.defaultBorders)?void 0:l.top)?u:10,this._bottomHeight=null!=(c=null!=r?r:null==(d=t.defaultBorders)?void 0:d.bottom)?c:10,this.texture=t}textureUpdated(){this._textureID=this.shader.texture._updateID,this._refresh()}get vertices(){return this.geometry.getBuffer("aVertexPosition").data}set vertices(t){this.geometry.getBuffer("aVertexPosition").data=t}updateHorizontalVertices(){const t=this.vertices,e=this._getMinScale();t[9]=t[11]=t[13]=t[15]=this._topHeight*e,t[17]=t[19]=t[21]=t[23]=this._height-this._bottomHeight*e,t[25]=t[27]=t[29]=t[31]=this._height}updateVerticalVertices(){const t=this.vertices,e=this._getMinScale();t[2]=t[10]=t[18]=t[26]=this._leftWidth*e,t[4]=t[12]=t[20]=t[28]=this._width-this._rightWidth*e,t[6]=t[14]=t[22]=t[30]=this._width}_getMinScale(){const t=this._leftWidth+this._rightWidth,e=this._width>t?1:this._width/t,s=this._topHeight+this._bottomHeight,i=this._height>s?1:this._height/s;return Math.min(e,i)}get width(){return this._width}set width(t){this._width=t,this._refresh()}get height(){return this._height}set height(t){this._height=t,this._refresh()}get leftWidth(){return this._leftWidth}set leftWidth(t){this._leftWidth=t,this._refresh()}get rightWidth(){return this._rightWidth}set rightWidth(t){this._rightWidth=t,this._refresh()}get topHeight(){return this._topHeight}set topHeight(t){this._topHeight=t,this._refresh()}get bottomHeight(){return this._bottomHeight}set bottomHeight(t){this._bottomHeight=t,this._refresh()}_refresh(){const t=this.texture,e=this.geometry.buffers[1].data;this._origWidth=t.orig.width,this._origHeight=t.orig.height;const s=1/this._origWidth,i=1/this._origHeight;e[0]=e[8]=e[16]=e[24]=0,e[1]=e[3]=e[5]=e[7]=0,e[6]=e[14]=e[22]=e[30]=1,e[25]=e[27]=e[29]=e[31]=1,e[2]=e[10]=e[18]=e[26]=s*this._leftWidth,e[4]=e[12]=e[20]=e[28]=1-s*this._rightWidth,e[9]=e[11]=e[13]=e[15]=i*this._topHeight,e[17]=e[19]=e[21]=e[23]=1-i*this._bottomHeight,this.updateHorizontalVertices(),this.updateVerticalVertices(),this.geometry.buffers[0].update(),this.geometry.buffers[1].update()}},t.NoiseFilter=Ln,t.ObjectRenderer=Ii,t.ObjectRendererSystem=rn,t.ObservablePoint=Zs,t.PI_2=Ds,t.PRECISION=x,t.ParticleContainer=class extends En{constructor(t=1500,e,s=16384,i=!1){super();s>16384&&(s=16384),this._properties=[!1,!0,!1,!1,!1],this._maxSize=t,this._batchSize=s,this._buffers=null,this._bufferUpdateIDs=[],this._updateID=0,this.interactiveChildren=!1,this.blendMode=a.NORMAL,this.autoResize=i,this.roundPixels=!0,this.baseTexture=null,this.setProperties(e),this._tintColor=new Ie(0),this.tintRgb=new Float32Array(3),this.tint=16777215}setProperties(t){t&&(this._properties[0]="vertices"in t||"scale"in t?!!t.vertices||!!t.scale:this._properties[0],this._properties[1]="position"in t?!!t.position:this._properties[1],this._properties[2]="rotation"in t?!!t.rotation:this._properties[2],this._properties[3]="uvs"in t?!!t.uvs:this._properties[3],this._properties[4]="tint"in t||"alpha"in t?!!t.tint||!!t.alpha:this._properties[4])}updateTransform(){this.displayObjectUpdateTransform()}get tint(){return this._tintColor.value}set tint(t){this._tintColor.setValue(t),this._tintColor.toRgbArray(this.tintRgb)}render(t){!this.visible||this.worldAlpha<=0||!this.children.length||!this.renderable||(this.baseTexture||(this.baseTexture=this.children[0]._texture.baseTexture,this.baseTexture.valid||this.baseTexture.once("update",(()=>this.onChildrenChange(0)))),t.batch.setObjectRenderer(t.plugins.particle),t.plugins.particle.render(this))}onChildrenChange(t){const e=Math.floor(t/this._batchSize);for(;this._bufferUpdateIDs.length0&&(t.baseTexture.wrapMode=p.REPEAT),super(i,r),this.autoUpdate=!0}_render(t){const e=this.geometry;(this.autoUpdate||e._width!==this.shader.texture.height)&&(e._width=this.shader.texture.height,e.update()),super._render(t)}},t.Sprite=Sn,t.SpriteMaskFilter=hr,t.Spritesheet=nl,t.StartupSystem=Br,t.State=cs,t.StateSystem=Lr,t.StencilSystem=_r,t.SystemManager=Gr,t.TARGETS=l,t.TEXT_GRADIENT=Sh,t.TYPES=u,t.TYPES_TO_BYTES_PER_COMPONENT=Io,t.TYPES_TO_BYTES_PER_PIXEL=Co,t.TemporaryDisplayObject=vn,t.Text=Lh,t.TextFormat=ul,t.TextMetrics=Mh,t.TextStyle=Ph,t.Texture=Wi,t.TextureGCSystem=kr,t.TextureMatrix=or,t.TextureSystem=Hr,t.TextureUvs=Hi,t.Ticker=$r,t.TickerPlugin=qr,t.TilingSprite=tl,t.TilingSpriteRenderer=il,t.TimeLimiter=class{constructor(t){this.maxMilliseconds=t,this.frameStart=0}beginFrame(){this.frameStart=Date.now()}allowedToUpload(){return Date.now()-this.frameStart0&&-1==t.indexOf("(")&&(t="ncol("+t+")"),"rgb"==t.substr(0,3)||"hsl"==t.substr(0,3)||"hwb"==t.substr(0,3)||"ncol"==t.substr(0,4)||"cmyk"==t.substr(0,4)){if("ncol"==t.substr(0,4)?(4==t.split(",").length&&-1==t.indexOf("ncola")&&(t=t.replace("ncol","ncola")),a="ncol",t=t.substr(4)):"cmyk"==t.substr(0,4)?(a="cmyk",t=t.substr(4)):(a=t.substr(0,3),t=t.substr(3)),n=3,s=!1,"a"==t.substr(0,1).toLowerCase()?(n=4,s=!0,t=t.substr(1)):"cmyk"==a&&(n=4,5==t.split(",").length&&(n=5,s=!0)),c=(t=(t=t.replace("(","")).replace(")","")).split(","),"rgb"==a){if(c.length!=n)return emptyObject();for(i=0;i-1&&(c[i]=c[i].replace("%",""),c[i]=Number(c[i]/100),i<3&&(c[i]=Math.round(255*c[i]))),isNaN(c[i]))return emptyObject();parseInt(c[i])>255&&(c[i]=255),i<3&&(c[i]=parseInt(c[i])),3==i&&Number(c[i])>1&&(c[i]=1)}l={r:c[0],g:c[1],b:c[2]},1==s&&(h=Number(c[3]))}if("hsl"==a||"hwb"==a||"ncol"==a){for(;c.length=360&&(c[0]=0),i=1;i-1){if(c[i]=c[i].replace("%",""),c[i]=Number(c[i]),isNaN(c[i]))return emptyObject();c[i]=c[i]/100}else c[i]=Number(c[i]);Number(c[i])>1&&(c[i]=1),0>Number(c[i])&&(c[i]=0)}"hsl"==a&&(l=hslToRgb(c[0],c[1],c[2]),f=Number(c[0]),u=Number(c[1])),"hwb"==a&&(l=hwbToRgb(c[0],c[1],c[2])),"ncol"==a&&(l=ncolToRgb(c[0],c[1],c[2])),1==s&&(h=Number(c[3]))}if("cmyk"==a){for(;c.length-1){if(c[i]=c[i].replace("%",""),c[i]=Number(c[i]),isNaN(c[i]))return emptyObject();c[i]=c[i]/100}else c[i]=Number(c[i]);Number(c[i])>1&&(c[i]=1),0>Number(c[i])&&(c[i]=0)}l=cmykToRgb(c[0],c[1],c[2],c[3]),1==s&&(h=Number(c[4]))}}else if("ncs"==t.substr(0,3))l=ncsToRgb(t);else{for(i=0,o=!1,b=getColorArr("names");i=6&&(r-=6),r<1?(e-t)*r+t:r<3?e:r<4?(e-t)*(4-r)+t:t}function hwbToRgb(t,e,r){var a,n,i,s=[];for(n=hslToRgb(t,1,.5),s[0]=n.r/255,s[1]=n.g/255,s[2]=n.b/255,(i=e+r)>1&&(e=Number((e/i).toFixed(2)),r=Number((r/i).toFixed(2))),a=0;a<3;a++)s[a]*=1-e-r,s[a]+=e,s[a]=Number(255*s[a]);return{r:s[0],g:s[1],b:s[2]}}function cmykToRgb(t,e,r,a){return{r:255-255*Math.min(1,t*(1-a)+a),g:255-255*Math.min(1,e*(1-a)+a),b:255-255*Math.min(1,r*(1-a)+a)}}function ncolToRgb(t,e,r){var a,n,i;if(i=t,isNaN(t.substr(0,1))){if(a=t.substr(0,1).toUpperCase(),""==(n=t.substr(1))&&(n=0),isNaN(n=Number(n)))return!1;"R"==a&&(i=0+.6*n),"Y"==a&&(i=60+.6*n),"G"==a&&(i=120+.6*n),"C"==a&&(i=180+.6*n),"B"==a&&(i=240+.6*n),"M"==a&&(i=300+.6*n),"W"==a&&(i=0,e=1-n/100,r=n/100)}return hwbToRgb(i,e,r)}function hueToNcol(t){for(;t>=360;)t-=360;return t<60?"R"+t/.6:t<120?"Y"+(t-60)/.6:t<180?"G"+(t-120)/.6:t<240?"C"+(t-180)/.6:t<300?"B"+(t-240)/.6:t<360?"M"+(t-300)/.6:void 0}function ncsToRgb(t){var e,r,a,n,i,s,o,h,f,u,l,c,b,d,g,m,p;return-1==(t=(t=(t=(t=(t=w3trim(t).toUpperCase()).replace("(","")).replace(")","")).replace("NCS","NCS ")).replace(/ /g," ")).indexOf("NCS")&&(t="NCS "+t),null!==(t=t.match(/^(?:NCS|NCS\sS)\s(\d{2})(\d{2})-(N|[A-Z])(\d{2})?([A-Z])?$/))&&(e=parseInt(t[1],10),r=parseInt(t[2],10),("N"==(a=t[3])||"Y"==a||"R"==a||"B"==a||"G"==a)&&(n=parseInt(t[4],10)||0,"N"!==a?(i=1.05*e-5.25,s=r,"Y"===a&&n<=60?o=1:"Y"===a&&n>60||"R"===a&&n<=80?o=(Math.sqrt(14884-Math.pow(h="Y"===a?n-60:n+40,2))-22)/100:"R"===a&&n>80||"B"===a?o=0:"G"===a&&(o=(Math.sqrt(33800-Math.pow(h=n-170,2))-70)/100),"Y"===a&&n<=80?f=0:"Y"===a&&n>80||"R"===a&&n<=60?f=(104-Math.sqrt(11236-Math.pow(h="Y"===a?n-80+20.5:n+20+20.5,2)))/100:"R"===a&&n>60||"B"===a&&n<=80?f=(Math.sqrt(1e4-Math.pow(h="R"===a?n-60-60:n+40-60,2))-10)/100:"B"===a&&n>80||"G"===a&&n<=40?f=(122-Math.sqrt(19881-Math.pow(h="B"===a?n-80-131:n+20-131,2)))/100:"G"===a&&n>40&&(f=0),"Y"===a?green1=(85-.85*n)/100:"R"===a&&n<=60?green1=0:"R"===a&&n>60?green1=(67.5-Math.sqrt(5776-Math.pow(h=n-60+35,2)))/100:"B"===a&&n<=60?green1=(6.5+Math.sqrt(7044.5-Math.pow(h=1*n-68.5,2)))/100:"B"===a&&n>60||"G"===a&&n<=60?green1=.9:"G"===a&&n>60&&(green1=(90-1/8*(h=n-60))/100),u=((h=(o+green1+f)/3)-o)*(100-s)/100+o,c=(h-f)*(100-s)/100+f,b=1/(u>(l=(h-green1)*(100-s)/100+green1)&&u>c?u:l>u&&l>c?l:c>u&&c>l?c:(u+l+c)/3),(g=parseInt(u*b*(100-i)/100*255,10))>255&&(g=255),(m=parseInt(l*b*(100-i)/100*255,10))>255&&(m=255),(p=parseInt(c*b*(100-i)/100*255,10))>255&&(p=255),g<0&&(g=0),m<0&&(m=0),p<0&&(p=0)):((d=parseInt(255*(1-e/100),10))>255&&(d=255),d<0&&(d=0),g=d,m=d,p=d),{r:g,g:m,b:p}))}function rgbToHsl(t,e,r){var a,n,i,s,o,h,f=[];for(i=0,f[0]=t/255,f[1]=e/255,f[2]=r/255,a=f[0],n=f[0],o=0;i=n&&(n=f[i+1],o=i+1);return 0==o&&(h=(f[1]-f[2])/(n-a)),1==o&&(h=2+(f[2]-f[0])/(n-a)),2==o&&(h=4+(f[0]-f[1])/(n-a)),isNaN(h)&&(h=0),(h*=60)<0&&(h+=360),s=(a+n)/2,{h:h,s:a==n?0:s<.5?(n-a)/(n+a):(n-a)/(2-n-a),l:s}}function rgbToHwb(t,e,r){return t/=255,e/=255,r/=255,{h:0==(chroma=(max=Math.max(t,e,r))-(min=Math.min(t,e,r)))?0:t==max?(e-r)/chroma%6*360:e==max?((r-t)/chroma+2)%6*360:((t-e)/chroma+4)%6*360,w:min,b:1-max}}function rgbToCmyk(t,e,r){var a,n,i,s;return t/=255,e/=255,r/=255,1==(s=1-(max=Math.max(t,e,r)))?(a=0,n=0,i=0):(a=(1-t-s)/(1-s),n=(1-e-s)/(1-s),i=(1-r-s)/(1-s)),{c:a,m:n,y:i,k:s}}function toHex(t){for(var e=t.toString(16);e.length<2;)e="0"+e;return e}function cl(t){console.log(t)}function w3trim(t){return t.replace(/^\s+|\s+$/g,"")}function isHex(t){return"0123456789ABCDEFabcdef".indexOf(t)>-1}function w3SetColorsByAttribute(){var t,e,r;for(e=0,t=document.getElementsByTagName("*");e1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=w(t,360),e=w(e,100),r=w(r,100),0===e)a=n=i=r;else{var o=r<.5?r*(1+e):r+e-r*e,h=2*r-o;a=s(h,o,t+1/3),n=s(h,o,t),i=s(h,o,t-1/3)}return{r:255*a,g:255*n,b:255*i}}(s.h,f,u),l=!0,c="hsl"),s.hasOwnProperty("a")&&(h=s.a)),h=_(h),{ok:l,format:s.format||c,r:Math.min(255,Math.max(o.r,0)),g:Math.min(255,Math.max(o.g,0)),b:Math.min(255,Math.max(o.b,0)),a:h});this._originalInput=n,this._r=G.r,this._g=G.g,this._b=G.b,this._a=G.a,this._roundA=Math.round(100*this._a)/100,this._format=i.format||G.format,this._gradientType=i.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=G.ok}function n(t,e,r){t=w(t,255),e=w(e,255),r=w(r,255);var a,n,i=Math.max(t,e,r),s=Math.min(t,e,r),o=(i+s)/2;if(i==s)a=n=0;else{var h=i-s;switch(n=o>.5?h/(2-i-s):h/(i+s),i){case t:a=(e-r)/h+(e>1)+720)%360;--e;)n.h=(n.h+i)%360,s.push(a(n));return s}function M(t,e){e=e||6;for(var r=a(t).toHsv(),n=r.h,i=r.s,s=r.v,o=[],h=1/e;e--;)o.push(a({h:n,s:i,v:s})),s=(s+h)%1;return o}a.prototype={isDark:function(){return 128>this.getBrightness()},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var t,e,r,a=this.toRgb();return t=a.r/255,e=a.g/255,r=a.b/255,.2126*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.7152*(e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))},setAlpha:function(t){return this._a=_(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=i(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=i(this._r,this._g,this._b),e=Math.round(360*t.h),r=Math.round(100*t.s),a=Math.round(100*t.v);return 1==this._a?"hsv("+e+", "+r+"%, "+a+"%)":"hsva("+e+", "+r+"%, "+a+"%, "+this._roundA+")"},toHsl:function(){var t=n(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=n(this._r,this._g,this._b),e=Math.round(360*t.h),r=Math.round(100*t.s),a=Math.round(100*t.l);return 1==this._a?"hsl("+e+", "+r+"%, "+a+"%)":"hsla("+e+", "+r+"%, "+a+"%, "+this._roundA+")"},toHex:function(t){return s(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHexNumber:function(){return Number("0x"+this.toHex())},toHex8:function(t){var e,r,a,n,i,s;return e=this._r,r=this._g,a=this._b,n=this._a,i=t,s=[A(Math.round(e).toString(16)),A(Math.round(r).toString(16)),A(Math.round(a).toString(16)),A(R(n))],i&&s[0].charAt(0)==s[0].charAt(1)&&s[1].charAt(0)==s[1].charAt(1)&&s[2].charAt(0)==s[2].charAt(1)&&s[3].charAt(0)==s[3].charAt(1)?s[0].charAt(0)+s[1].charAt(0)+s[2].charAt(0)+s[3].charAt(0):s.join("")},toHex8String:function(t){return"#"+this.toHex8(t)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"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(){return{r:Math.round(100*w(this._r,255))+"%",g:Math.round(100*w(this._g,255))+"%",b:Math.round(100*w(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+Math.round(100*w(this._r,255))+"%, "+Math.round(100*w(this._g,255))+"%, "+Math.round(100*w(this._b,255))+"%)":"rgba("+Math.round(100*w(this._r,255))+"%, "+Math.round(100*w(this._g,255))+"%, "+Math.round(100*w(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1||!v[s(this._r,this._g,this._b,!0)])},toFilter:function(t){var e="#"+o(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?"GradientType = 1, ":"";if(t){var i=a(t);r="#"+o(i._r,i._g,i._b,i._a)}return"progid:DXImageTransform.Microsoft.gradient("+n+"startColorstr="+e+",endColorstr="+r+")"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,a=this._a<1&&this._a>=0;return e||!a||"hex"!==t&&"hex6"!==t&&"hex3"!==t&&"hex4"!==t&&"hex8"!==t&&"name"!==t?("rgb"===t&&(r=this.toRgbString()),"prgb"===t&&(r=this.toPercentageRgbString()),("hex"===t||"hex6"===t)&&(r=this.toHexString()),"hex3"===t&&(r=this.toHexString(!0)),"hex4"===t&&(r=this.toHex8String(!0)),"hex8"===t&&(r=this.toHex8String()),"name"===t&&(r=this.toName()),"hsl"===t&&(r=this.toHslString()),"hsv"===t&&(r=this.toHsvString()),r||this.toHexString()):"name"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return a(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(l,arguments)},brighten:function(){return this._applyModification(c,arguments)},darken:function(){return this._applyModification(b,arguments)},desaturate:function(){return this._applyModification(h,arguments)},saturate:function(){return this._applyModification(f,arguments)},greyscale:function(){return this._applyModification(u,arguments)},spin:function(){return this._applyModification(d,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(y,arguments)},complement:function(){return this._applyCombination(g,arguments)},monochromatic:function(){return this._applyCombination(M,arguments)},splitcomplement:function(){return this._applyCombination(p,arguments)},triad:function(){return this._applyCombination(m,[3])},tetrad:function(){return this._applyCombination(m,[4])}},a.fromRatio=function(e,r){if("object"==t(e)){var n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]="a"===i?e[i]:N(e[i]));e=n}return a(e,r)},a.equals=function(t,e){return!!t&&!!e&&a(t).toRgbString()==a(e).toRgbString()},a.random=function(){return a.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})},a.mix=function(t,e,r){r=0===r?0:r||50;var n=a(t).toRgb(),i=a(e).toRgb(),s=r/100;return a({r:(i.r-n.r)*s+n.r,g:(i.g-n.g)*s+n.g,b:(i.b-n.b)*s+n.b,a:(i.a-n.a)*s+n.a})},a.readability=function(t,e){var r=a(t),n=a(e);return(Math.max(r.getLuminance(),n.getLuminance())+.05)/(Math.min(r.getLuminance(),n.getLuminance())+.05)},a.isReadable=function(t,e,r){var n,i,s,o,h,f=a.readability(t,e);switch(i=!1,(s=r,o=((s=s||{level:"AA",size:"small"}).level||"AA").toUpperCase(),h=(s.size||"small").toLowerCase(),"AA"!==o&&"AAA"!==o&&(o="AA"),"small"!==h&&"large"!==h&&(h="small"),n={level:o,size:h}).level+n.size){case"AAsmall":case"AAAlarge":i=f>=4.5;break;case"AAlarge":i=f>=3;break;case"AAAsmall":i=f>=7}return i},a.mostReadable=function(t,e,r){var n,i,s,o,h=null,f=0;i=(r=r||{}).includeFallbackColors,s=r.level,o=r.size;for(var u=0;uf&&(f=n,h=a(e[u]));return a.isReadable(t,h,{level:s,size:o})||!i?h:(r.includeFallbackColors=!1,a.mostReadable(t,["#fff","#000"],r))};var k=a.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"},v=a.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(k);function _(t){return(isNaN(t=parseFloat(t))||t<0||t>1)&&(t=1),t}function w(t,e){"string"==typeof(r=t)&&-1!=r.indexOf(".")&&1===parseFloat(r)&&(t="100%");var r,a,n="string"==typeof(a=t)&&-1!=a.indexOf("%");return t=Math.min(e,Math.max(0,parseFloat(t))),n&&(t=parseInt(t*e,10)/100),1e-6>Math.abs(t-e)?1:t%e/parseFloat(e)}function x(t){return Math.min(1,Math.max(0,t))}function S(t){return parseInt(t,16)}function A(t){return 1==t.length?"0"+t:""+t}function N(t){return t<=1&&(t=100*t+"%"),t}function R(t){return Math.round(255*parseFloat(t)).toString(16)}function C(t){return S(t)/255}var H,G,B,T=(G="[\\s|\\(]+("+(H="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+H+")[,|\\s]+("+H+")\\s*\\)?",B="[\\s|\\(]+("+H+")[,|\\s]+("+H+")[,|\\s]+("+H+")[,|\\s]+("+H+")\\s*\\)?",{CSS_UNIT:RegExp(H),rgb:RegExp("rgb"+G),rgba:RegExp("rgba"+B),hsl:RegExp("hsl"+G),hsla:RegExp("hsla"+B),hsv:RegExp("hsv"+G),hsva:RegExp("hsva"+B),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})$/});function F(t){return!!T.CSS_UNIT.exec(t)}return a})),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(100*this.whiteness)+"%, "+Math.round(100*this.blackness)+"%)"},toHwbStringDecimal:function(){return"hwb("+this.hue+", "+this.whiteness+", "+this.blackness+")"},toHwbaString:function(){return"hwba("+this.hue+", "+Math.round(100*this.whiteness)+"%, "+Math.round(100*this.blackness)+"%, "+this.opacity+")"},toHslString:function(){return"hsl("+this.hue+", "+Math.round(100*this.sat)+"%, "+Math.round(100*this.lightness)+"%)"},toHslStringDecimal:function(){return"hsl("+this.hue+", "+this.sat+", "+this.lightness+")"},toHslaString:function(){return"hsla("+this.hue+", "+Math.round(100*this.sat)+"%, "+Math.round(100*this.lightness)+"%, "+this.opacity+")"},toCmykString:function(){return"cmyk("+Math.round(100*this.cyan)+"%, "+Math.round(100*this.magenta)+"%, "+Math.round(100*this.yellow)+"%, "+Math.round(100*this.black)+"%)"},toCmykStringDecimal:function(){return"cmyk("+this.cyan+", "+this.magenta+", "+this.yellow+", "+this.black+")"},toNcolString:function(){return this.ncol+", "+Math.round(100*this.whiteness)+"%, "+Math.round(100*this.blackness)+"%"},toNcolStringDecimal:function(){return this.ncol+", "+this.whiteness+", "+this.blackness},toNcolaString:function(){return this.ncol+", "+Math.round(100*this.whiteness)+"%, "+Math.round(100*this.blackness)+"%, "+this.opacity},toName:function(){var t,e,r,a=getColorArr("hexs");for(i=0;i1&&(this.sat=1),r=colorObject(hslToRgb(this.hue,this.sat,this.lightness),this.opacity,this.hue,this.sat),this.attachValues(r)},desaturate:function(t){var e,r;e=t/100||.1,this.sat-=e,this.sat<0&&(this.sat=0),r=colorObject(hslToRgb(this.hue,this.sat,this.lightness),this.opacity,this.hue,this.sat),this.attachValues(r)},lighter:function(t){var e,r;e=t/100||.1,this.lightness+=e,this.lightness>1&&(this.lightness=1),r=colorObject(hslToRgb(this.hue,this.sat,this.lightness),this.opacity,this.hue,this.sat),this.attachValues(r)},darker:function(t){var e,r;e=t/100||.1,this.lightness-=e,this.lightness<0&&(this.lightness=0),r=colorObject(hslToRgb(this.hue,this.sat,this.lightness),this.opacity,this.hue,this.sat),this.attachValues(r)},attachValues:function(t){this.red=t.red,this.green=t.green,this.blue=t.blue,this.hue=t.hue,this.sat=t.sat,this.lightness=t.lightness,this.whiteness=t.whiteness,this.blackness=t.blackness,this.cyan=t.cyan,this.magenta=t.magenta,this.yellow=t.yellow,this.black=t.black,this.ncol=t.ncol,this.opacity=t.opacity,this.valid=t.valid}} \ No newline at end of file diff --git a/obsidian/lib/scripts/webpage.js b/obsidian/lib/scripts/webpage.js new file mode 100644 index 0000000..daf949e --- /dev/null +++ b/obsidian/lib/scripts/webpage.js @@ -0,0 +1 @@ +let absoluteBasePath,relativeBasePath,relativePathname,webpageContainer,documentContainer,viewContent,leftSidebar,rightSidebar,sidebarCollapseIcons,sidebarGutters,sidebars,sidebarDefaultWidth,sidebarTargetWidth,contentTargetWidth,themeToggle,searchInput,fileTree,outlineTree,fileTreeItems,outlineTreeItems,canvasWrapper,canvas,canvasNodes,canvasBackground,canvasBackgroundPattern,focusedCanvasNode,loadingIcon,documentType,embedType,customType,deviceSize,lastScreenWidth,loadedURL=new URL(window.location.href),isOffline=!1,collapseIconUp=["m7 15 5 5 5-5","m7 9 5-5 5 5"],collapseIconDown=["m7 20 5-5 5 5","m7 4 5 5 5-5"],isTouchDevice=isTouchCapable(),fullyInitialized=!1;async function initGlobalObjects(){"file:"!=window.location.protocol&&await loadIncludes(),loadingIcon=document.createElement("div"),loadingIcon.classList.add("loading-icon"),document.body.appendChild(loadingIcon),loadingIcon.innerHTML="
",webpageContainer=document.querySelector(".webpage-container"),documentContainer=document.querySelector(".document-container"),leftSidebar=document.querySelector(".sidebar-left"),rightSidebar=document.querySelector(".sidebar-right"),fileTree=document.querySelector(".file-tree"),outlineTree=document.querySelector(".outline-tree"),fileTreeItems=Array.from(document.querySelectorAll(".tree-container.file-tree .tree-item")),sidebars=[],sidebarGutters=[],sidebarCollapseIcons=[],leftSidebar&&rightSidebar&&(sidebarCollapseIcons=Array.from(document.querySelectorAll(".sidebar-collapse-icon")),sidebarGutters=[sidebarCollapseIcons[0].parentElement,sidebarCollapseIcons[1].parentElement],sidebars=[sidebarGutters[0].parentElement,sidebarGutters[1].parentElement]),themeToggle=document.querySelector(".theme-toggle-input")}async function initializePage(){focusedCanvasNode=null,canvasWrapper=document.querySelector(".canvas-wrapper")??canvasWrapper,canvas=document.querySelector(".canvas")??canvas;let e=document.querySelectorAll(".canvas-node");canvasNodes=e.length>0?e:canvasNodes,canvasBackground=document.querySelector(".canvas-background")??canvasBackground,canvasBackgroundPattern=document.querySelector(".canvas-background pattern")??canvasBackgroundPattern,viewContent=document.querySelector(".document-container > .view-content")??document.querySelector(".document-container > .markdown-preview-view")??viewContent,outlineTreeItems=Array.from(document.querySelectorAll(".tree-container.outline-tree .tree-item")),fullyInitialized||("file:"==window.location.protocol&&initializeForFileProtocol(),await initGlobalObjects(),initializeDocumentTypes(document),setupSidebars(),setupThemeToggle(),await setupSearch(),setupRootPath(document),sidebarDefaultWidth=await getComputedPixelValue("--sidebar-width"),contentTargetWidth=.9*await getComputedPixelValue("--line-width"),window.addEventListener("resize",(()=>onResize())),onResize()),setTimeout((()=>documentContainer.classList.remove("hide"))),!rightSidebar||"video"!=embedType&&"embed"!=embedType&&"excalidraw"!=customType&&"kanban"!=customType&&"canvas"!=documentType?rightSidebar&&rightSidebar.temporarilyCollapsed&&rightSidebar.collapsed&&(rightSidebar.collapse(!1),rightSidebar.temporarilyCollapsed=!1):rightSidebar.collapsed||rightSidebar.temporaryCollapse(),parseURLParams(),relativePathname=getVaultRelativePath(loadedURL.href)}function initializePageEvents(e){e&&(setupHeaders(e),setupTrees(e),setupLists(e),setupCallouts(e),setupCheckboxes(e),setupCanvas(e),setupCodeblocks(e),setupLinks(e),setupScroll(e))}function initializeDocumentTypes(e){e.querySelector(".document-container > .markdown-preview-view")?documentType="markdown":e.querySelector(".canvas-wrapper")?documentType="canvas":(documentType="custom",e.querySelector(".kanban-plugin")?customType="kanban":e.querySelector(".excalidraw-plugin")&&(customType="excalidraw"))}function initializeForFileProtocol(){let e=document.querySelector(".graph-view-placeholder");e&&(console.log("Running locally, skipping graph view initialization and hiding graph."),e.style.display="none",e.previousElementSibling.style.display="none")}function onEndResize(){document.body.classList.toggle("resizing",!1)}function onStartResize(){document.body.classList.toggle("resizing",!0)}window.onload=async function(){await initializePage(),initializePageEvents(document),setActiveDocument(loadedURL,!0,!1,!1),fullyInitialized=!0},window.onpopstate=function(e){if(e.preventDefault(),e.stopPropagation(),document.body.classList.contains("floating-sidebars")&&(!leftSidebar.collapsed||!rightSidebar.collapsed))return leftSidebar.collapse(!0),void rightSidebar.collapse(!0);loadDocument(getURLPath(),!1,!0),console.log("Popped state: "+getURLPath())};let checkStillResizingTimeout,isResizing=!1;function onResize(e=!1){function t(e,t){let o=window.innerWidth;return o>e&&oe&&o=t)}function o(e){let t=window.innerWidth;return t>e&&null==lastScreenWidth||t>e&&lastScreenWidthe}isResizing||(onStartResize(),isResizing=!0),o(contentTargetWidth+2*sidebarDefaultWidth)||o(1025)?(deviceSize="large-screen",document.body.classList.toggle("floating-sidebars",!1),document.body.classList.toggle("is-large-screen",!0),document.body.classList.toggle("is-small-screen",!1),document.body.classList.toggle("is-tablet",!1),document.body.classList.toggle("is-phone",!1),sidebars.forEach((function(e){e.collapse(!1)})),sidebarGutters.forEach((function(e){e.collapse(!1)}))):t(1*(contentTargetWidth+sidebarDefaultWidth),contentTargetWidth+2*sidebarDefaultWidth)||t(769,1024)?(deviceSize="small screen",document.body.classList.toggle("floating-sidebars",!1),document.body.classList.toggle("is-large-screen",!1),document.body.classList.toggle("is-small-screen",!0),document.body.classList.toggle("is-tablet",!1),document.body.classList.toggle("is-phone",!1),sidebarGutters.forEach((function(e){e.collapse(!1)})),leftSidebar&&rightSidebar&&!leftSidebar.collapsed&&rightSidebar.collapse(!0)):t(2*sidebarDefaultWidth,1*(contentTargetWidth+sidebarDefaultWidth))||t(481,768)?(deviceSize="tablet",document.body.classList.toggle("floating-sidebars",!0),document.body.classList.toggle("is-large-screen",!1),document.body.classList.toggle("is-small-screen",!1),document.body.classList.toggle("is-tablet",!0),document.body.classList.toggle("is-phone",!1),sidebarGutters.forEach((function(e){e.collapse(!1)})),leftSidebar&&rightSidebar&&!leftSidebar.collapsed&&rightSidebar.collapse(!0),leftSidebar&&!fullyInitialized&&leftSidebar.collapse(!0)):(n(2*sidebarDefaultWidth)||n(480))&&(deviceSize="phone",document.body.classList.toggle("floating-sidebars",!0),document.body.classList.toggle("is-large-screen",!1),document.body.classList.toggle("is-small-screen",!1),document.body.classList.toggle("is-tablet",!1),document.body.classList.toggle("is-phone",!0),sidebars.forEach((function(e){e.collapse(!0)})),sidebarGutters.forEach((function(e){e.collapse(!1)}))),lastScreenWidth=window.innerWidth,null!=checkStillResizingTimeout&&clearTimeout(checkStillResizingTimeout);let i=window.innerWidth;checkStillResizingTimeout=setTimeout((function(){window.innerWidth==i&&(checkStillResizingTimeout=void 0,isResizing=!1,onEndResize())}),200)}function clamp(e,t,o){return Math.min(Math.max(e,t),o)}async function delay(e){return new Promise((t=>setTimeout(t,e)))}async function waitUntil(e,t=100,o=2e3){return new Promise((n=>{let i=0,a=setTimeout((()=>{clearInterval(i),n()}),o);i=setInterval((()=>{e()&&(clearInterval(i),clearTimeout(a),n())}),t)}))}function getElBounds(e){let t=e.getBoundingClientRect(),o=t.x,n=t.y,i=t.width,a=t.height;return{x:o,y:n,width:i,height:a,minX:o,minY:n,maxX:o+i,maxY:n+a,centerX:t.x+t.width/2,centerY:t.y+t.height/2}}async function getComputedPixelValue(e){const t=document.createElement("div");document.body.appendChild(t),t.style.position="absolute",t.style.width=`var(${e})`,await new Promise((e=>setTimeout(e,10)));const o=window.getComputedStyle(t).width;return t.remove(),parseFloat(o)}function getPointerPosition(e){let t=e.touches?Array.from(e.touches):[];return{x:t.length>0?t.reduce(((e,t)=>e+t.clientX),0)/e.touches.length:e.clientX,y:t.length>0?t.reduce(((e,t)=>e+t.clientY),0)/e.touches.length:e.clientY}}function getTouchPosition(e){return{x:e.clientX,y:e.clientY}}function getAllChildrenRecursive(e){let t=[];for(let o=0;o0||navigator.msMaxTouchPoints>0}function downloadBlob(e,t="file.txt"){if(window.navigator&&window.navigator.msSaveOrOpenBlob)return window.navigator.msSaveOrOpenBlob(e);const o=window.URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download=t,n.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,view:window})),setTimeout((()=>{window.URL.revokeObjectURL(o),n.remove()}),100)}function extentionToTag(e){return["png","jpg","jpeg","svg","gif","bmp","ico"].includes(e)?"img":["mp4","mov","avi","webm","mpeg"].includes(e)?"video":["mp3","wav","ogg","aac"].includes(e)?"audio":["pdf"].includes(e)?"embed":void 0}let slideUp=(e,t=500)=>{e.style.transitionProperty="height, margin, padding",e.style.transitionDuration=t+"ms",e.style.boxSizing="border-box",e.style.height=e.offsetHeight+"px",e.offsetHeight,e.style.overflow="hidden",e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0,e.style.marginTop=0,e.style.marginBottom=0,window.setTimeout((async()=>{e.style.display="none",e.style.removeProperty("height"),e.style.removeProperty("padding-top"),e.style.removeProperty("padding-bottom"),e.style.removeProperty("margin-top"),e.style.removeProperty("margin-bottom"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property")}),t)},slideUpAll=(e,t=500)=>{e.forEach((async e=>{e&&(e.style.transitionProperty="height, margin, padding",e.style.transitionDuration=t+"ms",e.style.boxSizing="border-box",e.style.height=e.offsetHeight+"px",e.offsetHeight,e.style.overflow="hidden",e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0,e.style.marginTop=0,e.style.marginBottom=0)})),window.setTimeout((async()=>{e.forEach((async e=>{e&&(e.style.display="none",e.style.removeProperty("height"),e.style.removeProperty("padding-top"),e.style.removeProperty("padding-bottom"),e.style.removeProperty("margin-top"),e.style.removeProperty("margin-bottom"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property"))}))}),t)},slideDown=(e,t=500)=>{e.style.removeProperty("display");let o=window.getComputedStyle(e).display;"none"===o&&(o="block"),e.style.display=o;let n=e.offsetHeight;e.style.overflow="hidden",e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0,e.style.marginTop=0,e.style.marginBottom=0,e.offsetHeight,e.style.boxSizing="border-box",e.style.transitionProperty="height, margin, padding",e.style.transitionDuration=t+"ms",e.style.height=n+"px",e.style.removeProperty("padding-top"),e.style.removeProperty("padding-bottom"),e.style.removeProperty("margin-top"),e.style.removeProperty("margin-bottom"),window.setTimeout((async()=>{e.style.removeProperty("height"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property")}),t)},slideDownAll=(e,t=500)=>{e.forEach((async e=>{if(!e)return;e.style.removeProperty("display");let o=window.getComputedStyle(e).display;"none"===o&&(o="block"),e.style.display=o;let n=e.offsetHeight;e.style.overflow="hidden",e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0,e.style.marginTop=0,e.style.marginBottom=0,e.offsetHeight,e.style.boxSizing="border-box",e.style.transitionProperty="height, margin, padding",e.style.transitionDuration=t+"ms",e.style.height=n+"px",e.style.removeProperty("padding-top"),e.style.removeProperty("padding-bottom"),e.style.removeProperty("margin-top"),e.style.removeProperty("margin-bottom")})),window.setTimeout((async()=>{e.forEach((async e=>{e&&(e.style.removeProperty("height"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property"))}))}),t)};var slideToggle=(e,t=500)=>"none"===window.getComputedStyle(e).display?slideDown(e,t):slideUp(e,t),slideToggleAll=(e,t=500)=>"none"===window.getComputedStyle(e[0]).display?slideDownAll(e,t):slideUpAll(e,t);function getURLExtention(e){return e.split(".").pop().split("?")[0].split("#")[0].toLowerCase().trim()}let transferDocument=document.implementation.createHTMLDocument(),loading=!1;async function loadDocument(e,t,o){if(e=decodeURI(e),loading)return void console.log("Already loading document.");loading=!0;let n=new URL(e,absoluteBasePath);if(relativePathname=getVaultRelativePath(n.href),console.log("Loading document: ",n.pathname),n.pathname==loadedURL?.pathname)return console.log("Document already loaded."),loadedURL=n,setActiveDocument(loadedURL,!1,!1),await initializePage(),void(loading=!1);loadedURL=n;let i,a=loadedURL.pathname;await showLoading(!0);try{i=await fetch(a)}catch(e){return window.location.assign(a),void(loading=!1)}if(i.ok){setActiveDocument(loadedURL,o,t);let n=getURLExtention(e);if("/"==n&&(n="html"),documentType="none",embedType="none",customType="none","html"==n){let e=(await i.text()).replaceAll("","").replaceAll("","").replaceAll("","");transferDocument.write(e),setupRootPath(transferDocument),initializeDocumentTypes(transferDocument);let t=transferDocument.querySelector(".document-container");documentContainer.innerHTML=t.innerHTML;let o=transferDocument.querySelector(".outline-tree");outlineTree&&o&&(outlineTree.innerHTML=o.innerHTML),document.title=transferDocument.title,transferDocument.close()}else if(documentType="embed",embedType=extentionToTag(n),null!=embedType){let t=document.createElement(embedType);t.controls=!0,t.src=e,t.style.maxWidth="100%","embed"==embedType&&(t.style.width="100%",t.style.height="100%"),t.style.objectFit="contain",viewContent.innerHTML="",viewContent.setAttribute("class","view-content embed"),viewContent.appendChild(t),document.querySelector(".outline-tree")&&(document.querySelector(".outline-tree").innerHTML=""),document.title=e.split("/").pop()}else{downloadBlob(await i.blob(),e.split("/").pop())}await initializePage(),initializePageEvents(documentContainer),initializePageEvents(outlineTree)}else pageNotFound(viewContent);await showLoading(!1),loading=!1}function setActiveDocument(e,t,o,n=!0){let i=getVaultRelativePath(e.href),a=decodeURI(i).split("#")[0].split("?")[0].replace('"','\\"').replace("'","\\'");"/"!=a&&""!=a||(a="index.html");let l=document.querySelector(".file-tree .tree-item.mod-active"),s=document.querySelector(`.file-tree .tree-item:has(>.tree-link[href^="${a}"])`);if(s&&!s.isEqualNode(l)&&(l?.classList.remove("mod-active"),s.classList.add("mod-active"),t&&scrollIntoView(s,{block:"center",inline:"nearest"},n)),"undefined"!=typeof graphData&&window.graphRenderer){let e=graphData?.paths.findIndex((function(e){return e.endsWith(a)}))??-1;e>=0&&(window.graphRenderer.activeNode=e)}console.log("Active document: "+o),o&&"file:"!=window.location.protocol&&(window.history.pushState({path:i},"",i),console.log("Pushed state: "+i))}function parseURLParams(){const e=loadedURL.searchParams.get("mark"),t=loadedURL.searchParams.get("query"),o=decodeURI(loadedURL.hash);if(e&&searchCurrentDocument(e),t&&search(t),o){const e=document.getElementById(o.substring(1));e?scrollIntoView(e,{behavior:"smooth",block:"start"}):console.log("Heading not found: "+o)}}async function showLoading(e){if(documentContainer.style.transitionDuration="",loadingIcon.classList.toggle("show",e),documentContainer.classList.toggle("hide",e),e){let e=getViewBounds();loadingIcon.style.left=e.centerX-loadingIcon.offsetWidth/2+"px",loadingIcon.style.top=e.centerY-loadingIcon.offsetHeight/2+"px","phone"==deviceSize&&leftSidebar.collapse(!0)}await delay(200)}function pageNotFound(e){e.innerHTML="\n\t
\n\t\t
\n\t\t\t

Page Not Found

\n\t\t
\n\t
\n\t",document.querySelector(".outline-tree")&&(document.querySelector(".outline-tree").innerHTML=""),console.log("Page not found: "+absoluteBasePath+loadedURL.pathname);let t=getURLRootPath(absoluteBasePath+loadedURL.pathname);relativeBasePath=t,document.querySelector("base").href=t,document.title="Page Not Found"}function setupRootPath(e){let t=e.getElementById("root-path");if(!t)return;let o=t.getAttribute("root-path"),n=document.createElement("base");n.href=o,console.log("Setting root path: "+o),document.querySelector("base").replaceWith(n),document.querySelector("#root-path").setAttribute("root-path",o),relativeBasePath=o,absoluteBasePath=new URL(o,window.location.href).href}function getURLPath(e=window.location.pathname){return null==absoluteBasePath&&setupRootPath(document),e.replace(absoluteBasePath,"")}function getURLRootPath(e=window.location.pathname){let t=getURLPath(e).split("/"),o="";for(let e=0;ee+t.offsetHeight),0);e.markdownPreviewSizer.style.minHeight=t+"px"}}if(i.style.height=a+"px",t||"canvas"!=documentType||e.show(!0),e.collapsed=t,n)return i.style.transitionDuration="0s",e.classList.toggle("is-collapsed",t),i.style.height="",i.style.transitionDuration="",void l();let s=getComputedStyle(i).transitionDuration;s=s.endsWith("s")?parseFloat(s):s.endsWith("ms")?parseFloat(s)/1e3:0;let r=Math.min(s*Math.sqrt(a)/16,.5);i.style.transitionDuration=`${r}s`,i.style.height=t?"0px":a+"px",e.classList.toggle("is-animating",!0),e.classList.toggle("is-collapsed",t),e.markdownPreviewSizer.closest(".markdown-embed")&&l(t?0:void 0),setTimeout((function(){i.style.transitionDuration="",t||(i.style.height=""),e.classList.toggle("is-animating",!1),l()}),1e3*r)}function toggleTreeHeaderOpen(e,t=!0){e.collapse(!e.collapsed,t)}function hideHeader(e){if(e.forceShown)return;if(e.classList.contains("is-hidden")||e.classList.contains("is-collapsed"))return;if("none"==getComputedStyle(e).display)return;let t=e.offsetHeight;e.classList.toggle("is-hidden",!0),0!=t&&(e.style.height=t+"px"),e.style.visibility="hidden"}function showHeader(e,t=!0,o=!1,n=!1){if(n&&(e.forceShown=!0),t){let t=e.parentHeader;isHeadingWrapper(t)&&t.show(!0,!1,n)}if(o){e.querySelectorAll(".heading-wrapper").forEach((function(e){e.show(!1,!0,n)}))}e.classList.contains("is-hidden")&&!e.classList.contains("is-collapsed")&&(e.classList.toggle("is-hidden",!1),e.style.height="",e.style.visibility="")}function setupTrees(e){e.querySelectorAll(".collapse-tree-button").forEach((function(e){e.treeRoot=e.closest(".tree-container"),e.icon=e.firstChild,e.icon.innerHTML="",e.setIcon=function(t){e.icon.children[0].setAttribute("d",t?collapseIconUp[0]:collapseIconDown[0]),e.icon.children[1].setAttribute("d",t?collapseIconUp[1]:collapseIconDown[1])},e.collapse=function(t){setTreeCollapsedAll(e.treeRoot.classList.contains("file-tree")?fileTreeItems:outlineTreeItems,t),e.setIcon(t),e.collapsed=t},e.toggleCollapse=function(){e.collapse(!e.collapsed)},e.toggleState=function(t){void 0===t&&(t=!e.collapsed),e.collapsed=t,e.setIcon(t)},e.addEventListener("click",(function(t){return t.preventDefault(),t.stopPropagation(),e.toggleCollapse(),!1})),(e.treeRoot.classList.contains("file-tree")?fileTreeItems:outlineTreeItems).some((e=>!e.classList.contains("is-collapsed")&&e.classList.contains("mod-collapsible")))&&e.toggleState(!1)}));let t=Array.from(e.querySelectorAll(".tree-container.file-tree .tree-item:has(.collapse-icon) > .tree-link")),o=Array.from(e.querySelectorAll(".tree-container.outline-tree .tree-item:has(.collapse-icon) > .tree-link .collapse-icon")),n=Array.from(t).concat(Array.from(o));for(let e of n){let t=e?.closest(".tree-item");t&&e&&e?.addEventListener("click",(function(e){e.preventDefault(),e.stopPropagation(),toggleTreeCollapsed(t)}))}}async function setTreeCollapsed(e,t,o=!0,n=!0){if(e.classList.contains("mod-collapsible")||(e=e.closest(".mod-collapsible")),!e||!e.classList.contains("mod-collapsible"))return;if(e.classList.contains("is-collapsed")==t)return;if(n){let t=e.parentElement.closest(".mod-collapsible");t&&await setTreeCollapsed(t,!1,o,n)}let i=e.querySelector(".tree-item-children");if(t)e.classList.add("is-collapsed"),o?slideUp(i,100):i.style.display="none";else{e.classList.remove("is-collapsed"),o?slideDown(i,100):i.style.display="";let t=e.closest(".tree-container");if(t){let e=t.querySelector(".collapse-tree-button");e&&e.toggleState(!1)}}}async function setTreeCollapsedAll(e,t,o=!0){let n=[];e.forEach((async e=>{if(!e||!e.classList.contains("mod-collapsible"))return;let o=e.querySelector(".tree-item-children");t?e.classList.add("is-collapsed"):e.classList.remove("is-collapsed"),n.push(o)})),t?o?slideUpAll(n,100):n.forEach((async e=>{e&&(e.style.display="none")})):o?slideDownAll(n,100):n.forEach((async e=>{e&&(e.style.display="")}))}function toggleTreeCollapsed(e){(e=e.closest(".tree-item"))&&setTreeCollapsed(e,!e.classList.contains("is-collapsed"))}function toggleTreeCollapsedAll(e){e&&setTreeCollapsedAll(e,!e[0].classList.contains("is-collapsed"))}function getFileTreeItemFromPath(e){return document.querySelector(`.file-tree .tree-item:has(> .tree-link[href^="${e}"])`)}async function filterFileTree(e,t,o,n=!0){n&&await setTreeCollapsedAll(fileTreeItems,!1,!1);let i=Array.from(document.querySelectorAll(".file-tree .tree-item:not(.filtered-out)"));for await(let l of i)l.classList.add("filtered-out");await removeTreeHintLabels();for(let s=0;s0){let p=d.querySelector(".tree-link").appendChild(document.createElement("div"));function a(e,t){if(""==(e=e.trim()))return;let o=document.createElement("a");o.classList.add("tree-hint-label"),o.classList.add("internal-link"),o.textContent=e,o.href=decodeURI(t).replaceAll(" ","_"),p.appendChild(o)}p.classList.add("tree-hint-container");for(let h of c)a(h,r+"#"+h);setupLinks(p)}}}}async function clearFileTreeFilter(e=!0){await removeTreeHintLabels();let t=document.querySelectorAll(".file-tree .filtered-out");for await(let e of t)e.classList.remove("filtered-out");let o=document.querySelectorAll(".file-tree .tree-link[href*='?mark=']");for await(let e of o){let t=e.href.split("?")[0];t=getVaultRelativePath(t),e.href=t}e&&await setTreeCollapsedAll(fileTreeItems,!0,!1)}async function removeTreeHintLabels(){let e=document.querySelectorAll(".tree-hint-container");for await(let t of e)t.remove()}function sortFileTreeDocuments(e){let t=Array.from(document.querySelectorAll(".file-tree .tree-item.mod-tree-file:not(.filtered-out)"));t.sort(e);for(let e=1;e=0;i--){let e=o[i];if(t.parentElement==e.parentElement){e.after(t),n=!0;break}}n||t.parentElement.prepend(t)}}function sortFileTree(e){let t=Array.from(document.querySelectorAll(".file-tree .tree-item.mod-tree-file:not(.filtered-out)"));t.sort(e);for(let e=1;e=0;i--){let e=o[i];if(t.parentElement==e.parentElement){e.after(t),n=!0;break}}n||t.parentElement.prepend(t)}}function sortFileTreeAlphabetically(e=!1){sortFileTree((function(t,o){const n=t.querySelector(".tree-item-title"),i=o.querySelector(".tree-item-title");if(!n||!i)return 0;const a=n.textContent.toLowerCase(),l=i.textContent.toLowerCase();return a.localeCompare(l,void 0,{numeric:!0})*(e?-1:1)}))}function setupLists(e){let t=Array.from(e.querySelectorAll(".list-collapse-indicator"));for(let e=0;e1)&&(1==e.button||0==e.button||t.length>0)){let n=getPointerPosition(e),i=!1,a=0,l=t.length,s=function(t){let s=t.touches??[],r=getPointerPosition(t);l!=s.length&&(n=r,l=s.length);let c=r.x-n.x,d=r.y-n.y;if((1==e.button||1==s.length)&&focusedCanvasNode){let e=Math.abs(c)>Math.abs(1.5*d),t=Math.abs(d)>Math.abs(1.5*c),n=focusedCanvasNode.querySelector(".markdown-preview-sizer");if(n){let i=n.scrollHeight>n.parentElement.clientHeight+1,a=n.scrollWidth>n.parentElement.clientWidth+1;o=!(!(e&&a||t&&i)||!(window?.navigator?.platform?.startsWith("Win")??1))}}if(0==e.button&&focusedCanvasNode&&""!=focusedCanvasNode.querySelector(".canvas-node-content").textContent.trim()&&(o=!0),o||(translateCanvas(c,d),n=r),2==s.length){let e=getPointerPosition(t,!1),o=getTouchPosition(t.touches[0]),n=getTouchPosition(t.touches[1]),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2));i||(i=!0,a=l),scaleCanvasAroundPoint(1+(l-a)/a,e.x,e.y),a=l}},r=function(e){document.body.removeEventListener("mousemove",s),document.body.removeEventListener("mouseup",r),document.body.removeEventListener("mouseenter",c),document.body.removeEventListener("touchmove",s),document.body.removeEventListener("touchend",r),document.body.removeEventListener("touchcancel",r),o=!1},c=function(e){1!=e.buttons&&4!=e.buttons&&r(e)};document.body.addEventListener("mousemove",s),document.body.addEventListener("mouseup",r),document.body.addEventListener("mouseenter",c),document.body.addEventListener("touchmove",s),document.body.addEventListener("touchend",r),document.body.addEventListener("touchcancel",r)}}let i=0,a=0;canvasWrapper.addEventListener("mousemove",(function(e){let t=getPointerPosition(e);i=t.x,a=t.y}));let l=1,s=0,r=!1;canvasWrapper.addEventListener("wheel",(function(e){if(focusedCanvasNode){let e=focusedCanvasNode.querySelector(".markdown-preview-sizer");if(e&&e.scrollHeight>e.parentElement.clientHeight)return}if(e.preventDefault(),e.stopPropagation(),r){let t=1;t-=e.deltaY/700*t,t=clamp(t,.1,10);let o=getViewBounds();scaleCanvasAroundPoint(t,o.centerX,o.centerY)}else{let t=0==s;s-=e.deltaY/200;const o=.14*l;s=clamp(s,-o,o),t&&requestAnimationFrame(m)}}));let c=0,d=0,u=0;function m(e){if(c=e-d,0==d&&(c=30),d=e,u=.05*c+.95*u,u>50)return console.log("Scrolling too slow, turning on instant scroll"),void(r=!0);let t=l;l+=s*(c/1e3)*30,l=clamp(l,.1,10);getViewBounds();scaleCanvasAroundPoint(l/t,i,a),s*=.4,Math.abs(s)<.01?(s=0,d=0):requestAnimationFrame(m)}setTimeout(fitViewToCanvas,300)}function getViewBounds(){let e=viewContent.getBoundingClientRect(),t=e.x,o=e.y,n=e.x+e.width,i=e.y+e.height;return{x:t,y:o,width:n-t,height:i-o,minX:t,minY:o,maxX:n,maxY:i,centerX:e.x+e.width/2,centerY:e.y+e.height/2}}function getNodesBounds(){let e=1/0,t=1/0,o=-1/0,n=-1/0;canvasNodes.forEach((function(i){let a=i.getBoundingClientRect();a.xo&&(o=a.x+a.width),a.y+a.height>n&&(n=a.y+a.height)}));let i=o-e,a=n-t;return{x:e,y:t,width:i,height:a,minX:e,minY:t,maxX:o,maxY:n,centerX:e+i/2,centerY:t+a/2}}function getCanvasBounds(){let e=canvas.getBoundingClientRect(),t=e.x,o=e.y,n=e.width,i=e.height;return{x:t,y:o,width:n,height:i,minX:t,minY:o,maxX:t+n,maxY:o+i,centerX:e.x+e.width/2,centerY:e.y+e.height/2}}function scaleCanvasAroundPoint(e,t,o){let n=getCanvasBounds(),i=t-n.x,a=o-n.y,l=t-(n.x+i*e),s=o-(n.y+a*e);return scaleCanvas(e),translateCanvas(l,s),{x:l,y:s}}function scaleCanvas(e){let t=Math.max(e*canvas.style.scale,.001);canvas.style.scale=t,canvasWrapper.style.setProperty("--zoom-multiplier",1/Math.sqrt(t))}function translateCanvas(e,t){let o=canvas.style.translate,n=o.split(" "),i=n.length>0?parseFloat(o.split(" ")[0].trim()):0,a=n.length>1?parseFloat(o.split(" ")[1].trim()):i;canvas.style.translate=`${i+e}px ${a+t}px`}function setViewCenter(e,t){let o=getViewBounds();translateCanvas(o.centerX-e,o.centerY-t)}function getCanvasTranslation(){let e=canvas.style.translate,t=e.split(" "),o=t.length>0?parseFloat(e.split(" ")[0].trim()):0;return{x:o,y:t.length>1?parseFloat(e.split(" ")[1].trim()):o}}function scaleCanvasBackground(e){let t=e*canvasBackgroundPattern.getAttribute("width"),o=e*canvasBackgroundPattern.getAttribute("height");canvasBackgroundPattern.setAttribute("width",t),canvasBackgroundPattern.setAttribute("height",o)}function translateCanvasBackground(e,t){canvasBackgroundPattern.setAttribute("x",e+canvasBackgroundPattern.getAttribute("x")),canvasBackgroundPattern.setAttribute("y",t+canvasBackgroundPattern.getAttribute("y"))}function fitViewToNode(e){let t=getElBounds(e),o=getViewBounds(),n=getCanvasBounds(),i=.8*Math.min(o.width/t.width,o.height/t.height),a=n.x,l=n.y,s=a+(t.centerX-a)*i,r=l+(t.centerY-l)*i,c=o.centerX-s,d=o.centerY-r;t=getElBounds(e),canvas.style.transition="scale 0.5s cubic-bezier(0.5, -0.1, 0.5, 1.1), translate 0.5s cubic-bezier(0.5, -0.1, 0.5, 1.1)",scaleCanvas(i),translateCanvas(c,d),setTimeout((function(){canvas.style.transition=""}),550)}function fitViewToCanvas(){let e=getNodesBounds(),t=getViewBounds(),o=getCanvasBounds(),n=.8*Math.min(t.width/e.width,t.height/e.height),i=o.x,a=o.y,l=i+(e.centerX-i)*n,s=a+(e.centerY-a)*n,r=t.centerX-l,c=t.centerY-s;canvas.style.transition="scale 0.5s cubic-bezier(0.5, -0.1, 0.5, 1.1), translate 0.5s cubic-bezier(0.5, -0.1, 0.5, 1.1)",scaleCanvas(n),translateCanvas(r,c),setTimeout((function(){canvas.style.transition=""}),550)}function setupCallouts(e){e.querySelectorAll(".callout.is-collapsible .callout-title").forEach((function(e){e.addEventListener("click",(function(){var t=this.parentElement;t.classList.toggle("is-collapsed"),e.querySelector(".callout-fold").classList.toggle("is-collapsed"),slideToggle(t.querySelector(".callout-content"),100)}))}))}function setupCheckboxes(e){e.querySelectorAll(".task-list-item-checkbox").forEach((function(e){e.addEventListener("click",(function(){var e=this.parentElement;e.classList.toggle("is-checked"),e.setAttribute("data-task",e.classList.contains("is-checked")?"x":" ")}))})),e.querySelectorAll('.plugin-tasks-list-item input[type="checkbox"]').forEach((function(e){e.checked=e.parentElement.classList.contains("is-checked")})),e.querySelectorAll(".kanban-plugin__item.is-complete").forEach((function(e){e.querySelector('input[type="checkbox"]').checked=!0}))}function setupCodeblocks(e){e.querySelectorAll(".copy-code-button").forEach((function(t){t.addEventListener("click",(function(){var t=this.parentElement.querySelector("code").textContent;navigator.clipboard.writeText(t),this.textContent="Copied!",setTimeout((function(){e.querySelectorAll(".copy-code-button").forEach((function(e){e.textContent="Copy"}))}),2e3)}))}))}function setupLinks(e){e.querySelectorAll(".internal-link, a.tag, .tree-link, .footnote-link").forEach((function(e){e.addEventListener("click",(function(t){let o=e.getAttribute("href");if(t.preventDefault(),t.stopPropagation(),!o)return void console.log("No target found for link");let n=relativePathname.split("#")[0].split("?")[0];(o.startsWith("#")||o.startsWith("?"))&&(o=n+o),loadDocument(o,!0,!e.classList.contains("tree-link"))}))}))}function setupSidebars(){rightSidebar&&leftSidebar&&(sidebarCollapseIcons[0].otherIcon=sidebarCollapseIcons[1],sidebarCollapseIcons[1].otherIcon=sidebarCollapseIcons[0],sidebarCollapseIcons[0].gutter=sidebarGutters[0],sidebarCollapseIcons[1].gutter=sidebarGutters[1],sidebarCollapseIcons[0].sidebar=sidebars[0],sidebarCollapseIcons[1].sidebar=sidebars[1],sidebarGutters[0].otherGutter=sidebarGutters[1],sidebarGutters[1].otherGutter=sidebarGutters[0],sidebarGutters[0].collapseIcon=sidebarCollapseIcons[0],sidebarGutters[1].collapseIcon=sidebarCollapseIcons[1],sidebars[0].otherSidebar=sidebars[1],sidebars[1].otherSidebar=sidebars[0],sidebars[0].gutter=sidebarGutters[0],sidebars[1].gutter=sidebarGutters[1],sidebars.forEach((function(e){e.collapsed=e.classList.contains("is-collapsed"),e.collapse=function(t=!0){if(!t&&this.temporarilyCollapsed&&"large-screen"==deviceSize&&this.gutter.collapse(!0),!t&&document.body.classList.contains("floating-sidebars")){document.body.addEventListener("click",(function t(o){o.target.closest(".sidebar")||(e.collapse(!0),document.body.removeEventListener("click",t))}))}"phone"==deviceSize&&(t||e.otherSidebar.fullCollapse(!0,!0),t&&e.gutter.otherGutter.collapse(!1,!0)),"tablet"==deviceSize&&(t||e.otherSidebar.collapse(!0)),this.classList.toggle("is-collapsed",t),this.collapsed=t},e.temporaryCollapse=function(e=!0){this.temporarilyCollapsed=!0,this.collapse(!0),this.gutter.collapse(!1),this.collapsed=e},e.fullCollapse=function(e=!0,t=!1){this.collapse(e),this.gutter.collapse(!0,t),this.collapsed=e},e.toggleCollapse=function(){this.collapse(!this.collapsed)},e.toggleFullCollapse=function(){this.fullCollapse(!this.collapsed)}})),sidebarGutters.forEach((function(e){e.collapsed=e.classList.contains("is-collapsed"),e.collapse=function(e,t=!1){t&&(this.classList.toggle("is-collapsed",e),this.collapsed=e)},e.toggleCollapse=function(){this.collapse(!this.collapsed)}})),sidebarCollapseIcons.forEach((function(e){e.addEventListener("click",(function(t){t.stopPropagation(),e.sidebar.toggleCollapse()}))})),isMobile()||setupSidebarResize())}function setupSidebarResize(){let e=document.querySelector(".sidebar-left .sidebar-handle"),t=document.querySelector(".sidebar-right .sidebar-handle");if(!e||!t)return;let o=null,n=15*parseFloat(getComputedStyle(e.parentElement).fontSize),i=n/4,a=localStorage.getItem("sidebar-right-width"),l=localStorage.getItem("sidebar-left-width");function s(e){if(!o)return;var t=o.classList.contains("sidebar-left")?e.clientX:window.innerWidth-e.clientX,a=`min(max(${t}px, 15em), 40vw)`;tn&&(o.style.transitionDuration="0s"))}function r(e){o=e.target.closest(".sidebar"),o.classList.add("is-resizing"),document.addEventListener("pointermove",s),document.addEventListener("pointerup",(function(){document.removeEventListener("pointermove",s);var e=getComputedStyle(o).getPropertyValue("--sidebar-width");let t=o.classList.contains("sidebar-left");localStorage.setItem(t?"sidebar-left-width":"sidebar-right-width",e),o.classList.remove("is-resizing"),o.style.removeProperty("transition-duration")}))}function c(e){let t=e.target.closest(".sidebar");if(t){t.style.removeProperty("transition-duration"),t.style.removeProperty("--sidebar-width");let e=t.classList.contains("sidebar-left");localStorage.removeItem(e?"sidebar-left-width":"sidebar-right-width")}}a&&document.querySelector(".sidebar-right").style.setProperty("--sidebar-width",a),l&&document.querySelector(".sidebar-left").style.setProperty("--sidebar-width",l),e.addEventListener("pointerdown",r),t.addEventListener("pointerdown",r),e.addEventListener("dblclick",c),t.addEventListener("dblclick",c)}function getSidebarWidthProp(){return getComputedPixelValue("--sidebar-width")}function setupThemeToggle(){function e(e,t=!1){if(themeToggle.checked=e,t){var o=document.body.style.transition;document.body.style.transition="none"}!themeToggle.classList.contains("is-checked")&&e?themeToggle.classList.add("is-checked"):themeToggle.classList.contains("is-checked")&&!e&&themeToggle.classList.remove("is-checked"),e?(document.body.classList.contains("theme-dark")&&document.body.classList.remove("theme-dark"),document.body.classList.contains("theme-light")||document.body.classList.add("theme-light")):(document.body.classList.contains("theme-light")&&document.body.classList.remove("theme-light"),document.body.classList.contains("theme-dark")||document.body.classList.add("theme-dark")),t&&setTimeout((function(){document.body.style.transition=o}),100),localStorage.setItem("theme",e?"light":"dark")}themeToggle&&(null!=localStorage.getItem("theme")&&e("light"==localStorage.getItem("theme")),document.body.classList.contains("theme-light")?e(!0):e(!1),document.querySelector(".theme-toggle-input")?.addEventListener("change",(t=>{let o=!("light"==localStorage.getItem("theme"));console.log("Theme toggle changed to: "+o),e(o)})))}let index,searchResults,flashElement=null,flashAnimation=null;function scrollIntoView(e,t,o=!0){setTreeCollapsed(e,!1,o);flashElement&&(flashElement.remove(),flashAnimation.cancel()),flashElement=document.createElement("div"),flashElement.classList.add("scroll-highlight"),e.appendChild(flashElement),t?flashElement.scrollIntoView({behavior:o?"smooth":"auto",...t}):flashElement.scrollIntoView({behavior:o?"smooth":"auto"});var n=e.style.position;e.style.position="relative",flashAnimation=flashElement.animate([{opacity:0},{opacity:.8},{opacity:.8},{opacity:.8},{opacity:.8},{opacity:.8},{opacity:0}],{duration:1500,iterations:1,delay:300}),flashAnimation.onfinish=function(){flashElement.remove(),e.style.position=n}}function setupScroll(e){if("canvas"!=documentType)return;let t=Array.from(e.querySelectorAll(".markdown-preview-view")),o=0,n=0;t.forEach((async function(e){console.log("Setting up markdown view");let t=Array.from(e.querySelectorAll(".heading-wrapper"));e.updateVisibleWindowMarkdown=function(o=!0,i=!0){let a=e.getBoundingClientRect();n=Math.min(.1*a.height,150);let l=a.top-n,s=a.bottom+n;async function r(e){let t=e?.getBoundingClientRect();if(!t)return;let n=t.tops&&t.bottom>s;n&&o?e.hide():!n&&i&&e.show()}for(let e=0;en/3&&e.updateVisibleWindowMarkdown(!1,!0),o=e.scrollTop}))})),setInterval((async function(){t.length>0&&(t[o].updateVisibleWindowMarkdown(),o=(o+1)%t.length)}),200)}function setupExcalidraw(e){e.querySelectorAll(".excalidraw-svg svg").forEach((function(e){let t=e.querySelector("rect").getAttribute("fill")>"#7F7F7F";e.classList.add(t?"light":"dark")}))}async function setupSearch(){if(isFileProtocol)return;if(searchInput=document.querySelector('input[type="search"]'),!searchInput)return;const e=await fetch("lib/search-index.json"),t=await e.text();index=MiniSearch.loadJSON(t,{fields:["title","path","tags","headers"]});document.querySelector(".search-input-clear-button").addEventListener("click",(e=>{search("")})),searchInput.addEventListener("input",(e=>{const t=e.target.value??"";startsWithAny(t,["#","tag:","title:","name:","header:","H:"])?searchInput.style.color="var(--text-accent)":searchInput.style.color="",search(t)})),searchResults=document.createElement("div"),searchResults.setAttribute("id","search-results")}async function search(e){searchInput.value=e;let t=["title","content","tags","headers","path"];if(e.startsWith("#")&&(t=["tags","headers"]),e.startsWith("tag:")&&(e=e.substring(e.indexOf(":")+1),t=["tags"]),startsWithAny(e,["title:","name:"])&&(e=e.substring(e.indexOf(":")+1),t=["title"]),startsWithAny(e,["header:","H:"])&&(e=e.substring(e.indexOf(":")+1),t=["headers"]),startsWithAny(e,["path:"])&&(e=e.substring(e.indexOf(":")+1),t=["path"]),e.length>=1){const o=index.search(e,{prefix:!0,fuzzy:.3,boost:{title:4,headers:3,tags:2,path:1},fields:t});let n=[],i=[];for(let t of o){if((t.score<.33*o[0].score||n.length>12)&&n.length>3||t.score<.1*o[0].score)break;n.push(t.path);let a=[],l=!1;for(match in t.match){if(t.match[match].includes("headers"))for(let o of t.headers)if(o.toLowerCase().includes(match.toLowerCase())&&(a.push(o),e.toLowerCase()!=match.toLowerCase())){l=!0;break}if(l)break}i.push(a)}if(document.querySelector(".file-tree"))filterFileTree(n,i,e).then((()=>sortFileTreeDocuments(((e,t)=>{if(!e||!t)return 0;let o=getVaultRelativePath(e.firstChild.href),i=getVaultRelativePath(t.firstChild.href);return n.findIndex((e=>o.startsWith(e)))-n.findIndex((e=>i.startsWith(e)))}))));else{const t=document.createElement("div");o.slice(0,10).forEach((o=>{const n=document.createElement("div");n.classList.add("search-result");const i=document.createElement("a");i.classList.add("tree-link");const a=o.path+"?mark="+encodeURIComponent(e);i.setAttribute("href",a),i.appendChild(document.createTextNode(o.title)),n.appendChild(i),t.append(n)})),searchResults.replaceChildren(t),searchInput.parentElement.after(searchResults),initializePageEvents(searchResults)}}else searchResults&&searchResults.parentElement&&searchResults.parentNode.removeChild(searchResults),clearCurrentDocumentSearch(),fileTree&&clearFileTreeFilter().then((()=>sortFileTreeAlphabetically()))}function startsWithAny(e,t){for(let o=0;o{const o=t.nodeValue,n=o.replace(new RegExp(e,"gi"),(e=>`${e}`));if(n!==o){const e=document.createElement("div");e.innerHTML=n;Array.from(e.childNodes).forEach((e=>{e.nodeType!=Node.TEXT_NODE&&e.setAttribute("class","search-mark"),t.parentNode.insertBefore(e,t)})),t.parentNode.removeChild(t)}}));let t=document.querySelector(".search-mark");setTimeout((()=>{t&&scrollIntoView(t,{behavior:"smooth",block:"start"})}),500)}function clearCurrentDocumentSearch(){document.querySelectorAll(".search-mark").forEach((e=>{e.outerHTML=e.innerHTML}))}function getTextNodes(e){const t=[],o=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1);let n;for(;n=o.nextNode();)t.push(n);return t} \ No newline at end of file diff --git a/obsidian/lib/search-index.json b/obsidian/lib/search-index.json new file mode 100644 index 0000000..4beea4c --- /dev/null +++ b/obsidian/lib/search-index.json @@ -0,0 +1 @@ +{"documentCount":205,"nextId":205,"documentIds":{"0":"00-tags/tag-admin.html","1":"00-tags/tag-ai.html","2":"00-tags/tag-api.html","3":"00-tags/tag-application-ui.html","4":"00-tags/tag-art.html","5":"00-tags/tag-automated-email.html","6":"00-tags/tag-backend.html","7":"00-tags/tag-bash.html","8":"00-tags/tag-blender.html","9":"00-tags/tag-bootstrap.html","10":"00-tags/tag-bot.html","11":"00-tags/tag-browser-automation.html","12":"00-tags/tag-browser-extension.html","13":"00-tags/tag-character-design.html","14":"00-tags/tag-chrome-extension.html","15":"00-tags/tag-cicd.html","16":"00-tags/tag-concurrency.html","17":"00-tags/tag-css.html","18":"00-tags/tag-cybersecurity.html","19":"00-tags/tag-data-management.html","20":"00-tags/tag-data-science.html","21":"00-tags/tag-decryption.html","22":"00-tags/tag-devops.html","23":"00-tags/tag-diffing.html","24":"00-tags/tag-discord.html","25":"00-tags/tag-django.html","26":"00-tags/tag-django-rest-framework.html","27":"00-tags/tag-docker.html","28":"00-tags/tag-domain-name-management.html","29":"00-tags/tag-dsa.html","30":"00-tags/tag-express.html","31":"00-tags/tag-firefox-extension.html","32":"00-tags/tag-frontend.html","33":"00-tags/tag-fullstack.html","34":"00-tags/tag-game-design.html","35":"00-tags/tag-game-dev.html","36":"00-tags/tag-gamejam.html","37":"00-tags/tag-gdb.html","38":"00-tags/tag-genetic-algorithm.html","39":"00-tags/tag-github-actions.html","40":"00-tags/tag-github-contributor.html","41":"00-tags/tag-go.html","42":"00-tags/tag-godot.html","43":"00-tags/tag-hackathon.html","44":"00-tags/tag-heroku.html","45":"00-tags/tag-hosting.html","46":"00-tags/tag-html.html","47":"00-tags/tag-image-gen.html","48":"00-tags/tag-irc.html","49":"00-tags/tag-java.html","50":"00-tags/tag-js.html","51":"00-tags/tag-jupyter-notebook.html","52":"00-tags/tag-latex.html","53":"00-tags/tag-level-design.html","54":"00-tags/tag-linux.html","55":"00-tags/tag-low-level-debugging.html","56":"00-tags/tag-machine-learning.html","57":"00-tags/tag-matplotlib.html","58":"00-tags/tag-music.html","59":"00-tags/tag-myers-diff-algo.html","60":"00-tags/tag-network-traffic-capture.html","61":"00-tags/tag-networking.html","62":"00-tags/tag-neural-networks.html","63":"00-tags/tag-nextjs.html","64":"00-tags/tag-nltk.html","65":"00-tags/tag-nodejs.html","66":"00-tags/tag-npm.html","67":"00-tags/tag-numpy.html","68":"00-tags/tag-oauth.html","69":"00-tags/tag-oop.html","70":"00-tags/tag-openai.html","71":"00-tags/tag-pandas.html","72":"00-tags/tag-parcel.html","73":"00-tags/tag-php.html","74":"00-tags/tag-platformer.html","75":"00-tags/tag-postgres.html","76":"00-tags/tag-prod.html","77":"00-tags/tag-protocol.html","78":"00-tags/tag-proxy.html","79":"00-tags/tag-pug.html","80":"00-tags/tag-puppeteer.html","81":"00-tags/tag-pwndbg.html","82":"00-tags/tag-pygame.html","83":"00-tags/tag-python.html","84":"00-tags/tag-pytorch.html","85":"00-tags/tag-react.html","86":"00-tags/tag-realtime.html","87":"00-tags/tag-redis.html","88":"00-tags/tag-research.html","89":"00-tags/tag-reverse-engineering.html","90":"00-tags/tag-rust.html","91":"00-tags/tag-scikit.html","92":"00-tags/tag-scraping.html","93":"00-tags/tag-selenium.html","94":"00-tags/tag-server-management.html","95":"00-tags/tag-serverless.html","96":"00-tags/tag-slack-bot.html","97":"00-tags/tag-software-engineering.html","98":"00-tags/tag-sql.html","99":"00-tags/tag-sqlite.html","100":"00-tags/tag-ssl.html","101":"00-tags/tag-supabase.html","102":"00-tags/tag-svelte.html","103":"00-tags/tag-sveltekit.html","104":"00-tags/tag-tailwindcss.html","105":"00-tags/tag-tdd.html","106":"00-tags/tag-tensorflow.html","107":"00-tags/tag-threejs.html","108":"00-tags/tag-turbo-hotwired.html","109":"00-tags/tag-two-factor-auth.html","110":"00-tags/tag-typescript.html","111":"00-tags/tag-unity.html","112":"00-tags/tag-vb-net.html","113":"00-tags/tag-visual-novel.html","114":"00-tags/tag-vite.html","115":"00-tags/tag-webdesign.html","116":"00-tags/tag-webdev.html","117":"00-tags/tag-wip.html","118":"00-tags/tag-writing.html","119":"00-tags/tag-x3d.html","120":"01-projects/00-school/personal/dumpmon-grabber.html","121":"01-projects/00-school/personal/irc-bot.html","122":"01-projects/00-school/personal/personal.html","123":"01-projects/00-school/personal/raspberry-pi-setup-scripts.html","124":"01-projects/00-school/school.html","125":"01-projects/01-college/assignments/assignments.html","126":"01-projects/01-college/assignments/ict-site.html","127":"01-projects/01-college/assignments/irc-cals.html","128":"01-projects/01-college/personal/concatbot.html","129":"01-projects/01-college/personal/cyber-discovery-finalist-challenge.html","130":"01-projects/01-college/personal/hexbot.html","131":"01-projects/01-college/personal/personal.html","132":"01-projects/01-college/college.html","133":"01-projects/02-university/assignments/aiab.html","134":"01-projects/02-university/assignments/assignments.html","135":"01-projects/02-university/assignments/checkers.html","136":"01-projects/02-university/assignments/clue.html","137":"01-projects/02-university/assignments/computer-vision.html","138":"01-projects/02-university/assignments/database-design-and-sql.html","139":"01-projects/02-university/assignments/dsa-programming-project.html","140":"01-projects/02-university/assignments/individual-project.html","141":"01-projects/02-university/assignments/lovejoys-antique-evaluations.html","142":"01-projects/02-university/assignments/machine-learning.html","143":"01-projects/02-university/assignments/minesweeper.html","144":"01-projects/02-university/assignments/natural-language-engineering.html","145":"01-projects/02-university/assignments/web-3d.html","146":"01-projects/02-university/personal/bandcamp-web-downloader.html","147":"01-projects/02-university/personal/blaseball-peanut-clicker.html","148":"01-projects/02-university/personal/ghost-terminal-dracula-theme.html","149":"01-projects/02-university/personal/hacksussex-2019.html","150":"01-projects/02-university/personal/hosting-with-vps.html","151":"01-projects/02-university/personal/i3-config.html","152":"01-projects/02-university/personal/litebin.html","153":"01-projects/02-university/personal/markdown-dracula-theme.html","154":"01-projects/02-university/personal/mdview.html","155":"01-projects/02-university/personal/nixos-config.html","156":"01-projects/02-university/personal/pastel.codes.html","157":"01-projects/02-university/personal/personal.html","158":"01-projects/02-university/personal/ttttt.uk.html","159":"01-projects/02-university/personal/university-note-tools.html","160":"01-projects/02-university/university.html","161":"01-projects/03-work/personal/flipanalytica-hacksussex-2023.html","162":"01-projects/03-work/personal/hiddennet.works.html","163":"01-projects/03-work/personal/managing-a-minecraft-server.html","164":"01-projects/03-work/personal/personal.html","165":"01-projects/03-work/personal/watcher.html","166":"01-projects/03-work/projects/heythere/heythere-extensions.html","167":"01-projects/03-work/projects/heythere/heythere-web.html","168":"01-projects/03-work/projects/bizarrepg.html","169":"01-projects/03-work/projects/changewatch.html","170":"01-projects/03-work/projects/n0rt.html","171":"01-projects/03-work/projects/projects.html","172":"01-projects/03-work/projects/the-loop..html","173":"01-projects/03-work/work.html","174":"projects.html","175":"lib/scripts/graph-wasm.wasm","176":"lib/fonts/94f2f163d4b698242fef.otf","177":"lib/fonts/72505e6a122c6acd5471.woff2","178":"lib/fonts/2d5198822ab091ce4305.woff2","179":"lib/fonts/c8ba52b05a9ef10f4758.woff2","180":"lib/fonts/cb10ffd7684cd9836a05.woff2","181":"lib/fonts/b5f0f109bc88052d4000.woff2","182":"lib/fonts/cbe0ae49c52c920fd563.woff2","183":"lib/fonts/535a6cf662596b3bd6a6.woff2","184":"lib/fonts/70cc7ff27245e82ad414.ttf","185":"lib/fonts/454577c22304619db035.ttf","186":"lib/fonts/52ac8f3034507f1d9e53.ttf","187":"lib/fonts/05b618077343fbbd92b7.ttf","188":"lib/fonts/4bb6ac751d1c5478ff3a.woff2","189":"lib/media/874d8b8e340f75575caa.svg","190":"lib/html/file-tree.html","191":"lib/scripts/webpage.js","192":"lib/scripts/graph-view.js","193":"lib/scripts/graph-wasm.js","194":"lib/scripts/graph-render-worker.js","195":"lib/scripts/tinycolor.js","196":"lib/scripts/pixi.js","197":"lib/scripts/minisearch.js","198":"lib/media/favicon.png","199":"lib/scripts/graph-data.js","200":"lib/styles/obsidian.css","201":"lib/styles/other-plugins.css","202":"lib/styles/global-variable-styles.css","203":"lib/styles/main-styles.css","204":"lib/metadata.json"},"fieldIds":{"path":0,"title":1,"content":2,"tags":3,"headers":4},"fieldLength":{"0":[5,2,2,1,2],"1":[5,2,2,1,2],"2":[5,2,2,1,2],"3":[6,3,3,1,3],"4":[5,2,2,1,2],"5":[6,3,3,1,3],"6":[5,2,2,1,2],"7":[5,2,2,1,2],"8":[5,2,2,1,2],"9":[5,2,2,1,2],"10":[5,2,2,1,2],"11":[6,3,3,1,3],"12":[6,3,3,1,3],"13":[6,3,3,1,3],"14":[6,3,3,1,3],"15":[5,2,2,1,2],"16":[5,2,2,1,2],"17":[5,2,2,1,2],"18":[5,2,2,1,2],"19":[6,3,3,1,3],"20":[6,3,3,1,3],"21":[5,2,2,1,2],"22":[5,2,2,1,2],"23":[5,2,2,1,2],"24":[5,2,2,1,2],"25":[5,2,2,1,2],"26":[7,4,4,1,4],"27":[5,2,2,1,2],"28":[7,4,4,1,4],"29":[5,2,2,1,2],"30":[5,2,2,1,2],"31":[6,3,3,1,3],"32":[5,2,2,1,2],"33":[5,2,2,1,2],"34":[6,3,3,1,3],"35":[6,3,3,1,3],"36":[5,2,2,1,2],"37":[5,2,2,1,2],"38":[6,3,3,1,3],"39":[6,3,3,1,3],"40":[6,3,3,1,3],"41":[5,2,2,1,2],"42":[5,2,2,1,2],"43":[5,2,2,1,2],"44":[5,2,2,1,2],"45":[5,2,2,1,2],"46":[4,2,2,1,2],"47":[6,3,3,1,3],"48":[5,2,2,1,2],"49":[5,2,2,1,2],"50":[5,2,2,1,2],"51":[6,3,3,1,3],"52":[5,2,2,1,2],"53":[6,3,3,1,3],"54":[5,2,2,1,2],"55":[7,4,4,1,4],"56":[6,3,3,1,3],"57":[5,2,2,1,2],"58":[5,2,2,1,2],"59":[7,4,4,1,4],"60":[7,4,4,1,4],"61":[5,2,2,1,2],"62":[6,3,3,1,3],"63":[5,2,2,1,2],"64":[5,2,2,1,2],"65":[5,2,2,1,2],"66":[5,2,2,1,2],"67":[5,2,2,1,2],"68":[5,2,2,1,2],"69":[5,2,2,1,2],"70":[5,2,2,1,2],"71":[5,2,2,1,2],"72":[5,2,2,1,2],"73":[5,2,2,1,2],"74":[5,2,2,1,2],"75":[5,2,2,1,2],"76":[5,2,2,1,2],"77":[5,2,2,1,2],"78":[5,2,2,1,2],"79":[5,2,2,1,2],"80":[5,2,2,1,2],"81":[5,2,2,1,2],"82":[5,2,2,1,2],"83":[5,2,2,1,2],"84":[5,2,2,1,2],"85":[5,2,2,1,2],"86":[5,2,2,1,2],"87":[5,2,2,1,2],"88":[5,2,2,1,2],"89":[6,3,3,1,3],"90":[5,2,2,1,2],"91":[5,2,2,1,2],"92":[5,2,2,1,2],"93":[5,2,2,1,2],"94":[6,3,3,1,3],"95":[5,2,2,1,2],"96":[6,3,3,1,3],"97":[6,3,3,1,3],"98":[5,2,2,1,2],"99":[5,2,2,1,2],"100":[5,2,2,1,2],"101":[5,2,2,1,2],"102":[5,2,2,1,2],"103":[5,2,2,1,2],"104":[5,2,2,1,2],"105":[5,2,2,1,2],"106":[5,2,2,1,2],"107":[5,2,2,1,2],"108":[6,3,3,1,3],"109":[7,4,4,1,4],"110":[5,2,2,1,2],"111":[5,2,2,1,2],"112":[6,3,3,1,3],"113":[6,3,3,1,3],"114":[5,2,2,1,2],"115":[5,2,2,1,2],"116":[5,2,2,1,2],"117":[5,2,2,1,2],"118":[5,2,2,1,2],"119":[5,2,2,1,2],"120":[8,2,16,1,2],"121":[8,2,16,1,2],"122":[6,1,9,1,1],"123":[10,4,19,1,4],"124":[5,1,2,1,1],"125":[5,1,5,1,1],"126":[7,2,14,1,2],"127":[7,2,21,1,2],"128":[6,1,17,1,1],"129":[9,4,21,1,4],"130":[6,1,13,1,1],"131":[5,1,7,1,1],"132":[4,1,5,1,1],"133":[7,1,39,1,1],"134":[6,1,50,1,1],"135":[7,1,17,1,1],"136":[7,1,15,1,1],"137":[8,2,29,1,2],"138":[10,4,21,1,4],"139":[9,3,28,1,3],"140":[8,2,33,1,2],"141":[9,3,27,1,3],"142":[8,2,27,1,2],"143":[7,1,18,1,1],"144":[9,3,26,1,3],"145":[8,2,18,1,2],"146":[9,3,25,1,3],"147":[9,3,19,1,3],"148":[10,4,16,1,4],"149":[8,2,16,1,2],"150":[9,3,30,1,3],"151":[8,2,11,1,2],"152":[7,1,12,1,1],"153":[9,3,13,1,3],"154":[7,1,11,1,1],"155":[8,2,10,1,2],"156":[8,2,23,1,2],"157":[6,1,38,1,1],"158":[8,2,20,1,2],"159":[8,3,15,1,3],"160":[5,1,3,1,1],"161":[9,3,28,1,3],"162":[8,2,19,1,2],"163":[10,4,15,1,4],"164":[6,1,11,1,1],"165":[7,1,28,1,1],"166":[7,2,41,1,2],"167":[7,2,45,1,2],"168":[6,1,25,1,1],"169":[6,1,37,1,1],"170":[6,1,17,1,1],"171":[5,1,9,1,1],"172":[7,3,22,1,3],"173":[5,1,3,1,1],"174":[2,1,5,1,1],"175":[4,2,1,1,1],"176":[4,1,1,1,1],"177":[4,1,1,1,1],"178":[4,1,1,1,1],"179":[4,1,1,1,1],"180":[4,1,1,1,1],"181":[4,1,1,1,1],"182":[4,1,1,1,1],"183":[4,1,1,1,1],"184":[4,1,1,1,1],"185":[4,1,1,1,1],"186":[4,1,1,1,1],"187":[4,1,1,1,1],"188":[4,1,1,1,1],"189":[4,1,1,1,1],"190":[4,2,1,1,1],"191":[4,1,1,1,1],"192":[5,2,1,1,1],"193":[5,2,1,1,1],"194":[6,3,1,1,1],"195":[4,1,1,1,1],"196":[4,1,1,1,1],"197":[4,1,1,1,1],"198":[4,1,1,1,1],"199":[5,2,1,1,1],"200":[4,1,1,1,1],"201":[5,2,1,1,1],"202":[5,3,1,1,1],"203":[4,2,1,1,1],"204":[3,1,1,1,1]},"averageFieldLength":[5.668292682926832,2.073170731707318,6.770731707317072,1,2.0195121951219517],"storedFields":{"0":{"path":"00-tags/tag-admin.html","title":"tag-admin","tags":[],"headers":["tag-admin"]},"1":{"path":"00-tags/tag-ai.html","title":"tag-ai","tags":[],"headers":["tag-ai"]},"2":{"path":"00-tags/tag-api.html","title":"tag-api","tags":[],"headers":["tag-api"]},"3":{"path":"00-tags/tag-application-ui.html","title":"tag-application-ui","tags":[],"headers":["tag-application-ui"]},"4":{"path":"00-tags/tag-art.html","title":"tag-art","tags":[],"headers":["tag-art"]},"5":{"path":"00-tags/tag-automated-email.html","title":"tag-automated-email","tags":[],"headers":["tag-automated-email"]},"6":{"path":"00-tags/tag-backend.html","title":"tag-backend","tags":[],"headers":["tag-backend"]},"7":{"path":"00-tags/tag-bash.html","title":"tag-bash","tags":[],"headers":["tag-bash"]},"8":{"path":"00-tags/tag-blender.html","title":"tag-blender","tags":[],"headers":["tag-blender"]},"9":{"path":"00-tags/tag-bootstrap.html","title":"tag-bootstrap","tags":[],"headers":["tag-bootstrap"]},"10":{"path":"00-tags/tag-bot.html","title":"tag-bot","tags":[],"headers":["tag-bot"]},"11":{"path":"00-tags/tag-browser-automation.html","title":"tag-browser-automation","tags":[],"headers":["tag-browser-automation"]},"12":{"path":"00-tags/tag-browser-extension.html","title":"tag-browser-extension","tags":[],"headers":["tag-browser-extension"]},"13":{"path":"00-tags/tag-character-design.html","title":"tag-character-design","tags":[],"headers":["tag-character-design"]},"14":{"path":"00-tags/tag-chrome-extension.html","title":"tag-chrome-extension","tags":[],"headers":["tag-chrome-extension"]},"15":{"path":"00-tags/tag-cicd.html","title":"tag-cicd","tags":[],"headers":["tag-cicd"]},"16":{"path":"00-tags/tag-concurrency.html","title":"tag-concurrency","tags":[],"headers":["tag-concurrency"]},"17":{"path":"00-tags/tag-css.html","title":"tag-css","tags":[],"headers":["tag-css"]},"18":{"path":"00-tags/tag-cybersecurity.html","title":"tag-cybersecurity","tags":[],"headers":["tag-cybersecurity"]},"19":{"path":"00-tags/tag-data-management.html","title":"tag-data-management","tags":[],"headers":["tag-data-management"]},"20":{"path":"00-tags/tag-data-science.html","title":"tag-data-science","tags":[],"headers":["tag-data-science"]},"21":{"path":"00-tags/tag-decryption.html","title":"tag-decryption","tags":[],"headers":["tag-decryption"]},"22":{"path":"00-tags/tag-devops.html","title":"tag-devops","tags":[],"headers":["tag-devops"]},"23":{"path":"00-tags/tag-diffing.html","title":"tag-diffing","tags":[],"headers":["tag-diffing"]},"24":{"path":"00-tags/tag-discord.html","title":"tag-discord","tags":[],"headers":["tag-discord"]},"25":{"path":"00-tags/tag-django.html","title":"tag-django","tags":[],"headers":["tag-django"]},"26":{"path":"00-tags/tag-django-rest-framework.html","title":"tag-django-rest-framework","tags":[],"headers":["tag-django-rest-framework"]},"27":{"path":"00-tags/tag-docker.html","title":"tag-docker","tags":[],"headers":["tag-docker"]},"28":{"path":"00-tags/tag-domain-name-management.html","title":"tag-domain-name-management","tags":[],"headers":["tag-domain-name-management"]},"29":{"path":"00-tags/tag-dsa.html","title":"tag-DSA","tags":[],"headers":["tag-DSA"]},"30":{"path":"00-tags/tag-express.html","title":"tag-express","tags":[],"headers":["tag-express"]},"31":{"path":"00-tags/tag-firefox-extension.html","title":"tag-firefox-extension","tags":[],"headers":["tag-firefox-extension"]},"32":{"path":"00-tags/tag-frontend.html","title":"tag-frontend","tags":[],"headers":["tag-frontend"]},"33":{"path":"00-tags/tag-fullstack.html","title":"tag-fullstack","tags":[],"headers":["tag-fullstack"]},"34":{"path":"00-tags/tag-game-design.html","title":"tag-game-design","tags":[],"headers":["tag-game-design"]},"35":{"path":"00-tags/tag-game-dev.html","title":"tag-game-dev","tags":[],"headers":["tag-game-dev"]},"36":{"path":"00-tags/tag-gamejam.html","title":"tag-gamejam","tags":[],"headers":["tag-gamejam"]},"37":{"path":"00-tags/tag-gdb.html","title":"tag-gdb","tags":[],"headers":["tag-gdb"]},"38":{"path":"00-tags/tag-genetic-algorithm.html","title":"tag-genetic-algorithm","tags":[],"headers":["tag-genetic-algorithm"]},"39":{"path":"00-tags/tag-github-actions.html","title":"tag-github-actions","tags":[],"headers":["tag-github-actions"]},"40":{"path":"00-tags/tag-github-contributor.html","title":"tag-github-contributor","tags":[],"headers":["tag-github-contributor"]},"41":{"path":"00-tags/tag-go.html","title":"tag-go","tags":[],"headers":["tag-go"]},"42":{"path":"00-tags/tag-godot.html","title":"tag-godot","tags":[],"headers":["tag-godot"]},"43":{"path":"00-tags/tag-hackathon.html","title":"tag-hackathon","tags":[],"headers":["tag-hackathon"]},"44":{"path":"00-tags/tag-heroku.html","title":"tag-heroku","tags":[],"headers":["tag-heroku"]},"45":{"path":"00-tags/tag-hosting.html","title":"tag-hosting","tags":[],"headers":["tag-hosting"]},"46":{"path":"00-tags/tag-html.html","title":"tag-html","tags":[],"headers":["tag-html"]},"47":{"path":"00-tags/tag-image-gen.html","title":"tag-image-gen","tags":[],"headers":["tag-image-gen"]},"48":{"path":"00-tags/tag-irc.html","title":"tag-irc","tags":[],"headers":["tag-irc"]},"49":{"path":"00-tags/tag-java.html","title":"tag-java","tags":[],"headers":["tag-java"]},"50":{"path":"00-tags/tag-js.html","title":"tag-js","tags":[],"headers":["tag-js"]},"51":{"path":"00-tags/tag-jupyter-notebook.html","title":"tag-jupyter-notebook","tags":[],"headers":["tag-jupyter-notebook"]},"52":{"path":"00-tags/tag-latex.html","title":"tag-LaTeX","tags":[],"headers":["tag-LaTeX"]},"53":{"path":"00-tags/tag-level-design.html","title":"tag-level-design","tags":[],"headers":["tag-level-design"]},"54":{"path":"00-tags/tag-linux.html","title":"tag-linux","tags":[],"headers":["tag-linux"]},"55":{"path":"00-tags/tag-low-level-debugging.html","title":"tag-low-level-debugging","tags":[],"headers":["tag-low-level-debugging"]},"56":{"path":"00-tags/tag-machine-learning.html","title":"tag-machine-learning","tags":[],"headers":["tag-machine-learning"]},"57":{"path":"00-tags/tag-matplotlib.html","title":"tag-matplotlib","tags":[],"headers":["tag-matplotlib"]},"58":{"path":"00-tags/tag-music.html","title":"tag-music","tags":[],"headers":["tag-music"]},"59":{"path":"00-tags/tag-myers-diff-algo.html","title":"tag-myers-diff-algo","tags":[],"headers":["tag-myers-diff-algo"]},"60":{"path":"00-tags/tag-network-traffic-capture.html","title":"tag-network-traffic-capture","tags":[],"headers":["tag-network-traffic-capture"]},"61":{"path":"00-tags/tag-networking.html","title":"tag-networking","tags":[],"headers":["tag-networking"]},"62":{"path":"00-tags/tag-neural-networks.html","title":"tag-neural-networks","tags":[],"headers":["tag-neural-networks"]},"63":{"path":"00-tags/tag-nextjs.html","title":"tag-nextjs","tags":[],"headers":["tag-nextjs"]},"64":{"path":"00-tags/tag-nltk.html","title":"tag-nltk","tags":[],"headers":["tag-nltk"]},"65":{"path":"00-tags/tag-nodejs.html","title":"tag-nodejs","tags":[],"headers":["tag-nodejs"]},"66":{"path":"00-tags/tag-npm.html","title":"tag-npm","tags":[],"headers":["tag-npm"]},"67":{"path":"00-tags/tag-numpy.html","title":"tag-numpy","tags":[],"headers":["tag-numpy"]},"68":{"path":"00-tags/tag-oauth.html","title":"tag-oauth","tags":[],"headers":["tag-oauth"]},"69":{"path":"00-tags/tag-oop.html","title":"tag-oop","tags":[],"headers":["tag-oop"]},"70":{"path":"00-tags/tag-openai.html","title":"tag-openai","tags":[],"headers":["tag-openai"]},"71":{"path":"00-tags/tag-pandas.html","title":"tag-pandas","tags":[],"headers":["tag-pandas"]},"72":{"path":"00-tags/tag-parcel.html","title":"tag-parcel","tags":[],"headers":["tag-parcel"]},"73":{"path":"00-tags/tag-php.html","title":"tag-php","tags":[],"headers":["tag-php"]},"74":{"path":"00-tags/tag-platformer.html","title":"tag-platformer","tags":[],"headers":["tag-platformer"]},"75":{"path":"00-tags/tag-postgres.html","title":"tag-postgres","tags":[],"headers":["tag-postgres"]},"76":{"path":"00-tags/tag-prod.html","title":"tag-prod","tags":[],"headers":["tag-prod"]},"77":{"path":"00-tags/tag-protocol.html","title":"tag-protocol","tags":[],"headers":["tag-protocol"]},"78":{"path":"00-tags/tag-proxy.html","title":"tag-proxy","tags":[],"headers":["tag-proxy"]},"79":{"path":"00-tags/tag-pug.html","title":"tag-pug","tags":[],"headers":["tag-pug"]},"80":{"path":"00-tags/tag-puppeteer.html","title":"tag-puppeteer","tags":[],"headers":["tag-puppeteer"]},"81":{"path":"00-tags/tag-pwndbg.html","title":"tag-pwndbg","tags":[],"headers":["tag-pwndbg"]},"82":{"path":"00-tags/tag-pygame.html","title":"tag-pygame","tags":[],"headers":["tag-pygame"]},"83":{"path":"00-tags/tag-python.html","title":"tag-python","tags":[],"headers":["tag-python"]},"84":{"path":"00-tags/tag-pytorch.html","title":"tag-pytorch","tags":[],"headers":["tag-pytorch"]},"85":{"path":"00-tags/tag-react.html","title":"tag-react","tags":[],"headers":["tag-react"]},"86":{"path":"00-tags/tag-realtime.html","title":"tag-realtime","tags":[],"headers":["tag-realtime"]},"87":{"path":"00-tags/tag-redis.html","title":"tag-redis","tags":[],"headers":["tag-redis"]},"88":{"path":"00-tags/tag-research.html","title":"tag-research","tags":[],"headers":["tag-research"]},"89":{"path":"00-tags/tag-reverse-engineering.html","title":"tag-reverse-engineering","tags":[],"headers":["tag-reverse-engineering"]},"90":{"path":"00-tags/tag-rust.html","title":"tag-rust","tags":[],"headers":["tag-rust"]},"91":{"path":"00-tags/tag-scikit.html","title":"tag-scikit","tags":[],"headers":["tag-scikit"]},"92":{"path":"00-tags/tag-scraping.html","title":"tag-scraping","tags":[],"headers":["tag-scraping"]},"93":{"path":"00-tags/tag-selenium.html","title":"tag-selenium","tags":[],"headers":["tag-selenium"]},"94":{"path":"00-tags/tag-server-management.html","title":"tag-server-management","tags":[],"headers":["tag-server-management"]},"95":{"path":"00-tags/tag-serverless.html","title":"tag-serverless","tags":[],"headers":["tag-serverless"]},"96":{"path":"00-tags/tag-slack-bot.html","title":"tag-slack-bot","tags":[],"headers":["tag-slack-bot"]},"97":{"path":"00-tags/tag-software-engineering.html","title":"tag-software-engineering","tags":[],"headers":["tag-software-engineering"]},"98":{"path":"00-tags/tag-sql.html","title":"tag-sql","tags":[],"headers":["tag-sql"]},"99":{"path":"00-tags/tag-sqlite.html","title":"tag-sqlite","tags":[],"headers":["tag-sqlite"]},"100":{"path":"00-tags/tag-ssl.html","title":"tag-ssl","tags":[],"headers":["tag-ssl"]},"101":{"path":"00-tags/tag-supabase.html","title":"tag-supabase","tags":[],"headers":["tag-supabase"]},"102":{"path":"00-tags/tag-svelte.html","title":"tag-svelte","tags":[],"headers":["tag-svelte"]},"103":{"path":"00-tags/tag-sveltekit.html","title":"tag-sveltekit","tags":[],"headers":["tag-sveltekit"]},"104":{"path":"00-tags/tag-tailwindcss.html","title":"tag-tailwindcss","tags":[],"headers":["tag-tailwindcss"]},"105":{"path":"00-tags/tag-tdd.html","title":"tag-TDD","tags":[],"headers":["tag-TDD"]},"106":{"path":"00-tags/tag-tensorflow.html","title":"tag-tensorflow","tags":[],"headers":["tag-tensorflow"]},"107":{"path":"00-tags/tag-threejs.html","title":"tag-threejs","tags":[],"headers":["tag-threejs"]},"108":{"path":"00-tags/tag-turbo-hotwired.html","title":"tag-turbo-hotwired","tags":[],"headers":["tag-turbo-hotwired"]},"109":{"path":"00-tags/tag-two-factor-auth.html","title":"tag-two-factor-auth","tags":[],"headers":["tag-two-factor-auth"]},"110":{"path":"00-tags/tag-typescript.html","title":"tag-typescript","tags":[],"headers":["tag-typescript"]},"111":{"path":"00-tags/tag-unity.html","title":"tag-unity","tags":[],"headers":["tag-unity"]},"112":{"path":"00-tags/tag-vb-net.html","title":"tag-vb-net","tags":[],"headers":["tag-vb-net"]},"113":{"path":"00-tags/tag-visual-novel.html","title":"tag-visual-novel","tags":[],"headers":["tag-visual-novel"]},"114":{"path":"00-tags/tag-vite.html","title":"tag-vite","tags":[],"headers":["tag-vite"]},"115":{"path":"00-tags/tag-webdesign.html","title":"tag-webdesign","tags":[],"headers":["tag-webdesign"]},"116":{"path":"00-tags/tag-webdev.html","title":"tag-webdev","tags":[],"headers":["tag-webdev"]},"117":{"path":"00-tags/tag-wip.html","title":"tag-wip","tags":[],"headers":["tag-wip"]},"118":{"path":"00-tags/tag-writing.html","title":"tag-writing","tags":[],"headers":["tag-writing"]},"119":{"path":"00-tags/tag-x3d.html","title":"tag-x3d","tags":[],"headers":["tag-x3d"]},"120":{"path":"01-projects/00-school/personal/dumpmon-grabber.html","title":"Dumpmon grabber","tags":[],"headers":["Dumpmon grabber"]},"121":{"path":"01-projects/00-school/personal/irc-bot.html","title":"IRC Bot","tags":[],"headers":["IRC Bot"]},"122":{"path":"01-projects/00-school/personal/personal.html","title":"Personal","tags":[],"headers":["Personal"]},"123":{"path":"01-projects/00-school/personal/raspberry-pi-setup-scripts.html","title":"Raspberry Pi Setup Scripts","tags":[],"headers":["Raspberry Pi Setup Scripts"]},"124":{"path":"01-projects/00-school/school.html","title":"School","tags":[],"headers":["School"]},"125":{"path":"01-projects/01-college/assignments/assignments.html","title":"Assignments","tags":[],"headers":["Assignments"]},"126":{"path":"01-projects/01-college/assignments/ict-site.html","title":"ICT Site","tags":[],"headers":["ICT Site"]},"127":{"path":"01-projects/01-college/assignments/irc-cals.html","title":"IRC-CaLS","tags":[],"headers":["IRC-CaLS"]},"128":{"path":"01-projects/01-college/personal/concatbot.html","title":"concatBot","tags":[],"headers":["concatBot"]},"129":{"path":"01-projects/01-college/personal/cyber-discovery-finalist-challenge.html","title":"Cyber Discovery Finalist Challenge","tags":[],"headers":["Cyber Discovery Finalist Challenge"]},"130":{"path":"01-projects/01-college/personal/hexbot.html","title":"Hexbot","tags":[],"headers":["Hexbot"]},"131":{"path":"01-projects/01-college/personal/personal.html","title":"Personal","tags":[],"headers":["Personal"]},"132":{"path":"01-projects/01-college/college.html","title":"College","tags":[],"headers":["College"]},"133":{"path":"01-projects/02-university/assignments/aiab.html","title":"AIAB","tags":[],"headers":["AIAB"]},"134":{"path":"01-projects/02-university/assignments/assignments.html","title":"Assignments","tags":[],"headers":["Assignments"]},"135":{"path":"01-projects/02-university/assignments/checkers.html","title":"Checkers","tags":[],"headers":["Checkers"]},"136":{"path":"01-projects/02-university/assignments/clue.html","title":"Clue","tags":[],"headers":["Clue"]},"137":{"path":"01-projects/02-university/assignments/computer-vision.html","title":"Computer Vision","tags":[],"headers":["Computer Vision"]},"138":{"path":"01-projects/02-university/assignments/database-design-and-sql.html","title":"Database design and sql","tags":[],"headers":["Database design and sql"]},"139":{"path":"01-projects/02-university/assignments/dsa-programming-project.html","title":"DSA Programming Project","tags":[],"headers":["DSA Programming Project"]},"140":{"path":"01-projects/02-university/assignments/individual-project.html","title":"Individual Project","tags":[],"headers":["Individual Project"]},"141":{"path":"01-projects/02-university/assignments/lovejoys-antique-evaluations.html","title":"Lovejoys Antique Evaluations","tags":[],"headers":["Lovejoys Antique Evaluations"]},"142":{"path":"01-projects/02-university/assignments/machine-learning.html","title":"Machine learning","tags":[],"headers":["Machine learning"]},"143":{"path":"01-projects/02-university/assignments/minesweeper.html","title":"Minesweeper","tags":[],"headers":["Minesweeper"]},"144":{"path":"01-projects/02-university/assignments/natural-language-engineering.html","title":"Natural Language Engineering","tags":[],"headers":["Natural Language Engineering"]},"145":{"path":"01-projects/02-university/assignments/web-3d.html","title":"Web 3D","tags":[],"headers":["Web 3D"]},"146":{"path":"01-projects/02-university/personal/bandcamp-web-downloader.html","title":"Bandcamp Web Downloader","tags":[],"headers":["Bandcamp Web Downloader"]},"147":{"path":"01-projects/02-university/personal/blaseball-peanut-clicker.html","title":"Blaseball Peanut Clicker","tags":[],"headers":["Blaseball Peanut Clicker"]},"148":{"path":"01-projects/02-university/personal/ghost-terminal-dracula-theme.html","title":"Ghost Terminal Dracula theme","tags":[],"headers":["Ghost Terminal Dracula theme"]},"149":{"path":"01-projects/02-university/personal/hacksussex-2019.html","title":"Hacksussex 2019","tags":[],"headers":["Hacksussex 2019"]},"150":{"path":"01-projects/02-university/personal/hosting-with-vps.html","title":"Hosting with VPS","tags":[],"headers":["Hosting with VPS"]},"151":{"path":"01-projects/02-university/personal/i3-config.html","title":"i3 Config","tags":[],"headers":["i3 Config"]},"152":{"path":"01-projects/02-university/personal/litebin.html","title":"litebin","tags":[],"headers":["litebin"]},"153":{"path":"01-projects/02-university/personal/markdown-dracula-theme.html","title":"Markdown dracula theme","tags":[],"headers":["Markdown dracula theme"]},"154":{"path":"01-projects/02-university/personal/mdview.html","title":"MDView","tags":[],"headers":["MDView"]},"155":{"path":"01-projects/02-university/personal/nixos-config.html","title":"nixos config","tags":[],"headers":["nixos config"]},"156":{"path":"01-projects/02-university/personal/pastel.codes.html","title":"pastel.codes","tags":[],"headers":["pastel.codes"]},"157":{"path":"01-projects/02-university/personal/personal.html","title":"Personal","tags":[],"headers":["Personal"]},"158":{"path":"01-projects/02-university/personal/ttttt.uk.html","title":"TTTTT.uk","tags":[],"headers":["TTTTT.uk"]},"159":{"path":"01-projects/02-university/personal/university-note-tools.html","title":"University Note Tools","tags":[],"headers":["University Note Tools"]},"160":{"path":"01-projects/02-university/university.html","title":"University","tags":[],"headers":["University"]},"161":{"path":"01-projects/03-work/personal/flipanalytica-hacksussex-2023.html","title":"FlipAnalytica - Hacksussex 2023","tags":[],"headers":["FlipAnalytica - Hacksussex 2023"]},"162":{"path":"01-projects/03-work/personal/hiddennet.works.html","title":"hiddennet.works","tags":[],"headers":["hiddennet.works"]},"163":{"path":"01-projects/03-work/personal/managing-a-minecraft-server.html","title":"Managing a minecraft server","tags":[],"headers":["Managing a minecraft server"]},"164":{"path":"01-projects/03-work/personal/personal.html","title":"Personal","tags":[],"headers":["Personal"]},"165":{"path":"01-projects/03-work/personal/watcher.html","title":"Watcher","tags":[],"headers":["Watcher"]},"166":{"path":"01-projects/03-work/projects/heythere/heythere-extensions.html","title":"Heythere Extensions","tags":[],"headers":["Heythere Extensions"]},"167":{"path":"01-projects/03-work/projects/heythere/heythere-web.html","title":"Heythere Web","tags":[],"headers":["Heythere Web"]},"168":{"path":"01-projects/03-work/projects/bizarrepg.html","title":"BizarrePG","tags":[],"headers":["BizarrePG"]},"169":{"path":"01-projects/03-work/projects/changewatch.html","title":"Changewatch","tags":[],"headers":["Changewatch"]},"170":{"path":"01-projects/03-work/projects/n0rt.html","title":"N0RT","tags":[],"headers":["N0RT"]},"171":{"path":"01-projects/03-work/projects/projects.html","title":"Projects","tags":[],"headers":["Projects"]},"172":{"path":"01-projects/03-work/projects/the-loop..html","title":"The Loop.","tags":[],"headers":["The Loop."]},"173":{"path":"01-projects/03-work/work.html","title":"Work","tags":[],"headers":["Work"]},"174":{"path":"projects.html","title":"Projects","tags":[],"headers":["Projects"]},"175":{"path":"lib/scripts/graph-wasm.wasm","title":"graph-wasm","tags":[],"headers":[]},"176":{"path":"lib/fonts/94f2f163d4b698242fef.otf","title":"94f2f163d4b698242fef","tags":[],"headers":[]},"177":{"path":"lib/fonts/72505e6a122c6acd5471.woff2","title":"72505e6a122c6acd5471","tags":[],"headers":[]},"178":{"path":"lib/fonts/2d5198822ab091ce4305.woff2","title":"2d5198822ab091ce4305","tags":[],"headers":[]},"179":{"path":"lib/fonts/c8ba52b05a9ef10f4758.woff2","title":"c8ba52b05a9ef10f4758","tags":[],"headers":[]},"180":{"path":"lib/fonts/cb10ffd7684cd9836a05.woff2","title":"cb10ffd7684cd9836a05","tags":[],"headers":[]},"181":{"path":"lib/fonts/b5f0f109bc88052d4000.woff2","title":"b5f0f109bc88052d4000","tags":[],"headers":[]},"182":{"path":"lib/fonts/cbe0ae49c52c920fd563.woff2","title":"cbe0ae49c52c920fd563","tags":[],"headers":[]},"183":{"path":"lib/fonts/535a6cf662596b3bd6a6.woff2","title":"535a6cf662596b3bd6a6","tags":[],"headers":[]},"184":{"path":"lib/fonts/70cc7ff27245e82ad414.ttf","title":"70cc7ff27245e82ad414","tags":[],"headers":[]},"185":{"path":"lib/fonts/454577c22304619db035.ttf","title":"454577c22304619db035","tags":[],"headers":[]},"186":{"path":"lib/fonts/52ac8f3034507f1d9e53.ttf","title":"52ac8f3034507f1d9e53","tags":[],"headers":[]},"187":{"path":"lib/fonts/05b618077343fbbd92b7.ttf","title":"05b618077343fbbd92b7","tags":[],"headers":[]},"188":{"path":"lib/fonts/4bb6ac751d1c5478ff3a.woff2","title":"4bb6ac751d1c5478ff3a","tags":[],"headers":[]},"189":{"path":"lib/media/874d8b8e340f75575caa.svg","title":"874d8b8e340f75575caa","tags":[],"headers":[]},"190":{"path":"lib/html/file-tree.html","title":"file-tree","tags":[],"headers":[]},"191":{"path":"lib/scripts/webpage.js","title":"webpage","tags":[],"headers":[]},"192":{"path":"lib/scripts/graph-view.js","title":"graph-view","tags":[],"headers":[]},"193":{"path":"lib/scripts/graph-wasm.js","title":"graph-wasm","tags":[],"headers":[]},"194":{"path":"lib/scripts/graph-render-worker.js","title":"graph-render-worker","tags":[],"headers":[]},"195":{"path":"lib/scripts/tinycolor.js","title":"tinycolor","tags":[],"headers":[]},"196":{"path":"lib/scripts/pixi.js","title":"pixi","tags":[],"headers":[]},"197":{"path":"lib/scripts/minisearch.js","title":"minisearch","tags":[],"headers":[]},"198":{"path":"lib/media/favicon.png","title":"favicon","tags":[],"headers":[]},"199":{"path":"lib/scripts/graph-data.js","title":"graph-data","tags":[],"headers":[]},"200":{"path":"lib/styles/obsidian.css","title":"obsidian","tags":[],"headers":[]},"201":{"path":"lib/styles/other-plugins.css","title":"other-plugins","tags":[],"headers":[]},"202":{"path":"lib/styles/global-variable-styles.css","title":"global-variable-styles","tags":[],"headers":[]},"203":{"path":"lib/styles/main-styles.css","title":"main-styles","tags":[],"headers":[]},"204":{"path":"lib/metadata.json","title":"metadata","tags":[],"headers":[]}},"dirtCount":0,"index":[["874d8b8e340f75575caa",{"0":{"189":1},"1":{"189":1}}],["4bb6ac751d1c5478ff3a",{"0":{"188":1},"1":{"188":1}}],["454577c22304619db035",{"0":{"185":1},"1":{"185":1}}],["70cc7ff27245e82ad414",{"0":{"184":1},"1":{"184":1}}],["72505e6a122c6acd5471",{"0":{"177":1},"1":{"177":1}}],["94f2f163d4b698242fef",{"0":{"176":1},"1":{"176":1}}],["3d",{"0":{"145":1},"1":{"145":1},"2":{"134":2,"145":2},"4":{"145":1}}],["kr",{"2":{"134":1,"135":1}}],["52ac8f3034507f1d9e53",{"0":{"186":1},"1":{"186":1}}],["535a6cf662596b3bd6a6",{"0":{"183":1},"1":{"183":1}}],["5b21",{"2":{"140":1}}],["5b20",{"2":{"133":1,"137":1,"138":1,"142":1,"144":1}}],["5b19",{"2":{"139":1}}],["5d",{"2":{"133":1,"137":1,"138":1,"139":1,"140":1,"142":1,"144":1}}],["2d5198822ab091ce4305",{"0":{"178":1},"1":{"178":1}}],["2d7bfe64fef16444acaabc157e2bc6bacbb2b712",{"2":{"138":1,"139":1,"140":1,"142":1,"144":1}}],["2328719",{"2":{"172":1}}],["22",{"2":{"140":1}}],["21",{"2":{"133":1,"137":1,"138":1,"142":1,"144":1}}],["26",{"2":{"133":1,"139":1}}],["2023",{"0":{"161":1},"1":{"161":1},"2":{"161":2,"164":1,"170":1,"172":1},"4":{"161":1}}],["2019",{"0":{"149":1},"1":{"149":1},"2":{"149":2,"157":1},"4":{"149":1}}],["20engineering",{"2":{"144":1}}],["20language",{"2":{"144":1}}],["20learning",{"2":{"142":1}}],["20machine",{"2":{"142":1}}],["20of",{"2":{"142":1}}],["20project",{"2":{"140":1}}],["20algorithms",{"2":{"139":1}}],["20adaptive",{"2":{"133":1}}],["20structures",{"2":{"139":1}}],["20vision",{"2":{"137":1}}],["20behaviour",{"2":{"133":1}}],["20",{"2":{"133":2,"137":1,"138":1,"139":3,"140":1,"142":1,"144":1}}],["20intelligence",{"2":{"133":1}}],["=",{"2":{"133":1,"139":1}}],["05b618077343fbbd92b7",{"0":{"187":1},"1":{"187":1}}],["03",{"0":{"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1}}],["02",{"0":{"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1}}],["01",{"0":{"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":2,"127":2,"128":2,"129":2,"130":2,"131":2,"132":2,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1},"2":{"132":4}}],["00",{"0":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1}}],["x3d",{"0":{"119":1},"1":{"119":1},"2":{"119":1,"145":1},"4":{"119":1}}],["woff2",{"0":{"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"188":1}}],["worker",{"0":{"194":1},"1":{"194":1}}],["works",{"0":{"162":1},"1":{"162":1},"2":{"162":3,"164":1},"4":{"162":1}}],["work",{"0":{"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":2},"1":{"173":1},"2":{"173":1,"174":1},"4":{"173":1}}],["wasm",{"0":{"175":2,"193":1},"1":{"175":1,"193":1}}],["watcher",{"0":{"165":1},"1":{"165":1},"2":{"164":1,"165":3},"4":{"165":1}}],["www",{"2":{"167":1,"168":1,"169":1}}],["winner",{"2":{"161":1}}],["wip",{"0":{"117":1},"1":{"117":1},"2":{"117":1,"165":1},"4":{"117":1}}],["whole",{"2":{"134":1}}],["webpage",{"0":{"191":1},"1":{"191":1}}],["web",{"0":{"145":1,"146":1,"167":1},"1":{"145":1,"146":1,"167":1},"2":{"134":2,"145":2,"146":2,"157":1,"167":1,"171":1},"4":{"145":1,"146":1,"167":1}}],["webdev",{"0":{"116":1},"1":{"116":1},"2":{"116":1,"141":2,"145":1,"146":1,"156":1,"158":1,"162":1,"165":1,"166":1,"167":1,"168":1,"169":2},"4":{"116":1}}],["webdesign",{"0":{"115":1},"1":{"115":1},"2":{"115":1,"145":1,"146":1,"156":1,"158":1,"162":1,"165":1,"167":1,"169":1},"4":{"115":1}}],["writing",{"0":{"118":1},"1":{"118":1},"2":{"118":1,"172":1},"4":{"118":1}}],["variable",{"0":{"202":1},"1":{"202":1}}],["vps",{"0":{"150":1},"1":{"150":1},"2":{"150":1,"157":1},"4":{"150":1}}],["view",{"0":{"192":1},"1":{"192":1}}],["vision",{"0":{"137":1},"1":{"137":1},"2":{"134":1,"137":1},"4":{"137":1}}],["visual",{"0":{"113":1},"1":{"113":1},"2":{"113":1,"172":1},"4":{"113":1}}],["vite",{"0":{"114":1},"1":{"114":1},"2":{"114":1,"168":1},"4":{"114":1}}],["vb",{"0":{"112":1},"1":{"112":1},"2":{"112":1,"127":1},"4":{"112":1}}],["uk",{"0":{"158":1},"1":{"158":1},"2":{"157":1,"158":3,"167":1,"169":1},"4":{"158":1}}],["unzipped",{"2":{"134":1}}],["uni",{"2":{"134":6}}],["university",{"0":{"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":2,"160":2},"1":{"159":1,"160":1},"2":{"133":1,"137":1,"138":1,"139":1,"140":1,"142":1,"144":1,"157":1,"159":2,"160":1,"174":1},"4":{"159":1,"160":1}}],["unity",{"0":{"111":1},"1":{"111":1},"2":{"111":1,"149":1},"4":{"111":1}}],["upload",{"2":{"134":1}}],["ui",{"0":{"3":1},"1":{"3":1},"2":{"3":1,"135":1,"143":1,"149":1},"4":{"3":1}}],["styles",{"0":{"200":1,"201":1,"202":2,"203":2},"1":{"202":1,"203":1}}],["structures",{"2":{"139":1}}],["svg",{"0":{"189":1}}],["sveltekit",{"0":{"103":1},"1":{"103":1},"2":{"103":1,"168":1},"4":{"103":1}}],["svelte",{"0":{"102":1},"1":{"102":1},"2":{"102":1,"168":1},"4":{"102":1}}],["submissions",{"2":{"134":1}}],["supabase",{"0":{"101":1},"1":{"101":1},"2":{"101":1,"168":1},"4":{"101":1}}],["site",{"0":{"126":1},"1":{"126":1},"2":{"125":1,"126":2,"150":1},"4":{"126":1}}],["simple",{"2":{"121":1}}],["ssl",{"0":{"100":1},"1":{"100":1},"2":{"100":1,"150":1,"156":1,"158":1},"4":{"100":1}}],["sqlite",{"0":{"99":1},"1":{"99":1},"2":{"99":1,"120":1,"121":1,"127":1,"159":1},"4":{"99":1}}],["sql",{"0":{"98":1,"138":1},"1":{"98":1,"138":1},"2":{"98":1,"120":1,"121":1,"127":1,"134":1,"138":2,"159":1,"167":1,"168":1,"169":1},"4":{"98":1,"138":1}}],["software",{"0":{"97":1},"1":{"97":1},"2":{"97":1,"127":1,"134":1,"136":2,"138":1,"143":1,"161":1,"166":1,"167":1,"169":1},"4":{"97":1}}],["slack",{"0":{"96":1},"1":{"96":1},"2":{"96":1,"167":1},"4":{"96":1}}],["service",{"2":{"165":1}}],["serverless",{"0":{"95":1},"1":{"95":1},"2":{"95":1,"165":2,"169":1},"4":{"95":1}}],["server",{"0":{"94":1,"163":1},"1":{"94":1,"163":1},"2":{"94":1,"123":1,"163":1,"164":1},"4":{"94":1,"163":1}}],["setups",{"2":{"123":1}}],["setup",{"0":{"123":1},"1":{"123":1},"2":{"122":1,"123":1},"4":{"123":1}}],["selenium",{"0":{"93":1},"1":{"93":1},"2":{"93":1,"169":1},"4":{"93":1}}],["scream",{"2":{"172":1}}],["scripts",{"0":{"123":1,"175":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"199":1},"1":{"123":1},"2":{"122":1,"123":1},"4":{"123":1}}],["scraping",{"0":{"92":1},"1":{"92":1},"2":{"92":1,"120":1,"128":1,"147":1,"165":1,"169":1},"4":{"92":1}}],["school",{"0":{"120":1,"121":1,"122":1,"123":1,"124":2},"1":{"124":1},"2":{"124":1,"174":1},"4":{"124":1}}],["scikit",{"0":{"91":1},"1":{"91":1},"2":{"91":1,"137":1,"140":1,"142":1},"4":{"91":1}}],["science",{"0":{"20":1},"1":{"20":1},"2":{"20":1,"140":1,"162":1},"4":{"20":1}}],["rate",{"2":{"172":1}}],["raspberry",{"0":{"123":1},"1":{"123":1},"2":{"122":1,"123":1},"4":{"123":1}}],["rpi",{"2":{"123":1}}],["rust",{"0":{"90":1},"1":{"90":1},"2":{"90":1,"152":1},"4":{"90":1}}],["render",{"0":{"194":1},"1":{"194":1}}],["reverse",{"0":{"89":1},"1":{"89":1},"2":{"89":1,"129":1,"146":1,"159":1,"166":1},"4":{"89":1}}],["research",{"0":{"88":1},"1":{"88":1},"2":{"88":1,"133":1,"137":1,"140":1,"142":1},"4":{"88":1}}],["rest",{"0":{"26":1},"1":{"26":1},"2":{"26":1,"167":1},"4":{"26":1}}],["redis",{"0":{"87":1},"1":{"87":1},"2":{"87":1,"167":1},"4":{"87":1}}],["realtime",{"0":{"86":1},"1":{"86":1},"2":{"86":1,"168":1},"4":{"86":1}}],["react",{"0":{"85":1},"1":{"85":1},"2":{"85":1,"165":1,"166":1},"4":{"85":1}}],["plugins",{"0":{"201":1},"1":{"201":1}}],["playbizarrepg",{"2":{"168":1}}],["platformer",{"0":{"74":1},"1":{"74":1},"2":{"74":1,"170":1},"4":{"74":1}}],["png",{"0":{"198":1}}],["possum",{"2":{"150":1}}],["postgres",{"0":{"75":1},"1":{"75":1},"2":{"75":1,"141":1,"167":1,"168":1,"169":1},"4":{"75":1}}],["peanut",{"0":{"147":1},"1":{"147":1},"2":{"147":2,"157":1},"4":{"147":1}}],["personal",{"0":{"120":1,"121":1,"122":2,"123":1,"128":1,"129":1,"130":1,"131":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":2,"158":1,"159":1,"161":1,"162":1,"163":1,"164":2,"165":1},"1":{"122":1,"131":1,"157":1,"164":1},"2":{"122":1,"124":1,"131":1,"132":2,"157":1,"160":1,"164":1,"173":1},"4":{"122":1,"131":1,"157":1,"164":1}}],["pixi",{"0":{"196":1},"1":{"196":1}}],["pi",{"0":{"123":1},"1":{"123":1},"2":{"122":1,"123":1},"4":{"123":1}}],["pytorch",{"0":{"84":1},"1":{"84":1},"2":{"84":1,"133":1},"4":{"84":1}}],["python",{"0":{"83":1},"1":{"83":1},"2":{"83":1,"120":1,"121":1,"127":1,"128":1,"130":1,"133":1,"135":1,"136":1,"137":1,"140":1,"141":1,"142":1,"144":1,"159":1,"167":1,"169":1},"4":{"83":1}}],["pygame",{"0":{"82":1},"1":{"82":1},"2":{"82":1,"135":1},"4":{"82":1}}],["pwndbg",{"0":{"81":1},"1":{"81":1},"2":{"81":1,"129":1},"4":{"81":1}}],["puppeteer",{"0":{"80":1},"1":{"80":1},"2":{"80":1,"147":1},"4":{"80":1}}],["pug",{"0":{"79":1},"1":{"79":1},"2":{"79":1,"146":1,"156":1},"4":{"79":1}}],["programming",{"0":{"139":1},"1":{"139":1},"2":{"134":1,"139":1},"4":{"139":1}}],["project",{"0":{"139":1,"140":1},"1":{"139":1,"140":1},"2":{"134":2,"139":1,"140":1},"4":{"139":1,"140":1}}],["projects",{"0":{"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":2,"170":2,"171":3,"172":2,"173":1,"174":1},"1":{"171":1,"174":1},"2":{"132":2,"171":1,"173":1,"174":1},"4":{"171":1,"174":1}}],["proxy",{"0":{"78":1},"1":{"78":1},"2":{"78":1,"120":1},"4":{"78":1}}],["protocol",{"0":{"77":1},"1":{"77":1},"2":{"77":1,"121":1,"127":1},"4":{"77":1}}],["prod",{"0":{"76":1},"1":{"76":1},"2":{"76":1,"166":1,"167":2,"168":1},"4":{"76":1}}],["php",{"0":{"73":1},"1":{"73":1},"2":{"73":1,"145":1},"4":{"73":1}}],["pastel",{"0":{"156":1},"1":{"156":1},"2":{"150":5,"156":3,"157":2},"4":{"156":1}}],["parcel",{"0":{"72":1},"1":{"72":1},"2":{"72":1,"166":1},"4":{"72":1}}],["pandas",{"0":{"71":1},"1":{"71":1},"2":{"71":1,"140":1,"144":1},"4":{"71":1}}],["other",{"0":{"201":1},"1":{"201":1}}],["otf",{"0":{"176":1}}],["obsidian",{"0":{"200":1},"1":{"200":1}}],["off",{"2":{"170":1}}],["org",{"2":{"166":1}}],["openai",{"0":{"70":1},"1":{"70":1},"2":{"70":1,"167":2,"168":1},"4":{"70":1}}],["oop",{"0":{"69":1},"1":{"69":1},"2":{"69":1,"128":1,"136":1,"139":1,"141":1,"143":1},"4":{"69":1}}],["oauth",{"0":{"68":1},"1":{"68":1},"2":{"68":1,"166":1,"167":1},"4":{"68":1}}],["tinycolor",{"0":{"195":1},"1":{"195":1}}],["ttf",{"0":{"184":1,"185":1,"186":1,"187":1}}],["ttttt",{"0":{"158":1},"1":{"158":1},"2":{"157":1,"158":3},"4":{"158":1}}],["throw",{"2":{"161":1}}],["threejs",{"0":{"107":1},"1":{"107":1},"2":{"107":1,"161":1},"4":{"107":1}}],["the",{"0":{"172":1},"1":{"172":1},"2":{"161":2,"171":1,"172":1},"4":{"172":1}}],["theme",{"0":{"148":1,"153":1},"1":{"148":1,"153":1},"2":{"148":2,"153":1,"157":2},"4":{"148":1,"153":1}}],["terminal",{"0":{"148":1},"1":{"148":1},"2":{"148":2,"157":1},"4":{"148":1}}],["tensorflow",{"0":{"106":1},"1":{"106":1},"2":{"106":1,"137":1},"4":{"106":1}}],["tools",{"0":{"159":1},"1":{"159":1},"2":{"157":1,"159":2},"4":{"159":1}}],["to",{"2":{"134":1,"157":1}}],["tree",{"0":{"190":1},"1":{"190":1},"2":{"133":1,"137":1,"138":1,"139":1,"140":1,"142":1,"144":1}}],["traffic",{"0":{"60":1},"1":{"60":1},"2":{"60":1,"166":1},"4":{"60":1}}],["typescript",{"0":{"110":1},"1":{"110":1},"2":{"110":1,"165":1},"4":{"110":1}}],["two",{"0":{"109":1},"1":{"109":1},"2":{"109":1,"167":1},"4":{"109":1}}],["turbo",{"0":{"108":1},"1":{"108":1},"2":{"108":1,"167":1},"4":{"108":1}}],["tdd",{"0":{"105":1},"1":{"105":1},"2":{"105":1,"136":1,"143":1,"166":1,"167":1,"169":1},"4":{"105":1}}],["tailwindcss",{"0":{"104":1},"1":{"104":1},"2":{"104":1,"141":1,"156":1,"161":1,"166":1,"167":1,"168":1,"169":1},"4":{"104":1}}],["tag",{"0":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"1":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":6,"121":7,"123":5,"126":4,"127":9,"128":8,"129":7,"130":3,"133":11,"135":6,"136":5,"137":10,"138":2,"139":3,"140":14,"141":17,"142":6,"143":7,"144":6,"145":8,"146":11,"147":5,"148":3,"149":4,"150":6,"151":1,"152":4,"153":2,"154":3,"155":1,"156":14,"158":8,"159":4,"161":6,"162":7,"163":3,"165":14,"166":18,"167":32,"168":18,"169":27,"170":8,"172":9},"4":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1}}],["tags",{"0":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1}}],["minisearch",{"0":{"197":1},"1":{"197":1}}],["minecraft",{"0":{"163":1},"1":{"163":1},"2":{"163":1,"164":1},"4":{"163":1}}],["minesweeper",{"0":{"143":1},"1":{"143":1},"2":{"134":2,"143":2},"4":{"143":1}}],["metadata",{"0":{"204":1},"1":{"204":1}}],["media",{"0":{"189":1,"198":1}}],["mentallyeel",{"2":{"163":3}}],["mozilla",{"2":{"166":1}}],["mc",{"2":{"163":1}}],["mdview",{"0":{"154":1},"1":{"154":1},"2":{"154":2,"157":1},"4":{"154":1}}],["mumble",{"2":{"150":2}}],["music",{"0":{"58":1},"1":{"58":1},"2":{"58":1,"170":1,"172":1},"4":{"58":1}}],["myers",{"0":{"59":1},"1":{"59":1},"2":{"59":1,"169":1},"4":{"59":1}}],["map",{"2":{"163":1}}],["managing",{"0":{"163":1},"1":{"163":1},"2":{"163":1,"164":1},"4":{"163":1}}],["management",{"0":{"19":1,"28":1,"94":1},"1":{"19":1,"28":1,"94":1},"2":{"19":1,"28":1,"94":1,"123":1,"140":1,"150":1,"158":1,"162":1,"163":1},"4":{"19":1,"28":1,"94":1}}],["markdown",{"0":{"153":1},"1":{"153":1},"2":{"153":2,"157":1},"4":{"153":1}}],["matrix",{"2":{"150":3}}],["matplotlib",{"0":{"57":1},"1":{"57":1},"2":{"57":1,"133":1,"137":1,"140":1,"142":1,"144":1},"4":{"57":1}}],["main",{"0":{"203":1},"1":{"203":1},"2":{"133":1,"137":1}}],["machine",{"0":{"56":1,"142":1},"1":{"56":1,"142":1},"2":{"56":1,"133":1,"134":1,"140":1,"142":1},"4":{"56":1,"142":1}}],["lib",{"0":{"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1}}],["litebin",{"0":{"152":1},"1":{"152":1},"2":{"152":2,"157":1},"4":{"152":1}}],["linux",{"0":{"54":1},"1":{"54":1},"2":{"54":1,"123":1,"129":1,"150":1,"151":1,"155":1,"163":1},"4":{"54":1}}],["language",{"0":{"144":1},"1":{"144":1},"2":{"134":1,"144":1},"4":{"144":1}}],["latex",{"0":{"52":1},"1":{"52":1},"2":{"52":1,"133":1,"137":1,"140":1,"142":1},"4":{"52":1}}],["loop",{"0":{"172":1},"1":{"172":1},"2":{"171":1,"172":1},"4":{"172":1}}],["local",{"2":{"134":1}}],["lovejoys",{"0":{"141":1},"1":{"141":1},"2":{"134":2,"141":2},"4":{"141":1}}],["low",{"0":{"55":1},"1":{"55":1},"2":{"55":1,"129":1},"4":{"55":1}}],["learning",{"0":{"56":1,"142":1},"1":{"56":1,"142":1},"2":{"56":1,"133":1,"134":1,"140":1,"142":1},"4":{"56":1,"142":1}}],["level",{"0":{"53":1,"55":1},"1":{"53":1,"55":1},"2":{"53":1,"55":1,"129":1,"170":1},"4":{"53":1,"55":1}}],["n0rt",{"0":{"170":1},"1":{"170":1},"2":{"170":1,"171":1},"4":{"170":1}}],["nixos",{"0":{"155":1},"1":{"155":1},"2":{"155":2,"157":2},"4":{"155":1}}],["natural",{"0":{"144":1},"1":{"144":1},"2":{"134":1,"144":2},"4":{"144":1}}],["name",{"0":{"28":1},"1":{"28":1},"2":{"28":1,"150":1,"158":1,"162":1,"163":1},"4":{"28":1}}],["numpy",{"0":{"67":1},"1":{"67":1},"2":{"67":1,"133":1,"137":1,"140":1},"4":{"67":1}}],["npm",{"0":{"66":1},"1":{"66":1},"2":{"66":1,"146":1,"147":1,"156":1,"167":1,"168":1},"4":{"66":1}}],["note",{"0":{"159":1},"1":{"159":1},"2":{"157":1,"159":2},"4":{"159":1}}],["notebook",{"0":{"51":1},"1":{"51":1},"2":{"51":1,"133":1,"137":1,"140":1,"142":1,"144":1},"4":{"51":1}}],["novel",{"0":{"113":1},"1":{"113":1},"2":{"113":1,"172":1},"4":{"113":1}}],["nodejs",{"0":{"65":1},"1":{"65":1},"2":{"65":1,"146":1,"147":1,"156":1,"165":1,"168":1},"4":{"65":1}}],["nltk",{"0":{"64":1},"1":{"64":1},"2":{"64":1,"144":1},"4":{"64":1}}],["need",{"2":{"134":1}}],["net",{"0":{"112":1},"1":{"112":1},"2":{"112":1,"127":1},"4":{"112":1}}],["networks",{"0":{"62":1},"1":{"62":1},"2":{"62":1,"133":1},"4":{"62":1}}],["networking",{"0":{"61":1},"1":{"61":1},"2":{"61":1,"127":1,"152":1,"166":1},"4":{"61":1}}],["network",{"0":{"60":1},"1":{"60":1},"2":{"60":1,"166":1},"4":{"60":1}}],["nextjs",{"0":{"63":1},"1":{"63":1},"2":{"63":1,"165":1},"4":{"63":1}}],["neural",{"0":{"62":1},"1":{"62":1},"2":{"62":1,"133":1},"4":{"62":1}}],["jam",{"2":{"172":2}}],["java",{"0":{"49":1},"1":{"49":1},"2":{"49":1,"139":1,"143":1},"4":{"49":1}}],["joy",{"2":{"161":1}}],["jupyter",{"0":{"51":1},"1":{"51":1},"2":{"51":1,"133":1,"137":1,"140":1,"142":1,"144":1},"4":{"51":1}}],["json",{"0":{"204":1}}],["js",{"0":{"50":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"199":1},"1":{"50":1},"2":{"50":1,"126":1,"161":1,"162":1,"166":1,"167":1,"168":1,"169":1},"4":{"50":1}}],["io",{"2":{"170":1,"172":1}}],["i3",{"0":{"151":1},"1":{"151":1},"2":{"151":1,"157":1},"4":{"151":1}}],["into",{"2":{"134":1}}],["intelligence",{"2":{"133":1}}],["individual",{"0":{"140":1},"1":{"140":1},"2":{"134":1,"140":2},"4":{"140":1}}],["itch",{"2":{"170":1,"172":1}}],["it",{"2":{"126":1}}],["ict",{"0":{"126":1},"1":{"126":1},"2":{"125":1,"126":1},"4":{"126":1}}],["irc",{"0":{"48":1,"121":1,"127":1},"1":{"48":1,"121":1,"127":1},"2":{"48":1,"121":3,"122":1,"125":1,"127":3},"4":{"48":1,"121":1,"127":1}}],["image",{"0":{"47":1},"1":{"47":1},"2":{"47":1,"128":1,"130":1,"137":1},"4":{"47":1}}],["hiddennet",{"0":{"162":1},"1":{"162":1},"2":{"162":3,"164":1},"4":{"162":1}}],["hack",{"2":{"161":1}}],["hackiest",{"2":{"161":1}}],["hacksussex",{"0":{"149":1,"161":1},"1":{"149":1,"161":1},"2":{"149":2,"157":1,"161":2,"164":1},"4":{"149":1,"161":1}}],["hackathon",{"0":{"43":1},"1":{"43":1},"2":{"43":1,"149":1,"161":1},"4":{"43":1}}],["heythereapp",{"2":{"167":1}}],["heythere",{"0":{"166":2,"167":2},"1":{"166":1,"167":1},"2":{"166":3,"167":1,"171":2},"4":{"166":1,"167":1}}],["hexbot",{"0":{"130":1},"1":{"130":1},"2":{"130":2,"131":1},"4":{"130":1}}],["heroku",{"0":{"44":1},"1":{"44":1},"2":{"44":1,"141":1,"167":1,"169":1},"4":{"44":1}}],["https",{"2":{"120":1,"121":1,"123":1,"126":1,"127":1,"128":1,"129":1,"130":1,"133":1,"134":6,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":6,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":2,"158":2,"159":1,"161":2,"162":2,"163":3,"165":2,"166":2,"167":1,"168":1,"169":1,"170":1,"172":1}}],["html",{"0":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":2,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"190":2},"1":{"46":1},"2":{"46":1,"126":1,"141":1,"145":1,"148":1,"153":1,"154":1,"158":1,"161":1,"162":1,"167":1,"168":1,"169":1},"4":{"46":1}}],["hotwired",{"0":{"108":1},"1":{"108":1},"2":{"108":1,"167":1},"4":{"108":1}}],["hosting",{"0":{"45":1,"150":1},"1":{"45":1,"150":1},"2":{"45":1,"123":1,"150":2,"157":1},"4":{"45":1,"150":1}}],["global",{"0":{"202":1},"1":{"202":1}}],["graph",{"0":{"175":1,"192":1,"193":1,"194":1,"199":1},"1":{"175":1,"192":1,"193":1,"194":1,"199":1}}],["grabber",{"0":{"120":1},"1":{"120":1},"2":{"120":1,"122":1},"4":{"120":1}}],["gb",{"2":{"166":1}}],["gay",{"2":{"150":1,"163":3}}],["gamejam",{"0":{"36":1},"1":{"36":1},"2":{"36":1,"170":1,"172":1},"4":{"36":1}}],["game",{"0":{"34":1,"35":1},"1":{"34":1,"35":1},"2":{"34":1,"35":1,"135":1,"143":1,"149":1,"161":1,"168":1,"170":3,"172":2},"4":{"34":1,"35":1}}],["ghost",{"0":{"148":1},"1":{"148":1},"2":{"148":1,"150":1,"157":1},"4":{"148":1}}],["gitea",{"2":{"150":1}}],["git",{"2":{"150":1}}],["gitlab",{"2":{"120":2,"121":2,"129":1}}],["github",{"0":{"39":1,"40":1},"1":{"39":1,"40":1},"2":{"39":1,"40":1,"123":2,"126":2,"127":2,"128":2,"129":1,"130":2,"133":2,"134":7,"135":2,"136":2,"137":2,"138":2,"139":2,"140":2,"141":3,"142":2,"143":2,"144":2,"145":2,"146":2,"147":2,"148":3,"149":2,"151":2,"152":2,"153":3,"154":3,"155":2,"156":2,"157":2,"158":2,"159":2,"161":2,"162":2,"165":5,"166":1,"167":1,"169":1},"4":{"39":1,"40":1}}],["gen",{"0":{"47":1},"1":{"47":1},"2":{"47":1,"128":1,"130":1,"137":1},"4":{"47":1}}],["genetic",{"0":{"38":1},"1":{"38":1},"2":{"38":1,"133":1},"4":{"38":1}}],["google",{"2":{"166":1}}],["godot",{"0":{"42":1},"1":{"42":1},"2":{"42":1,"170":1,"172":1},"4":{"42":1}}],["go",{"0":{"41":1},"1":{"41":1},"2":{"41":1,"134":1,"165":1},"4":{"41":1}}],["gdb",{"0":{"37":1},"1":{"37":1},"2":{"37":1,"129":1},"4":{"37":1}}],["favicon",{"0":{"198":1},"1":{"198":1}}],["factor",{"0":{"109":1},"1":{"109":1},"2":{"109":1,"167":1},"4":{"109":1}}],["fonts",{"0":{"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1}}],["folder",{"2":{"134":1}}],["flip",{"2":{"161":2}}],["flipanalytica",{"0":{"161":1},"1":{"161":1},"2":{"161":1,"164":1},"4":{"161":1}}],["fundamentals",{"2":{"142":1}}],["fullstack",{"0":{"33":1},"1":{"33":1},"2":{"33":1,"141":1,"146":1,"156":1},"4":{"33":1}}],["fyp",{"2":{"134":1}}],["file",{"0":{"190":1},"1":{"190":1}}],["finalist",{"0":{"129":1},"1":{"129":1},"2":{"129":1,"131":1},"4":{"129":1}}],["firefox",{"0":{"31":1},"1":{"31":1},"2":{"31":1,"166":3},"4":{"31":1}}],["frontend",{"0":{"32":1},"1":{"32":1},"2":{"32":1,"126":1,"141":1,"146":1,"150":1,"156":1,"165":1},"4":{"32":1}}],["framework",{"0":{"26":1},"1":{"26":1},"2":{"26":1,"167":1},"4":{"26":1}}],["dracula",{"0":{"148":1,"153":1},"1":{"148":1,"153":1},"2":{"148":2,"153":2,"157":2},"4":{"148":1,"153":1}}],["dumpmon",{"0":{"120":1},"1":{"120":1},"2":{"120":2,"122":1},"4":{"120":1}}],["dsa",{"0":{"29":1,"139":1},"1":{"29":1,"139":1},"2":{"29":1,"134":1,"135":1,"136":1,"139":4,"143":1,"144":1,"169":1},"4":{"29":1,"139":1}}],["downloader",{"0":{"146":1},"1":{"146":1},"2":{"146":2,"157":1},"4":{"146":1}}],["dotfiles",{"2":{"151":1}}],["dot",{"2":{"123":1,"126":1,"127":1,"128":1,"130":1,"133":1,"134":5,"135":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"155":1,"156":1,"157":2,"158":1,"159":1,"162":1,"165":2}}],["domain",{"0":{"28":1},"1":{"28":1},"2":{"28":1,"150":1,"158":1,"162":1,"163":1},"4":{"28":1}}],["docker",{"0":{"27":1},"1":{"27":1},"2":{"27":1,"150":1,"152":1,"156":1},"4":{"27":1}}],["django",{"0":{"25":1,"26":1},"1":{"25":1,"26":1},"2":{"25":1,"26":1,"141":1,"167":2,"169":1},"4":{"25":1,"26":1}}],["discovery",{"0":{"129":1},"1":{"129":1},"2":{"129":2,"131":1},"4":{"129":1}}],["discord",{"0":{"24":1},"1":{"24":1},"2":{"24":1,"128":1},"4":{"24":1}}],["diff",{"0":{"59":1},"1":{"59":1},"2":{"59":1,"169":1},"4":{"59":1}}],["diffing",{"0":{"23":1},"1":{"23":1},"2":{"23":1,"169":1},"4":{"23":1}}],["detail",{"2":{"166":1}}],["dead",{"2":{"150":1}}],["debugging",{"0":{"55":1},"1":{"55":1},"2":{"55":1,"129":1},"4":{"55":1}}],["devpost",{"2":{"161":2}}],["dev",{"0":{"35":1},"1":{"35":1},"2":{"35":1,"135":1,"143":1,"149":1,"161":1,"168":1,"170":1,"172":1},"4":{"35":1}}],["devops",{"0":{"22":1},"1":{"22":1},"2":{"22":1,"141":1,"166":1,"167":1,"169":2},"4":{"22":1}}],["decryption",{"0":{"21":1},"1":{"21":1},"2":{"21":1,"129":1},"4":{"21":1}}],["design",{"0":{"13":1,"34":1,"53":1,"138":1},"1":{"13":1,"34":1,"53":1,"138":1},"2":{"13":1,"34":1,"53":1,"134":1,"138":1,"170":2,"172":2},"4":{"13":1,"34":1,"53":1,"138":1}}],["databases",{"2":{"138":1}}],["database",{"0":{"138":1},"1":{"138":1},"2":{"134":1,"138":1},"4":{"138":1}}],["data",{"0":{"19":1,"20":1,"199":1},"1":{"19":1,"20":1,"199":1},"2":{"19":1,"20":1,"139":2,"140":2,"162":1},"4":{"19":1,"20":1}}],["cbe0ae49c52c920fd563",{"0":{"182":1},"1":{"182":1}}],["cb10ffd7684cd9836a05",{"0":{"180":1},"1":{"180":1}}],["c8ba52b05a9ef10f4758",{"0":{"179":1},"1":{"179":1}}],["cpjbhiflomjghkkhedimgpniomoijpjd",{"2":{"166":1}}],["c3er",{"2":{"154":1}}],["custom",{"2":{"150":1}}],["clicker",{"0":{"147":1},"1":{"147":1},"2":{"147":2,"157":1},"4":{"147":1}}],["cluedo",{"2":{"134":1,"136":1}}],["clue",{"0":{"136":1},"1":{"136":1},"2":{"134":2,"136":2},"4":{"136":1}}],["cls",{"2":{"127":1}}],["cyber",{"0":{"129":1},"1":{"129":1},"2":{"129":2,"131":1},"4":{"129":1}}],["cybersecurity",{"0":{"18":1},"1":{"18":1},"2":{"18":1,"120":1,"123":1,"129":1,"140":1,"141":1,"158":1,"167":1},"4":{"18":1}}],["cals",{"0":{"127":1},"1":{"127":1},"2":{"125":1,"127":1},"4":{"127":1}}],["capture",{"0":{"60":1},"1":{"60":1},"2":{"60":1,"166":1},"4":{"60":1}}],["co",{"2":{"167":1,"169":1}}],["codes",{"0":{"156":1},"1":{"156":1},"2":{"150":5,"156":3,"157":2},"4":{"156":1}}],["college",{"0":{"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":2},"1":{"132":1},"2":{"132":3,"174":1},"4":{"132":1}}],["computer",{"0":{"137":1},"1":{"137":1},"2":{"134":1,"137":2},"4":{"137":1}}],["com",{"2":{"120":1,"121":1,"123":1,"126":1,"127":1,"128":1,"129":1,"130":1,"133":1,"134":6,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":2,"158":1,"159":1,"161":2,"162":1,"165":2,"166":1,"168":1}}],["contributer",{"2":{"157":1}}],["contributor",{"0":{"40":1},"1":{"40":1},"2":{"40":1,"148":1,"154":1},"4":{"40":1}}],["config",{"0":{"151":1,"155":1},"1":{"151":1,"155":1},"2":{"151":1,"155":1,"157":2},"4":{"151":1,"155":1}}],["concatbot",{"0":{"128":1},"1":{"128":1},"2":{"128":2,"131":1},"4":{"128":1}}],["concurrency",{"0":{"16":1},"1":{"16":1},"2":{"16":1,"121":1,"127":1,"128":1},"4":{"16":1}}],["css",{"0":{"17":1,"200":1,"201":1,"202":1,"203":1},"1":{"17":1},"2":{"17":1,"126":1,"141":1,"145":1,"148":1,"153":2,"154":1,"156":1,"158":1,"162":1,"168":1,"169":1},"4":{"17":1}}],["cicd",{"0":{"15":1},"1":{"15":1},"2":{"15":1,"141":1,"165":1,"167":1,"169":1},"4":{"15":1}}],["changewatch",{"0":{"169":1},"1":{"169":1},"2":{"169":2,"171":1},"4":{"169":1}}],["challenge",{"0":{"129":1},"1":{"129":1},"2":{"129":2,"131":1},"4":{"129":1}}],["character",{"0":{"13":1},"1":{"13":1},"2":{"13":1,"172":1},"4":{"13":1}}],["checkers",{"0":{"135":1},"1":{"135":1},"2":{"134":2,"135":2},"4":{"135":1}}],["checker",{"2":{"120":1}}],["chromewebstore",{"2":{"166":1}}],["chrome",{"0":{"14":1},"1":{"14":1},"2":{"14":1,"166":2},"4":{"14":1}}],["en",{"2":{"166":1}}],["engineering",{"0":{"89":1,"97":1,"144":1},"1":{"89":1,"97":1,"144":1},"2":{"89":1,"97":1,"127":1,"129":1,"134":2,"136":2,"138":1,"143":1,"144":1,"146":1,"159":1,"166":2,"167":1,"169":1},"4":{"89":1,"97":1,"144":1}}],["element",{"2":{"150":1}}],["etc",{"2":{"134":1}}],["everything",{"2":{"134":1}}],["evaluation",{"2":{"134":1,"141":1}}],["evaluations",{"0":{"141":1},"1":{"141":1},"2":{"134":1,"141":1},"4":{"141":1}}],["express",{"0":{"30":1},"1":{"30":1},"2":{"30":1,"146":1,"156":1},"4":{"30":1}}],["extensions",{"0":{"166":1},"1":{"166":1},"2":{"166":1,"171":1},"4":{"166":1}}],["extension",{"0":{"12":1,"14":1,"31":1},"1":{"12":1,"14":1,"31":1},"2":{"12":1,"14":1,"31":1,"166":4},"4":{"12":1,"14":1,"31":1}}],["email",{"0":{"5":1},"1":{"5":1},"2":{"5":1,"167":1},"4":{"5":1}}],["b5f0f109bc88052d4000",{"0":{"181":1},"1":{"181":1}}],["bizarrepg",{"0":{"168":1},"1":{"168":1},"2":{"168":1,"171":1},"4":{"168":1}}],["behaviour",{"2":{"133":1}}],["blog",{"2":{"150":1}}],["blaseball",{"0":{"147":1},"1":{"147":1},"2":{"147":2,"157":1},"4":{"147":1}}],["blankface",{"2":{"120":1,"121":1,"129":1}}],["blender",{"0":{"8":1},"1":{"8":1},"2":{"8":1,"145":1},"4":{"8":1}}],["browser",{"0":{"11":1,"12":1},"1":{"11":1,"12":1},"2":{"11":1,"12":1,"147":1,"165":2,"166":1,"169":1},"4":{"11":1,"12":1}}],["bouncetechnologies",{"2":{"170":1}}],["bot",{"0":{"10":1,"96":1,"121":1},"1":{"10":1,"96":1,"121":1},"2":{"10":1,"96":1,"121":3,"122":1,"128":1,"167":2},"4":{"10":1,"96":1,"121":1}}],["bootstrap",{"0":{"9":1},"1":{"9":1},"2":{"9":1,"145":1,"146":1},"4":{"9":1}}],["bandcamp",{"0":{"146":1},"1":{"146":1},"2":{"146":2,"157":1},"4":{"146":1}}],["badge",{"2":{"129":1}}],["bash",{"0":{"7":1},"1":{"7":1},"2":{"7":1,"123":1,"167":1,"168":1},"4":{"7":1}}],["backend",{"0":{"6":1},"1":{"6":1},"2":{"6":1,"141":1,"146":1,"156":1,"165":1},"4":{"6":1}}],["analytica",{"2":{"161":2}}],["antique",{"0":{"141":1},"1":{"141":1},"2":{"134":2,"141":2},"4":{"141":1}}],["assignment",{"2":{"134":1,"139":1,"145":1}}],["assignments",{"0":{"125":2,"126":1,"127":1,"133":1,"134":2,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"1":{"125":1,"134":1},"2":{"125":1,"132":2,"134":1,"160":1},"4":{"125":1,"134":1}}],["addon",{"2":{"166":1}}],["addons",{"2":{"166":1}}],["adaptive",{"2":{"133":1}}],["admin",{"0":{"0":1},"1":{"0":1},"2":{"0":1,"150":1,"158":1,"163":1,"167":1,"169":1},"4":{"0":1}}],["acquired",{"2":{"133":2}}],["actions",{"0":{"39":1},"1":{"39":1},"2":{"39":1,"141":1,"165":1,"166":1,"167":1,"169":1},"4":{"39":1}}],["aurora",{"2":{"123":1,"126":1,"127":1,"128":1,"130":1,"133":1,"134":5,"135":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"155":1,"156":1,"157":2,"158":1,"159":1,"162":1,"165":2}}],["auth",{"0":{"109":1},"1":{"109":1},"2":{"109":1,"167":1},"4":{"109":1}}],["automation",{"0":{"11":1},"1":{"11":1},"2":{"11":1,"147":1,"165":1,"169":1},"4":{"11":1}}],["automated",{"0":{"5":1},"1":{"5":1},"2":{"5":1,"167":1},"4":{"5":1}}],["algo",{"0":{"59":1},"1":{"59":1},"2":{"59":1,"169":1},"4":{"59":1}}],["algorithms",{"2":{"139":1}}],["algorithm",{"0":{"38":1},"1":{"38":1},"2":{"38":1,"133":1},"4":{"38":1}}],["art",{"0":{"4":1},"1":{"4":1},"2":{"4":1,"170":1,"172":1},"4":{"4":1}}],["application",{"0":{"3":1},"1":{"3":1},"2":{"3":1,"135":1,"143":1,"149":1},"4":{"3":1}}],["api",{"0":{"2":1},"1":{"2":1},"2":{"2":1,"128":1,"130":1,"140":2,"152":1,"156":1,"165":1,"166":1,"167":1,"169":1},"4":{"2":1}}],["aiab",{"0":{"133":1},"1":{"133":1},"2":{"133":2,"134":1},"4":{"133":1}}],["ai",{"0":{"1":1},"1":{"1":1},"2":{"1":1,"133":1,"135":1,"137":1},"4":{"1":1}}]],"serializationVersion":2} \ No newline at end of file diff --git a/obsidian/lib/styles/global-variable-styles.css b/obsidian/lib/styles/global-variable-styles.css new file mode 100644 index 0000000..c017093 --- /dev/null +++ b/obsidian/lib/styles/global-variable-styles.css @@ -0,0 +1 @@ +:root body{--line-width:min(40em, calc(100vw - 2em));--line-width-adaptive:min(40em, calc(100vw - 2em));--file-line-width:min(40em, calc(100vw - 2em));--sidebar-width:min(20em, 80vw)}body{--zoom-factor:1!important;--font-text-size:16px} \ No newline at end of file diff --git a/obsidian/lib/styles/main-styles.css b/obsidian/lib/styles/main-styles.css new file mode 100644 index 0000000..b10711c --- /dev/null +++ b/obsidian/lib/styles/main-styles.css @@ -0,0 +1 @@ +body{--color-fade-speed:0.2s}.tree-container{position:relative;height:100%;width:auto;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-block:1em;white-space:nowrap}.tree-container:has(.tree-scroll-area:empty){display:none}body .webpage-container .tree-container .tree-scroll-area{width:100%;height:100%;max-height:100%;overflow-y:auto;border-radius:0;position:absolute;margin:0;background-color:transparent}.tree-container .tree-item{display:flex;flex-direction:column;align-items:flex-start;padding:0;padding-block:1px;overflow:hidden!important;flex:none}.tree-container .tree-item-children{padding:0;margin:0;border-left:none;width:100%}.tree-item-title>*{padding:0;margin:0;overflow:hidden;display:inline;text-overflow:ellipsis}.tree-container .tree-item-icon *{color:var(--text-muted);font-family:emoji}.tree-container .tree-item-icon :is(svg,img){-webkit-mask-image-repeat:no-repeat;-webkit-mask-image-position:center;max-width:1.3em;height:100%}.tree-container .tree-item-icon :has(svg){display:contents!important}.tree-container .tree-item-icon{min-width:1.6em;max-width:1.6em;margin-left:2px;display:flex;align-items:center;justify-content:flex-start}.tree-container .tree-item.mod-active>.tree-link>.tree-item-contents{color:var(--interactive-accent)}.tree-container .tree-link{position:relative;display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;border-radius:var(--radius-s);color:var(--nav-item-color);text-decoration-line:none;width:-webkit-fill-available;width:-moz-available;width:fill-available;margin-left:var(--tree-horizontal-spacing)}.tree-container .tree-link:active{color:var(--nav-item-color-active)}.tree-container .tree-item-contents{width:100%;height:100%;margin:0!important;padding:0!important;font-size:unset!important;padding-left:calc(var(--tree-horizontal-spacing) * 2 + var(--collapse-arrow-size))!important;border-radius:var(--radius-s);display:flex!important;flex-direction:row!important;align-items:center!important;color:var(--nav-item-color);transition:background-color .1s}.tree-container .tree-item-title{overflow:hidden;text-overflow:ellipsis!important;text-wrap:nowrap!important;white-space:nowrap!important;position:relative!important;border:none!important;width:100%;width:-webkit-fill-available;width:-moz-available;width:fill-available;background-color:transparent!important;padding-top:calc(var(--tree-vertical-spacing)/ 2)!important;padding-bottom:calc(var(--tree-vertical-spacing)/ 2)!important;margin:0!important;left:0!important;right:0!important;top:0!important;bottom:0!important}.tree-container .tree-item-title::after{right:0;position:absolute!important;margin-right:.5em!important}.tree-container .mod-tree-folder:not(:has(.mod-tree-folder)) .mod-tree-file>.tree-link>.tree-item-contents{padding-left:calc(var(--tree-horizontal-spacing) * 2)!important}.tree-container .collapse-icon{translate:calc(0px - var(--collapse-arrow-size) - var(--tree-horizontal-spacing) * 2) 0;position:absolute;height:100%;padding:var(--tree-horizontal-spacing)}.tree-container .tree-item.mod-tree-folder>.tree-link>.collapse-icon{width:100%}.collapse-icon:hover{color:var(--nav-item-color-hover)}.tree-container .clickable-icon{width:3.2em;height:2.2em}.tree-container .tree-item.is-collapsed>.tree-link>.tree-item-contents>.collapse-icon>svg{transition:transform .1s ease-in-out;transform:rotate(-90deg)}.tree-container .tree-item-contents:hover{color:var(--nav-item-color-hover)}.filtered-out{display:none!important}.tree-container>.tree-scroll-area>* .tree-item{margin-left:calc(var(--tree-horizontal-spacing) * 2 + var(--collapse-arrow-size)/ 2)}.tree-container>.tree-scroll-area>* .tree-item{border-left:var(--nav-indentation-guide-width) solid var(--nav-indentation-guide-color)}.tree-container .tree-scroll-area>*>*>.tree-item{margin-left:calc(var(--tree-horizontal-spacing) + var(--collapse-arrow-size)/ 2)}.tree-container:not(.mod-nav-indicator) .tree-scroll-area .tree-item{border-color:transparent!important}.tree-container .tree-item.mod-active{border-color:var(--interactive-accent)!important;box-shadow:2px 0 0 0 var(--interactive-accent) inset;transition:box-shadow .4s ease-in-out}.tree-container .tree-item:hover:not(.mod-active):not(.mod-collapsible):not(:has(.tree-item:hover)):not(.mod-root > * > *){border-left:var(--nav-indentation-guide-width) solid var(--nav-item-color-hover)}.tree-container .mod-active>.tree-link,.tree-container .tree-link:hover{background-color:var(--nav-item-background-hover);cursor:pointer}.webpage-container .tree-container .tree-item:not(.mod-collapsible)>.tree-item-children>.tree-item>.tree-link,.webpage-container .tree-container>.tree-scroll-area>.tree-item>.tree-link{margin-left:0!important}.tree-container.outline-tree .tree-item[data-depth='1']>.tree-link>.tree-item-contents{font-weight:900;font-size:1.1em;margin-left:0;padding-left:1em}.nav-folder.mod-root .nav-folder>.nav-folder-children{padding:0!important;margin:0!important;border:none!important}.nav-file{border-radius:0!important}.nav-folder.mod-root .nav-folder>.nav-folder-children{border-radius:var(--radius-s)!important}.webpage-container .nav-file-tag{margin-right:1em}.nav-file-title-content,.nav-folder-title-content{margin-bottom:unset!important;display:unset!important;border-radius:unset!important;cursor:unset!important;font-size:unset!important;font-weight:unset!important;line-height:unset!important;padding:unset!important}#webpage-icon :is(svg,img){width:100%;height:100%;box-shadow:none!important;border:none!important;border-radius:0!important;stroke:currentColor}#webpage-icon :has(:is(svg,img)){display:contents!important}#webpage-icon:has(:is(svg,img)){font-size:40px;width:40px;height:40px}#webpage-icon{font-size:40px;margin-bottom:8px;font-family:emoji;width:fit-content}body.show-inline-title .page-title{font-weight:var(--inline-title-weight);font-size:var(--inline-title-size);font-style:var(--inline-title-style);font-variant:var(--inline-title-variant);font-family:var(--inline-title-font);letter-spacing:-.015em;color:var(--inline-title-color)}.heading{position:relative}.heading-wrapper.is-collapsed>.heading::after{content:"..."!important;display:inline-block!important;position:absolute!important;margin:0!important;padding:0!important;margin-left:.3em!important;color:var(--text-muted)}.heading-wrapper{transition:height ease-in-out,margin-bottom ease-in-out;transition-duration:.2s;display:flex;flex-direction:column;position:relative}html>body>.webpage-container>.document-container>.markdown-preview-view>.markdown-preview-sizer>div{margin-inline:0!important;margin:0!important;padding:0!important;width:100%;max-width:100%}.markdown-rendered .heading-wrapper:has(> .heading-children > div:last-child > :is(p,pre,table,ul,ol))+.heading-wrapper>.heading:first-child{margin-top:var(--heading-spacing)}.heading-children{transition:height ease-in-out,margin-bottom ease-in-out;transition-duration:.2s;display:flow;position:relative;contain:inline-size}.heading-children.is-collapsed{padding-top:0}.heading-wrapper.is-animating>.heading-children,.heading-wrapper.is-collapsed>.heading-children{overflow:hidden;overflow:clip}.heading-wrapper>.heading>.heading-after{display:none}.heading-wrapper.is-collapsed>.heading>.heading-after{display:inline-block;margin-left:.3em;opacity:.4;font-size:1em;cursor:auto;user-select:none}.heading-wrapper.is-hidden>*{display:none}.heading-wrapper.is-hidden{visibility:hidden}.collapse-icon:not(.list-collapse-indicator) svg.svg-icon{color:var(--nav-collapse-icon-color);width:var(--collapse-arrow-size);height:var(--collapse-arrow-size);transition:transform .1s ease-in-out 0s;stroke-width:4px;min-width:10px;min-height:10px}div.is-collapsed>*>.heading-collapse-indicator.collapse-icon>svg{transition:transform .1s ease-in-out;transform:rotate(-90deg)}.heading-wrapper .heading-collapse-indicator{opacity:0;transition:opacity .15s ease-in-out;position:absolute;z-index:1;padding:0!important;padding-left:40px!important;padding-right:40px!important;left:-40px!important}.heading-wrapper .heading-collapse-indicator:hover,.heading:hover>.heading-collapse-indicator{opacity:1}.heading-wrapper-span{position:absolute;width:200vw;height:calc(100% + var(--p-spacing) * 2);top:calc(0px - var(--p-spacing));left:-100vw;z-index:-1}.markdown-embed .markdown-embed-content .markdown-preview-view .heading-wrapper-span{width:100%}.theme-toggle-container{--toggle-width:3.5em;--toggle-height:1.75em;--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}.clickable-icon,.sidebar-section-header{transition:color var(--color-fade-speed) ease-in-out}@keyframes toggle-slide-right{0%{width:var(--handle-width);transform:translateX(0)}50%{width:calc(var(--toggle-width) * .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) * .33) - var(--handle-width))))}70%{width:calc(var(--toggle-width) * .5)}100%{width:var(--handle-width);transform:translateX(0)}}@keyframes toggle-expand-right{0%{width:var(--handle-width)}100%{width:calc(var(--toggle-width) * .33)}}@keyframes toggle-expand-left{0%{width:var(--handle-width);transform:translateX(var(--handle-translation))}100%{width:calc(var(--toggle-width) * .33);transform:translateX(calc(var(--handle-translation) - ((var(--toggle-width) * .33) - var(--handle-width))))}}@keyframes toggle-contract{0%{width:calc(var(--toggle-width) * .33)}100%{width:var(--handle-width)}}.theme-toggle-input{display:none;z-index:1000}.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 var(--color-fade-speed);z-index:1000;animation-duration:.2s}.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,.2);animation:toggle-slide-left ease-in-out normal both;animation-duration:inherit;z-index:1000}.theme-toggle-input:checked~.toggle-background::before{animation:toggle-slide-right ease-in-out normal both;animation-duration:inherit}.theme-toggle-input:active~.toggle-background::before{animation:toggle-expand-right ease-in-out normal both;animation-duration:inherit}.theme-toggle-input:active:checked~.toggle-background::before{animation:toggle-expand-left ease-in-out normal both;animation-duration:inherit}.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 .3s;background:url('data:image/svg+xml,') no-repeat center center;transform:scale(.9)}.theme-toggle-input:checked~.toggle-background::after{transform:translateX(calc(var(--handle-translation) * -1)) scale(.9);background:url('data:image/svg+xml,') no-repeat center center}.graph-view-wrapper{--graph-view-max-height:35vh}#graph-canvas{width:100%;height:100%;aspect-ratio:1;transition:opacity .2s ease-in-out}.graph-view-container.expanded{position:fixed;width:90%;height:90%;max-height:unset;right:5%;top:5%;background-color:var(--background-secondary);z-index:100}body:is(.is-phone,.is-tablet) .graph-view-container.expanded{width:95%;height:95%;right:2.5%;top:2.5%}.graph-view-container{position:relative;width:100%;aspect-ratio:1;max-height:var(--graph-view-max-height);display:flex;transition:background-color var(--color-fade-speed) ease-in-out;touch-action:none;border:1px solid var(--modal-border-color);border-radius:var(--modal-radius);overflow:hidden}.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;transition:outline-color,background-color;transition-timing-function:ease-in-out;transition-duration:var(--color-fade-speed)}.graph-view-placeholder{padding:0;width:100%;aspect-ratio:1;max-height:var(--graph-view-max-height);position:relative;flex:none}.graph-view-placeholder:has(.expanded){border-radius:var(--modal-radius);border:1px solid var(--modal-border-color)}.scale-down{transition:transform .2s ease-in-out;transform:scale(.9)}.scale-up{transition:transform .2s ease-in-out;transform:scale(1)}.graph-expand{position:absolute;top:5px;right:5px}body :is(.canvas-node-container,.canvas-wrapper){cursor:unset!important}.canvas{translate:0 0;scale:1 1;will-change:translate,scale}.canvas-controls{display:none;cursor:default!important}.canvas-card-menu{display:none;cursor:default!important}.canvas-node-content-blocker{pointer-events:none}body.is-phone .sidebar{font-size:1.15em;--tree-vertical-spacing:0.9em;--sidebar-width:85vw!important}body.is-phone{--collapse-arrow-size:13px;--tree-vertical-spacing:0.8em;--tree-horizontal-spacing:0.5em}body.is-phone .heading-wrapper .heading-collapse-indicator{transition:transform .2s ease-in-out .2s}.loading-icon{--width:80px;--height:80px;display:inline-block;position:fixed;left:calc(50% - var(--width)/ 2);top:calc(50% - var(--height)/ 2);width:var(--width);height:var(--height);opacity:0;transition:opacity .5s ease-in-out;pointer-events:none}.loading-icon.show{opacity:1}.loading-icon div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:var(--interactive-accent);animation-timing-function:cubic-bezier(0,1,1,0)}.loading-icon div:first-child{left:8px;animation:lds-ellipsis1 .6s infinite}.loading-icon div:nth-child(2){left:8px;animation:lds-ellipsis2 .6s infinite}.loading-icon div:nth-child(3){left:32px;animation:lds-ellipsis2 .6s infinite}.loading-icon div:nth-child(4){left:56px;animation:lds-ellipsis3 .6s infinite}.loading-icon:not(.show) div{animation-play-state:paused}@keyframes lds-ellipsis1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes lds-ellipsis2{0%{transform:translate(0,0)}100%{transform:translate(24px,0)}}@media print{body .webpage-container .document-container *{overflow:visible!important;overflow-y:visible!important;overflow-x:visible!important}html body.publish :is(.sidebar,script,style,include){display:none!important}:root,html body.publish>:is(.webpage-container,.document-container,.markdown-preview-view):not(script,style,include){display:contents!important}:root,html body.publish .document-container>.markdown-preview-view{background-color:transparent!important}body{display:inline!important;background:var(--background-primary)}.document-container>.markdown-preview-view>.markdown-preview-sizer{padding:0!important;margin:0!important;padding:var(--file-margins)!important;padding-bottom:0!important}html body.publish :is(.document-container,.markdown-preview-view){margin:0!important;padding:0!important}}.tree-hint-label{font-size:var(--font-smallest);color:var(--text-accent);width:100%;width:-webkit-fill-available;width:-moz-available;width:fill-available;white-space:pre-wrap;text-decoration-line:none}.tree-hint-label:hover{text-decoration-line:underline}.tree-hint-container{width:100%;padding-left:calc(var(--tree-horizontal-spacing) * 2 + var(--collapse-arrow-size));padding-bottom:calc(var(--tree-vertical-spacing)/ 2);display:flex;flex-direction:column}.tree-container .mod-tree-folder:not(:has(.mod-tree-folder)) .mod-tree-file>.tree-link>.tree-hint-container{padding-left:calc(var(--tree-horizontal-spacing) * 2)}.tree-item-contents:has(.tree-item-icon)+.tree-hint-container{margin-left:calc(1.6em + 2px)}a.tree-hint-label:hover{text-decoration-line:underline}.search-mark{margin:0!important;padding:0!important;scroll-margin:2em!important}.search-input-container:has(+ #search-results)>input[type=search]{border-bottom-left-radius:0;border-bottom-right-radius:0}input[type=search]{box-shadow:none!important;height:2.5em;font-size:1em;transition:background,background-color,border;transition-duration:var(--color-fade-speed);transition-timing-function:ease-in-out}.search-input-container{width:100%!important}.search-input-container::before{mask-image:url("data:image/svg+xml,");mask-repeat:no-repeat;top:50%;transform:translateY(-50%)}.sidebar .sidebar-handle:hover~.sidebar-content,.sidebar.is-resizing .sidebar-content{box-shadow:0 0 0 var(--divider-width-hover) var(--divider-color-hover)}.sidebar-handle{width:min(max(calc(var(--sidebar-margin)/ 2),3px),12px);height:calc(100vh - 2 * var(--radius-l));margin-top:var(--radius-l);margin-bottom:var(--radius-l);top:0;position:absolute;cursor:ew-resize;z-index:1;transition:background-color .2s ease-in-out}.sidebar-left .sidebar-handle{right:0}.sidebar-right .sidebar-handle{left:0}.nav-folder-children .nav-folder-title-content::before{margin-right:.5em}.tree-item::before{margin-left:calc(var(--tree-horizontal-spacing) - .3em)}.tree-item-contents:has(.tree-item-icon) .tree-item-title::before,.tree-item-contents:has(.tree-item-icon)::before,.tree-item:has(.tree-item-contents > .tree-item-icon)::before{display:none!important}.anp-simple-rainbow-color-toggle.anp-simple-rainbow-indentation-toggle .tree-container.file-tree .tree-item{border-color:rgba(var(--rainbow-folder-color),.5)}.anp-collapse-folders .tree-container .tree-item .collapse-icon{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 24' fill='none' stroke='currentColor' stroke-linejoin='round' stroke-linecap='round' stroke-width='2'%3E%3Cpath d='M6 14l1.45-2.9A2 2 0 0 1 9.24 10H22a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H20a2 2 0 0 1 2 2v2'/%3E%3C/svg%3E%0A");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 24' fill='none' stroke='currentColor' stroke-linejoin='round' stroke-linecap='round' stroke-width='2'%3E%3Cpath d='M6 14l1.45-2.9A2 2 0 0 1 9.24 10H22a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H20a2 2 0 0 1 2 2v2'/%3E%3C/svg%3E%0A");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:currentColor;display:flex;flex-basis:100%;height:16px;width:17px}.anp-collapse-folders .tree-container .tree-item.is-collapsed .collapse-icon{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 24' fill='none' stroke='currentColor' stroke-linejoin='round' stroke-linecap='round' stroke-width='2'%3E%3Cpath d='M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2z'/%3E%3Cpath d='M2 10h20' /%3E%3C/svg%3E%0A");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 24' fill='none' stroke='currentColor' stroke-linejoin='round' stroke-linecap='round' stroke-width='2'%3E%3Cpath d='M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2z'/%3E%3Cpath d='M2 10h20' /%3E%3C/svg%3E%0A")}.anp-file-icons .nav-file .nav-file-title::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z'/%3E%3Cpath d='M14 2v6h6'/%3E%3C/svg%3E%0A");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z'/%3E%3Cpath d='M14 2v6h6'/%3E%3C/svg%3E%0A");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:currentColor;content:"";display:flex;flex-shrink:0;height:var(--size-4-4);margin-left:calc(-1 * var(--size-4-5));opacity:var(--icon-opacity);position:absolute;width:var(--size-4-4)}.anp-collapse-folders .tree-container .tree-item .collapse-icon:hover{color:currentColor}.anp-collapse-folders .tree-container .tree-item .collapse-icon svg{display:none}.document-container .kanban-plugin{position:absolute;padding:0;margin:0;height:100%}.document-container .kanban-plugin{font-family:var(--font-text, var(--default-font));font-size:.875rem;line-height:var(--line-height-tight);width:unset;overflow-y:unset;overflow-wrap:unset;color:unset;user-select:unset;-webkit-user-select:unset}.document-container .kanban-plugin__item-button-wrapper,.kanban-plugin__item-postfix-button.clickable-icon,.kanban-plugin__lane-grip,.kanban-plugin__lane-settings-button.clickable-icon{display:none}.excalidraw-plugin rect,.excalidraw-svg rect{fill:transparent}body.theme-dark .excalidraw-plugin svg.dark,body.theme-dark .excalidraw-svg svg.dark,body.theme-light .excalidraw-plugin svg.light,body.theme-light .excalidraw-svg svg.light{filter:invert(93%) hue-rotate(180deg)}.excalidraw-plugin>svg{width:100%;height:100%}.excalidraw-plugin{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;width:100%;padding:10px}.columnParent{display:flex;padding:15px 20px;flex-wrap:wrap;gap:20px}.columnParent{white-space:normal}.columnChild{flex-grow:1;flex-basis:0px}.obsidian-banner .lock-button{display:none}.markdown-preview-view:has(.obsidian-banner-wrapper){padding-top:0!important}.view-content:has(.mm-mindmap){overflow-y:none}.view-content .mm-mindmap{transform:scale(1);translate:-4000px -4000px;top:70%;left:50%;position:absolute;overflow:hidden;width:100vw} \ No newline at end of file diff --git a/obsidian/lib/styles/obsidian.css b/obsidian/lib/styles/obsidian.css new file mode 100644 index 0000000..7b973ff --- /dev/null +++ b/obsidian/lib/styles/obsidian.css @@ -0,0 +1 @@ +:root{--highlight-bg-color:rgba(180, 0, 170, 1);--highlight-selected-bg-color:rgba(0, 100, 0, 1)}: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;--link-outline:none}:root{--xfa-unfocused-field-background:url("data:image/svg+xml; charset=UTF-8,");--xfa-focus-outline:auto}:root{--viewer-container-height:0;--pdfViewer-padding-bottom:0;--page-margin:1px auto -8px;--page-border:9px solid transparent;--spreadHorizontalWrapped-margin-LR:-3.5px;--loading-icon-delay:400ms}[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%)}.hiddenCopyElement{position:absolute;top:0;left:0;width:0;height:0;display:none}.spread{margin-left:3.5px;margin-right:3.5px;text-align:center}.spread{white-space:nowrap}.spread .dummyPage,.spread .page{display:inline-block;vertical-align:middle}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-orange-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);--checkbox-margin-inline-start:0.85em;--checklist-done-decoration:line-through;--checklist-done-color:var(--text-muted);--code-white-space:pre-wrap;--code-radius:var(--radius-s);--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);--heading-spacing:calc(var(--p-spacing) * 2.5);--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:1.802em;--h2-size:1.602em;--h3-size:1.424em;--h4-size:1.266em;--h5-size:1.125em;--h6-size:1em;--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-width-active:1px;--indentation-guide-color:rgba(var(--mono-rgb-100), 0.12);--indentation-guide-color-active:rgba(var(--mono-rgb-100), 0.3);--indentation-guide-editing-indent:0.85em;--indentation-guide-reading-indent:-0.85em;--indentation-guide-source-indent:0.25em;--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:2.25em;--list-indent-editing:0.75em;--list-indent-source:0;--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);--nav-heading-color:var(--text-normal);--nav-heading-color-hover:var(--text-normal);--nav-heading-color-collapsed:var(--text-faint);--nav-heading-color-collapsed-hover:var(--text-muted);--nav-heading-weight:var(--font-medium);--nav-heading-weight-hover:var(--font-medium);--metadata-background:transparent;--metadata-display-reading:block;--metadata-display-editing:block;--metadata-max-width:none;--metadata-padding:var(--size-4-2) 0;--metadata-border-color:var(--background-modifier-border);--metadata-border-radius:0;--metadata-border-width:0;--metadata-divider-color:var(--background-modifier-border);--metadata-divider-color-hover:transparent;--metadata-divider-color-focus:transparent;--metadata-divider-width:0;--metadata-gap:3px;--metadata-property-padding:0;--metadata-property-radius:6px;--metadata-property-background:transparent;--metadata-property-background-hover:transparent;--metadata-property-background-active:var(--background-modifier-hover);--metadata-label-background-hover:transparent;--metadata-label-background-active:var(--background-modifier-hover);--metadata-label-font-size:var(--font-smaller);--metadata-label-font-weight:inherit;--metadata-label-text-color:var(--text-muted);--metadata-label-text-color-hover:var(--text-muted);--metadata-label-width:9em;--metadata-input-height:calc(var(--font-text-size) * 1.75);--metadata-input-text-color:var(--text-normal);--metadata-input-font-size:var(--font-smaller);--metadata-input-background:transparent;--metadata-input-background-hover:transparent;--metadata-input-background-active:var(--background-modifier-hover);--metadata-sidebar-label-font-size:var(--font-ui-small);--metadata-sidebar-input-font-size:var(--font-ui-small);--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;--pill-color:var(--text-muted);--pill-color-hover:var(--text-normal);--pill-color-remove:var(--text-faint);--pill-color-remove-hover:var(--text-accent);--pill-decoration:none;--pill-decoration-hover:none;--pill-background:transparent;--pill-background-hover:transparent;--pill-border-color:var(--background-modifier-border);--pill-border-color-hover:var(--background-modifier-border-hover);--pill-border-width:var(--border-width);--pill-padding-x:0.65em;--pill-padding-y:0.25em;--pill-radius:2em;--pill-weight:inherit;--p-spacing:1rem;--p-spacing-empty:0rem;--pdf-background:var(--background-primary);--pdf-page-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-input-height:40px;--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-10:40px;--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);--sync-avatar-color-current-user:transparent;--sync-avatar-color-1:var(--color-red);--sync-avatar-color-2:var(--color-orange);--sync-avatar-color-3:var(--color-yellow);--sync-avatar-color-4:var(--color-green);--sync-avatar-color-5:var(--color-cyan);--sync-avatar-color-6:var(--color-blue);--sync-avatar-color-7:var(--color-purple);--sync-avatar-color-8:var(--color-pink);--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:break-spaces;--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(--table-text-size);--table-header-weight:var(--bold-weight);--table-header-color:var(--text-normal);--table-line-height:var(--line-height-tight);--table-text-size:var(--font-text-size);--table-text-color:inherit;--table-column-min-width:6ch;--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-alt-background-hover:var(--table-background);--table-row-last-border-width:var(--table-border-width);--table-selection:hsla(var(--color-accent-hsl), 0.1);--table-selection-blend-mode:var(--highlight-mix-blend-mode);--table-selection-border-color:var(--interactive-accent);--table-selection-border-width:2px;--table-selection-border-radius:4px;--table-cell-vertical-alignment:top;--table-drag-handle-background:transparent;--table-drag-handle-background-active:var(--table-selection-border-color);--table-drag-handle-color:var(--text-faint);--table-drag-handle-color-active:var(--text-on-accent);--table-add-button-background:transparent;--table-add-button-border-width:var(--table-border-width);--table-add-button-border-color:var(--background-modifier-border);--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;--tag-weight:inherit;--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:258;--accent-s:88%;--accent-l:66%;--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-warning:var(--color-orange);--text-success:var(--color-green);--text-selection:hsla(var(--color-accent-hsl), 0.2);--text-highlight-bg-rgb:255,208,0;--text-highlight-bg:rgba(var(--text-highlight-bg-rgb), 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:#5c5c5c;--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(calc(var(--accent-h) - 1), calc(var(--accent-s) * 1.01), calc(var(--accent-l) * 1.075));--color-accent-2:hsl(calc(var(--accent-h) - 3), calc(var(--accent-s) * 1.02), calc(var(--accent-l) * 1.15));--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,.05),0 1px 1.5px 0 rgba(0,0,0,.03),0 1px 2px 0 rgba(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,.1),0 1px 1.5px 0 rgba(0,0,0,.03),0 1px 2px 0 rgba(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, .042),0px 15px 30px rgba(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:#b3b3b3;--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(calc(var(--accent-h) - 3), calc(var(--accent-s) * 1.02), calc(var(--accent-l) * 1.15));--color-accent-2:hsl(calc(var(--accent-h) - 5), calc(var(--accent-s) * 1.05), calc(var(--accent-l) * 1.29));--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);--text-accent:var(--color-accent-1);--interactive-accent:var(--color-accent);--interactive-accent-hover:var(--color-accent-1);--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,.15),0 1px 1.5px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(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,.3),0 1px 1.5px 0 rgba(0,0,0,.2),0 1px 2px 0 rgba(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}@font-face{font-family:"Avenir Next";font-weight:400;font-style:normal;font-display:swap;src:url("../../lib/fonts/94f2f163d4b698242fef.otf")}@font-face{font-family:Inter;font-style:normal;font-weight:200;font-display:swap;src:url("../../lib/fonts/72505e6a122c6acd5471.woff2") format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url("../../lib/fonts/2d5198822ab091ce4305.woff2") format("woff2")}@font-face{font-family:Inter;font-weight:400;font-style:normal;font-display:swap;src:url("../../lib/fonts/c8ba52b05a9ef10f4758.woff2")}@font-face{font-family:Inter;font-weight:400;font-style:italic;font-display:swap;src:url("../../lib/fonts/cb10ffd7684cd9836a05.woff2")}@font-face{font-family:Inter;font-weight:600;font-style:normal;font-display:swap;src:url("../../lib/fonts/b5f0f109bc88052d4000.woff2")}@font-face{font-family:Inter;font-weight:800;font-style:normal;font-display:swap;src:url("../../lib/fonts/cbe0ae49c52c920fd563.woff2")}@font-face{font-family:Inter;font-weight:800;font-style:italic;font-display:swap;src:url("../../lib/fonts/535a6cf662596b3bd6a6.woff2")}@font-face{font-family:"Source Code Pro";font-weight:400;font-style:normal;font-display:swap;src:url("../../lib/fonts/70cc7ff27245e82ad414.ttf")}@font-face{font-family:"Source Code Pro";font-weight:400;font-style:italic;font-display:swap;src:url("../../lib/fonts/454577c22304619db035.ttf")}@font-face{font-family:"Source Code Pro";font-weight:700;font-style:normal;font-display:swap;src:url("../../lib/fonts/52ac8f3034507f1d9e53.ttf")}@font-face{font-family:"Source Code Pro";font-weight:700;font-style:italic;font-display:swap;src:url("../../lib/fonts/05b618077343fbbd92b7.ttf")}@font-face{font-family:"Flow Circular";font-display:swap;src:url("../../lib/fonts/4bb6ac751d1c5478ff3a.woff2")}@font-face{font-family:"??";unicode-range:U+0}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:ui-monospace,SFMono-Regular,"Cascadia Code","Roboto Mono","DejaVu Sans Mono","Liberation Mono",Menlo,Monaco,"Consolas","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)}*{box-sizing:border-box}body,html{margin:0;padding:0;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)}.node-insert-event{animation-duration:10ms;animation-name:node-inserted}.is-flashing{transition:all .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=""],body [contenteditable=true]{user-select:text}body.is-grabbing{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:0}.is-text-garbled *{font-family:"Flow Circular",sans-serif!important;line-height:1.45em!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-table-row{max-width:100%}.markdown-source-view.mod-cm6 .cm-content>[contenteditable=false]{contain:paint!important}.markdown-source-view.mod-cm6 .cm-table-widget{white-space:normal;overflow-wrap:normal;word-break:normal}.markdown-source-view.mod-cm6 .cm-table-widget{--table-drag-handle-size:var(--size-4-4);padding:var(--table-drag-handle-size);overflow:auto hidden;margin:0 calc(-1 * var(--size-4-4))!important}.is-mobile .markdown-source-view.mod-cm6 .cm-table-widget{--table-drag-handle-size:var(--size-4-6)}.markdown-source-view.mod-cm6 .cm-table-widget.is-loading{padding:0;margin:0!important}.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper{position:relative;width:fit-content}.markdown-source-view.mod-cm6 .cm-table-widget tr{height:1px}.markdown-source-view.mod-cm6 .cm-table-widget td,.markdown-source-view.mod-cm6 .cm-table-widget th{height:inherit;min-width:var(--table-column-min-width);cursor:text;overflow:visible;padding:0;position:relative}.markdown-source-view.mod-cm6 .cm-table-widget td.is-selected::after,.markdown-source-view.mod-cm6 .cm-table-widget th.is-selected::after{pointer-events:none;content:"";display:block;position:absolute;top:calc(-1 * var(--table-border-width));right:calc(-1 * var(--table-border-width));bottom:calc(-1 * var(--table-border-width));left:calc(-1 * var(--table-border-width));background-color:var(--table-selection);border:0 solid var(--table-selection-border-color);mix-blend-mode:var(--table-selection-blend-mode);z-index:1}.markdown-source-view.mod-cm6 .cm-table-widget td.top::after,.markdown-source-view.mod-cm6 .cm-table-widget th.top::after{border-top-width:var(--table-selection-border-width);top:calc(-1 * var(--table-selection-border-width))}.markdown-source-view.mod-cm6 .cm-table-widget td.bottom::after,.markdown-source-view.mod-cm6 .cm-table-widget th.bottom::after{border-bottom-width:var(--table-selection-border-width);bottom:calc(-1 * var(--table-selection-border-width))}.markdown-source-view.mod-cm6 .cm-table-widget.has-selection{--text-selection:transparent}.markdown-source-view.mod-cm6 .cm-table-widget.has-selection .cm-content{caret-color:transparent}.markdown-source-view.mod-cm6 .cm-table-widget.has-selection .cm-cursorLayer,.markdown-source-view.mod-cm6 .cm-table-widget.has-selection .cm-selectionLayer{display:none}.markdown-source-view.mod-cm6 .cm-table-widget.is-selected{--text-selection:transparent}.markdown-source-view.mod-cm6 .cm-table-widget.is-selected table{position:relative}.markdown-source-view.mod-cm6 .cm-table-widget.is-selected table::after{pointer-events:none;content:"";display:block;position:absolute;top:calc(-1 * var(--table-border-width));right:calc(-1 * var(--table-border-width));bottom:calc(-1 * var(--table-border-width));left:calc(-1 * var(--table-border-width));background-color:var(--table-selection)}.markdown-source-view.mod-cm6 .cm-table-widget .table-cell-wrapper{height:100%;padding:var(--size-2-2) var(--size-4-2)}.markdown-source-view.mod-cm6 .cm-table-widget .table-col-drag-handle,.markdown-source-view.mod-cm6 .cm-table-widget .table-row-drag-handle{--icon-size:var(--icon-s);--icon-stroke:var(--icon-s-stroke-width);position:absolute;display:flex;align-items:center;justify-content:center;cursor:grab;background-color:var(--table-drag-handle-background);color:var(--table-drag-handle-color);touch-action:none;opacity:0}.markdown-source-view.mod-cm6 .cm-table-widget .table-col-drag-handle:active,.markdown-source-view.mod-cm6 .cm-table-widget .table-col-drag-handle:hover,.markdown-source-view.mod-cm6 .cm-table-widget .table-row-drag-handle:active,.markdown-source-view.mod-cm6 .cm-table-widget .table-row-drag-handle:hover{opacity:1}.markdown-source-view.mod-cm6 .cm-table-widget .table-col-drag-handle:active,.markdown-source-view.mod-cm6 .cm-table-widget .table-row-drag-handle:active{cursor:grabbing;background-color:var(--table-drag-handle-background-active);color:var(--table-drag-handle-color-active);box-shadow:0 0 0 var(--table-selection-border-width) var(--table-selection-border-color)}.markdown-source-view.mod-cm6 .cm-table-widget .table-col-drag-handle *,.markdown-source-view.mod-cm6 .cm-table-widget .table-row-drag-handle *{pointer-events:none}.markdown-source-view.mod-cm6 .cm-table-widget .table-row-drag-handle{top:0;left:-1px;width:calc(var(--table-drag-handle-size) - var(--table-selection-border-width));height:100%;transform:translateX(-100%);border-top-left-radius:var(--radius-s);border-bottom-left-radius:var(--radius-s)}.markdown-source-view.mod-cm6 .cm-table-widget .table-col-drag-handle{top:-1px;left:0;width:100%;height:calc(var(--table-drag-handle-size) - var(--table-selection-border-width));transform:translateY(-100%);border-top-left-radius:var(--radius-s);border-top-right-radius:var(--radius-s)}.markdown-source-view.mod-cm6 .cm-table-widget.is-dragging .table-col-drag-handle,.markdown-source-view.mod-cm6 .cm-table-widget.is-dragging .table-row-drag-handle{display:none}.markdown-source-view.mod-cm6 .cm-table-widget.is-dragging .table-col-drag-handle:active,.markdown-source-view.mod-cm6 .cm-table-widget.is-dragging .table-row-drag-handle:active{display:flex}.markdown-source-view.mod-cm6 .cm-table-widget .table-drag-target{position:absolute;border-radius:2px;background-color:var(--interactive-accent)}.markdown-source-view.mod-cm6 .cm-table-widget .table-drag-target.mod-row{height:3px;transform:translateY(-2px)}.markdown-source-view.mod-cm6 .cm-table-widget .table-drag-target.mod-col{width:3px;transform:translateX(-2px)}.markdown-source-view.mod-cm6 .cm-table-widget .table-col-btn,.markdown-source-view.mod-cm6 .cm-table-widget .table-row-btn{--icon-size:var(--icon-s);--icon-stroke:var(--icon-s-stroke-width);position:absolute;display:flex;align-items:center;justify-content:center;height:var(--table-drag-handle-size);width:var(--table-drag-handle-size);background-color:var(--table-add-button-background);border:var(--table-add-button-border-width) solid var(--table-add-button-border-color);color:var(--text-faint);transition:opacity 0s ease .1s;opacity:0;user-select:none}.markdown-source-view.mod-cm6 .cm-table-widget .table-col-btn:hover,.markdown-source-view.mod-cm6 .cm-table-widget .table-row-btn:hover{opacity:1}.is-mobile .markdown-source-view.mod-cm6 .cm-table-widget .table-col-drag-handle,.is-mobile .markdown-source-view.mod-cm6 .cm-table-widget .table-row-drag-handle{display:none}.is-mobile .markdown-source-view.mod-cm6 .cm-table-widget .mod-active-col-handle>.table-col-drag-handle,.is-mobile .markdown-source-view.mod-cm6 .cm-table-widget .mod-active-row-handle>.table-row-drag-handle{opacity:1;display:flex}.is-mobile .markdown-source-view.mod-cm6 .cm-table-widget:not(.has-focus) .table-col-btn,.is-mobile .markdown-source-view.mod-cm6 .cm-table-widget:not(.has-focus) .table-row-btn{pointer-events:none}.is-mobile .markdown-source-view.mod-cm6 .cm-table-widget.has-focus .table-col-btn,.is-mobile .markdown-source-view.mod-cm6 .cm-table-widget.has-focus .table-row-btn{opacity:1}.markdown-source-view.mod-cm6 .cm-table-widget .table-row-btn{top:100%;left:0;width:100%;border-top:none;cursor:s-resize}.markdown-source-view.mod-cm6 .cm-table-widget .table-col-btn{top:0;height:100%}.markdown-source-view.mod-cm6 .cm-table-widget .cm-editor{flex-basis:content}.markdown-source-view.mod-cm6 .cm-table-widget .cm-content,.markdown-source-view.mod-cm6 .cm-table-widget .cm-line{max-width:none}.markdown-source-view.mod-cm6 .cm-table-widget .cm-content{width:auto}.markdown-source-view.mod-cm6 .cm-table-widget .cm-content.cm-lineWrapping{overflow-wrap:normal;white-space:var(--table-white-space);word-break:normal}.markdown-source-view.mod-cm6 .cm-table-widget .cm-scroller{overflow-y:hidden;scrollbar-gutter:auto;line-height:var(--table-line-height)}.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget .table-col-btn{left:100%;border-left:none;cursor:e-resize}.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget td.is-selected.start::after,.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget th.is-selected.start::after{border-left-width:var(--table-selection-border-width);left:calc(-1 * var(--table-selection-border-width))}.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget td.is-selected.end::after,.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget th.is-selected.end::after{border-right-width:var(--table-selection-border-width);right:calc(-1 * var(--table-selection-border-width))}.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget td.is-selected.top.end::after,.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget th.is-selected.top.end::after{border-top-right-radius:var(--table-selection-border-radius)}.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget td.is-selected.bottom.end::after,.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget th.is-selected.bottom.end::after{border-bottom-right-radius:var(--table-selection-border-radius)}.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget td.is-selected.top.start::after,.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget th.is-selected.top.start::after{border-top-left-radius:var(--table-selection-border-radius)}.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget td.is-selected.bottom.start::after,.markdown-source-view.mod-cm6:not(.is-rtl) .cm-table-widget th.is-selected.bottom.start::after{border-bottom-left-radius:var(--table-selection-border-radius)}.markdown-source-view.mod-cm6.is-rtl .cm-table-widget .table-col-btn{right:100%;border-right:none;cursor:w-resize}.markdown-source-view.mod-cm6.is-rtl .cm-table-widget td.is-selected.start::after,.markdown-source-view.mod-cm6.is-rtl .cm-table-widget th.is-selected.start::after{border-right-width:var(--table-selection-border-width);right:calc(-1 * var(--table-selection-border-width))}.markdown-source-view.mod-cm6.is-rtl .cm-table-widget td.is-selected.end::after,.markdown-source-view.mod-cm6.is-rtl .cm-table-widget th.is-selected.end::after{border-left-width:var(--table-selection-border-width);left:calc(-1 * var(--table-selection-border-width))}.markdown-source-view.mod-cm6.is-rtl .cm-table-widget td.is-selected.top.end::after,.markdown-source-view.mod-cm6.is-rtl .cm-table-widget th.is-selected.top.end::after{border-top-left-radius:var(--table-selection-border-radius)}.markdown-source-view.mod-cm6.is-rtl .cm-table-widget td.is-selected.bottom.end::after,.markdown-source-view.mod-cm6.is-rtl .cm-table-widget th.is-selected.bottom.end::after{border-bottom-left-radius:var(--table-selection-border-radius)}.markdown-source-view.mod-cm6.is-rtl .cm-table-widget td.is-selected.top.start::after,.markdown-source-view.mod-cm6.is-rtl .cm-table-widget th.is-selected.top.start::after{border-top-right-radius:var(--table-selection-border-radius)}.markdown-source-view.mod-cm6.is-rtl .cm-table-widget td.is-selected.bottom.start::after,.markdown-source-view.mod-cm6.is-rtl .cm-table-widget th.is-selected.bottom.start::after{border-bottom-right-radius:var(--table-selection-border-radius)}.empty-state{position:absolute;height:100%;width:100%;top:0;left:0;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 0;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)}.empty-state-close-button{display:none}body{--zoom-factor:1;--titlebar-height:30px}.pane-empty{color:var(--text-faint);font-size:var(--font-ui-small);margin:var(--size-4-2) auto;text-align:center}.view-header-title::-webkit-scrollbar{display:none}.view-content{width:100%;height:calc(100% - var(--header-height))}.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:-.015em;color:var(--inline-title-color)}.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;scrollbar-gutter:stable}.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}.side-dock-actions{flex-direction:column}.side-dock-actions .side-dock-ribbon-action{margin:0 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}.modal.mod-trust-folder{max-width:700px}.modal.mod-plugin-options .modal-content{margin:var(--size-4-6) 0}.hotkey-list-container{overflow:auto}.search-input-container.mod-hotkey .clickable-icon{padding:var(--size-2-1)}.modal.mod-image-lightbox{max-width:90vw;max-height:90vh;padding:0}.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}.modal.mod-restricted-mode .card{flex:1 0 0px}.search-input-container input:placeholder-shown~.search-input-clear-button{display:none}.installed-plugins-container{padding-top:var(--size-4-4);border-top:1px solid var(--background-modifier-border)}.workspace-tab-header-container-inner::-webkit-scrollbar,.workspace-tab-header-container-inner::-webkit-scrollbar-thumb{display:none}.mod-root .mod-pinned{--icon-size:var(--icon-s);--icon-stroke:var(--icon-s-stroke-width)}.mod-left-split .markdown-preview-view,.mod-right-split .markdown-preview-view{--file-margins:var(--size-4-5)}.mod-left-split .markdown-preview-view,.mod-right-split .markdown-preview-view{font-size:var(--sidebar-markdown-font-size)}.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:0;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:0;user-select:none;white-space:nowrap}button:not(.clickable-icon){background-color:var(--interactive-normal);box-shadow:var(--input-shadow)}button:focus-visible{box-shadow:0 0 0 3px var(--background-modifier-border-focus)}button[disabled=true],button[disabled]{cursor:not-allowed;opacity:.7}button.mod-cta{background-color:var(--interactive-accent);color:var(--text-on-accent)}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)}button.mod-warning{background-color:var(--background-modifier-error);color:var(--text-on-accent)}button.mod-destructive{color:var(--text-error)}.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:0 10px;padding:15px 30px;display:flex;flex-direction:column;flex-grow:1}.card ul{padding:0}.card .button-container{margin:10px 0}.card-container.mod-horizontal .card{margin:10px 0}.card-container.mod-horizontal .card ul{padding-left:24px}.card li{margin:5px 0}.card.u-clickable{cursor:var(--cursor)}.card.is-selected{border:1px solid var(--interactive-accent);background-color:hsla(var(--interactive-accent-hsl),.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)}[contenteditable]{outline:0}.list-container{display:flex;flex-direction:column;gap:var(--size-4-2)}.list-item{display:flex;padding:0;margin:8px 0;gap:var(--size-4-2);align-items:center}.list-item-actions{display:flex;gap:var(--size-4-2)}.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:active,.list-item-part.clickable-icon:hover{color:var(--icon-color-hover);background-color:var(--background-modifier-hover)}.list-item-desc{width:100%}.list-item-desc .list-item-part{color:var(--text-muted);font-size:var(--font-ui-small)}.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:.8em}.u-clickable{cursor:var(--cursor)}.diff-view{user-select:text}.diff-line{padding:0 var(--size-4-2)}.diff-line.mod-left{background-color:rgba(var(--background-modifier-error-rgb),.2)}.diff-line.mod-left .diff-changed{background-color:rgba(var(--background-modifier-error-rgb),.4)}.diff-line.mod-right{background-color:rgba(var(--background-modifier-success-rgb),.2)}.diff-line.mod-right .diff-changed{background-color:rgba(var(--background-modifier-success-rgb),.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{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-replace,.document-search{width:100%;max-width:var(--file-line-width);margin:0 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-replace-input,input.document-search-input{flex-grow:1}input.document-replace-input.mod-no-match,input.document-search-input.mod-no-match{background-color:rgba(var(--background-modifier-error-rgb),.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}.markdown-rendered .search-highlight>div{position:absolute;pointer-events:none;box-shadow:0 0 0 2px var(--text-normal);opacity:.3;mix-blend-mode:var(--highlight-mix-blend-mode);border-radius:2px}.markdown-rendered .search-highlight>div.is-active{box-shadow:0 0 0 3px var(--text-accent);opacity:1}select{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:0 1.9em 0 .8em;max-width:100%;box-sizing:border-box;margin:0;border:0;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 .7em top 50%,0 0;background-size:.65em,100%}select:focus{box-shadow:0 0 0 3px var(--background-modifier-border-focus);outline:0}.flair{background-color:var(--interactive-normal);border-radius:var(--radius-s);color:var(--text-normal);font-size:10px;letter-spacing:.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-headings) .heading-collapse-indicator,.markdown-preview-view:not(.allow-fold-lists) .list-collapse-indicator{display:none}.collapse-indicator,.fold-gutter{opacity:0}.collapse-indicator:hover,.fold-gutter.is-collapsed,.fold-gutter:hover,.is-collapsed .collapse-indicator,.metadata-properties-heading:hover .collapse-indicator,h1:hover .collapse-indicator,h2:hover .collapse-indicator,h3:hover .collapse-indicator,h4:hover .collapse-indicator,h5:hover .collapse-indicator,h6:hover .collapse-indicator{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 .1s 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 .collapse-indicator svg.svg-icon,.view-content .list-collapse-indicator svg.svg-icon{color:var(--collapse-icon-color)}.view-content .is-collapsed .collapse-indicator svg.svg-icon,.view-content .is-collapsed .list-collapse-indicator svg.svg-icon{color:var(--collapse-icon-color-collapsed)}.markdown-preview-view .collapse-indicator{position:absolute;cursor:var(--cursor)}.markdown-preview-view .collapse-indicator .svg-icon{vertical-align:middle}.markdown-preview-view li.is-collapsed>ol,.markdown-preview-view li.is-collapsed>ul{display:none}.markdown-preview-view .heading-collapse-indicator{margin-left:-22px;padding:0 6px}svg.svg-icon{height:var(--icon-size);width:var(--icon-size);stroke-width:var(--icon-stroke)}.nav-buttons-container,.side-dock-actions,.view-actions{display:flex;justify-content:center}.side-dock-actions{gap:var(--size-2-3)}.view-actions{gap:0;align-items:center;--icon-size:var(--icon-s)}.nav-file-icon .svg-icon{--icon-size:var(--icon-s);--icon-stroke:var(--icon-s-stroke-width)}.clickable-icon.side-dock-ribbon-action .svg-icon{--icon-size:var(--icon-l);--icon-stroke:var(--icon-l-stroke-width)}.clickable-icon.side-dock-ribbon-action:active{color:var(--icon-color-focused)}.is-ios .lucide-more-vertical{transform:rotate(90deg)}.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 .15s ease-in-out 0s;height:auto}.clickable-icon.is-active{opacity:var(--icon-opacity-hover);color:var(--icon-color-active);background-color:var(--background-modifier-active-hover)}.clickable-icon.mod-warning{color:var(--text-error)}.clickable-icon.mod-filled svg{fill:var(--icon-color)}.text-icon-button{app-region:no-drag;display:inline-flex;align-items:center;color:var(--text-muted);font-size:var(--font-ui-small);border-radius:var(--button-radius);padding:var(--size-2-1) var(--size-4-3) var(--size-2-1) var(--size-4-2);height:var(--input-height);font-weight:var(--input-font-weight);cursor:var(--cursor);font-family:inherit;gap:var(--size-2-2);user-select:none;white-space:nowrap}.text-icon-button .text-button-icon{display:flex;align-items:center;justify-content:center}.text-icon-button .text-button-icon svg.svg-icon{height:var(--icon-size);width:var(--icon-size);stroke-width:var(--icon-stroke)}.text-icon-button:focus{box-shadow:0 0 0 2px var(--background-modifier-border-focus);outline:0}.markdown-rendered.show-indentation-guide li>ol,.markdown-rendered.show-indentation-guide li>ul{position:relative}.markdown-rendered.show-indentation-guide li>ol::before,.markdown-rendered.show-indentation-guide li>ul::before{content:"​";position:absolute;display:block;left:var(--indentation-guide-reading-indent);top:0;bottom:0;border-right:var(--indentation-guide-width) solid var(--indentation-guide-color)}.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}input.metadata-input-text,input[type=date],input[type=datetime-local],input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],textarea{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:0}input.metadata-input-text:active,input.metadata-input-text:focus,input[type=date]:active,input[type=date]:focus,input[type=datetime-local]:active,input[type=datetime-local]:focus,input[type=email]:active,input[type=email]:focus,input[type=number]:active,input[type=number]:focus,input[type=password]:active,input[type=password]:focus,input[type=search]:active,input[type=search]:focus,input[type=text]:active,input[type=text]:focus,textarea:active,textarea:focus{border-color:var(--background-modifier-border-focus);transition:box-shadow .15s ease-in-out 0s,border .15s ease-in-out 0s}input.metadata-input-text:active,input.metadata-input-text:focus,input.metadata-input-text:focus-visible,input[type=date]:active,input[type=date]:focus,input[type=date]:focus-visible,input[type=datetime-local]:active,input[type=datetime-local]:focus,input[type=datetime-local]:focus-visible,input[type=email]:active,input[type=email]:focus,input[type=email]:focus-visible,input[type=number]:active,input[type=number]:focus,input[type=number]:focus-visible,input[type=password]:active,input[type=password]:focus,input[type=password]:focus-visible,input[type=search]:active,input[type=search]:focus,input[type=search]:focus-visible,input[type=text]:active,input[type=text]:focus,input[type=text]:focus-visible,textarea:active,textarea:focus,textarea:focus-visible{box-shadow:0 0 0 2px var(--background-modifier-border-focus)}input.metadata-input-text::placeholder,input[type=date]::placeholder,input[type=datetime-local]::placeholder,input[type=email]::placeholder,input[type=number]::placeholder,input[type=password]::placeholder,input[type=search]::placeholder,input[type=text]::placeholder,textarea::placeholder{color:var(--text-faint)}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{height:var(--input-height)}textarea{line-height:var(--line-height-tight)}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{display:none;pointer-events:none}input[type=number]::-webkit-inner-spin-button{appearance:none}input[type=date],input[type=datetime-local]{font-variant-numeric:tabular-nums;position:relative}input[type=date]::-webkit-datetime-edit-text,input[type=datetime-local]::-webkit-datetime-edit-text{color:var(--text-faint)}input[type=date]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator{position:absolute;left:var(--size-4-1);opacity:.5}input[type=date]::-webkit-datetime-edit-day-field:active,input[type=date]::-webkit-datetime-edit-day-field:focus,input[type=date]::-webkit-datetime-edit-month-field:active,input[type=date]::-webkit-datetime-edit-month-field:focus,input[type=date]::-webkit-datetime-edit-year-field:active,input[type=date]::-webkit-datetime-edit-year-field:focus,input[type=datetime-local]::-webkit-datetime-edit-day-field:active,input[type=datetime-local]::-webkit-datetime-edit-day-field:focus,input[type=datetime-local]::-webkit-datetime-edit-month-field:active,input[type=datetime-local]::-webkit-datetime-edit-month-field:focus,input[type=datetime-local]::-webkit-datetime-edit-year-field:active,input[type=datetime-local]::-webkit-datetime-edit-year-field:focus{background-color:var(--text-selection);color:var(--text-normal);cursor:text}body:not(.is-ios):not(.is-android) input[type=date],body:not(.is-ios):not(.is-android) input[type=datetime-local]{padding-left:var(--size-4-6)}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:0;outline:0}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:#fff;border:var(--slider-thumb-border-width) solid var(--slider-thumb-border-color);position:relative;top:var(--slider-thumb-y);transition:all .1s linear 0s;box-shadow:rgba(0,0,0,.05) 0 1px 1px 0,rgba(0,0,0,.1) 0 2px 2px 0}input[type=range]::-webkit-slider-thumb:active,input[type=range]::-webkit-slider-thumb:hover{background:#fff;border-color:var(--background-modifier-border-focus);box-shadow:rgba(0,0,0,.1) 0 1px 2px 0,rgba(0,0,0,.2) 0 2px 3px 0;transition:all .1s linear 0s}body:not(.is-mobile) input[type=range]:focus{box-shadow:none}body:not(.is-mobile) input[type=range]:focus::-webkit-slider-thumb{box-shadow:rgba(0,0,0,.05) 0 1px 2px 0,rgba(0,0,0,.2) 0 2px 3px 0}body:not(.is-mobile) input[type=range]:focus-visible::-webkit-slider-thumb{border-color:var(--background-modifier-border-focus);box-shadow:0 1px 2px 0 rgba(0,0,0,.05),0 2px 3px 0 rgba(0,0,0,.2),0 0 0 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:0}input[type=color]::-webkit-color-swatch-wrapper{padding:2px}input[type=color]::-webkit-color-swatch{border:0;box-shadow:var(--swatch-shadow);border-radius:var(--swatch-radius);height:var(--swatch-height);width:var(--swatch-width);align-self:center}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:0;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:#fafafa;font-size:var(--font-ui-small);line-height:var(--line-height-tight);padding:.75em 1em;max-width:300px;margin-bottom:14px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;cursor:var(--cursor)}.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:0;left:0;width:100%;height:100%;z-index:var(--layer-modal)}.modal-container.mod-dim .modal{box-shadow:var(--shadow-l)}.modal-bg{position:absolute;top:0;left:0;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-scrollable-content{padding:0;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}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)}.modal-close-button::before{font-family:Inter,sans-serif;content:"×";font-weight:300}.modal-title{font-size:var(--font-ui-large);margin-bottom:.75em;font-weight:var(--font-semibold);text-align:left;line-height:var(--line-height-tight)}.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:0;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}.mod-warning{color:var(--text-error)}.mod-success{color:var(--text-success)}.modal .modal-nav-action{background-color:unset;margin-top:var(--size-4-1);position:absolute;top:0;width:unset}.modal .modal-nav-action.mod-secondary{left:0}.modal .modal-nav-action.mod-cta{color:var(--color-accent);font-weight:var(--font-semibold);right:0}.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)}body{--pill-focus-width:calc(100% + 6px);--pill-focus-left-adjust:-4px}.multi-select-container{cursor:text;display:inline-flex;vertical-align:top;flex-wrap:wrap;min-height:var(--input-height);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:0;padding:var(--size-4-1);gap:var(--size-4-1)}.multi-select-pill{--icon-size:var(--icon-xs);--icon-stroke:var(--icon-xs-stroke-width);display:flex;align-items:center;background-color:var(--pill-background);border:var(--pill-border-width) solid var(--pill-border-color);border-radius:var(--pill-radius);color:var(--pill-color);cursor:var(--cursor);font-weight:var(--pill-weight);padding:var(--pill-padding-y) 0;line-height:1;max-width:100%;gap:var(--size-2-1);position:relative}.multi-select-pill:focus::after{content:"";display:block;position:absolute;pointer-events:none;border-radius:var(--pill-radius);left:var(--pill-focus-left-adjust);width:var(--pill-focus-width);height:100%;box-shadow:0 0 0 1px var(--background-modifier-border-focus),inset 0 0 0 1px var(--background-modifier-border-focus)}.multi-select-pill-content{margin-left:var(--pill-padding-x)}.multi-select-pill-remove-button{margin-right:min(var(--size-2-3),var(--pill-padding-x));cursor:var(--cursor);color:var(--pill-color-remove);border-radius:var(--radius-s);display:flex;align-items:center;--icon-size:var(--icon-xs);--icon-stroke:var(--icon-xs-stroke-width)}.multi-select-pill-remove-button:hover{color:var(--pill-color-remove-hover)}.multi-select-input{cursor:text;font-family:var(--font-interface);min-width:1ch;max-width:max-content;color:var(--text-normal);background-color:inherit;border:none;overflow-x:auto;white-space:nowrap}.multi-select-input::-webkit-scrollbar{display:none}.multi-select-input::before{content:"​"}.multi-select-input:empty::before{content:attr(placeholder);color:var(--text-faint);pointer-events:none}.multi-select-duplicate{animation:2s ease-in 0s 1 normal none running multi-select-highlight}.markdown-rendered 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:0;border:0;vertical-align:-.2rem}.markdown-rendered progress[value]::-webkit-progress-bar{background-color:var(--background-secondary);box-shadow:inset 0 0 0 1px var(--background-modifier-border);border-radius:6px;overflow:hidden}.markdown-rendered progress[value]::-webkit-progress-value{background-color:var(--interactive-accent);overflow:hidden}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:active,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-active-thumb-bg)}body:not(.native-scrollbars) ::-webkit-scrollbar-corner{background:0 0}.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,.07) 0 4px 10px inset,rgba(0,0,0,.21) 0 0 1px inset;transition:box-shadow .15s ease-in-out 0s,outline .15s ease-in-out 0s,border .15s ease-in-out 0s,opacity .15s ease-in-out 0s;outline:0 solid var(--background-modifier-border-focus)}.checkbox-container input[type=checkbox]{position:absolute;opacity:0;left:0}.checkbox-container:focus-within{outline:var(--toggle-border-width) solid var(--background-modifier-border-focus)}.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 .15s ease-in-out 0s,width .1s ease-in-out 0s,left .1s ease-in-out 0s;left:0;transform:translate3d(var(--toggle-border-width),0,0);box-shadow:rgba(0,0,0,.15) 0 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))}.tree-item-self{align-items:baseline;display:flex;border-radius:var(--radius-s);color:var(--nav-item-color);font-size:var(--nav-item-size);line-height:var(--line-height-tight);font-weight:var(--nav-item-weight);margin-bottom:var(--size-2-1);padding:var(--nav-item-padding);position:relative}.tree-item-self::before{content:"​"}.tree-item-self.mod-collapsible{padding:var(--nav-item-parent-padding)}.tree-item-self.is-being-dragged-over{border-radius:var(--radius-s);color:var(--nav-item-color-highlighted);background:hsla(var(--interactive-accent-hsl),.1)}.tree-item-self.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)}.tree-item-self.is-active,body:not(.is-grabbing) .tree-item-self.is-active:hover{color:var(--nav-item-color-active);background-color:var(--nav-item-background-active);font-weight:var(--nav-item-weight-active)}.tree-item-self.is-selected,body:not(.is-grabbing) .tree-item-self.is-selected:hover{color:var(--nav-item-color-selected);background-color:var(--nav-item-background-selected)}.tree-item-self.is-being-dragged,body:not(.is-grabbing) .tree-item-self.is-being-dragged:hover{color:var(--text-on-accent);background-color:var(--interactive-accent)}.tree-item-self.is-being-dragged .tree-item-icon,body:not(.is-grabbing) .tree-item-self.is-being-dragged:hover .tree-item-icon{color:var(--text-on-accent)}body:not(.is-phone) .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)}body:not(.is-phone) .workspace-leaf.mod-active .tree-item-self.has-focus:focus-within{box-shadow:0 0 0 2px var(--interactive-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;display:flex;flex-shrink:0;align-items:center}.tree-item-flair{font-size:var(--font-ui-smaller);color:var(--text-faint);line-height:1;border-radius:var(--radius-s)}.tree-item-inner{overflow:hidden}.tree-item-inner-text{overflow:hidden;text-overflow:ellipsis}.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)}audio{outline:0}.markdown-rendered audio{max-width:100%;outline:0}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:0}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:.1em .25em}.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-findbar input[type=checkbox]{display:none;pointer-events:none}.scrollWrapped) .page,.spread .page{border:var(--size-4-1) solid transparent}.popupWrapper{--pdf-popup-width:280px;font-size:var(--font-ui-medium);pointer-events:none;position:absolute;transform:translate(-50%,0);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, .2) 0px 0px 1px) drop-shadow(rgba(0, 0, 0, .3) 0px 1px 2px) drop-shadow(rgba(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}.popup{cursor:initial;display:flex;flex-direction:column;pointer-events:auto;user-select:text;white-space:normal;width:var(--pdf-popup-width);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{--icon-size:var(--font-ui-small);--icon-stroke:2.5px;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);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)}.popupMeta .clickable-icon{margin-right:calc(var(--size-4-1) * -1);margin-left:calc(var(--size-2-1) * -1)}.popupDate{white-space:nowrap}.markdown-rendered video{max-width:100%;outline:0}.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:0}.markdown-rendered blockquote>:last-child{margin-bottom:0}.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=hint],.callout[data-callout=tip]{--callout-color:var(--callout-tip);--callout-icon:lucide-flame}.callout[data-callout=check],.callout[data-callout=done],.callout[data-callout=success]{--callout-color:var(--callout-success);--callout-icon:lucide-check}.callout[data-callout=faq],.callout[data-callout=help],.callout[data-callout=question]{--callout-color:var(--callout-question);--callout-icon:help-circle}.callout[data-callout=attention],.callout[data-callout=caution],.callout[data-callout=warning]{--callout-color:var(--callout-warning);--callout-icon:lucide-alert-triangle}.callout[data-callout=fail],.callout[data-callout=failure],.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=cite],.callout[data-callout=quote]{--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 0;mix-blend-mode:var(--callout-blend-mode);background-color:rgba(var(--callout-color),.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);align-items:flex-start}.callout-content{overflow-x:auto;padding:var(--callout-content-padding);background-color:var(--callout-content-background)}.callout-icon{flex:0 0 auto;display:flex;align-items:center}.callout-icon .svg-icon{color:rgb(var(--callout-color))}.callout-icon::after{content:"​"}.callout-title-inner{font-weight:var(--bold-weight);color:var(--callout-title-color)}.callout-fold{display:flex;align-items:center;padding-right:var(--size-4-2)}.callout-fold::after{content:"​"}.callout-fold .svg-icon{transition:transform .1s ease-in-out 0s}.callout-fold.is-collapsed .svg-icon{transform:rotate(-90deg)}.markdown-rendered code{color:var(--code-normal);font-family:var(--font-monospace);background-color:var(--code-background);border-radius:var(--code-radius);font-size:var(--code-size);padding:.1em .25em;-webkit-box-decoration-break:clone}.cm-s-obsidian span.cm-inline-code span.cm-inline-code.hmd-hidden-token{font-size:0px}.markdown-rendered pre{position:relative;padding:var(--size-4-3) var(--size-4-4);min-height:38px;background-color:var(--code-background);border-radius:var(--code-radius);white-space:var(--code-white-space);overflow-x:auto}.markdown-rendered pre code{border:none;padding:0;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:0;right:0}code[class*=language-],pre[class*=language-]{color:var(--code-normal);background:0 0;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}: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:.1em;border-radius:.3em;white-space:normal}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:var(--code-comment)}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.symbol,.token.tag{color:var(--code-tag)}.token.punctuation{color:var(--code-punctuation)}.token.boolean,.token.number{color:var(--code-value)}.token.attr-name,.token.char,.token.inserted,.token.selector,.token.string{color:var(--code-string)}.token.operator{color:var(--code-operator)}.language-css .token.string,.style .token.string,.token.entity,.token.parameter,.token.property,.token.url,.token.variable{color:var(--code-property)}.token.atrule,.token.attr-value,.token.builtin,.token.class-name,.token.function,.token.property-access{color:var(--code-function)}.token.keyword{color:var(--code-keyword)}.token.important,.token.regex{color:var(--code-important)}.markdown-preview-view .markdown-embed .markdown-preview-view{--file-folding-offset:0px;height:100%;padding:0}.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:0}.file-embed,.markdown-embed{position:relative}.file-embed-link,.markdown-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)}.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-empty,.file-embed.mod-generic{cursor:var(--cursor-link);padding:var(--size-4-2);color:var(--text-muted);text-align:center;font-size:var(--font-smaller)}.file-embed.mod-empty-attachment{padding:var(--size-4-2);color:var(--text-muted);text-align:center;font-size:var(--font-smaller)}.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:0;padding:var(--embed-padding)}.markdown-embed .markdown-preview-view{padding:0}.internal-embed:not(.image-embed){display:block}.internal-embed audio,.internal-embed img:not([width]),.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:0}.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}.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}.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:0;right:0;width:100%;height:100%;background-color:var(--background-modifier-error);opacity:.3;mix-blend-mode:var(--highlight-mix-blend-mode)}.metadata-container{--input-height:var(--metadata-input-height);border-radius:var(--metadata-border-radius);background-color:var(--metadata-background);border-color:var(--metadata-border-color);border-style:solid;border-width:var(--metadata-border-width);padding:var(--metadata-padding);color:var(--text-muted);position:relative;max-width:var(--metadata-max-width);margin-block-end:var(--p-spacing);transform:translateX(calc(var(--size-4-1) * -1))}.metadata-container .metadata-add-button{padding-left:var(--size-2-3);margin-top:.5em;font-size:var(--metadata-label-font-size)}.markdown-embed-content .metadata-container{display:none}.metadata-container.is-collapsed .metadata-property{display:none}.metadata-container:focus-within .metadata-property.is-selected{color:var(--nav-item-color-selected);background-color:var(--nav-item-background-selected)}.metadata-properties{display:flex;flex-direction:column;gap:var(--metadata-gap)}.metadata-properties-heading{display:inline-block;padding:var(--size-4-1);margin-bottom:var(--size-4-2);position:relative;line-height:1.2}.metadata-properties-heading::before{content:"";border-radius:var(--metadata-property-radius);position:absolute;display:inline-block;inset:0px}.metadata-properties-heading:focus::before{box-shadow:0 0 0 2px var(--background-modifier-border-focus)}.metadata-properties-heading .collapse-indicator{position:absolute;left:-22px;padding:0 6px}.metadata-properties-title{user-select:none;font-size:max(var(--font-ui-small), 1em);color:var(--text-normal);font-weight:var(--font-medium)}.metadata-input-text{background-color:transparent;width:100%;min-height:var(--input-height);border-width:0;resize:none;overflow-y:hidden}.metadata-input-text::-webkit-date-and-time-value{text-align:left}.metadata-property{position:relative;display:flex;align-items:start;padding:var(--metadata-property-padding);border-radius:var(--metadata-property-radius);overflow:hidden;background-color:var(--metadata-property-background)}.metadata-property:focus-within{background-color:var(--metadata-property-background-hover);--metadata-divider-color:var(--metadata-divider-color-focus);box-shadow:0 0 0 2px var(--background-modifier-border-focus)}.metadata-property-icon{cursor:var(--cursor);color:var(--icon-color);display:flex;align-items:center;padding:var(--size-4-1) 0;height:var(--input-height);user-select:none}.metadata-property-icon::before{content:"​";width:var(--size-4-1)}.metadata-input-number{background-color:transparent;width:100%;border-width:0}input[type=checkbox].metadata-input-checkbox{margin-left:var(--size-4-2)}.metadata-property-key{display:flex;align-self:stretch;align-items:flex-start;flex-direction:row;flex-shrink:0;border-bottom:var(--metadata-divider-width) solid var(--metadata-divider-color);background-color:var(--metadata-label-background);width:var(--metadata-label-width);min-width:var(--metadata-label-width)}.metadata-property-key:focus-within{background-color:var(--metadata-label-background-active)}input.metadata-property-key-input{border:none;flex-grow:1;color:var(--metadata-label-text-color);font-size:var(--metadata-label-font-size);font-weight:var(--metadata-label-font-weight);height:var(--input-height);background-color:transparent;display:flex;align-items:center;text-overflow:ellipsis;overflow:hidden}input.metadata-property-key-input:active,input.metadata-property-key-input:focus{background-color:transparent}.metadata-property button{margin-top:var(--size-4-2)}.metadata-property .multi-select-container,.metadata-property input[type=date],.metadata-property input[type=datetime-local],.metadata-property input[type=number],.metadata-property input[type=text]{border-radius:0;border:none}.metadata-property .multi-select-container:active,.metadata-property .multi-select-container:focus,.metadata-property .multi-select-container:hover,.metadata-property input[type=date]:active,.metadata-property input[type=date]:focus,.metadata-property input[type=date]:hover,.metadata-property input[type=datetime-local]:active,.metadata-property input[type=datetime-local]:focus,.metadata-property input[type=datetime-local]:hover,.metadata-property input[type=number]:active,.metadata-property input[type=number]:focus,.metadata-property input[type=number]:hover,.metadata-property input[type=text]:active,.metadata-property input[type=text]:focus,.metadata-property input[type=text]:hover{box-shadow:none;border:none}.metadata-property .metadata-input-number,.metadata-property .metadata-input-text,.metadata-property .multi-select-container{background-color:transparent}.metadata-property .metadata-input-number:hover,.metadata-property .metadata-input-text:hover,.metadata-property .multi-select-container:hover{background-color:transparent}.metadata-property .metadata-input-number:active,.metadata-property .metadata-input-number:focus,.metadata-property .metadata-input-number:focus-within,.metadata-property .metadata-input-text:active,.metadata-property .metadata-input-text:focus,.metadata-property .metadata-input-text:focus-within,.metadata-property .multi-select-container:active,.metadata-property .multi-select-container:focus,.metadata-property .multi-select-container:focus-within{background-color:transparent}.metadata-property .metadata-input-text{text-overflow:ellipsis;overflow:hidden}.metadata-property .multi-select-container input{background-color:transparent}.metadata-property .multi-select-container{padding:var(--size-4-1) var(--size-4-2)}.metadata-property[data-property-key=tags]{--pill-color:var(--tag-color);--pill-color-hover:var(--tag-color-hover);--pill-color-remove:var(--tag-color);--pill-color-remove-hover:var(--tag-color-hover);--pill-decoration:var(--tag-decoration);--pill-decoration-hover:var(--tag-decoration-hover);--pill-background:var(--tag-background);--pill-background-hover:var(--tag-background-hover);--pill-border-color:var(--tag-border-color);--pill-border-color-hover:var(--tag-border-color-hover);--pill-border-width:var(--tag-border-width);--pill-padding-x:var(--tag-padding-x);--pill-padding-y:var(--tag-padding-y);--pill-radius:var(--tag-radius);--pill-weight:var(--tag-weight);--pill-focus-width:100%;--pill-focus-left-adjust:0}.metadata-property[data-property-key=tags] .multi-select-pill{cursor:var(--cursor-link)}.metadata-property:not([data-property-key=tags]){--pill-border-width:0;--pill-padding-x:0;--pill-padding-y:0;--pill-color:var(--metadata-input-text-color)}.metadata-property:not([data-property-key=tags]) .multi-select-pill{line-height:var(--line-height-tight)}.metadata-property-warning-icon{--icon-size:var(--icon-s);position:absolute;right:var(--size-2-1);top:var(--size-2-1);bottom:var(--size-2-1);align-items:center;display:flex;color:var(--text-warning)}.metadata-property-value{display:flex;flex:1 1 auto;gap:var(--size-2-2);align-items:center;align-self:stretch;min-height:var(--input-height);background-color:var(--metadata-input-background);border-bottom:var(--metadata-divider-width) solid var(--metadata-divider-color);overflow:hidden}.metadata-property-value.mod-external-link:not(:placeholder-shown){text-decoration-line:var(--link-decoration);text-decoration-thickness:var(--link-decoration-thickness);text-decoration-color:var(--text-faint)}.metadata-property-value .mod-unknown{color:var(--text-warning);padding:var(--size-4-1) var(--size-4-2);font-size:var(--metadata-input-font-size);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.metadata-property-value .multi-select-input{font-size:inherit}.metadata-property-value .metadata-link-inner,.metadata-property-value .multi-select-container,.metadata-property-value input{font-size:var(--metadata-input-font-size)}.metadata-property-value .multi-select-container{--background-modifier-form-field:transparent;--background-modifier-border:transparent;align-items:center}.metadata-property-value .multi-select-container .multi-select-pill.is-invalid{--pill-background:transparent;--pill-color:var(--text-error);--pill-color-remove:var(--text-error)}.metadata-property-value .external-link.multi-select-pill-content,.metadata-property-value .internal-link .multi-select-pill-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metadata-property-value .clickable-icon{--icon-size:var(--icon-xs);--icon-stroke:var(--icon-xs-stroke-width);margin-right:2px;margin-left:-4px;padding:4px}.metadata-property-value .clickable-icon:hover{background:0 0;color:var(--text-normal);cursor:var(--cursor-link)}.metadata-property-value:focus-within{background-color:var(--metadata-input-background-active)}.metadata-input-longtext{cursor:text;white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:3;color:var(--metadata-input-text-color);font-size:var(--metadata-input-font-size);max-height:300px;overflow-y:auto;padding:var(--size-4-1) var(--size-4-2);width:100%}.metadata-input-longtext:focus{-webkit-line-clamp:unset}.metadata-input-longtext:not(:empty){display:-webkit-box}.metadata-input-longtext:empty::before{content:attr(placeholder);color:var(--text-faint)}.metadata-link{cursor:text;align-items:center;padding:var(--size-4-1) var(--size-4-2);display:flex;gap:var(--size-4-2);width:100%}.metadata-link-inner{cursor:var(--cursor-link);color:var(--link-color);text-decoration-line:var(--link-decoration);text-decoration-thickness:var(--link-decoration-thickness);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.metadata-link-flair{--icon-size:var(--icon-xs);background-color:transparent;cursor:text;margin-left:auto;display:flex;align-items:center;justify-content:center;padding:var(--size-2-1);border-radius:var(--clickable-icon-radius);color:var(--icon-color);opacity:0;transition:opacity .15s ease-in-out 0s;height:auto}.markdown-preview-view .metadata-container{display:none}.markdown-preview-view.show-properties .metadata-container{display:var(--metadata-display-reading)}.markdown-preview-view.show-properties .metadata-container[data-property-count="0"]{display:none}.markdown-rendered li h1,.markdown-rendered li h2,.markdown-rendered li h3,.markdown-rendered li h4,.markdown-rendered li h5{margin-top:0;margin-bottom:0}.markdown-rendered div:has(> :is(p,pre,table,ul,ol))+div>:is(h1,h2,h3,h4,h5,h6){margin-top:var(--heading-spacing)}.markdown-rendered h1,h1{font-variant:var(--h1-variant);letter-spacing:-.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);margin-block-start:var(--p-spacing);margin-block-end:var(--p-spacing)}.markdown-rendered h1 a,h1 a{font-weight:inherit}.markdown-rendered h2,h2{font-variant:var(--h2-variant);letter-spacing:-.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);margin-block-start:var(--p-spacing);margin-block-end:var(--p-spacing)}.markdown-rendered h2 a,h2 a{font-weight:inherit}.markdown-rendered h3,h3{font-variant:var(--h3-variant);letter-spacing:-.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);margin-block-start:var(--p-spacing);margin-block-end:var(--p-spacing)}.markdown-rendered h3 a,h3 a{font-weight:inherit}.markdown-rendered h4,h4{font-variant:var(--h4-variant);letter-spacing:.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);margin-block-start:var(--p-spacing);margin-block-end:var(--p-spacing)}.markdown-rendered h4 a,h4 a{font-weight:inherit}.markdown-rendered h5,h5{font-variant:var(--h5-variant);letter-spacing:.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);margin-block-start:var(--p-spacing);margin-block-end:var(--p-spacing)}.markdown-rendered h5 a,h5 a{font-weight:inherit}.markdown-rendered h6,h6{font-variant:var(--h6-variant);letter-spacing:.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);margin-block-start:var(--p-spacing);margin-block-end:var(--p-spacing)}.markdown-rendered h6 a,h6 a{font-weight:inherit}.inline-title[data-level="1"]{font-variant:var(--h1-variant);letter-spacing:-.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)}.inline-title[data-level="1"] a{font-weight:inherit}.inline-title[data-level="2"]{font-variant:var(--h2-variant);letter-spacing:-.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)}.inline-title[data-level="2"] a{font-weight:inherit}.inline-title[data-level="3"]{font-variant:var(--h3-variant);letter-spacing:-.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)}.inline-title[data-level="3"] a{font-weight:inherit}.inline-title[data-level="4"]{font-variant:var(--h4-variant);letter-spacing:.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)}.inline-title[data-level="4"] a{font-weight:inherit}.inline-title[data-level="5"]{font-variant:var(--h5-variant);letter-spacing:.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)}.inline-title[data-level="5"] a{font-weight:inherit}.inline-title[data-level="6"]{font-variant:var(--h6-variant);letter-spacing:.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)}.inline-title[data-level="6"] a{font-weight:inherit}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-color:var(--hr-color);margin:2rem 0}.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-color:var(--hr-color)}.cm-s-obsidian .hmd-fold-html-stub.omittable,.cm-s-obsidian .omittable.hmd-fold-code-stub{display:none}.cm-s-obsidian .hmd-fold-html:hover .hmd-fold-html-stub.omittable,.cm-s-obsidian .hmd-fold-html:hover .omittable.hmd-fold-code-stub{display:block;right:0;bottom:100%;margin:0;position:absolute;z-index:100}.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:0}.internal-query{margin:0;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)}ol ol ul,ol ul,ol ul ul,ul ol ul,ul 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 ol,.markdown-rendered ul{padding-inline-start:var(--list-indent);margin-block-start:var(--p-spacing);margin-block-end:var(--p-spacing)}.markdown-rendered ol ol,.markdown-rendered ol ul,.markdown-rendered ul ol,.markdown-rendered ul ul{margin-block:0px}.markdown-rendered ol li p:first-of-type,.markdown-rendered ul li p:first-of-type{margin-block-start:0px}.markdown-rendered ol li p:last-of-type,.markdown-rendered ul li p:last-of-type{margin-block-end:0px}.markdown-rendered ol>li,.markdown-rendered ul>li{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing);position:relative}.markdown-preview-view ol>li,.markdown-preview-view ul>li{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing)}.markdown-rendered .list-collapse-indicator{margin-inline-start:-2.65em;padding-inline-end:2em}.markdown-rendered .list-bullet{float:left;margin-inline-start:-.8em}.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;will-change:transform}.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 .15s ease 0s,box-shadow .15s ease 0s;will-change:transform}.list-bullet::selection{background-color:transparent!important}li.is-collapsed .list-bullet::after{background-color:var(--list-marker-color-collapsed);box-shadow:0 0 0 4px var(--background-modifier-active-hover)}a{color:var(--link-color);outline:0;text-decoration-line:var(--link-decoration);text-decoration-thickness:var(--link-decoration-thickness);cursor:var(--cursor-link)}.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("../../lib/media/874d8b8e340f75575caa.svg");background-size:13px;padding-right:16px;cursor:var(--cursor-link);filter:var(--link-external-filter)}.markdown-rendered .internal-link,.metadata-container .internal-link{cursor:var(--cursor-link);text-decoration-line:var(--link-decoration);color:var(--link-color)}.markdown-rendered .internal-link.is-unresolved,.metadata-container .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)}.inline-block{display:inline-block;vertical-align:middle}.hidden-token{display:inline;letter-spacing:-1ch;font-family:monospace;color:transparent;font-size:1px!important}.cm-s-obsidian span.hmd-hidden-token.cm-formatting-code,.cm-s-obsidian span.hmd-hidden-token.cm-formatting-em,.cm-s-obsidian span.hmd-hidden-token.cm-formatting-link,.cm-s-obsidian span.hmd-hidden-token.cm-formatting-strikethrough,.cm-s-obsidian span.hmd-hidden-token.cm-formatting-strong{display:inline;letter-spacing:-1ch;font-family:monospace;color:transparent;font-size:1px!important}.cm-s-obsidian .cm-s-obsidian span.hmd-hidden-token.cm-formatting-task{color:transparent!important}mjx-container{outline:0}.markdown-reading-view table{margin-block-start:var(--p-spacing);margin-block-end:var(--p-spacing)}.markdown-rendered table{border-collapse:collapse;line-height:var(--table-line-height)}.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);min-width:var(--table-column-min-width);vertical-align:var(--table-cell-vertical-alignment)}.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);line-height:var(--line-height-tight)}.markdown-rendered td,.markdown-rendered th{text-align:start}.markdown-rendered td[align=left],.markdown-rendered th[align=left]{text-align:start}.markdown-rendered td[align=center],.markdown-rendered th[align=center]{text-align:center}.markdown-rendered td[align=right],.markdown-rendered th[align=right]{text-align:end}.markdown-rendered tbody>tr>td,.markdown-rendered thead>tr>th{white-space:var(--table-white-space);text-overflow:ellipsis;overflow:hidden}.markdown-rendered tbody tr{background-color:var(--table-background)}.markdown-rendered tbody tr:nth-child(odd){background-color:var(--table-row-alt-background)}.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)}.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)}.cm-s-obsidian .HyperMD-table-row{white-space:pre;word-break:normal;overflow-wrap:normal;font-size:.95em;font-family:var(--font-monospace)}.cm-s-obsidian .hmd-table-column,.cm-s-obsidian .hmd-table-column-content{display:inline-block}.cm-s-obsidian .hmd-table-column-left{text-align:left}.cm-s-obsidian .hmd-table-column-center{text-align:center}.cm-s-obsidian .hmd-table-column-right{text-align:right}.cm-s-obsidian .HyperMD-table-row span.cm-hmd-table-sep,.cm-s-obsidian .HyperMD-table-row-1{color:var(--text-faint)}.cm-s-obsidian .HyperMD-table-row-0{color:var(--table-header-color)}.cm-s-obsidian .hmd-fold-html table{border-collapse:collapse}.cm-s-obsidian .hmd-fold-html table td,.cm-s-obsidian .hmd-fold-html table th{padding:10px;border:1px solid #ccc}.cm-s-obsidian .hmd-inactive-line.HyperMD-table-row-1{color:transparent;text-shadow:none}.cm-s-obsidian .hmd-inactive-line.HyperMD-table-row-1>span{background:url("data:image/png; base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAQAAAAziH6sAAAADklEQVR42mOc+Z9x5n8ACTkDM4ikM1IAAAAASUVORK5CYII=") 0 center repeat-x}.cm-s-obsidian .hmd-inactive-line.HyperMD-table-row span.cm-hmd-table-sep{color:transparent}.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:0}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);font-weight:var(--tag-weight);text-decoration:var(--tag-decoration);padding:var(--tag-padding-y) var(--tag-padding-x);line-height:1}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);font-weight:var(--tag-weight);text-decoration:var(--tag-decoration);padding:var(--tag-padding-y) var(--tag-padding-x);line-height:1}input[type=checkbox]{appearance:none;border-radius:var(--checkbox-radius);border:1px solid var(--checkbox-border-color);flex-shrink:0;padding:0;margin:0;margin-inline-end:6px;width:var(--checkbox-size);height:var(--checkbox-size);position:relative;transition:box-shadow .15s ease-in-out 0s}input[type=checkbox]:active,input[type=checkbox]:focus,input[type=checkbox]:hover{outline:0;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);mask-position:52% 52%;mask-size:65%;mask-repeat:no-repeat;mask-image:url("data:image/svg+xml; utf8, ")}input[type=checkbox]:checked{background-color:var(--checkbox-color);border-color:var(--checkbox-color)}input[type=checkbox][data-indeterminate=true]:not(:checked)::after{content:"";position:absolute;top:calc(var(--checkbox-size)/ 2 - 2px);width:calc(var(--checkbox-size) - 6px);left:0;right:0;margin:0 auto;height:2px;display:block;border-radius:2px;background-color:var(--text-normal)}.task-list-item-checkbox{width:var(--checkbox-size);height:var(--checkbox-size)}.markdown-preview-view .task-list-item-checkbox{position:relative;top:.2em;margin-inline-end:.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)}.cm-s-obsidian span.hmd-hidden-token.cm-formatting-task{color:transparent!important}b,strong{font-weight:var(--bold-weight);color:var(--bold-color)}em,i{font-style:italic;color:var(--italic-color)}.markdown-rendered p{margin-block-start:var(--p-spacing);margin-block-end:var(--p-spacing)}.markdown-rendered mark{background-color:var(--text-highlight-bg);color:var(--text-normal)}.markdown-rendered mark .internal-link{color:var(--text-normal)}.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);width:fit-content}.embedded-backlinks .backlink-pane>.tree-item-self .tree-item-inner{margin-inline-end:var(--size-2-3)}.embedded-backlinks .backlink-pane .tree-item-flair{font-size:max(var(--font-ui-small),var(--font-smallest))}.view-action.mod-bookmarked{--icon-color:var(--icon-color-active);--icon-color-hover:var(--icon-color-active)}.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}.nav-folder.mod-root>.nav-folder-children{border-left:none;margin-left:0;padding-left:0}.nav-file-tag{background-color:var(--background-modifier-hover);border-radius:var(--radius-s);font-size:9px;font-weight:var(--font-semibold);letter-spacing:.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-folder.is-being-dragged-over{border-radius:var(--radius-s);background:hsla(var(--interactive-accent-hsl),.1)}.nav-folder.is-being-dragged-over>.nav-folder-title{color:var(--nav-item-color-highlighted)}.nav-folder.is-being-dragged-over>.nav-folder-title .collapse-icon{color:var(--nav-item-color-highlighted)}.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}.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)}.nav-file-title.is-active,.nav-folder-title.is-active,body:not(.is-grabbing) .nav-file-title.is-active:hover,body:not(.is-grabbing) .nav-folder-title.is-active:hover{color:var(--nav-item-color-active);background-color:var(--nav-item-background-active);font-weight:var(--nav-item-weight-active)}.nav-file-title.is-selected,.nav-folder-title.is-selected,body:not(.is-grabbing) .nav-file-title.is-selected:hover,body:not(.is-grabbing) .nav-folder-title.is-selected:hover{color:var(--nav-item-color-selected);background-color:var(--nav-item-background-selected)}.nav-file-title.is-being-dragged,.nav-folder-title.is-being-dragged,body:not(.is-grabbing) .nav-file-title.is-being-dragged,body:not(.is-grabbing) .nav-folder-title.is-being-dragged{background-color:var(--interactive-accent);color:var(--text-on-accent)}.nav-file-title.is-being-dragged .nav-folder-collapse-indicator,.nav-folder-title.is-being-dragged .nav-folder-collapse-indicator,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{color:var(--text-on-accent)}.nav-file-title.is-being-dragged .nav-file-tag,.nav-folder-title.is-being-dragged .nav-file-tag,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{color:var(--text-normal)}.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;width:100%}.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),.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),.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),.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)}.file-recovery-list-item-container{overflow:auto;flex:1 1 0px}.file-recovery-list{overflow:auto;padding:var(--size-4-3) var(--size-4-2);flex-grow:1;display:flex;flex-direction:column}.file-recovery-list .search-input-container{width:100%}.file-recovery-list-container{display:flex;flex-direction:column;flex-basis:250px;flex-shrink:0;border-right:1px solid var(--background-modifier-border)}.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:.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:.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:0;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}.graph-controls input[type=range],.graph-controls input[type=text]{width:100%;font-size:var(--font-ui-small)}.graph-controls .mod-cta{margin-top:var(--size-2-3);width:100%}.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:0 0 6px;transition:top .2s ease-in-out 0s}.graph-color-group input[type=color]{margin:0 2px 0 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:0;width:100%}.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}.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:0;padding:var(--size-4-1) 0;border-left:none}.metadata-container{container:metadata/inline-size}.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}.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:var(--size-4-2);position:absolute;content:"";height:var(--search-icon-size);width:var(--search-icon-size);display:block;background-color:var(--search-icon-color);mask-image:url("data:image/svg+xml,");mask-repeat:no-repeat}.is-rtl .search-input-container::before{left:auto;right:var(--size-4-2)}.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:0 0;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:0;right:2px;bottom:0;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color .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;mask-image:url("data:image/svg+xml,");mask-repeat:no-repeat}.search-input-clear-button:active,.search-input-clear-button:hover{color:var(--text-normal);transition:color .15s ease-in-out 0s}.search-input-suggest-button{position:absolute;left:0;top:0;color:var(--text-faint);cursor:var(--cursor);padding:var(--size-4-1) var(--size-4-2);opacity:0;z-index:10}.outgoing-link-pane{overflow-y:auto;padding:var(--size-4-3) var(--size-4-3) var(--size-4-8);flex:1 0 0px}.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(--nav-heading-color);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(--nav-heading-weight)}.backlink-pane>.tree-item-self.is-clickable.is-collapsed,.outgoing-link-pane>.tree-item-self.is-clickable.is-collapsed{color:var(--nav-heading-color-collapsed)}.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:0;width:0;height:3px}.search-suggest-info-text{color:var(--text-muted);margin-left:4px}.search-suggest-icon{padding:4px;border-radius:var(--radius-s)}.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.mod-group{align-items:center;margin:0;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:0}.search-suggest-item.mod-group:not(:first-child){border-top:1px solid var(--background-modifier-border);margin-top:6px;padding:6px 6px 0 14px;margin-left:-6px;margin-right:-6px}.search-suggest-item.mod-group.is-selected,.search-suggest-item.mod-group:hover{background-color:initial}.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-result-file-matches:empty{display:none}.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}.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)}.search-result-hover-button{position:absolute;display:flex;right:2px;border-radius:var(--radius-s);color:var(--text-faint);padding:1px 3px}.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 0}.copy-search-result-container{display:flex;flex-direction:column}.copy-search-result-textarea{height:300px;max-height:20vh;resize: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)}.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}body:not(.is-phone) .workspace-leaf.mod-active .search-result.has-focus .tree-item-self{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-result-count{font-size:var(--font-ui-smaller);font-variant-numeric:tabular-nums}.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=range],.search-params input[type=text]{width:100%;font-size:var(--font-ui-small)}.search-params .mod-cta{margin-top:var(--size-2-3);width:100%}.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:.5px}.clickable-icon:hover .more-options-icon{background-color:var(--icon-color-hover);opacity:var(--icon-opacity-hover)}.slides-container{position:fixed;top:0;left:0;height:100vh;width:100vw;transition:-webkit-transform .8s ease 0s;background-color:#191919;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}.reveal input[type=checkbox]{width:24px;height:24px}.reveal .footnote-item,.reveal .task-list-item{list-style:none}.reveal .task-list-item{margin-left:-1.5em}.sync-history-list-item-header .tree-item-flair{padding:var(--size-4-1)}.mod-selectable{cursor:var(--cursor);padding:var(--size-4-2) var(--size-4-4);border-radius:var(--radius-m)}.sync-file-tree-container{max-height:calc(min(90vh,var(--modal-max-height)) - 250px);overflow:auto}.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)}.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}body:not(.is-phone) .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)}body{--canvas-color:192,192,192}body.theme-dark{--canvas-color:126,126,126}.canvas-wrapper{position:absolute;width:100%;height:100%;left:0;top:0;--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-controls{display:none!important}.canvas-wrapper.is-screenshotting *{pointer-events:none!important}.canvas-mover{position:absolute;width:100%;height:100%;left:0;top:0;cursor:grab}.canvas-mover:active{cursor:grabbing}.canvas-background{position:absolute;width:100%;height:100%;left:0;top:0;pointer-events:none}.canvas-background circle{fill:var(--canvas-dot-pattern)}.canvas{position:absolute;width:100%;height:100%;left:0;top:0;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),.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),.03);border-color:hsla(var(--color-accent-hsl),.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{display:flex;position:absolute;z-index:var(--layer-cover);font-size:var(--font-ui-medium)}.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:0;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}.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:0;top:0;width:100%;height:100%;box-shadow:var(--shadow-stationary)}.canvas-node-label{position:absolute;left:0;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 .5s cubic-bezier(.16, 1, .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}.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),.1)}.canvas-icon-placeholder{display:flex;width:40%;height:40%}.canvas-icon-placeholder svg{opacity:.3;color:rgb(var(--canvas-color));width:100%;height:100%}.canvas-node-interaction-layer{position:absolute;width:0;height:0;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:0;height:0}.canvas-node.is-dragging{pointer-events:none}.canvas-node.is-dragging .canvas-node-container{box-shadow:var(--shadow-drag)}.canvas-node.is-focused,.canvas-node.is-selected{touch-action:initial}.canvas-node.is-focused .canvas-node-label,.canvas-node.is-selected .canvas-node-label{color:var(--text-muted)}.canvas-node.is-focused .canvas-node-container,.canvas-node.is-selected .canvas-node-container{border-color:var(--color-accent);box-shadow:var(--shadow-stationary),var(--shadow-border-accent)}.canvas-node.is-focused.is-dragging .canvas-node-container,.canvas-node.is-selected.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),.7);box-shadow:inset 0 0 0 1px rgba(var(--canvas-color),.7),var(--shadow-stationary)}.canvas-node.is-focused.is-themed .canvas-node-container,.canvas-node.is-selected.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-focused.is-themed.is-dragging .canvas-node-container,.canvas-node.is-selected.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,.15) 0 2px 10px;background-color:hsla(var(--color-accent-hsl),.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:0;top:0;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),.07)}.canvas-group-label{position:absolute;left:0;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),.1);line-height:1}body:not(.is-ios) .canvas-wrapper.mod-animating .canvas-group-label{transition:transform .5s cubic-bezier(.16, 1, .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:0}.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::after,.canvas-node-content.markdown-embed>.markdown-embed-content>.markdown-preview-view::before{content:" ";display:block;min-height:min(calc(var(--canvas-node-height) * .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:0}.canvas-node-content.markdown-embed>.markdown-embed-content>.markdown-preview-view .markdown-preview-sizer>div:last-child>:last-child{margin-bottom:0}.is-focused .canvas-node-content.markdown-embed>.markdown-embed-content>.markdown-preview-view{transform:translateZ(0)}.canvas-node.is-themed .canvas-node-content{background-color:rgba(var(--canvas-color),.07)}.canvas-node-content.media-embed{justify-content:center;align-items:center;display:flex}.canvas-node-content.media-embed audio,.canvas-node-content.media-embed img,.canvas-node-content.media-embed video{flex-shrink:0;flex-grow:1}.canvas-node-content.media-embed audio,.canvas-node-content.media-embed img:not([width]),.canvas-node-content.media-embed video{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}.canvas-wrapper.mod-readonly .canvas-node-resizer{display:none}.canvas-node-resizer[data-resize=top]{left:0;right:0;width:auto;top:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);cursor:ns-resize}.canvas-node-resizer[data-resize=bottom]{left:0;right:0;width:auto;bottom:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);cursor:ns-resize}.canvas-node-resizer[data-resize=left]{top:0;bottom:0;height:auto;left:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);cursor:ew-resize}.canvas-node-resizer[data-resize=right]{top:0;bottom:0;height:auto;right:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);cursor:ew-resize}.canvas-node-resizer[data-resize=topright]{right:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);top:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);cursor:nesw-resize}.canvas-node-resizer[data-resize=bottomright]{right:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);bottom:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);cursor:nwse-resize}.canvas-node-resizer[data-resize=topleft]{left:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);top:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);cursor:nwse-resize}.canvas-node-resizer[data-resize=bottomleft]{left:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);bottom:calc(var(--resizer-size) * var(--zoom-multiplier) * -.5);cursor:nesw-resize}.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:0;top:0}.canvas-node-resizer:hover .canvas-node-connection-point::after{opacity:1}.canvas-snaps{position:absolute;width:100%;height:100%;left:0;top:0;overflow:visible;pointer-events:none;opacity:.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:0;top:0;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 .1s 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 .1s 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-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))}.canvas-color-picker-item input[type=color]{margin:-4px 0 0 -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))}.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-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}.browser-favicon-container{display:flex;align-items:center}.browser-favicon-container>*{height:var(--icon-size);max-width:var(--icon-size)}.view-action.mod-browser{--icon-color:var(--icon-color-active);--icon-color-hover:var(--icon-color-active)}.browser-container{height:100%;display:flex;flex-direction:column}.browser-address{width:100%;display:flex;margin:0 2px}.browser-address input{flex-grow:1;min-width:50px}.browser-address-container{padding:0 var(--size-4-2)}.browser-address-container::after{background:0 0!important}.view-content.browser-content{padding:0}.browser-content{border-top:1px solid var(--divider-color);height:100%;display:flex;flex-direction:column}.browser-content webview{flex-grow:1;width:100%}.browser-content .reader-mode-content{overflow-y:auto}.browser-content .reader-mode-content.is-readable-line-width .markdown-preview-sizer{max-width:var(--file-line-width);margin-left:auto;margin-right:auto}.browser-content .markdown-preview-view .external-link{background-image:none;padding-right:0}.browser-content .error-notice{max-width:var(--file-line-width);margin:25% auto 0;padding:var(--file-margins)}.browser-history-view-item{text-wrap:nowrap;overflow:hidden}textarea.browser-adblock-lists{flex-grow:1}.starter{user-select:none;padding-top:0!important}.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 0 0}.splash-brand{flex:0 0 content;padding:20px 0}.splash-brand-logo-text{margin-top:20px;color:#fff}.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}.open-vault-options-container::-webkit-scrollbar{display:none}.open-vault-options input[type=text]{width:150px}.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}.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}.recent-vaults-list-item-name[contenteditable]{cursor:text;border-color:var(--interactive-accent);background-color:var(--background-modifier-hover);font-size:.9em;padding:0 var(--size-4-1)}: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-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);--system-status-background:var(--titlebar-background)}.is-tablet.theme-dark{--titlebar-background:var(--background-primary);--titlebar-background-focused:var(--background-primary);--interactive-normal:var(--background-modifier-border);--modal-background:var(--background-secondary)}.is-mobile .tree-item .tree-item-self{padding-right:var(--size-4-2)}.is-mobile input[type=text]{width:100%}.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 .markdown-rendered .heading-collapse-indicator{margin-left:-20px}.is-mobile .markdown-rendered ol,.is-mobile .markdown-rendered ul{padding-inline-start:25px}.is-tablet .mod-left-split-toggle{display:none}.is-tablet button:not(.clickable-icon){padding:var(--size-4-1) var(--size-4-5)}.mod-tappable{transition:opacity .15s ease-in-out 0s}.mod-tappable.mod-tap{opacity:.5}.mod-fade{--scroll-fade-offset-right:0;--scroll-fade-offset-left:0}.mod-fade:not(.mod-at-start)::before{content:" ";position:absolute;top:0;left:var(--scroll-fade-offset-left);width:30px;height:100%;background:linear-gradient(to right,var(--background-primary),transparent)}.mod-fade:not(.mod-at-end)::after{content:" ";position:absolute;top:0;right:var(--scroll-fade-offset-right);width:30px;height:100%;background:linear-gradient(to right,transparent,var(--background-primary))}.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)}body.is-tablet .workspace-drawer.mod-left .workspace-drawer-inner{padding-left:var(--ribbon-width)}.workspace-drawer .nav-buttons-container::-webkit-scrollbar,.workspace-drawer .nav-buttons-container::-webkit-scrollbar-thumb,.workspace-drawer .workspace-drawer-actions::-webkit-scrollbar,.workspace-drawer .workspace-drawer-actions::-webkit-scrollbar-thumb{visibility:hidden}.workspace-drawer-ribbon::-webkit-scrollbar,.workspace-drawer-ribbon::-webkit-scrollbar-thumb{visibility:hidden;width:0}.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)}body.is-tablet .mobile-navbar{display:none}.is-mobile .prompt-input[type=text]{padding:var(--size-4-4)}.is-phone .prompt-input[type=text]{border: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:0;left:0;right:0;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)}.is-tablet{--toolbar-option-width:50px}.is-tablet.is-ios .mobile-toolbar{padding-bottom:var(--safe-area-inset-bottom)}.mobile-toolbar-options-list::-webkit-scrollbar{width:0!important;height:0!important}.is-tablet.theme-dark .suggestion-container{background-color:var(--background-secondary)}.is-mobile .file-tree .tree-item-self{font-size:var(--font-ui-small)}.markdown-preview-view .heading-collapse-indicator{margin-left:calc(0px - var(--collapse-arrow-size) - 10px)!important;padding:0 0!important}.node-insert-event{animation-duration:unset!important;animation-name:none!important}hr{border:none;border-top:var(--hr-thickness) solid;border-color:var(--hr-color)}.cm-fold-indicator.is-collapsed .collapse-indicator,.cm-gutterElement .is-collapsed .collapse-indicator,.cm-gutterElement:hover .collapse-indicator,.cm-line:hover .cm-fold-indicator .collapse-indicator,.collapse-indicator:hover,.fold-gutter.is-collapsed,.fold-gutter:hover,.is-collapsed .collapse-indicator,.metadata-properties-heading:hover .collapse-indicator,h1:hover .collapse-indicator,h2:hover .collapse-indicator,h3:hover .collapse-indicator,h4:hover .collapse-indicator,h5:hover .collapse-indicator,h6:hover .collapse-indicator{opacity:1;transition:opacity .15s ease-in-out}.collapse-indicator,.fold-gutter{opacity:0;transition:opacity .15s ease-in-out}@media print{html body>:not(.print){display:unset!important}.collapse-indicator{display:none!important}.is-collapsed>element>.collapse-indicator{display:unset!important}}.mod-header .metadata-container{display:none!important}.markdown-embed .heading-collapse-indicator{translate:-1em 0}.markdown-embed.internal-embed.inline-embed .markdown-embed-content,.markdown-embed.internal-embed.inline-embed .markdown-embed-content .markdown-preview-view{overflow:visible!important}.markdown-embed-link{display:none!important}.canvas-wrapper:not(.mod-readonly) .canvas-node-content.markdown-embed>.markdown-embed-content>.markdown-preview-view{user-select:text!important}.canvas-card-menu{display:none;cursor:default!important}.canvas-controls{display:none;cursor:default!important}.canvas-background{pointer-events:visible!important;cursor:grab!important}.canvas-background:active{cursor:grabbing!important}.canvas-node-connection-point{display:none;cursor:default!important}.canvas-node-content{backface-visibility:visible!important}.canvas-menu-container{display:none}.canvas-node-content-blocker{cursor:pointer!important}.canvas-wrapper{position:relative;cursor:default!important}.canvas-node-resizer{cursor:default!important}.canvas-node-container{cursor:default!important}.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 .2s ease-in-out,width .3s ease-in-out,background-color .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}.webpage-container .is-collapsed .collapse-indicator svg.svg-icon,.webpage-container .is-collapsed .list-collapse-indicator svg.svg-icon{color:var(--collapse-icon-color-collapsed)} \ No newline at end of file diff --git a/obsidian/lib/styles/other-plugins.css b/obsidian/lib/styles/other-plugins.css new file mode 100644 index 0000000..aaea94d --- /dev/null +++ b/obsidian/lib/styles/other-plugins.css @@ -0,0 +1 @@ +.workspace-leaf-content[data-type=tagfolder-view-list]>.view-content,.workspace-leaf-content[data-type=tagfolder-view]>.view-content{padding:0;height:100%;overflow:unset}.override-input{flex-direction:column-reverse}.tagfolder-tag::before{all:inherit;color:inherit;font:inherit}.tagfolder-tag.tag-tag::before{margin-left:0;margin-right:0}.tagfolder-tag.tag-tag span.tf-tag-each:empty{display:none}.tagfolder-tag.tag-tag.tf-tag span.tf-tag-each:first-child:not(:empty):before{content:"#";margin-left:.3em}.tagfolder-tag.tag-tag.tf-link span.tf-tag-each:first-child:not(:empty):before{content:"";margin-left:.3em}.tagfolder-tag.tag-tag.tf-link.link-cross span.tf-tag-each:first-child:not(:empty):before{content:"⇔ ";margin-left:.3em}.tagfolder-tag.tag-tag.tf-link.link-forward span.tf-tag-each:first-child:not(:empty):before{content:"⇒ ";margin-left:.3em}.tagfolder-tag.tag-tag.tf-link.link-reverse span.tf-tag-each:first-child:not(:empty):before{content:"⇐ ";margin-left:.3em}.tagfolder-tag.tag-tag span.tf-tag-each::before{content:"→ ";margin-left:0;margin-right:0}.tf-taglist{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:inline-block;flex-shrink:100;margin-left:auto;text-align:right}.tf-taglist:not(:empty){min-width:3em}.tf-taglist .tf-tag{background-color:var(--background-secondary-alt);border-radius:4px;padding:2px 4px;margin-left:4px;color:var(--nav-item-color)}.nav-file-title:hover .tf-taglist,.nav-folder-title:hover .tagfolder-quantity{color:var(--text-on-accent)}.nav-file-title:hover .tf-taglist span.tf-tag,.nav-folder-title:hover .tagfolder-quantity span{color:var(--text-on-accent);background-color:var(--interactive-accent-hover)}.lsl-f{flex-direction:row;display:flex;flex-grow:1;overflow:hidden;flex-shrink:1}.lsl-f:not(:last-child){min-width:3em}.lsl-f:empty::before{content:"..."}.tagfolder-titletagname{flex-grow:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tagfolder-quantity span{background-color:var(--background-secondary-alt);color:var(--nav-item-color);border-radius:4px;padding:2px 4px}.tagfolder-quantity{width:3em;text-align:right;cursor:pointer;margin-left:auto}.tag-folder-title{max-width:100%}.tree-item.nav-folder.updating{background:linear-gradient(135deg,var(--interactive-accent-hover) 0,var(--interactive-accent-hover) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0) 100%);background-repeat:no-repeat;background-position:0 0;background-size:10px 10px} \ No newline at end of file diff --git a/obsidian/projects.html b/obsidian/projects.html new file mode 100644 index 0000000..9bcfa80 --- /dev/null +++ b/obsidian/projects.html @@ -0,0 +1,19 @@ + + Projects + + + + + + + + + + + +
\ No newline at end of file