Sv443 5 hónapja
szülő
commit
7bc26c985f
1 módosított fájl, 97 hozzáadás és 99 törlés
  1. 97 99
      dist/BetterYTM.user.js

+ 97 - 99
dist/BetterYTM.user.js

@@ -3,6 +3,15 @@
 // @namespace         https://github.com/Sv443/BetterYTM
 // @namespace         https://github.com/Sv443/BetterYTM
 // @version           2.2.0
 // @version           2.2.0
 // @description       Lots of configurable layout and user experience improvements for YouTube Music™ and YouTube™
 // @description       Lots of configurable layout and user experience improvements for YouTube Music™ and YouTube™
+// @homepageURL       https://github.com/Sv443/BetterYTM#readme
+// @supportURL        https://github.com/Sv443/BetterYTM/issues
+// @license           AGPL-3.0-only
+// @author            Sv443
+// @copyright         Sv443 (https://github.com/Sv443)
+// @icon              https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/images/logo/logo_dev_48.png
+// @match             https://music.youtube.com/*
+// @match             https://www.youtube.com/*
+// @run-at            document-start
 // @description:de-DE Konfigurierbare Layout- und Benutzererfahrungs-Verbesserungen für YouTube Music™ und YouTube™
 // @description:de-DE Konfigurierbare Layout- und Benutzererfahrungs-Verbesserungen für YouTube Music™ und YouTube™
 // @description:de    Konfigurierbare Layout- und Benutzererfahrungs-Verbesserungen für YouTube Music™ und YouTube™
 // @description:de    Konfigurierbare Layout- und Benutzererfahrungs-Verbesserungen für YouTube Music™ und YouTube™
 // @description:de-AT Konfigurierbare Layout- und Benutzererfahrungs-Verbesserungen für YouTube Music™ und YouTube™
 // @description:de-AT Konfigurierbare Layout- und Benutzererfahrungs-Verbesserungen für YouTube Music™ und YouTube™
@@ -39,20 +48,12 @@
 // @description:zh-TW YouTube Music™ 和 YouTube™ 的可配置布局和用户体验改进
 // @description:zh-TW YouTube Music™ 和 YouTube™ 的可配置布局和用户体验改进
 // @description:zh-HK YouTube Music™ 和 YouTube™ 的可配置布局和用户体验改进
 // @description:zh-HK YouTube Music™ 和 YouTube™ 的可配置布局和用户体验改进
 // @description:zh-SG YouTube Music™ 和 YouTube™ 的可配置布局和用户体验改进
 // @description:zh-SG YouTube Music™ 和 YouTube™ 的可配置布局和用户体验改进
-// @homepageURL       https://github.com/Sv443/BetterYTM#readme
-// @supportURL        https://github.com/Sv443/BetterYTM/issues
-// @license           AGPL-3.0-only
-// @author            Sv443
-// @copyright         Sv443 (https://github.com/Sv443)
-// @icon              https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/images/logo/logo_dev_48.png
-// @match             https://music.youtube.com/*
-// @match             https://www.youtube.com/*
-// @run-at            document-start
 // @connect           api.sv443.net
 // @connect           api.sv443.net
 // @connect           github.com
 // @connect           github.com
 // @connect           raw.githubusercontent.com
 // @connect           raw.githubusercontent.com
 // @connect           youtube.com
 // @connect           youtube.com
 // @connect           returnyoutubedislikeapi.com
 // @connect           returnyoutubedislikeapi.com
+// @noframes
 // @grant             GM.getValue
 // @grant             GM.getValue
 // @grant             GM.setValue
 // @grant             GM.setValue
 // @grant             GM.deleteValue
 // @grant             GM.deleteValue
@@ -61,63 +62,62 @@
 // @grant             GM.xmlHttpRequest
 // @grant             GM.xmlHttpRequest
 // @grant             GM.openInTab
 // @grant             GM.openInTab
 // @grant             unsafeWindow
 // @grant             unsafeWindow
-// @noframes
-// @resource          css-above_queue_btns        https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/aboveQueueBtns.css#sha256=sZieYj3MeIQT3HLfgFg0xiO0JQGWw/1bkQXzaAieZvQ=
-// @resource          css-above_queue_btns_sticky https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/aboveQueueBtnsSticky.css#sha256=BJX5ju+5L+4asy16iF3XOuiJUlPg5KNXkcGennJWGB0=
-// @resource          css-anchor_improvements     https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/anchorImprovements.css#sha256=9WSAxeL1Tiv7ZCKrocNrvrQNWSbVY8/bv6wzf0lJ9pg=
-// @resource          css-auto_like               https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/autoLike.css#sha256=A4O2rPsBXjugn0EnF5e1L68Kn3KR7Qm9nlwqe8XWMTM=
-// @resource          css-bundle                  https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/dist/BetterYTM.css#sha256=9jNDIvLlCCWQf3S8U5ho/n345vNbATLJUyFFPIAJ0+Q=
-// @resource          css-fix_hdr                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/fixHDR.css#sha256=4GeuAroKiRD1asFe6cQ1UiSg+p82Jyl/8JeWXLNTgL8=
-// @resource          css-fix_playerpage_theming  https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/fixPlayerPageTheming.css#sha256=7xS+bvp7TJFdzyKztER8xYtsLhinTU1dAdmzuO057p0=
-// @resource          css-fix_spacing             https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/fixSpacing.css#sha256=T57yRp87wz/ye3i4MTRh/o7cFaQsUom4yjG/Kp4eevM=
-// @resource          css-fix_sponsorblock        https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/fixSponsorBlock.css#sha256=KY3RepJ8BaLPTM2n1+irvZUJCLlC0i2EiLzKRgz6z38=
-// @resource          css-hide_themesong_logo     https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/hideThemeSongLogo.css#sha256=Nvr0CaLm23d5dNlJ2bOaxLw2cHfH8KBnpPCbmbXgnOE=
-// @resource          css-show_votes              https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/showVotes.css#sha256=Zxm4eBmg6GtFMCnzWRZXW08nr4pwk6aUCMb8x8xIsJU=
-// @resource          css-vol_slider_size         https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/style/volSliderSize.css#sha256=WKE/i2XjuE2HYfOkZ9N4QtEgKsWdrhMXZyb2cc+iAAk=
+// @resource          css-above_queue_btns        https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/aboveQueueBtns.css#sha256=sZieYj3MeIQT3HLfgFg0xiO0JQGWw/1bkQXzaAieZvQ=
+// @resource          css-above_queue_btns_sticky https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/aboveQueueBtnsSticky.css#sha256=BJX5ju+5L+4asy16iF3XOuiJUlPg5KNXkcGennJWGB0=
+// @resource          css-anchor_improvements     https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/anchorImprovements.css#sha256=9WSAxeL1Tiv7ZCKrocNrvrQNWSbVY8/bv6wzf0lJ9pg=
+// @resource          css-auto_like               https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/autoLike.css#sha256=A4O2rPsBXjugn0EnF5e1L68Kn3KR7Qm9nlwqe8XWMTM=
+// @resource          css-bundle                  https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/dist/BetterYTM.css#sha256=9jNDIvLlCCWQf3S8U5ho/n345vNbATLJUyFFPIAJ0+Q=
+// @resource          css-fix_hdr                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/fixHDR.css#sha256=4GeuAroKiRD1asFe6cQ1UiSg+p82Jyl/8JeWXLNTgL8=
+// @resource          css-fix_playerpage_theming  https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/fixPlayerPageTheming.css#sha256=7xS+bvp7TJFdzyKztER8xYtsLhinTU1dAdmzuO057p0=
+// @resource          css-fix_spacing             https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/fixSpacing.css#sha256=T57yRp87wz/ye3i4MTRh/o7cFaQsUom4yjG/Kp4eevM=
+// @resource          css-fix_sponsorblock        https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/fixSponsorBlock.css#sha256=KY3RepJ8BaLPTM2n1+irvZUJCLlC0i2EiLzKRgz6z38=
+// @resource          css-hide_themesong_logo     https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/hideThemeSongLogo.css#sha256=Nvr0CaLm23d5dNlJ2bOaxLw2cHfH8KBnpPCbmbXgnOE=
+// @resource          css-show_votes              https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/showVotes.css#sha256=Zxm4eBmg6GtFMCnzWRZXW08nr4pwk6aUCMb8x8xIsJU=
+// @resource          css-vol_slider_size         https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/style/volSliderSize.css#sha256=WKE/i2XjuE2HYfOkZ9N4QtEgKsWdrhMXZyb2cc+iAAk=
 // @resource          doc-changelog               https://raw.githubusercontent.com/Sv443/BetterYTM/main/changelog.md#sha256=PE5EcudE6/XBUO6z/iR47l5PdeWN9S9AY9hafHgS7j8=
 // @resource          doc-changelog               https://raw.githubusercontent.com/Sv443/BetterYTM/main/changelog.md#sha256=PE5EcudE6/XBUO6z/iR47l5PdeWN9S9AY9hafHgS7j8=
-// @resource          font-cousine_ttf            https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/fonts/Cousine/Cousine-Regular.ttf#sha256=3NUmAE/P7E7COiHKRY6mER4eDURxwK3icEknEBtdzts=
-// @resource          font-cousine_woff           https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/fonts/Cousine/Cousine-Regular.woff#sha256=VEi7Zy63C3H0/+UD2MOkk35FMufP94uORI0flA24cJM=
-// @resource          font-cousine_woff2          https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/fonts/Cousine/Cousine-Regular.woff2#sha256=Rw3vpRf3bTAujjOoevj5BUUvlDFTkZb7zH3URXvGmW0=
-// @resource          icon-advanced_mode          https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/plus_circle_small.svg#sha256=EUkGEgNKO99AHbhk88W1RkuFgE00+GXIC3QWLnWXJCc=
-// @resource          icon-alert                  https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/alert.svg#sha256=V+B+Z2U0yau2fB+XExY94Ic5Wg/p+mZgXqDjZ3lhg78=
-// @resource          icon-arrow_down             https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/arrow_down.svg#sha256=jtTMiYlQtVkZu6FHGH1MI1lezXoWg0uViAi1mEoKKQQ=
-// @resource          icon-auto_like              https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/auto_like.svg#sha256=z/a/NhDg4oPj4/KXP2uPzs+V38UT3UxM8YhZe71Sh5I=
-// @resource          icon-auto_like_enabled      https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/auto_like_enabled.svg#sha256=PxQhv4EAdXb2BkcXYgQ5TJKC49pjzY0kyDY/rj9+lYY=
-// @resource          icon-clear_list             https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/clear_list.svg#sha256=1EU5h0xw5NkFAbUU59kfrr1Ke9Ui6LJ9zHQhEBMgl+0=
-// @resource          icon-copy                   https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/copy.svg#sha256=66sj77i0AwuB7kcuWV95MKz8gJ5eWrQ/VTqpMvWjt1w=
-// @resource          icon-delete                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/delete.svg#sha256=v6S0FrsvJ45xIF+TvzeSp/l8E8Eyh0KatBEfxuazvhk=
-// @resource          icon-edit                   https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/edit.svg#sha256=Hck4kGmeoloSWIWkbjWHnKEvdhJtIFY5O9KRTgl3mVo=
-// @resource          icon-error                  https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/error.svg#sha256=9+7VNYGb7S76hDl6n01vk01CRW9XULWIDbXFpW+p/Rg=
-// @resource          icon-experimental           https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/beaker_small.svg#sha256=8mMm6igfnnHFqBylMN8TV2Ww6YeOfWG0Oq49iR9A1Ik=
-// @resource          icon-globe                  https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/globe.svg#sha256=G+NKmM6y7Ank5z/EOV4gj0tQszLoOpeWucNterW8Yek=
-// @resource          icon-globe_small            https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/globe_small.svg#sha256=8KB7wookZWWuE8cPSH2WpwgNGxddjVeKTlyKrhFmaLM=
-// @resource          icon-help                   https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/help.svg#sha256=a8lO+sznaGFnbQfjbOyCydVtuzJO9NBRHUbDCIUe6CY=
-// @resource          icon-image                  https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/image.svg#sha256=9lB+dguBi9QBiqkNj52wv7eRS50oNaa6Y200mEZIL8Y=
-// @resource          icon-image_filled           https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/image_filled.svg#sha256=mCFBRDA3BVvwc2xN6lGH5eVSE+VjWfj/BPYE6LizAXs=
-// @resource          icon-link                   https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/link.svg#sha256=8YThvRBuJ4/yNkgATIkxQH1BdYjCK5k2/XRi36u7p/c=
-// @resource          icon-lyrics                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/lyrics.svg#sha256=+L4fFYsWiaM8gxfP1G1anRHYgfggPmt9mWeThTltCF4=
-// @resource          icon-prompt                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/help.svg#sha256=a8lO+sznaGFnbQfjbOyCydVtuzJO9NBRHUbDCIUe6CY=
-// @resource          icon-reload                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/refresh.svg#sha256=NArBWzah/U42KJnYhe8oXTYRJxn2Je1ILMVQBQAxeSw=
-// @resource          icon-restore_time           https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/restore_time.svg#sha256=4enl1dD8022iAN5flRyXLJ6FcGD+w9ClMCW/kf8AY7E=
-// @resource          icon-skip_to                https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/skip_to.svg#sha256=UtsFutOl7n+QwiO1ZQGyGBj5lsyGrULgKvoAmFjDGa8=
-// @resource          icon-spinner                https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/spinner.svg#sha256=pj8Ms7+/GPWA/hpl7pkbtzdGvL2fgIvk241iWUO/AQg=
-// @resource          icon-upload                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/icons/upload.svg#sha256=ufaBZkMv8RaLvoNdY2nG6egcIezB9fkgiNN/Xv0ZvJU=
-// @resource          img-close                   https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/images/close.png#sha256=XIZfYT+0R0kQuDR3AKaKu3F/+timMz6JMvA1wdhUpkA=
-// @resource          img-discord                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/images/external/discord.png#sha256=w/7aw0lgtdS9s5wnW4S70H2ww8x5C6H3Bc2EulWnMi0=
-// @resource          img-github                  https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/images/external/github.png#sha256=MPwTJpkyHrsQ0PtuKL2lyoHXMmESsT8S9i7g9K3szwE=
-// @resource          img-greasyfork              https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/images/external/greasyfork.png#sha256=C8CI6iPrIpyUbXPbcpdTN2R+XiQ9aL0LI6thE+7vEcY=
-// @resource          img-logo                    https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/images/logo/logo_48.png#sha256=+DoIcM002UevjTGvAxHMULo2VGHcYjy8TWla3xeNdNs=
-// @resource          img-logo_dev                https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/images/logo/logo_dev_48.png#sha256=bX5hzhFwROh3PLZu68ZPfL+pJF1HBnxkT7AoB7VnkEE=
-// @resource          img-openuserjs              https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/images/external/openuserjs.png#sha256=LYfN7+1yfmagwPk+EfhKE6mZCOPJ8GB2cu5tKI/J+Vo=
-// @resource          trans-de-DE                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/translations/de-DE.json#sha256=iBp33HhL6ZHfaxS0qnZadUS8FyV/MW5rvc+iBurHsf8=
-// @resource          trans-en-GB                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/translations/en-GB.json#sha256=zYvmENtA7hDHA98ZiuImMWEwgTvwWuU5936xb+wN8KE=
-// @resource          trans-en-US                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/translations/en-US.json#sha256=RodfEqFdj7Kx2KHS5hwMp0lp6FkjmthDF5VEKf6xS4g=
-// @resource          trans-es-ES                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/translations/es-ES.json#sha256=66Fmuwqp6Uwo5MoEZxLhSzXP8BdkveBctNfHU4SbbBY=
-// @resource          trans-fr-FR                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/translations/fr-FR.json#sha256=4O2PhBxGrWqz/mJlBaab1Lzcs/P1opPMvWIt8fajJPU=
-// @resource          trans-hi-IN                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/translations/hi-IN.json#sha256=IJIvrwoQPJ4YLm8aWZNVf1C4rocM9CbtPKHsGcbSUtc=
-// @resource          trans-ja-JP                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/translations/ja-JP.json#sha256=IvJDZL5K1cXB5uRabCv9I373rGByKP0pwOvmR47PM/s=
-// @resource          trans-pt-BR                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/translations/pt-BR.json#sha256=A42lpxuHH0FG6JqZldqjOzELjSgzzZ3ugOcHKo/3bHU=
-// @resource          trans-zh-CN                 https://raw.githubusercontent.com/Sv443/BetterYTM/60db54c6/assets/translations/zh-CN.json#sha256=kJPPd29sljo7qxmi9NEA3A/yhdKHtxYHU9K0r9to3g4=
+// @resource          font-cousine_ttf            https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/fonts/Cousine/Cousine-Regular.ttf#sha256=3NUmAE/P7E7COiHKRY6mER4eDURxwK3icEknEBtdzts=
+// @resource          font-cousine_woff           https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/fonts/Cousine/Cousine-Regular.woff#sha256=VEi7Zy63C3H0/+UD2MOkk35FMufP94uORI0flA24cJM=
+// @resource          font-cousine_woff2          https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/fonts/Cousine/Cousine-Regular.woff2#sha256=Rw3vpRf3bTAujjOoevj5BUUvlDFTkZb7zH3URXvGmW0=
+// @resource          icon-advanced_mode          https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/plus_circle_small.svg#sha256=EUkGEgNKO99AHbhk88W1RkuFgE00+GXIC3QWLnWXJCc=
+// @resource          icon-alert                  https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/alert.svg#sha256=V+B+Z2U0yau2fB+XExY94Ic5Wg/p+mZgXqDjZ3lhg78=
+// @resource          icon-arrow_down             https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/arrow_down.svg#sha256=jtTMiYlQtVkZu6FHGH1MI1lezXoWg0uViAi1mEoKKQQ=
+// @resource          icon-auto_like              https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/auto_like.svg#sha256=z/a/NhDg4oPj4/KXP2uPzs+V38UT3UxM8YhZe71Sh5I=
+// @resource          icon-auto_like_enabled      https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/auto_like_enabled.svg#sha256=PxQhv4EAdXb2BkcXYgQ5TJKC49pjzY0kyDY/rj9+lYY=
+// @resource          icon-clear_list             https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/clear_list.svg#sha256=1EU5h0xw5NkFAbUU59kfrr1Ke9Ui6LJ9zHQhEBMgl+0=
+// @resource          icon-copy                   https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/copy.svg#sha256=66sj77i0AwuB7kcuWV95MKz8gJ5eWrQ/VTqpMvWjt1w=
+// @resource          icon-delete                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/delete.svg#sha256=v6S0FrsvJ45xIF+TvzeSp/l8E8Eyh0KatBEfxuazvhk=
+// @resource          icon-edit                   https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/edit.svg#sha256=Hck4kGmeoloSWIWkbjWHnKEvdhJtIFY5O9KRTgl3mVo=
+// @resource          icon-error                  https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/error.svg#sha256=9+7VNYGb7S76hDl6n01vk01CRW9XULWIDbXFpW+p/Rg=
+// @resource          icon-experimental           https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/beaker_small.svg#sha256=8mMm6igfnnHFqBylMN8TV2Ww6YeOfWG0Oq49iR9A1Ik=
+// @resource          icon-globe                  https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/globe.svg#sha256=G+NKmM6y7Ank5z/EOV4gj0tQszLoOpeWucNterW8Yek=
+// @resource          icon-globe_small            https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/globe_small.svg#sha256=8KB7wookZWWuE8cPSH2WpwgNGxddjVeKTlyKrhFmaLM=
+// @resource          icon-help                   https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/help.svg#sha256=a8lO+sznaGFnbQfjbOyCydVtuzJO9NBRHUbDCIUe6CY=
+// @resource          icon-image                  https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/image.svg#sha256=9lB+dguBi9QBiqkNj52wv7eRS50oNaa6Y200mEZIL8Y=
+// @resource          icon-image_filled           https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/image_filled.svg#sha256=mCFBRDA3BVvwc2xN6lGH5eVSE+VjWfj/BPYE6LizAXs=
+// @resource          icon-link                   https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/link.svg#sha256=8YThvRBuJ4/yNkgATIkxQH1BdYjCK5k2/XRi36u7p/c=
+// @resource          icon-lyrics                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/lyrics.svg#sha256=+L4fFYsWiaM8gxfP1G1anRHYgfggPmt9mWeThTltCF4=
+// @resource          icon-prompt                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/help.svg#sha256=a8lO+sznaGFnbQfjbOyCydVtuzJO9NBRHUbDCIUe6CY=
+// @resource          icon-reload                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/refresh.svg#sha256=NArBWzah/U42KJnYhe8oXTYRJxn2Je1ILMVQBQAxeSw=
+// @resource          icon-restore_time           https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/restore_time.svg#sha256=4enl1dD8022iAN5flRyXLJ6FcGD+w9ClMCW/kf8AY7E=
+// @resource          icon-skip_to                https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/skip_to.svg#sha256=UtsFutOl7n+QwiO1ZQGyGBj5lsyGrULgKvoAmFjDGa8=
+// @resource          icon-spinner                https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/spinner.svg#sha256=pj8Ms7+/GPWA/hpl7pkbtzdGvL2fgIvk241iWUO/AQg=
+// @resource          icon-upload                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/icons/upload.svg#sha256=ufaBZkMv8RaLvoNdY2nG6egcIezB9fkgiNN/Xv0ZvJU=
+// @resource          img-close                   https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/images/close.png#sha256=XIZfYT+0R0kQuDR3AKaKu3F/+timMz6JMvA1wdhUpkA=
+// @resource          img-discord                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/images/external/discord.png#sha256=w/7aw0lgtdS9s5wnW4S70H2ww8x5C6H3Bc2EulWnMi0=
+// @resource          img-github                  https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/images/external/github.png#sha256=MPwTJpkyHrsQ0PtuKL2lyoHXMmESsT8S9i7g9K3szwE=
+// @resource          img-greasyfork              https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/images/external/greasyfork.png#sha256=C8CI6iPrIpyUbXPbcpdTN2R+XiQ9aL0LI6thE+7vEcY=
+// @resource          img-logo                    https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/images/logo/logo_48.png#sha256=+DoIcM002UevjTGvAxHMULo2VGHcYjy8TWla3xeNdNs=
+// @resource          img-logo_dev                https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/images/logo/logo_dev_48.png#sha256=bX5hzhFwROh3PLZu68ZPfL+pJF1HBnxkT7AoB7VnkEE=
+// @resource          img-openuserjs              https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/images/external/openuserjs.png#sha256=LYfN7+1yfmagwPk+EfhKE6mZCOPJ8GB2cu5tKI/J+Vo=
+// @resource          trans-de-DE                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/translations/de-DE.json#sha256=iBp33HhL6ZHfaxS0qnZadUS8FyV/MW5rvc+iBurHsf8=
+// @resource          trans-en-GB                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/translations/en-GB.json#sha256=zYvmENtA7hDHA98ZiuImMWEwgTvwWuU5936xb+wN8KE=
+// @resource          trans-en-US                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/translations/en-US.json#sha256=RodfEqFdj7Kx2KHS5hwMp0lp6FkjmthDF5VEKf6xS4g=
+// @resource          trans-es-ES                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/translations/es-ES.json#sha256=66Fmuwqp6Uwo5MoEZxLhSzXP8BdkveBctNfHU4SbbBY=
+// @resource          trans-fr-FR                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/translations/fr-FR.json#sha256=4O2PhBxGrWqz/mJlBaab1Lzcs/P1opPMvWIt8fajJPU=
+// @resource          trans-hi-IN                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/translations/hi-IN.json#sha256=IJIvrwoQPJ4YLm8aWZNVf1C4rocM9CbtPKHsGcbSUtc=
+// @resource          trans-ja-JP                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/translations/ja-JP.json#sha256=IvJDZL5K1cXB5uRabCv9I373rGByKP0pwOvmR47PM/s=
+// @resource          trans-pt-BR                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/translations/pt-BR.json#sha256=A42lpxuHH0FG6JqZldqjOzELjSgzzZ3ugOcHKo/3bHU=
+// @resource          trans-zh-CN                 https://raw.githubusercontent.com/Sv443/BetterYTM/7dc45cc6/assets/translations/zh-CN.json#sha256=kJPPd29sljo7qxmi9NEA3A/yhdKHtxYHU9K0r9to3g4=
 // @require           https://cdn.jsdelivr.net/npm/@sv443-network/[email protected]/dist/index.global.js
 // @require           https://cdn.jsdelivr.net/npm/@sv443-network/[email protected]/dist/index.global.js
 // @require           https://cdn.jsdelivr.net/npm/[email protected]/lib/marked.umd.js
 // @require           https://cdn.jsdelivr.net/npm/[email protected]/lib/marked.umd.js
 // @require           https://cdn.jsdelivr.net/npm/[email protected]/lib/umd/index.js
 // @require           https://cdn.jsdelivr.net/npm/[email protected]/lib/umd/index.js
@@ -173,7 +173,7 @@ var PluginIntent;
 const modeRaw = "development";
 const modeRaw = "development";
 const branchRaw = "develop";
 const branchRaw = "develop";
 const hostRaw = "github";
 const hostRaw = "github";
-const buildNumberRaw = "60db54c6";
+const buildNumberRaw = "7dc45cc6";
 /** The mode in which the script was built (production or development) */
 /** The mode in which the script was built (production or development) */
 const mode = (modeRaw.match(/^#{{.+}}$/) ? "production" : modeRaw);
 const mode = (modeRaw.match(/^#{{.+}}$/) ? "production" : modeRaw);
 /** The branch to use in various URLs that point to the GitHub repo */
 /** The branch to use in various URLs that point to the GitHub repo */
@@ -1283,7 +1283,7 @@ async function createLongBtn(_a) {
 }var langMapping = {
 }var langMapping = {
 	"de-DE": {
 	"de-DE": {
 	name: "Deutsch (Deutschland)",
 	name: "Deutsch (Deutschland)",
-	nameEnglish: "German",
+	nameEnglish: "German (DE)",
 	emoji: "🇩🇪",
 	emoji: "🇩🇪",
 	userscriptDesc: "Konfigurierbare Layout- und Benutzererfahrungs-Verbesserungen für YouTube Music™ und YouTube™",
 	userscriptDesc: "Konfigurierbare Layout- und Benutzererfahrungs-Verbesserungen für YouTube Music™ und YouTube™",
 	authors: [
 	authors: [
@@ -1327,7 +1327,7 @@ async function createLongBtn(_a) {
 },
 },
 	"es-ES": {
 	"es-ES": {
 	name: "Español (España)",
 	name: "Español (España)",
-	nameEnglish: "Spanish",
+	nameEnglish: "Spanish (ES)",
 	emoji: "🇪🇸",
 	emoji: "🇪🇸",
 	userscriptDesc: "Mejoras de diseño y experiencia de usuario configurables para YouTube Music™ y YouTube™",
 	userscriptDesc: "Mejoras de diseño y experiencia de usuario configurables para YouTube Music™ y YouTube™",
 	authors: [
 	authors: [
@@ -1340,7 +1340,7 @@ async function createLongBtn(_a) {
 },
 },
 	"fr-FR": {
 	"fr-FR": {
 	name: "Français (France)",
 	name: "Français (France)",
-	nameEnglish: "French",
+	nameEnglish: "French (FR)",
 	emoji: "🇫🇷",
 	emoji: "🇫🇷",
 	userscriptDesc: "Améliorations de la mise en page et de l'expérience utilisateur configurables pour YouTube Music™ et YouTube™",
 	userscriptDesc: "Améliorations de la mise en page et de l'expérience utilisateur configurables pour YouTube Music™ et YouTube™",
 	authors: [
 	authors: [
@@ -1356,7 +1356,7 @@ async function createLongBtn(_a) {
 },
 },
 	"hi-IN": {
 	"hi-IN": {
 	name: "हिंदी (भारत)",
 	name: "हिंदी (भारत)",
-	nameEnglish: "Hindi",
+	nameEnglish: "Hindi (IN)",
 	emoji: "🇮🇳",
 	emoji: "🇮🇳",
 	userscriptDesc: "YouTube Music™ और YouTube™ के लिए कॉन्फ़िगर करने योग्य लेआउट और उपयोगकर्ता अनुभव में सुधार",
 	userscriptDesc: "YouTube Music™ और YouTube™ के लिए कॉन्फ़िगर करने योग्य लेआउट और उपयोगकर्ता अनुभव में सुधार",
 	authors: [
 	authors: [
@@ -1369,7 +1369,7 @@ async function createLongBtn(_a) {
 },
 },
 	"ja-JP": {
 	"ja-JP": {
 	name: "日本語 (日本)",
 	name: "日本語 (日本)",
-	nameEnglish: "Japanese",
+	nameEnglish: "Japanese (JP)",
 	emoji: "🇯🇵",
 	emoji: "🇯🇵",
 	userscriptDesc: "YouTube Music™ と YouTube™ の構成可能なレイアウトとユーザー エクスペリエンスの向上",
 	userscriptDesc: "YouTube Music™ と YouTube™ の構成可能なレイアウトとユーザー エクスペリエンスの向上",
 	authors: [
 	authors: [
@@ -1381,7 +1381,7 @@ async function createLongBtn(_a) {
 },
 },
 	"pt-BR": {
 	"pt-BR": {
 	name: "Português (Brasil)",
 	name: "Português (Brasil)",
-	nameEnglish: "Portuguese",
+	nameEnglish: "Portuguese (BR)",
 	emoji: "🇧🇷",
 	emoji: "🇧🇷",
 	userscriptDesc: "Melhorias configuráveis no layout e na experiência do usuário para o YouTube Music™ e o YouTube™",
 	userscriptDesc: "Melhorias configuráveis no layout e na experiência do usuário para o YouTube Music™ e o YouTube™",
 	authors: [
 	authors: [
@@ -1547,7 +1547,7 @@ function sanitizeChannelId(channelId) {
 }
 }
 /** Tests whether a string is a valid channel ID in the format `@User` or `UC...` */
 /** Tests whether a string is a valid channel ID in the format `@User` or `UC...` */
 function isValidChannelId(channelId) {
 function isValidChannelId(channelId) {
-    return channelId.match(/^(UC|@)[\w-]+$/) !== null;
+    return channelId.match(/^(UC|@)[a-zA-Z0-9_-]+$/) !== null;
 }
 }
 /** Returns the thumbnail URL for a video with either a given quality identifier or index */
 /** Returns the thumbnail URL for a video with either a given quality identifier or index */
 function getThumbnailUrl(watchId, qualityOrIndex = "maxresdefault") {
 function getThumbnailUrl(watchId, qualityOrIndex = "maxresdefault") {
@@ -1641,14 +1641,14 @@ async function getResourceUrl(name, uncached = false) {
     if (!url || url.length === 0) {
     if (!url || url.length === 0) {
         const resObjOrStr = resourcesJson === null || resourcesJson === void 0 ? void 0 : resourcesJson[name];
         const resObjOrStr = resourcesJson === null || resourcesJson === void 0 ? void 0 : resourcesJson[name];
         if (typeof resObjOrStr === "object" || typeof resObjOrStr === "string") {
         if (typeof resObjOrStr === "object" || typeof resObjOrStr === "string") {
-            const pathname = typeof resObjOrStr === "object" && "path" in resObjOrStr ? resObjOrStr.path : resObjOrStr;
-            const ref = typeof resObjOrStr === "object" && "ref" in resObjOrStr ? resObjOrStr.ref : branch;
-            if (pathname && pathname.startsWith("/") && pathname.length > 1)
-                return `https://raw.githubusercontent.com/${repo}/${ref}${pathname}`;
-            else if (pathname && pathname.startsWith("http"))
-                return pathname;
-            else if (pathname && pathname.length > 0)
-                return `https://raw.githubusercontent.com/${repo}/${ref}/assets/${pathname}`;
+            const pathName = typeof resObjOrStr === "object" && "path" in resObjOrStr ? resObjOrStr.path : resObjOrStr;
+            const ghRef = typeof resObjOrStr === "object" && "ref" in resObjOrStr ? resObjOrStr.ref : branch;
+            if (pathName && pathName.startsWith("/") && pathName.length > 1)
+                return `https://raw.githubusercontent.com/${repo}/${ghRef}${pathName}`;
+            else if (pathName && pathName.startsWith("http"))
+                return pathName;
+            else if (pathName && pathName.length > 0)
+                return `https://raw.githubusercontent.com/${repo}/${ghRef}/assets/${pathName}`;
         }
         }
         warn(`Couldn't get blob URL nor external URL for @resource '${name}', trying to use base64-encoded fallback`);
         warn(`Couldn't get blob URL nor external URL for @resource '${name}', trying to use base64-encoded fallback`);
         // @ts-ignore
         // @ts-ignore
@@ -1657,26 +1657,24 @@ async function getResourceUrl(name, uncached = false) {
     return url;
     return url;
 }
 }
 /**
 /**
- * Returns the preferred locale of the user, provided it is supported by the userscript.
- * Prioritizes `navigator.language`, then `navigator.languages`, then `"en-US"` as a fallback.
+ * Resolves the preferred locale of the user given their browser's language settings, as long as it is supported by the userscript directly or via the `altLocales` prop in `locales.json`
+ * Prioritizes any supported value of `navigator.language`, then `navigator.languages`, then goes over them again, trimming off the part after the hyphen, then falls back to `"en-US"`
  */
  */
 function getPreferredLocale() {
 function getPreferredLocale() {
-    var _a;
-    const nvLangs = navigator.languages
-        .filter(lang => lang.match(/^[a-z]{2}(-|_)[A-Z]$/) !== null);
-    if (Object.entries(langMapping).find(([key]) => key === navigator.language))
-        return navigator.language;
-    for (const loc of nvLangs) {
-        if (Object.entries(langMapping).find(([key]) => key === loc))
-            return loc;
-    }
-    // if navigator.languages has entries that aren't locale codes in the format xx-XX
-    if (navigator.languages.some(lang => lang.match(/^[a-z]{2}$/))) {
-        for (const lang of nvLangs) {
-            const foundLoc = (_a = Object.entries(langMapping).find(([key]) => key.startsWith(lang))) === null || _a === void 0 ? void 0 : _a[0];
-            if (foundLoc)
-                return foundLoc;
-        }
+    var _a, _b;
+    const sanEq = (str1, str2) => str1.trim().toLowerCase() === str2.trim().toLowerCase();
+    const allNvLocs = [...new Set([navigator.language, ...navigator.languages])]
+        .map((v) => v.replace(/_/g, "-"));
+    for (const nvLoc of allNvLocs) {
+        const resolvedLoc = (_a = Object.entries(langMapping)
+            .find(([key, { altLocales }]) => sanEq(key, nvLoc) || altLocales.find(al => sanEq(al, nvLoc)))) === null || _a === void 0 ? void 0 : _a[0];
+        if (resolvedLoc)
+            return resolvedLoc.trim();
+        const trimmedNvLoc = nvLoc.split("-")[0];
+        const resolvedFallbackLoc = (_b = Object.entries(langMapping)
+            .find(([key, { altLocales }]) => sanEq(key.split("-")[0], trimmedNvLoc) || altLocales.find(al => sanEq(al.split("-")[0], trimmedNvLoc)))) === null || _b === void 0 ? void 0 : _b[0];
+        if (resolvedFallbackLoc)
+            return resolvedFallbackLoc.trim();
     }
     }
     return "en-US";
     return "en-US";
 }
 }