From f6de7b2240b013542eef3b186217ee1dad1e2c69 Mon Sep 17 00:00:00 2001 From: qtchaos <72168435+qtchaos@users.noreply.github.com> Date: Tue, 2 Jan 2024 04:13:28 +0200 Subject: [PATCH] Final rewordings, `postgres.ssl`, dark/light icon + dir based titles. --- components/Logo.vue | 3 -- components/global/Logo.vue | 16 +++++++++ content/0.index.md | 6 ++-- content/1.self-hosting/1.hosting-intro.md | 6 ++-- content/1.self-hosting/3.about-pwa.md | 10 +++--- content/1.self-hosting/4.troubleshooting.md | 28 +++++++-------- content/1.self-hosting/_dir.yml | 1 + content/2.proxy/1.deploy.md | 2 +- content/2.proxy/2.configuration.md | 4 +-- content/2.proxy/3.changelog.md | 10 +++--- content/2.proxy/_dir.yml | 1 + content/3.client/2.tmdb.md | 4 +-- content/3.client/3.configuration.md | 4 +-- content/3.client/4.changelog.md | 36 +++++++++++--------- content/3.client/_dir.yml | 1 + content/4.backend/2.configuration.md | 7 ++++ content/4.backend/3.changelog.md | 12 +++---- content/4.backend/_dir.yml | 1 + public/icon-dark.png | Bin 0 -> 2509 bytes public/icon-light.png | Bin 0 -> 3048 bytes public/icon.png | Bin 2186 -> 0 bytes 21 files changed, 87 insertions(+), 65 deletions(-) delete mode 100644 components/Logo.vue create mode 100644 components/global/Logo.vue create mode 100644 public/icon-dark.png create mode 100644 public/icon-light.png delete mode 100644 public/icon.png diff --git a/components/Logo.vue b/components/Logo.vue deleted file mode 100644 index 5774282..0000000 --- a/components/Logo.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/components/global/Logo.vue b/components/global/Logo.vue new file mode 100644 index 0000000..77a9d15 --- /dev/null +++ b/components/global/Logo.vue @@ -0,0 +1,16 @@ + + + diff --git a/content/0.index.md b/content/0.index.md index 06f417a..32e3929 100644 --- a/content/0.index.md +++ b/content/0.index.md @@ -40,9 +40,9 @@ What's all the fuss? :: ::card{icon="material-symbols:hangout-video-off"} #title - No ADs + No Ads #description - movie-web will never show ADs, enjoy watching without interruptions. + movie-web will never show ads, enjoy watching without interruptions. :: ::card{icon="ic:baseline-ondemand-video"} #title @@ -84,7 +84,7 @@ What's all the fuss? #title Customisable #description - Supports custom themes, subtitle colors and sizes so you can make it look however you want. + Supports custom themes, subtitle colors and subtitle sizes so you can make it look however you want. :: ::card{icon="mdi:cellphone"} #title diff --git a/content/1.self-hosting/1.hosting-intro.md b/content/1.self-hosting/1.hosting-intro.md index 5e73ba1..b108080 100644 --- a/content/1.self-hosting/1.hosting-intro.md +++ b/content/1.self-hosting/1.hosting-intro.md @@ -2,7 +2,7 @@ title: 'Start self-hosting' --- -# How to self host +# How to self-host ::alert{type="info"} We **do not** provide support on how to self-host. If you can't figure it out then tough luck. Please do not make GitHub issues or ask in our Discord server for support on how to self-host. @@ -21,7 +21,7 @@ This method is the easiest to self-host and is recommended for most users. ## Method 2 - Only host the account server -If you want to own your own data, it's possible to selfhost just the account server and nothing else. +If you want to own your own data, it's possible to self-host just the account server and nothing else. This method is only recommended if you have experience hosting databases or other similar stateful applications. 1. [Set up the Backend!](../4.backend/1.deploy.md) @@ -29,7 +29,7 @@ This method is only recommended if you have experience hosting databases or othe ## Method 3 - Host everything -If you want an instance that's completely isolated from the official movie-web. You can selfhost all of the parts yourself, though this method is not recommended for inexperienced hosters. +If you want an instance that's completely isolated from the official movie-web. You can self-host all of the parts yourself, though this method is not recommended for inexperienced hosters. 1. [Set up the Proxy!](../2.proxy/1.deploy.md) 2. [Set up the Backend!](../4.backend/1.deploy.md) diff --git a/content/1.self-hosting/3.about-pwa.md b/content/1.self-hosting/3.about-pwa.md index d103ed0..6c656bb 100644 --- a/content/1.self-hosting/3.about-pwa.md +++ b/content/1.self-hosting/3.about-pwa.md @@ -2,9 +2,9 @@ title: 'PWA vs no-PWA' --- -# About Selfhosting PWA +# About Self-hosting PWA -So that clients can have a more native app-like experience on mobile, movie-web has a function to support Progessive Web Apps (PWA). You can learn more about what a PWA is [here](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/What_is_a_progressive_web_app). +So that clients can have a more native app-like experience on mobile, movie-web has a function to support Progressive Web Apps (PWA). You can learn more about what a PWA is [here](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/What_is_a_progressive_web_app). In movie-web version 3, PWAs were enabled by default. Unfortunately, PWAs tend to come with caching complications that can be tricky to resolve. That's why we have **disabled** PWAs by default in movie-web version 4. If you are upgrading from version 3, please [read our upgrade guide](../3.client/5.upgrade.md) for more information. @@ -12,12 +12,12 @@ In movie-web version 3, PWAs were enabled by default. Unfortunately, PWAs tend t Enabling PWAs means that you cannot disable it again - Please only proceed if you know what you are doing! :: -## If you are running movie-web on a hoster such as Vercel +## If you are running movie-web on a hosting platform such as Vercel -If your hosting is building movie-web from the source, you can enable PWAs using environment variables. The full environment variable reference can be found [here](../3.client/3.configuration.md) but for PWAs we are only interested in `VITE_PWA_ENABLED`. +If your hosting is building movie-web from the source, you can enable PWAs using the [`VITE_PWA_ENABLED`](../3.client/3.configuration.md#vite_pwa_enabled) environment variable. Setting [`VITE_PWA_ENABLED`](../3.client/3.configuration.md#vite_pwa_enabled) to `true` will generate a [service worker file](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable#service_worker) and a [web app manifest](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable#the_web_app_manifest) which enable the website to be installed from a [web browser both on Desktop and on Mobile](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable#installation_from_the_web). ## If you are running movie-web using the .zip files -If you are downloading the movie-web `zip` files from our GitHub and installing them on a static website hoster, then all you need to do is to make sure to download the [`movie-web.pwa.zip`](https://github.com/movie-web/movie-web/releases/latest/download/movie-web.pwa.zip) file instead of the `movie-web.zip` file! +If you are downloading the movie-web `zip` files from our GitHub and installing them on a static website host, then all you need to do is to make sure to download the [`movie-web.pwa.zip`](https://github.com/movie-web/movie-web/releases/latest/download/movie-web.pwa.zip) file instead of the `movie-web.zip` file! diff --git a/content/1.self-hosting/4.troubleshooting.md b/content/1.self-hosting/4.troubleshooting.md index b5cc6b8..0380474 100644 --- a/content/1.self-hosting/4.troubleshooting.md +++ b/content/1.self-hosting/4.troubleshooting.md @@ -4,43 +4,41 @@ title: 'Troubleshooting' # Troubleshooting -There is always a possibility for something to go wrong while trying to deploy your own instance of movie-web. This page will contain common issues people come across while self-hosting and their solutions. +There is always a possibility for something to go wrong while trying to deploy your own instance of movie-web. This page will contain common issues people have come across while self-hosting and their solutions. ## "Failed to find media, try again!" while searching -This is likely a misconfigured TMDB api key. Verify that TMDB isn't working by going to `/admin` or `/#/admin`. Then clicking `Test TMDB`. +**This is likely a misconfigured TMDB API key.** To verify that TMDB is the issue, visit `/admin` or `/#/admin` and click on the `Test TMDB` button. -If it succeeds, the TMDB api key is correct and it will be a different issue. +If the test succeeds, then your TMDB configuration is correct and the issue is with something else. -If it does not work. Recheck your TMDB api key. **Make sure its the READ api key, not the normal api key.** +If the test fails, then you should recheck your credentials. [**Make sure you're using the Read Access Token, not the normal API Key.**](https://www.themoviedb.org/settings/api#v4_auth_key){target="\_blank"} ## Everything I try to watch fails -This is likely a misconfigured worker. Verify that the workers are the issue by going to `/admin` or `/#/admin`. Then clicking `Test workers`. +**This is likely a misconfigured Worker.** To make sure that the Workers are the issue, visit `/admin` or `/#/admin`, then click on the `Test workers` button. -You should have at least 1 worker registered. +You should have at least 1 Worker registered, if you don't, you should [deploy a worker](../2.proxy/1.deploy.md#method-1---cloudflare-easy) and [set it up in the client](../3.client/3.configuration.md#vite_cors_proxy_url). -If any worker fails the test, you should double check its URL and double check if the worker has the correct code. +If any Worker fails the test, you should double check its URL and see if its up to date with the latest updates. ## I can't make an account or login -This is likely misconfigured or broken backend. Verify the backend by going to `/admin` or `/#/admin`. Then clicking `Test backend`. +**This is likely misconfigured or broken backend.** To verify that the backend is the issue, visit `/admin` or `/#/admin`, then click on the `Test backend` button. -It should give you the name that you have configured as backend with the latest version of the backend. +If the backend is online and properly configured it should display the name and version of the backend. If the name and description of the test don't match your own instance, [make sure you have your backend URL set correctly.](../3.client/3.configuration.md#vite_backend_url) -If the test gives you an error, your backend URL configuration option likely has a typo. +If the test gives you an error, your [backend URL configuration option](../3.client/3.configuration.md#vite_backend_url) likely has a typo. -If the version is not the latest version, you should update your backend instance. +If the version that shows up on your backend is not the latest version, you should update your backend to keep up with the latest changes. -If the name and description of the results don't match your own instance, make sure you have your backend URL set correctly. - -## I updated from version 3 to version 4 but still see the old version +## I updated from version 3 to version 4 but I still see the old version It is likely that you haven't installed the PWA version of movie-web. Please read the [upgrade guide](../3.client/5.upgrade.md) for more details on the matter. ## I'm getting SSL issues when using a hosted postgres database -You are most likely missing the `postgres.ssl` variable on your backend, enable it and the connection should work. +You are most likely missing the [`postgres.ssl`](../4.backend/2.configuration.md#postgresssl) variable on your backend, enable it and the connection should work. ## Permission denied to set parameter "session_replication_role" diff --git a/content/1.self-hosting/_dir.yml b/content/1.self-hosting/_dir.yml index 784a6e8..6532819 100644 --- a/content/1.self-hosting/_dir.yml +++ b/content/1.self-hosting/_dir.yml @@ -1,3 +1,4 @@ title: 'Self-Hosting' icon: mdi:server-network navigation.redirect: /self-hosting/hosting-intro +titleTemplate: '%s | Self-Hosting' diff --git a/content/2.proxy/1.deploy.md b/content/2.proxy/1.deploy.md index ef28f24..2a3e015 100644 --- a/content/2.proxy/1.deploy.md +++ b/content/2.proxy/1.deploy.md @@ -12,7 +12,7 @@ Cloudflare has a generous free plan, so you don't need to pay anything unless yo 1. Create a GitHub account at https://github.com if you don't have one. 1. Click the `Deploy with workers` button above. -1. Click the `Authorize Workers` button to authorise Cloudflare to talk to GitHub. +1. Click the `Authorize Workers` button to authorize Cloudflare to talk to GitHub. 1. Authorize Cloudflare Workers in the GitHub page that pops up. 1. Follow the instructions to configure your Cloudflare account. Select `I have an account` if you have a Cloudflare account already, otherwise follow the link to create one. 1. Click the link to [`Workers Dashboard`](https://dash.cloudflare.com/sign-up?to=/:account/workers-and-pages){target="\_blank"} to find your account ID. diff --git a/content/2.proxy/2.configuration.md b/content/2.proxy/2.configuration.md index 74cc273..7bd7a3e 100644 --- a/content/2.proxy/2.configuration.md +++ b/content/2.proxy/2.configuration.md @@ -4,7 +4,7 @@ title: 'Configuration' # Proxy Config Reference -Adding environment variables is different for every platform, [here's a guide on how to add environment variables on Cloudflare](https://developers.cloudflare.com/workers/configuration/environment-variables/#add-environment-variables-via-the-dashboard). You'll have to do some research on your own if you aren't hosting the proxy on Cloudflare. +Adding environment variables is different for every platform, [here's a guide on how to add environment variables on Cloudflare](https://developers.cloudflare.com/workers/configuration/environment-variables/#add-environment-variables-via-the-dashboard){target="\_blank"}. You'll have to do some research on your own if you aren't hosting the proxy on Cloudflare. # Reference @@ -13,7 +13,7 @@ Adding environment variables is different for every platform, [here's a guide on - Type: `string` - Default: `""` -Turnstile secret key from the [Cloudflare dashboard](https://dash.cloudflare.com/sign-up?to=/:account/turnstile). +Turnstile secret key from the [Cloudflare dashboard](https://dash.cloudflare.com/sign-up?to=/:account/turnstile){target="\_blank"}. ::alert{type="warning"} Keep in mind that you will also need to [configure the Turnstile key on the client](../3.client/3.configuration.md#vite_turnstile_key) and **configure the [`JWT_SECRET`](#jwt_secret) below.** :: diff --git a/content/2.proxy/3.changelog.md b/content/2.proxy/3.changelog.md index 9fc8627..4aa68b9 100644 --- a/content/2.proxy/3.changelog.md +++ b/content/2.proxy/3.changelog.md @@ -4,14 +4,14 @@ title: 'Changelog' # Version 2.1.0 -- Added turnstile integration to secure your workers from abuse. +- [Added Turnstile integration](2.configuration.md#turnstile_secret) to secure your workers from abuse. # Version 2.0.1 -- bugfix where sometimes body would double read -- bugfix where sometimes no response would be given at all due to race condition +- Bugfix where sometimes body would double read +- Bugfix where sometimes no response would be given at all due to race condition # Version 2.0.0 -- full rewrite, now supports multiple platforms: nodejs, cloudflare, aws lambda -- standard proxy headers are no longer sent through. Which now doesn't send a client ip through anymore. +- Full rewrite, now supports multiple platforms: nodejs, Cloudflare, AWS lambda +- Standard proxy headers are no longer sent through. Which now doesn't send a client ip through anymore. diff --git a/content/2.proxy/_dir.yml b/content/2.proxy/_dir.yml index 67a6383..3446746 100644 --- a/content/2.proxy/_dir.yml +++ b/content/2.proxy/_dir.yml @@ -1,3 +1,4 @@ title: 'Proxy' icon: mdi:connection navigation.redirect: /proxy/introduction +titleTemplate: '%s | Proxy' diff --git a/content/3.client/2.tmdb.md b/content/3.client/2.tmdb.md index a5ac160..3c08cdb 100644 --- a/content/3.client/2.tmdb.md +++ b/content/3.client/2.tmdb.md @@ -2,9 +2,9 @@ title: 'TMDB API Key' --- -## Getting an API Key +# Getting an API Key -In order to search for movies and TV shows, we use an API called "The Movie Database" (TMDB). In order for your client to be able to search, you need to generate an API key. +In order to search for movies and TV shows, we use an API called ["The Movie Database" (TMDB)](https://www.themoviedb.org/){target="\_blank"}. For your client to be able to search, you need to generate am API key for yourself. ::alert{type="info"} The API key is **free**, you just need to create an account. diff --git a/content/3.client/3.configuration.md b/content/3.client/3.configuration.md index 2e1caac..dda4694 100644 --- a/content/3.client/3.configuration.md +++ b/content/3.client/3.configuration.md @@ -71,7 +71,7 @@ This is the DMCA email for on the DMCA page. If this config value is present, a - Default: `false` The application has two routing modes: hash-router and history-router. -Hash router means that every page is linked with a hash like so: `https://example.com/#/browse`. +Hash router means that every page is linked with a hash like so: https://example.com/#/browse. History router does routing without a hash like so: `https://example.com/browse`, this looks a lot nicer, but it requires that your hosting environment supports Single-Page-Application (SPA) redirects (Vercel supports this feature). If you don't know what that means, don't enable this. @@ -105,7 +105,7 @@ The list is comma separated, you can add as many as needed. - Type: `string` - Default: `""` -- Example: `"google.com:exampe.com,123movies.com:flixhq.to"` +- Example: "google.com:example.com,123movies.com:flixhq.to" Sometimes you want to proxy a CDN. This is how you can easily replace a CDN URL with your own. diff --git a/content/3.client/4.changelog.md b/content/3.client/4.changelog.md index 9121a6f..6a3a9d9 100644 --- a/content/3.client/4.changelog.md +++ b/content/3.client/4.changelog.md @@ -3,24 +3,26 @@ title: 'Changelog' --- # Version 4.2.1 - - Fix the scrape screen showing success when it shouldn't - - Fix some more [Object object] showing in the error dialogue - - Updated translations: Czech, German, French, Polish, Italian, Thai, Hebrew, Nepali, Estonian, Toki Pona, Portuguese, Pirate - - Fix Ukrainian, Hindi and Toki Pona flags + +- Fix the scrape screen showing success when it shouldn't +- Fix some more [Object object] showing in the error dialogue +- Updated translations: Czech, German, French, Polish, Italian, Thai, Hebrew, Nepali, Estonian, Toki Pona, Portuguese, Pirate +- Fix Ukrainian, Hindi and Toki Pona flags # Version 4.2.0 - - Add splashscreens for PWA - - Renamed captions to subtitles in translations - - Add youtube-esque shortcuts for navigating video - - Fix error dialogue not showing actual error message but instead shows [Object object] - - Gray subtitle color - - Hide settings button on mobile when it shouldnt have shown - - Fix Estonia and Nepal flag - - Update provider package to 2.0.1 - - Superstream now split into showbox and febbox. - - Fixed sidebar not highlighting last item on high screens - - New translations: Hindi, Polish, Portuguese - Brazillian, Ukrainian - - Updates to translations: Czech, Estonian, German, Hebrew, Cambodian, Nepali, Swedish, Thai, Chinese, Minion + +- Add splashscreens for PWA +- Renamed captions to subtitles in translations +- Add youtube-esque shortcuts for navigating video +- Fix error dialogue not showing actual error message but instead shows [Object object] +- Gray subtitle color +- Hide settings button on mobile when it shouldnt have shown +- Fix Estonia and Nepal flag +- Update provider package to 2.0.1 +- Superstream now split into showbox and febbox. +- Fixed sidebar not highlighting last item on high screens +- New translations: Hindi, Polish, Portuguese - Brazillian, Ukrainian +- Updates to translations: Czech, Estonian, German, Hebrew, Cambodian, Nepali, Swedish, Thai, Chinese, Minion # Version 4.1.3 @@ -53,7 +55,7 @@ title: 'Changelog' - Translation improvements: turkish, hebrew - Fixed text directions for captions - Anti-tamper script has been removed and replaced with turnstile (this is the devtools blocked, you can use devtools again) -- Added way to add the providers-api instead of proxies +- Added way to add the providers-API instead of proxies # Version 4.0.2 diff --git a/content/3.client/_dir.yml b/content/3.client/_dir.yml index fb6bb2c..2b99539 100644 --- a/content/3.client/_dir.yml +++ b/content/3.client/_dir.yml @@ -1,3 +1,4 @@ title: 'Client' icon: mdi:monitor navigation.redirect: /client/introduction +titleTemplate: '%s | Client' diff --git a/content/4.backend/2.configuration.md b/content/4.backend/2.configuration.md index 502c348..df5494a 100644 --- a/content/4.backend/2.configuration.md +++ b/content/4.backend/2.configuration.md @@ -142,6 +142,13 @@ Log all postgres queries in the console. Useful for debugging issues with the da This outputs sensitive, **DO NOT** run it in production. :: +### `postgres.ssl` + +- Type: `boolean` +- Default: `false` + +Enable SSL for postgres connections. Useful if you're using a hosted postgres database. + ## Cryptography All configurations related to cryptography. diff --git a/content/4.backend/3.changelog.md b/content/4.backend/3.changelog.md index 2ebfeb7..1d1e9e6 100644 --- a/content/4.backend/3.changelog.md +++ b/content/4.backend/3.changelog.md @@ -4,21 +4,19 @@ title: 'Changelog' # Version 1.2.0 -Bugfixes and optimization. - +::alert{type="warning"} For this update, you will need to run migrations. +:: -- Added option to trust cloudflare IP headers for ratelimits +- [Added option to trust Cloudflare IP headers for ratelimits](2.configuration.md#servertrustcloudflare) - Removed unused table - Optimized prometheus metrics, should make less indexes # Version 1.1.5 -Initial version of the backend. - - Prometheus metrics endpoint - Account creation/deletion endpoints - Endpoints for importing old account data - Endpoints for syncing data -- Ratelimit system -- Captcha system +- [Ratelimit system](2.configuration.md#ratelimit) +- [Captcha system](2.configuration.md#captcha) diff --git a/content/4.backend/_dir.yml b/content/4.backend/_dir.yml index 6261e6a..281e785 100644 --- a/content/4.backend/_dir.yml +++ b/content/4.backend/_dir.yml @@ -1,3 +1,4 @@ title: 'Backend' icon: mdi:database navigation.redirect: /backend/introduction +titleTemplate: '%s | Backend' diff --git a/public/icon-dark.png b/public/icon-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..29fc4bb90af0f04bfd111d41f9b17a7ac13a7b3c GIT binary patch literal 2509 zcmZuz2{=@38=hfoGj`*zWcideTlJMCd|75DV;wVONkb@q$&3(%Y>6nllqC&g%f4lj ztTSVmY{~wYEh1X<8Nz?ilw3>Q_wzjW^WOJ)&biKYA~2?Bc%ULs5D3JBHb7uO zAh02TwK!RUv)VeVJ#YbgV$bM-huRbafq={1z{V2$1VB_1B0-yR5k zO?!s3tJvhe-3wsA`7hfvAO!L|x3j06DaTa#S=xPS%rlT|1||T6|G3TFOcO9DVo&3a z6JTfn69|Lwk8r@N*5!pY#eq0UTU7#V`4zDAa(2co$d7O~ZeKQNHjN9cFUXy;5eoz3 z%LF+y5?Jg?xY**(uNU~=qkxmQ?r=r2zg)7gTX`Xz^Edj!H-S&a)}`=Q&)Eb27%23E zcT)FH7lXUN4y!hqaC=8EEOo#AcYN;hR4qG>9};H6!Wm%p`B^abK9oHI490U6Jpwz~ zf};Ji(&EnPaXw-@)L>KaSl4R(|K1&jJ92p%bY-}(6{ z@o?~9C;wraYqm6^tgclyx;%dv0E2}hsQB~%)bUea3oABM;nqkO&-fFnv!Z%ex_Jg4 z&r-63j^NFd=&zm_DRbgZl{6A@!Ton6Q_f!9L`GdTvzVh4f%0EO=-a(EUbMA#n6s3R zpL%cP$d+Wxr5rdDSr6OF^MH%7gE4C#U{<7q9%Q2e9s#oZ_~u7fJSG z%JErV^piKg7GyM#D!pgEmRtR^kGN&Mg^7 z-yMC%gOq=Z<~$Z6IVPiFLOCQoUrNKU;5r!21+C8HnR)ShquQjPR^fvq1nxPQ+G2xo zjlqD8vS|diM9Z1`b>s}rD*o)Kl!myZ^Q^K@5_JUq;M%CzR-k#iN!5kOFQp$%Q4zDA z^7Qy;uwiPZAIi?Ax7KpuwVz5PHf=&ch+?pO+0~;PL_#QQDQYD0Nh)+!bPuzQ`P2(& zAI-CVAGIF7IAPC=ewcmqjygHtD@a2}Pwh6Z;hdYNPv}HV{HbLJXqUdy)VniqDGqVz z7_mZw1W}}x>#ZgueC!&W{2%V2Oh`ET11K@(bR5dEXLuv)%4tS_UudP)pBKVXgY6}R zB3z;*UaAWl7Tq(O?9wqG{?{>qis#e%!=ee=Et2AnFtsYn72TV$JU0TAV#3ri(zQtl zc2>Co>j60=K2&{@8^e-7_mM@Pt$i(u)0vtdzWl9ZoNBeozxn`GjPb43Lq;g6w?otg zV$JxZlktXBC-M|s~8`|Vup|l#pdy9jCV?G)ZjMCP~7dT3?GMhhE6ib)FtBhb(UI+OJw}q zSR*RUdGe1Thjn}{<)CD;XChabL?}nayXfO!l7(>29gj)B$PMS!TjZ8FzQR&*n=zfu zPV;sn>=Cr(DMw?`$9#zr`E|{YoX`KY_Et)Msk7%tvE1j!BJM-{oY}HTB69Ei2?V!! zy9^yh+ZA$4F04t>I)9C7`pP`AR`gn!oSW?3!?!gJX?JmtKf)FLqGP*L7y%xuo<3CH zVHC6}B$48t2eDzt**a9}ench|T5XjbV@-4j?T3=RR11oRUXbN7{9D(9 zI8=5!OEH4ovr$qFUzRD&L(^izQWdDD%IOAjW7xd%;KN!O7IArA0eI8p zdY`}+;@F9)O-PJdV!VEqFC#J2dmpg@<8I0??V$o0D1F=L@%``S>Q;3=xTa_0-GKX} zcBStvbL~2)m_r+BQBMtovNEKvdncAj@WvWw)K7N)#n?2LGurszVDq`Jd)oizpxoaH zY`SaHR$+uGweK6#G|9Rr++r&uR{R5)D*FN9v-!u>!X^JS; Ha|rn_swESh literal 0 HcmV?d00001 diff --git a/public/icon-light.png b/public/icon-light.png new file mode 100644 index 0000000000000000000000000000000000000000..044a21c60633fdcbf026744b01fc7d071afaaf11 GIT binary patch literal 3048 zcmZWrc|6nqAKx5v3?XN(!dOL8NeQ`GU$Hr2f3TuWUl>&uk!o--jCPk^Lf2r&*$rWzyJ8e!>!B(`FHUH002Rlg^3LS06fLk zb$L12Z|!AHH}(gJu`xFS4t1zSus3`G7Dx;L0N%O&00G%KQUCx)4BXPrlnv5QeQjv^ zrnI8z+qeH3QN5eWcIaOn^@rcerulC$QS>&p{E6AyitcYiuS2x$&?b2!=e13lUUze>Q>}YH2i?uz}Z{I&g6n$xF<$rwtpug+c z3fu0#J}4TB-OEO`8+IDHw-rTS7yp6D$;HV@=Jwv#nOp8#k+-J3WoJ9G$G(MbQ?>}} z(8X7@OIwZ`8~$G(MoQs6h5=3K-~GA<9cm=QvB@<4$#1ei)iq z3na1cM+{#Aiv?fbNUP zd@(mqAd3aQCFQo@dUy6y6UbJW>pGHyH{5!zI?^VI9~2J+y7HCY1bR6ElUZB^?w-Jm zHFOIPFF#`GKDdg5V9f38(**)LIm`AM$i466;N+((L
    &lmu2h-UJLKYA?K&Y2Fp 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 F{{Yr#Tz>!n