mirror of
				https://github.com/TeamPiped/Piped.git
				synced 2024-08-14 23:57:27 +00:00 
			
		
		
		
	
						commit
						d97a6410b0
					
				
					 37 changed files with 925 additions and 434 deletions
				
			
		
							
								
								
									
										28
									
								
								package.json
									
										
									
									
									
								
							
							
						
						
									
										28
									
								
								package.json
									
										
									
									
									
								
							| 
						 | 
					@ -16,32 +16,32 @@
 | 
				
			||||||
        "buffer": "6.0.3",
 | 
					        "buffer": "6.0.3",
 | 
				
			||||||
        "dompurify": "2.4.0",
 | 
					        "dompurify": "2.4.0",
 | 
				
			||||||
        "hotkeys-js": "3.10.0",
 | 
					        "hotkeys-js": "3.10.0",
 | 
				
			||||||
        "javascript-time-ago": "2.5.7",
 | 
					        "javascript-time-ago": "2.5.9",
 | 
				
			||||||
        "mux.js": "6.2.0",
 | 
					        "mux.js": "6.2.0",
 | 
				
			||||||
        "shaka-player": "4.2.2",
 | 
					        "shaka-player": "4.2.3",
 | 
				
			||||||
        "stream-browserify": "3.0.0",
 | 
					        "stream-browserify": "3.0.0",
 | 
				
			||||||
        "vue": "3.2.41",
 | 
					        "vue": "3.2.41",
 | 
				
			||||||
        "vue-i18n": "9.2.2",
 | 
					        "vue-i18n": "9.2.2",
 | 
				
			||||||
        "vue-router": "4.1.5",
 | 
					        "vue-router": "4.1.6",
 | 
				
			||||||
        "xml-js": "1.6.11"
 | 
					        "xml-js": "1.6.11"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "devDependencies": {
 | 
					    "devDependencies": {
 | 
				
			||||||
        "@iconify/json": "2.1.124",
 | 
					        "@iconify/json": "2.1.132",
 | 
				
			||||||
        "@intlify/vite-plugin-vue-i18n": "6.0.3",
 | 
					        "@intlify/vite-plugin-vue-i18n": "6.0.3",
 | 
				
			||||||
        "@unocss/preset-icons": "0.45.30",
 | 
					        "@unocss/preset-icons": "0.46.3",
 | 
				
			||||||
        "@unocss/preset-web-fonts": "0.45.30",
 | 
					        "@unocss/preset-web-fonts": "0.46.3",
 | 
				
			||||||
        "@unocss/transformer-directives": "0.45.30",
 | 
					        "@unocss/transformer-directives": "0.46.3",
 | 
				
			||||||
        "@unocss/transformer-variant-group": "0.45.30",
 | 
					        "@unocss/transformer-variant-group": "0.46.3",
 | 
				
			||||||
        "@vitejs/plugin-legacy": "2.2.0",
 | 
					        "@vitejs/plugin-legacy": "2.3.0",
 | 
				
			||||||
        "@vitejs/plugin-vue": "3.1.2",
 | 
					        "@vitejs/plugin-vue": "3.2.0",
 | 
				
			||||||
        "@vue/compiler-sfc": "3.2.41",
 | 
					        "@vue/compiler-sfc": "3.2.41",
 | 
				
			||||||
        "eslint": "8.25.0",
 | 
					        "eslint": "8.26.0",
 | 
				
			||||||
        "eslint-config-prettier": "8.5.0",
 | 
					        "eslint-config-prettier": "8.5.0",
 | 
				
			||||||
        "eslint-plugin-prettier": "4.2.1",
 | 
					        "eslint-plugin-prettier": "4.2.1",
 | 
				
			||||||
        "eslint-plugin-vue": "9.6.0",
 | 
					        "eslint-plugin-vue": "9.7.0",
 | 
				
			||||||
        "prettier": "2.7.1",
 | 
					        "prettier": "2.7.1",
 | 
				
			||||||
        "unocss": "0.45.30",
 | 
					        "unocss": "0.46.3",
 | 
				
			||||||
        "vite": "3.1.8",
 | 
					        "vite": "3.2.2",
 | 
				
			||||||
        "vite-plugin-eslint": "1.8.1",
 | 
					        "vite-plugin-eslint": "1.8.1",
 | 
				
			||||||
        "vite-plugin-pwa": "0.13.1"
 | 
					        "vite-plugin-pwa": "0.13.1"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -131,12 +131,14 @@ export default {
 | 
				
			||||||
            const defaultLang = await App.defaultLangage;
 | 
					            const defaultLang = await App.defaultLangage;
 | 
				
			||||||
            const locale = App.getPreferenceString("hl", defaultLang);
 | 
					            const locale = App.getPreferenceString("hl", defaultLang);
 | 
				
			||||||
            if (locale !== App.TimeAgoConfig.locale) {
 | 
					            if (locale !== App.TimeAgoConfig.locale) {
 | 
				
			||||||
                const localeTime = await import(`../node_modules/javascript-time-ago/locale/${locale}.json`).then(
 | 
					                const localeTime = await import(`../node_modules/javascript-time-ago/locale/${locale}.json`)
 | 
				
			||||||
                    module => module.default,
 | 
					                    .catch(() => null)
 | 
				
			||||||
                );
 | 
					                    .then(module => module?.default);
 | 
				
			||||||
 | 
					                if (localeTime) {
 | 
				
			||||||
                    App.TimeAgo.addLocale(localeTime);
 | 
					                    App.TimeAgo.addLocale(localeTime);
 | 
				
			||||||
                    App.TimeAgoConfig.locale = locale;
 | 
					                    App.TimeAgoConfig.locale = locale;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            if (window.i18n.global.locale.value !== locale) {
 | 
					            if (window.i18n.global.locale.value !== locale) {
 | 
				
			||||||
                if (!window.i18n.global.availableLocales.includes(locale)) {
 | 
					                if (!window.i18n.global.availableLocales.includes(locale)) {
 | 
				
			||||||
                    const messages = await import(`./locales/${locale}.json`).then(module => module.default);
 | 
					                    const messages = await import(`./locales/${locale}.json`).then(module => module.default);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										34
									
								
								src/components/ChannelItem.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/components/ChannelItem.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					    <div>
 | 
				
			||||||
 | 
					        <router-link :to="props.item.url">
 | 
				
			||||||
 | 
					            <div class="relative">
 | 
				
			||||||
 | 
					                <img class="w-full" :src="props.item.thumbnail" loading="lazy" />
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <p>
 | 
				
			||||||
 | 
					                <span v-text="props.item.name" />
 | 
				
			||||||
 | 
					                <font-awesome-icon class="ml-1.5" v-if="props.item.verified" icon="check" />
 | 
				
			||||||
 | 
					            </p>
 | 
				
			||||||
 | 
					        </router-link>
 | 
				
			||||||
 | 
					        <p v-if="props.item.description" v-text="props.item.description" />
 | 
				
			||||||
 | 
					        <router-link v-if="props.item.uploaderUrl" class="link" :to="props.item.uploaderUrl">
 | 
				
			||||||
 | 
					            <p>
 | 
				
			||||||
 | 
					                <span v-text="props.item.uploader" />
 | 
				
			||||||
 | 
					                <font-awesome-icon class="ml-1.5" v-if="props.item.uploaderVerified" icon="check" />
 | 
				
			||||||
 | 
					            </p>
 | 
				
			||||||
 | 
					        </router-link>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <a v-if="props.item.uploaderName" class="link" v-text="props.item.uploaderName" />
 | 
				
			||||||
 | 
					        <template v-if="props.item.videos >= 0">
 | 
				
			||||||
 | 
					            <br v-if="props.item.uploaderName" />
 | 
				
			||||||
 | 
					            <strong v-text="`${props.item.videos} ${$t('video.videos')}`" />
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <br />
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script setup>
 | 
				
			||||||
 | 
					const props = defineProps({
 | 
				
			||||||
 | 
					    item: Object,
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
| 
						 | 
					@ -35,13 +35,25 @@
 | 
				
			||||||
            <font-awesome-icon icon="rss" />
 | 
					            <font-awesome-icon icon="rss" />
 | 
				
			||||||
        </a>
 | 
					        </a>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <div class="flex mt-4 mb-2">
 | 
				
			||||||
 | 
					            <button
 | 
				
			||||||
 | 
					                v-for="(tab, index) in tabs"
 | 
				
			||||||
 | 
					                :key="tab.name"
 | 
				
			||||||
 | 
					                class="btn mr-2"
 | 
				
			||||||
 | 
					                @click="loadTab(index)"
 | 
				
			||||||
 | 
					                :class="{ active: selectedTab == index }"
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					                <span v-text="tab.translatedName"></span>
 | 
				
			||||||
 | 
					            </button>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <hr />
 | 
					        <hr />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <div class="video-grid">
 | 
					        <div class="video-grid">
 | 
				
			||||||
            <VideoItem
 | 
					            <ContentItem
 | 
				
			||||||
                v-for="video in channel.relatedStreams"
 | 
					                v-for="item in contentItems"
 | 
				
			||||||
                :key="video.url"
 | 
					                :key="item.url"
 | 
				
			||||||
                :video="video"
 | 
					                :item="item"
 | 
				
			||||||
                height="94"
 | 
					                height="94"
 | 
				
			||||||
                width="168"
 | 
					                width="168"
 | 
				
			||||||
                hide-channel
 | 
					                hide-channel
 | 
				
			||||||
| 
						 | 
					@ -52,17 +64,20 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import ErrorHandler from "./ErrorHandler.vue";
 | 
					import ErrorHandler from "./ErrorHandler.vue";
 | 
				
			||||||
import VideoItem from "./VideoItem.vue";
 | 
					import ContentItem from "./ContentItem.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
    components: {
 | 
					    components: {
 | 
				
			||||||
        ErrorHandler,
 | 
					        ErrorHandler,
 | 
				
			||||||
        VideoItem,
 | 
					        ContentItem,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    data() {
 | 
					    data() {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            channel: null,
 | 
					            channel: null,
 | 
				
			||||||
            subscribed: false,
 | 
					            subscribed: false,
 | 
				
			||||||
 | 
					            tabs: [],
 | 
				
			||||||
 | 
					            selectedTab: 0,
 | 
				
			||||||
 | 
					            contentItems: [],
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    mounted() {
 | 
					    mounted() {
 | 
				
			||||||
| 
						 | 
					@ -111,24 +126,57 @@ export default {
 | 
				
			||||||
                .then(() => {
 | 
					                .then(() => {
 | 
				
			||||||
                    if (!this.channel.error) {
 | 
					                    if (!this.channel.error) {
 | 
				
			||||||
                        document.title = this.channel.name + " - Piped";
 | 
					                        document.title = this.channel.name + " - Piped";
 | 
				
			||||||
 | 
					                        this.contentItems = this.channel.relatedStreams;
 | 
				
			||||||
                        this.fetchSubscribedStatus();
 | 
					                        this.fetchSubscribedStatus();
 | 
				
			||||||
                        this.updateWatched(this.channel.relatedStreams);
 | 
					                        this.updateWatched(this.channel.relatedStreams);
 | 
				
			||||||
 | 
					                        this.tabs.push({
 | 
				
			||||||
 | 
					                            translatedName: this.$t("video.videos"),
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                        for (let i = 0; i < this.channel.tabs.length; i++) {
 | 
				
			||||||
 | 
					                            let tab = this.channel.tabs[i];
 | 
				
			||||||
 | 
					                            tab.translatedName = this.getTranslatedTabName(tab.name);
 | 
				
			||||||
 | 
					                            this.tabs.push(tab);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        handleScroll() {
 | 
					        handleScroll() {
 | 
				
			||||||
            if (this.loading || !this.channel || !this.channel.nextpage) return;
 | 
					            if (
 | 
				
			||||||
 | 
					                this.loading ||
 | 
				
			||||||
 | 
					                !this.channel ||
 | 
				
			||||||
 | 
					                !this.channel.nextpage ||
 | 
				
			||||||
 | 
					                (this.selectedTab != 0 && !this.tabs[this.selectedTab].tabNextPage)
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
            if (window.innerHeight + window.scrollY >= document.body.offsetHeight - window.innerHeight) {
 | 
					            if (window.innerHeight + window.scrollY >= document.body.offsetHeight - window.innerHeight) {
 | 
				
			||||||
                this.loading = true;
 | 
					                this.loading = true;
 | 
				
			||||||
 | 
					                if (this.selectedTab == 0) {
 | 
				
			||||||
 | 
					                    this.fetchChannelNextPage();
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    this.fetchChannelTabNextPage();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        fetchChannelNextPage() {
 | 
				
			||||||
            this.fetchJson(this.apiUrl() + "/nextpage/channel/" + this.channel.id, {
 | 
					            this.fetchJson(this.apiUrl() + "/nextpage/channel/" + this.channel.id, {
 | 
				
			||||||
                nextpage: this.channel.nextpage,
 | 
					                nextpage: this.channel.nextpage,
 | 
				
			||||||
            }).then(json => {
 | 
					            }).then(json => {
 | 
				
			||||||
                this.channel.nextpage = json.nextpage;
 | 
					                this.channel.nextpage = json.nextpage;
 | 
				
			||||||
                this.loading = false;
 | 
					                this.loading = false;
 | 
				
			||||||
                this.updateWatched(json.relatedStreams);
 | 
					                this.updateWatched(json.relatedStreams);
 | 
				
			||||||
                    json.relatedStreams.map(stream => this.channel.relatedStreams.push(stream));
 | 
					                json.relatedStreams.map(stream => this.contentItems.push(stream));
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        fetchChannelTabNextPage() {
 | 
				
			||||||
 | 
					            this.fetchJson(this.apiUrl() + "/channels/tabs", {
 | 
				
			||||||
 | 
					                data: this.tabs[this.selectedTab].data,
 | 
				
			||||||
 | 
					                nextpage: this.tabs[this.selectedTab].tabNextPage,
 | 
				
			||||||
 | 
					            }).then(json => {
 | 
				
			||||||
 | 
					                this.tabs[this.selectedTab].tabNextPage = json.nextpage;
 | 
				
			||||||
 | 
					                this.loading = false;
 | 
				
			||||||
 | 
					                json.content.map(item => this.contentItems.push(item));
 | 
				
			||||||
 | 
					                this.tabs[this.selectedTab].content = this.contentItems;
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        subscribeHandler() {
 | 
					        subscribeHandler() {
 | 
				
			||||||
            if (this.authenticated) {
 | 
					            if (this.authenticated) {
 | 
				
			||||||
| 
						 | 
					@ -147,6 +195,50 @@ export default {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            this.subscribed = !this.subscribed;
 | 
					            this.subscribed = !this.subscribed;
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        getTranslatedTabName(tabName) {
 | 
				
			||||||
 | 
					            let translatedTabName = tabName;
 | 
				
			||||||
 | 
					            switch (tabName) {
 | 
				
			||||||
 | 
					                case "Livestreams":
 | 
				
			||||||
 | 
					                    translatedTabName = this.$t("titles.livestreams");
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case "Playlists":
 | 
				
			||||||
 | 
					                    translatedTabName = this.$t("titles.playlists");
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case "Channels":
 | 
				
			||||||
 | 
					                    translatedTabName = this.$t("titles.channels");
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case "Shorts":
 | 
				
			||||||
 | 
					                    translatedTabName = this.$t("video.shorts");
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    console.error(`Tab name "${tabName}" is not translated yet!`);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return translatedTabName;
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        loadTab(index) {
 | 
				
			||||||
 | 
					            this.selectedTab = index;
 | 
				
			||||||
 | 
					            if (index == 0) {
 | 
				
			||||||
 | 
					                this.contentItems = this.channel.relatedStreams;
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (this.tabs[index].content) {
 | 
				
			||||||
 | 
					                this.contentItems = this.tabs[index].content;
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            this.fetchJson(this.apiUrl() + "/channels/tabs", {
 | 
				
			||||||
 | 
					                data: this.tabs[index].data,
 | 
				
			||||||
 | 
					            }).then(tab => {
 | 
				
			||||||
 | 
					                this.contentItems = this.tabs[index].content = tab.content;
 | 
				
			||||||
 | 
					                this.tabs[this.selectedTab].tabNextPage = tab.nextpage;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style>
 | 
				
			||||||
 | 
					.active {
 | 
				
			||||||
 | 
					    border: 0.1rem outset red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,11 @@
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="whitespace-pre-wrap" v-html="urlify(comment.commentText)" />
 | 
					            <div class="whitespace-pre-wrap" v-html="urlify(comment.commentText)" />
 | 
				
			||||||
 | 
					            <div class="comment-footer mt-1 flex items-center">
 | 
				
			||||||
 | 
					                <div class="i-fa-solid:thumbs-up" />
 | 
				
			||||||
 | 
					                <span class="ml-1" v-text="numberFormat(comment.likeCount)" />
 | 
				
			||||||
 | 
					                <font-awesome-icon class="ml-1" v-if="comment.hearted" icon="heart" />
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
            <template v-if="comment.repliesPage && (!loadingReplies || !showingReplies)">
 | 
					            <template v-if="comment.repliesPage && (!loadingReplies || !showingReplies)">
 | 
				
			||||||
                <div @click="loadReplies" class="cursor-pointer">
 | 
					                <div @click="loadReplies" class="cursor-pointer">
 | 
				
			||||||
                    <a v-text="`${$t('actions.reply_count', comment.replyCount)}`" />
 | 
					                    <a v-text="`${$t('actions.reply_count', comment.replyCount)}`" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										35
									
								
								src/components/ContentItem.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/components/ContentItem.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					    <component :is="compName" :item="item" />
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script setup>
 | 
				
			||||||
 | 
					import { defineAsyncComponent } from "vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const props = defineProps({
 | 
				
			||||||
 | 
					    item: Object,
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const VideoItem = defineAsyncComponent(() => import("./VideoItem.vue"));
 | 
				
			||||||
 | 
					const PlaylistItem = defineAsyncComponent(() => import("./PlaylistItem.vue"));
 | 
				
			||||||
 | 
					const ChannelItem = defineAsyncComponent(() => import("./ChannelItem.vue"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var compName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					switch (props.item?.type) {
 | 
				
			||||||
 | 
					    case "stream":
 | 
				
			||||||
 | 
					        compName = VideoItem;
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    case "playlist":
 | 
				
			||||||
 | 
					        compName = PlaylistItem;
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    case "channel":
 | 
				
			||||||
 | 
					        compName = ChannelItem;
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    default:
 | 
				
			||||||
 | 
					        console.error("Unexpected item type: " + props.item.type);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					defineExpose({
 | 
				
			||||||
 | 
					    compName,
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@
 | 
				
			||||||
    <hr />
 | 
					    <hr />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="video-grid">
 | 
					    <div class="video-grid">
 | 
				
			||||||
        <VideoItem :is-feed="true" v-for="video in videos" :key="video.url" :video="video" />
 | 
					        <VideoItem :is-feed="true" v-for="video in videos" :key="video.url" :item="video" />
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@
 | 
				
			||||||
    <hr />
 | 
					    <hr />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="video-grid">
 | 
					    <div class="video-grid">
 | 
				
			||||||
        <VideoItem v-for="video in videos" :key="video.url" :video="video" />
 | 
					        <VideoItem v-for="video in videos" :key="video.url" :item="video" />
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <br />
 | 
					    <br />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										34
									
								
								src/components/PlaylistItem.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/components/PlaylistItem.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					    <div>
 | 
				
			||||||
 | 
					        <router-link :to="props.item.url">
 | 
				
			||||||
 | 
					            <div class="relative">
 | 
				
			||||||
 | 
					                <img class="w-full" :src="props.item.thumbnail" loading="lazy" />
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <p>
 | 
				
			||||||
 | 
					                <span v-text="props.item.name" />
 | 
				
			||||||
 | 
					                <font-awesome-icon class="ml-1.5" v-if="props.item.verified" icon="check" />
 | 
				
			||||||
 | 
					            </p>
 | 
				
			||||||
 | 
					        </router-link>
 | 
				
			||||||
 | 
					        <p v-if="props.item.description" v-text="props.item.description" />
 | 
				
			||||||
 | 
					        <router-link v-if="props.item.uploaderUrl" class="link" :to="props.item.uploaderUrl">
 | 
				
			||||||
 | 
					            <p>
 | 
				
			||||||
 | 
					                <span v-text="props.item.uploader" />
 | 
				
			||||||
 | 
					                <font-awesome-icon class="ml-1.5" v-if="props.item.uploaderVerified" icon="check" />
 | 
				
			||||||
 | 
					            </p>
 | 
				
			||||||
 | 
					        </router-link>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <a v-if="props.item.uploaderName" class="link" v-text="props.item.uploaderName" />
 | 
				
			||||||
 | 
					        <template v-if="props.item.videos >= 0">
 | 
				
			||||||
 | 
					            <br v-if="props.item.uploaderName" />
 | 
				
			||||||
 | 
					            <strong v-text="`${props.item.videos} ${$t('video.videos')}`" />
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <br />
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script setup>
 | 
				
			||||||
 | 
					const props = defineProps({
 | 
				
			||||||
 | 
					    item: Object,
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@
 | 
				
			||||||
            <VideoItem
 | 
					            <VideoItem
 | 
				
			||||||
                v-for="(video, index) in playlist.relatedStreams"
 | 
					                v-for="(video, index) in playlist.relatedStreams"
 | 
				
			||||||
                :key="video.url"
 | 
					                :key="video.url"
 | 
				
			||||||
                :video="video"
 | 
					                :item="video"
 | 
				
			||||||
                :index="index"
 | 
					                :index="index"
 | 
				
			||||||
                :playlist-id="$route.query.list"
 | 
					                :playlist-id="$route.query.list"
 | 
				
			||||||
                :admin="admin"
 | 
					                :admin="admin"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
        <VideoItem
 | 
					        <VideoItem
 | 
				
			||||||
            v-for="(related, index) in playlist.relatedStreams"
 | 
					            v-for="(related, index) in playlist.relatedStreams"
 | 
				
			||||||
            :key="related.url"
 | 
					            :key="related.url"
 | 
				
			||||||
            :video="related"
 | 
					            :item="related"
 | 
				
			||||||
            :index="index"
 | 
					            :index="index"
 | 
				
			||||||
            :playlist-id="playlistId"
 | 
					            :playlist-id="playlistId"
 | 
				
			||||||
            height="94"
 | 
					            height="94"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,11 +162,11 @@
 | 
				
			||||||
                    @change="onChange($event)"
 | 
					                    @change="onChange($event)"
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
            </label>
 | 
					            </label>
 | 
				
			||||||
            <label class="pref" for="chkShowComments">
 | 
					            <label class="pref" for="chkHideComments">
 | 
				
			||||||
                <strong v-t="'actions.show_comments'" />
 | 
					                <strong v-t="'actions.minimize_comments_default'" />
 | 
				
			||||||
                <input
 | 
					                <input
 | 
				
			||||||
                    id="chkShowComments"
 | 
					                    id="chkHideComments"
 | 
				
			||||||
                    v-model="showComments"
 | 
					                    v-model="hideComments"
 | 
				
			||||||
                    class="checkbox"
 | 
					                    class="checkbox"
 | 
				
			||||||
                    type="checkbox"
 | 
					                    type="checkbox"
 | 
				
			||||||
                    @change="onChange($event)"
 | 
					                    @change="onChange($event)"
 | 
				
			||||||
| 
						 | 
					@ -416,7 +416,7 @@ export default {
 | 
				
			||||||
            countryMap: CountryMap,
 | 
					            countryMap: CountryMap,
 | 
				
			||||||
            countrySelected: "US",
 | 
					            countrySelected: "US",
 | 
				
			||||||
            defaultHomepage: "trending",
 | 
					            defaultHomepage: "trending",
 | 
				
			||||||
            showComments: true,
 | 
					            minimizeComments: false,
 | 
				
			||||||
            minimizeDescription: false,
 | 
					            minimizeDescription: false,
 | 
				
			||||||
            minimizeRecommendations: false,
 | 
					            minimizeRecommendations: false,
 | 
				
			||||||
            watchHistory: false,
 | 
					            watchHistory: false,
 | 
				
			||||||
| 
						 | 
					@ -552,7 +552,7 @@ export default {
 | 
				
			||||||
            this.bufferingGoal = Math.max(Number(localStorage.getItem("bufferGoal")), 10);
 | 
					            this.bufferingGoal = Math.max(Number(localStorage.getItem("bufferGoal")), 10);
 | 
				
			||||||
            this.countrySelected = this.getPreferenceString("region", "US");
 | 
					            this.countrySelected = this.getPreferenceString("region", "US");
 | 
				
			||||||
            this.defaultHomepage = this.getPreferenceString("homepage", "trending");
 | 
					            this.defaultHomepage = this.getPreferenceString("homepage", "trending");
 | 
				
			||||||
            this.showComments = this.getPreferenceBoolean("comments", true);
 | 
					            this.minimizeComments = this.getPreferenceBoolean("minimizeComments", false);
 | 
				
			||||||
            this.minimizeDescription = this.getPreferenceBoolean("minimizeDescription", false);
 | 
					            this.minimizeDescription = this.getPreferenceBoolean("minimizeDescription", false);
 | 
				
			||||||
            this.minimizeRecommendations = this.getPreferenceBoolean("minimizeRecommendations", false);
 | 
					            this.minimizeRecommendations = this.getPreferenceBoolean("minimizeRecommendations", false);
 | 
				
			||||||
            this.watchHistory = this.getPreferenceBoolean("watchHistory", false);
 | 
					            this.watchHistory = this.getPreferenceBoolean("watchHistory", false);
 | 
				
			||||||
| 
						 | 
					@ -611,7 +611,7 @@ export default {
 | 
				
			||||||
                localStorage.setItem("bufferGoal", this.bufferingGoal);
 | 
					                localStorage.setItem("bufferGoal", this.bufferingGoal);
 | 
				
			||||||
                localStorage.setItem("region", this.countrySelected);
 | 
					                localStorage.setItem("region", this.countrySelected);
 | 
				
			||||||
                localStorage.setItem("homepage", this.defaultHomepage);
 | 
					                localStorage.setItem("homepage", this.defaultHomepage);
 | 
				
			||||||
                localStorage.setItem("comments", this.showComments);
 | 
					                localStorage.setItem("minimizeComments", this.minimizeComments);
 | 
				
			||||||
                localStorage.setItem("minimizeDescription", this.minimizeDescription);
 | 
					                localStorage.setItem("minimizeDescription", this.minimizeDescription);
 | 
				
			||||||
                localStorage.setItem("minimizeRecommendations", this.minimizeRecommendations);
 | 
					                localStorage.setItem("minimizeRecommendations", this.minimizeRecommendations);
 | 
				
			||||||
                localStorage.setItem("watchHistory", this.watchHistory);
 | 
					                localStorage.setItem("watchHistory", this.watchHistory);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,43 +20,17 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div v-if="results" class="video-grid">
 | 
					    <div v-if="results" class="video-grid">
 | 
				
			||||||
        <template v-for="result in results.items" :key="result.url">
 | 
					        <template v-for="result in results.items" :key="result.url">
 | 
				
			||||||
            <VideoItem v-if="shouldUseVideoItem(result)" :video="result" height="94" width="168" />
 | 
					            <ContentItem :item="result" height="94" width="168" />
 | 
				
			||||||
            <div v-if="!shouldUseVideoItem(result)">
 | 
					 | 
				
			||||||
                <router-link :to="result.url">
 | 
					 | 
				
			||||||
                    <div class="relative">
 | 
					 | 
				
			||||||
                        <img class="w-full" :src="result.thumbnail" loading="lazy" />
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <p>
 | 
					 | 
				
			||||||
                        <span v-text="result.name" />
 | 
					 | 
				
			||||||
                        <font-awesome-icon class="ml-1.5" v-if="result.verified" icon="check" />
 | 
					 | 
				
			||||||
                    </p>
 | 
					 | 
				
			||||||
                </router-link>
 | 
					 | 
				
			||||||
                <p v-if="result.description" v-text="result.description" />
 | 
					 | 
				
			||||||
                <router-link v-if="result.uploaderUrl" class="link" :to="result.uploaderUrl">
 | 
					 | 
				
			||||||
                    <p>
 | 
					 | 
				
			||||||
                        <span v-text="result.uploader" />
 | 
					 | 
				
			||||||
                        <font-awesome-icon class="ml-1.5" v-if="result.uploaderVerified" icon="check" />
 | 
					 | 
				
			||||||
                    </p>
 | 
					 | 
				
			||||||
                </router-link>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                <a v-if="result.uploaderName" class="link" v-text="result.uploaderName" />
 | 
					 | 
				
			||||||
                <template v-if="result.videos >= 0">
 | 
					 | 
				
			||||||
                    <br v-if="result.uploaderName" />
 | 
					 | 
				
			||||||
                    <strong v-text="`${result.videos} ${$t('video.videos')}`" />
 | 
					 | 
				
			||||||
                </template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                <br />
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import VideoItem from "./VideoItem.vue";
 | 
					import ContentItem from "./ContentItem.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
    components: {
 | 
					    components: {
 | 
				
			||||||
        VideoItem,
 | 
					        ContentItem,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    data() {
 | 
					    data() {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
| 
						 | 
					@ -124,9 +98,6 @@ export default {
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        shouldUseVideoItem(item) {
 | 
					 | 
				
			||||||
            return item.title;
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        handleRedirect() {
 | 
					        handleRedirect() {
 | 
				
			||||||
            const query = this.$route.query.search_query;
 | 
					            const query = this.$route.query.search_query;
 | 
				
			||||||
            const url =
 | 
					            const url =
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,11 +3,11 @@
 | 
				
			||||||
        <h2 v-t="'actions.share'" />
 | 
					        <h2 v-t="'actions.share'" />
 | 
				
			||||||
        <div class="flex justify-between mt-4">
 | 
					        <div class="flex justify-between mt-4">
 | 
				
			||||||
            <label v-t="'actions.with_timecode'" for="withTimeCode" />
 | 
					            <label v-t="'actions.with_timecode'" for="withTimeCode" />
 | 
				
			||||||
            <input id="withTimeCode" type="checkbox" v-model="withTimeCode" />
 | 
					            <input id="withTimeCode" type="checkbox" v-model="withTimeCode" @change="onChange" />
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <div class="flex justify-between mt-2">
 | 
					        <div class="flex justify-between mt-2">
 | 
				
			||||||
            <label v-t="'actions.piped_link'" />
 | 
					            <label v-t="'actions.piped_link'" />
 | 
				
			||||||
            <input type="checkbox" v-model="pipedLink" />
 | 
					            <input type="checkbox" v-model="pipedLink" @change="onChange" />
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <div class="flex justify-between mt-2">
 | 
					        <div class="flex justify-between mt-2">
 | 
				
			||||||
            <label v-t="'actions.time_code'" />
 | 
					            <label v-t="'actions.time_code'" />
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,8 @@ export default {
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    mounted() {
 | 
					    mounted() {
 | 
				
			||||||
        this.timeStamp = parseInt(this.currentTime);
 | 
					        this.timeStamp = parseInt(this.currentTime);
 | 
				
			||||||
 | 
					        this.withTimeCode = this.getPreferenceBoolean("shareWithTimeCode", true);
 | 
				
			||||||
 | 
					        this.pipedLink = this.getPreferenceBoolean("shareAsPipedLink", true);
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    methods: {
 | 
					    methods: {
 | 
				
			||||||
        followLink() {
 | 
					        followLink() {
 | 
				
			||||||
| 
						 | 
					@ -63,6 +65,10 @@ export default {
 | 
				
			||||||
                alert(this.$t("info.cannot_copy"));
 | 
					                alert(this.$t("info.cannot_copy"));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        onChange() {
 | 
				
			||||||
 | 
					            this.setPreference("shareWithTimeCode", this.withTimeCode);
 | 
				
			||||||
 | 
					            this.setPreference("shareAsPipedLink", this.pipedLink);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    computed: {
 | 
					    computed: {
 | 
				
			||||||
        generatedLink() {
 | 
					        generatedLink() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
    <div class="video-grid">
 | 
					    <div class="video-grid">
 | 
				
			||||||
        <VideoItem v-for="video in videos" :key="video.url" :video="video" height="118" width="210" />
 | 
					        <VideoItem v-for="video in videos" :key="video.url" :item="video" height="118" width="210" />
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
            :to="{
 | 
					            :to="{
 | 
				
			||||||
                path: '/watch',
 | 
					                path: '/watch',
 | 
				
			||||||
                query: {
 | 
					                query: {
 | 
				
			||||||
                    v: video.url.substr(-11),
 | 
					                    v: item.url.substr(-11),
 | 
				
			||||||
                    ...(playlistId && { list: playlistId }),
 | 
					                    ...(playlistId && { list: playlistId }),
 | 
				
			||||||
                    ...(index >= 0 && { index: index + 1 }),
 | 
					                    ...(index >= 0 && { index: index + 1 }),
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					@ -12,36 +12,36 @@
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
            <img
 | 
					            <img
 | 
				
			||||||
                class="w-full"
 | 
					                class="w-full"
 | 
				
			||||||
                :src="video.thumbnail"
 | 
					                :src="item.thumbnail"
 | 
				
			||||||
                :alt="video.title"
 | 
					                :alt="item.title"
 | 
				
			||||||
                :class="{ 'shorts-img': short }"
 | 
					                :class="{ 'shorts-img': item.isShort }"
 | 
				
			||||||
                loading="lazy"
 | 
					                loading="lazy"
 | 
				
			||||||
            />
 | 
					            />
 | 
				
			||||||
            <div class="relative text-sm">
 | 
					            <div class="relative text-sm">
 | 
				
			||||||
                <span
 | 
					                <span
 | 
				
			||||||
                    class="thumbnail-overlay thumbnail-right"
 | 
					                    class="thumbnail-overlay thumbnail-right"
 | 
				
			||||||
                    v-if="video.duration > 0"
 | 
					                    v-if="item.duration > 0"
 | 
				
			||||||
                    v-text="timeFormat(video.duration)"
 | 
					                    v-text="timeFormat(item.duration)"
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
                <!-- shorts thumbnail -->
 | 
					                <!-- shorts thumbnail -->
 | 
				
			||||||
                <span class="thumbnail-overlay thumbnail-left" v-if="short" v-t="'video.shorts'" />
 | 
					                <span class="thumbnail-overlay thumbnail-left" v-if="item.isShort" v-t="'video.shorts'" />
 | 
				
			||||||
                <span
 | 
					                <span
 | 
				
			||||||
                    class="thumbnail-overlay thumbnail-right"
 | 
					                    class="thumbnail-overlay thumbnail-right"
 | 
				
			||||||
                    v-else-if="video.duration >= 60"
 | 
					                    v-else-if="item.duration >= 0"
 | 
				
			||||||
                    v-text="timeFormat(video.duration)"
 | 
					                    v-text="timeFormat(item.duration)"
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
                <i18n-t v-else keypath="video.live" class="thumbnail-overlay thumbnail-right live-badge" tag="div">
 | 
					                <i18n-t v-else keypath="video.live" class="thumbnail-overlay thumbnail-right live-badge" tag="div">
 | 
				
			||||||
                    <font-awesome-icon :icon="['fas', 'broadcast-tower']" />
 | 
					                    <font-awesome-icon :icon="['fas', 'broadcast-tower']" />
 | 
				
			||||||
                </i18n-t>
 | 
					                </i18n-t>
 | 
				
			||||||
                <span v-if="video.watched" class="thumbnail-overlay thumbnail-left" v-t="'video.watched'" />
 | 
					                <span v-if="item.watched" class="thumbnail-overlay bottom-5px left-5px" v-t="'video.watched'" />
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <div>
 | 
					            <div>
 | 
				
			||||||
                <p
 | 
					                <p
 | 
				
			||||||
                    style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical"
 | 
					                    style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical"
 | 
				
			||||||
                    class="my-2 overflow-hidden flex link"
 | 
					                    class="my-2 overflow-hidden flex link"
 | 
				
			||||||
                    :title="video.title"
 | 
					                    :title="item.title"
 | 
				
			||||||
                    v-text="video.title"
 | 
					                    v-text="item.title"
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </router-link>
 | 
					        </router-link>
 | 
				
			||||||
| 
						 | 
					@ -51,14 +51,14 @@
 | 
				
			||||||
                :to="{
 | 
					                :to="{
 | 
				
			||||||
                    path: '/watch',
 | 
					                    path: '/watch',
 | 
				
			||||||
                    query: {
 | 
					                    query: {
 | 
				
			||||||
                        v: video.url.substr(-11),
 | 
					                        v: item.url.substr(-11),
 | 
				
			||||||
                        ...(playlistId && { list: playlistId }),
 | 
					                        ...(playlistId && { list: playlistId }),
 | 
				
			||||||
                        ...(index >= 0 && { index: index + 1 }),
 | 
					                        ...(index >= 0 && { index: index + 1 }),
 | 
				
			||||||
                        listen: '1',
 | 
					                        listen: '1',
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                }"
 | 
					                }"
 | 
				
			||||||
                :aria-label="'Listen to ' + video.title"
 | 
					                :aria-label="'Listen to ' + item.title"
 | 
				
			||||||
                :title="'Listen to ' + video.title"
 | 
					                :title="'Listen to ' + item.title"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
                <font-awesome-icon icon="headphones" />
 | 
					                <font-awesome-icon icon="headphones" />
 | 
				
			||||||
            </router-link>
 | 
					            </router-link>
 | 
				
			||||||
| 
						 | 
					@ -69,20 +69,20 @@
 | 
				
			||||||
                v-if="admin"
 | 
					                v-if="admin"
 | 
				
			||||||
                :title="$t('actions.remove_from_playlist')"
 | 
					                :title="$t('actions.remove_from_playlist')"
 | 
				
			||||||
                ref="removeButton"
 | 
					                ref="removeButton"
 | 
				
			||||||
                @click="removeVideo(video.url.substr(-11))"
 | 
					                @click="removeVideo(item.url.substr(-11))"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
                <font-awesome-icon icon="circle-minus" />
 | 
					                <font-awesome-icon icon="circle-minus" />
 | 
				
			||||||
            </button>
 | 
					            </button>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <div class="flex">
 | 
					        <div class="flex">
 | 
				
			||||||
            <router-link :to="video.uploaderUrl">
 | 
					            <router-link :to="item.uploaderUrl">
 | 
				
			||||||
                <img
 | 
					                <img
 | 
				
			||||||
                    v-if="video.uploaderAvatar"
 | 
					                    v-if="item.uploaderAvatar"
 | 
				
			||||||
                    :src="video.uploaderAvatar"
 | 
					                    :src="item.uploaderAvatar"
 | 
				
			||||||
                    loading="lazy"
 | 
					                    loading="lazy"
 | 
				
			||||||
                    :alt="video.uploaderName"
 | 
					                    :alt="item.uploaderName"
 | 
				
			||||||
                    class="mr-0.5 mt-0.5 w-32px h-32px"
 | 
					                    class="rounded-full mr-0.5 mt-0.5 w-32px h-32px"
 | 
				
			||||||
                    width="68"
 | 
					                    width="68"
 | 
				
			||||||
                    height="68"
 | 
					                    height="68"
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
| 
						 | 
					@ -90,22 +90,22 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <div class="w-[calc(100%-32px-1rem)]">
 | 
					            <div class="w-[calc(100%-32px-1rem)]">
 | 
				
			||||||
                <router-link
 | 
					                <router-link
 | 
				
			||||||
                    v-if="video.uploaderUrl && video.uploaderName && !hideChannel"
 | 
					                    v-if="item.uploaderUrl && item.uploaderName && !hideChannel"
 | 
				
			||||||
                    class="link-secondary overflow-hidden block"
 | 
					                    class="link-secondary overflow-hidden block"
 | 
				
			||||||
                    :to="video.uploaderUrl"
 | 
					                    :to="item.uploaderUrl"
 | 
				
			||||||
                    :title="video.uploaderName"
 | 
					                    :title="item.uploaderName"
 | 
				
			||||||
                >
 | 
					                >
 | 
				
			||||||
                    <span v-text="video.uploaderName" />
 | 
					                    <span v-text="item.uploaderName" />
 | 
				
			||||||
                    <font-awesome-icon class="ml-1.5" v-if="video.uploaderVerified" icon="check" />
 | 
					                    <font-awesome-icon class="ml-1.5" v-if="item.uploaderVerified" icon="check" />
 | 
				
			||||||
                </router-link>
 | 
					                </router-link>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <strong v-if="video.views >= 0 || video.uploadedDate" class="text-sm">
 | 
					                <strong v-if="item.views >= 0 || item.uploadedDate" class="text-sm">
 | 
				
			||||||
                    <span v-if="video.views >= 0">
 | 
					                    <span v-if="item.views >= 0">
 | 
				
			||||||
                        <font-awesome-icon icon="eye" />
 | 
					                        <font-awesome-icon icon="eye" />
 | 
				
			||||||
                        <span class="pl-0.5" v-text="`${numberFormat(video.views)} •`" />
 | 
					                        <span class="pl-0.5" v-text="`${numberFormat(item.views)} •`" />
 | 
				
			||||||
                    </span>
 | 
					                    </span>
 | 
				
			||||||
                    <span v-if="video.uploaded > 0" class="pl-0.5" v-text="timeAgo(video.uploaded)" />
 | 
					                    <span v-if="item.uploaded > 0" class="pl-0.5" v-text="timeAgo(item.uploaded)" />
 | 
				
			||||||
                    <span v-else-if="video.uploadedDate" class="pl-0.5" v-text="video.uploadedDate" />
 | 
					                    <span v-else-if="item.uploadedDate" class="pl-0.5" v-text="item.uploadedDate" />
 | 
				
			||||||
                </strong>
 | 
					                </strong>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
| 
						 | 
					@ -127,7 +127,7 @@ import PlaylistAddModal from "./PlaylistAddModal.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
    props: {
 | 
					    props: {
 | 
				
			||||||
        video: {
 | 
					        item: {
 | 
				
			||||||
            type: Object,
 | 
					            type: Object,
 | 
				
			||||||
            default: () => {
 | 
					            default: () => {
 | 
				
			||||||
                return {};
 | 
					                return {};
 | 
				
			||||||
| 
						 | 
					@ -177,7 +177,7 @@ export default {
 | 
				
			||||||
            if (!this.isFeed || !this.getPreferenceBoolean("hideWatched", false)) return;
 | 
					            if (!this.isFeed || !this.getPreferenceBoolean("hideWatched", false)) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            const objectStore = window.db.transaction("watch_history", "readonly").objectStore("watch_history");
 | 
					            const objectStore = window.db.transaction("watch_history", "readonly").objectStore("watch_history");
 | 
				
			||||||
            const request = objectStore.get(this.video.url.substr(-11));
 | 
					            const request = objectStore.get(this.item.url.substr(-11));
 | 
				
			||||||
            request.onsuccess = event => {
 | 
					            request.onsuccess = event => {
 | 
				
			||||||
                const video = event.target.result;
 | 
					                const video = event.target.result;
 | 
				
			||||||
                if (video && (video.currentTime ?? 0) > video.duration * 0.9) {
 | 
					                if (video && (video.currentTime ?? 0) > video.duration * 0.9) {
 | 
				
			||||||
| 
						 | 
					@ -187,11 +187,6 @@ export default {
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    computed: {
 | 
					 | 
				
			||||||
        short() {
 | 
					 | 
				
			||||||
            return this.video.duration > 0 && this.video.duration <= 61;
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    components: { PlaylistAddModal },
 | 
					    components: { PlaylistAddModal },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,11 +47,11 @@
 | 
				
			||||||
                <!-- Likes/dilikes -->
 | 
					                <!-- Likes/dilikes -->
 | 
				
			||||||
                <div class="pp-likes flex children:mr-2">
 | 
					                <div class="pp-likes flex children:mr-2">
 | 
				
			||||||
                    <template v-if="video.likes >= 0">
 | 
					                    <template v-if="video.likes >= 0">
 | 
				
			||||||
                        <div class="flex">
 | 
					                        <div class="flex items-center">
 | 
				
			||||||
                            <div class="i-fa-solid:thumbs-up" />
 | 
					                            <div class="i-fa-solid:thumbs-up" />
 | 
				
			||||||
                            <strong class="ml-1" v-text="addCommas(video.likes)" />
 | 
					                            <strong class="ml-1" v-text="addCommas(video.likes)" />
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                        <div class="flex">
 | 
					                        <div class="flex items-center">
 | 
				
			||||||
                            <div class="i-fa-solid:thumbs-down" />
 | 
					                            <div class="i-fa-solid:thumbs-down" />
 | 
				
			||||||
                            <strong class="ml-1" v-text="video.dislikes >= 0 ? addCommas(video.dislikes) : '?'" />
 | 
					                            <strong class="ml-1" v-text="video.dislikes >= 0 ? addCommas(video.dislikes) : '?'" />
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
| 
						 | 
					@ -154,16 +154,22 @@
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <div class="grid pp-rec-vids">
 | 
					        <div class="grid pp-rec-vids">
 | 
				
			||||||
            <div v-if="!commentsEnabled" class="">
 | 
					            <div class="xl:col-span-4 sm:col-span-3">
 | 
				
			||||||
                <p class="text-center mt-8" v-t="'comment.user_disabled'"></p>
 | 
					                <p class="text-center mt-8" v-t="'comment.user_disabled'"></p>
 | 
				
			||||||
 | 
					                <button
 | 
				
			||||||
 | 
					                    class="btn mb-2"
 | 
				
			||||||
 | 
					                    @click="toggleComments"
 | 
				
			||||||
 | 
					                    v-t="`actions.${showComments ? 'minimize_comments' : 'show_comments'}`"
 | 
				
			||||||
 | 
					                />
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div v-else-if="!comments" class="">
 | 
					            <div v-if="!showComments" class="w-full"></div>
 | 
				
			||||||
 | 
					            <div v-if="!comments" class="">
 | 
				
			||||||
                <p class="text-center mt-8" v-t="'comment.loading'"></p>
 | 
					                <p class="text-center mt-8" v-t="'comment.loading'"></p>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div v-else-if="comments.disabled" class="">
 | 
					            <div v-else-if="comments.disabled" class="">
 | 
				
			||||||
                <p class="text-center mt-8" v-t="'comment.disabled'"></p>
 | 
					                <p class="text-center mt-8" v-t="'comment.disabled'"></p>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div v-else ref="comments" class="">
 | 
					            <div v-else ref="comments" v-show="showComments" class="">
 | 
				
			||||||
                <CommentItem
 | 
					                <CommentItem
 | 
				
			||||||
                    v-for="comment in comments.comments"
 | 
					                    v-for="comment in comments.comments"
 | 
				
			||||||
                    :key="comment.commentId"
 | 
					                    :key="comment.commentId"
 | 
				
			||||||
| 
						 | 
					@ -180,11 +186,12 @@
 | 
				
			||||||
                    :playlist="playlist"
 | 
					                    :playlist="playlist"
 | 
				
			||||||
                    :selected-index="index"
 | 
					                    :selected-index="index"
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
 | 
					                <hr v-show="showRecs" />
 | 
				
			||||||
                <div v-show="showRecs" class="pp-show-recs">
 | 
					                <div v-show="showRecs" class="pp-show-recs">
 | 
				
			||||||
                    <VideoItem
 | 
					                    <ContentItem
 | 
				
			||||||
                        v-for="related in video.relatedStreams"
 | 
					                        v-for="related in video.relatedStreams"
 | 
				
			||||||
                        :key="related.url"
 | 
					                        :key="related.url"
 | 
				
			||||||
                        :video="related"
 | 
					                        :item="related"
 | 
				
			||||||
                        height="94"
 | 
					                        height="94"
 | 
				
			||||||
                        width="168"
 | 
					                        width="168"
 | 
				
			||||||
                    />
 | 
					                    />
 | 
				
			||||||
| 
						 | 
					@ -196,7 +203,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import VideoPlayer from "./VideoPlayer.vue";
 | 
					import VideoPlayer from "./VideoPlayer.vue";
 | 
				
			||||||
import VideoItem from "./VideoItem.vue";
 | 
					import ContentItem from "./ContentItem.vue";
 | 
				
			||||||
import ErrorHandler from "./ErrorHandler.vue";
 | 
					import ErrorHandler from "./ErrorHandler.vue";
 | 
				
			||||||
import CommentItem from "./CommentItem.vue";
 | 
					import CommentItem from "./CommentItem.vue";
 | 
				
			||||||
import ChaptersBar from "./ChaptersBar.vue";
 | 
					import ChaptersBar from "./ChaptersBar.vue";
 | 
				
			||||||
| 
						 | 
					@ -208,7 +215,7 @@ export default {
 | 
				
			||||||
    name: "App",
 | 
					    name: "App",
 | 
				
			||||||
    components: {
 | 
					    components: {
 | 
				
			||||||
        VideoPlayer,
 | 
					        VideoPlayer,
 | 
				
			||||||
        VideoItem,
 | 
					        ContentItem,
 | 
				
			||||||
        ErrorHandler,
 | 
					        ErrorHandler,
 | 
				
			||||||
        CommentItem,
 | 
					        CommentItem,
 | 
				
			||||||
        ChaptersBar,
 | 
					        ChaptersBar,
 | 
				
			||||||
| 
						 | 
					@ -228,6 +235,7 @@ export default {
 | 
				
			||||||
            sponsors: null,
 | 
					            sponsors: null,
 | 
				
			||||||
            selectedAutoLoop: false,
 | 
					            selectedAutoLoop: false,
 | 
				
			||||||
            selectedAutoPlay: null,
 | 
					            selectedAutoPlay: null,
 | 
				
			||||||
 | 
					            showComments: true,
 | 
				
			||||||
            showDesc: true,
 | 
					            showDesc: true,
 | 
				
			||||||
            showRecs: true,
 | 
					            showRecs: true,
 | 
				
			||||||
            showChapters: true,
 | 
					            showChapters: true,
 | 
				
			||||||
| 
						 | 
					@ -262,9 +270,6 @@ export default {
 | 
				
			||||||
                year: "numeric",
 | 
					                year: "numeric",
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        commentsEnabled() {
 | 
					 | 
				
			||||||
            return this.getPreferenceBoolean("comments", true);
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    mounted() {
 | 
					    mounted() {
 | 
				
			||||||
        // check screen size
 | 
					        // check screen size
 | 
				
			||||||
| 
						 | 
					@ -312,7 +317,7 @@ export default {
 | 
				
			||||||
        this.index = Number(this.$route.query.index);
 | 
					        this.index = Number(this.$route.query.index);
 | 
				
			||||||
        this.getPlaylistData();
 | 
					        this.getPlaylistData();
 | 
				
			||||||
        this.getSponsors();
 | 
					        this.getSponsors();
 | 
				
			||||||
        if (!this.isEmbed && this.commentsEnabled) this.getComments();
 | 
					        if (!this.isEmbed && this.showComments) this.getComments();
 | 
				
			||||||
        window.addEventListener("resize", () => {
 | 
					        window.addEventListener("resize", () => {
 | 
				
			||||||
            this.smallView = this.smallViewQuery.matches;
 | 
					            this.smallView = this.smallViewQuery.matches;
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
| 
						 | 
					@ -320,6 +325,7 @@ export default {
 | 
				
			||||||
    activated() {
 | 
					    activated() {
 | 
				
			||||||
        this.active = true;
 | 
					        this.active = true;
 | 
				
			||||||
        this.selectedAutoPlay = this.getPreferenceBoolean("autoplay", false);
 | 
					        this.selectedAutoPlay = this.getPreferenceBoolean("autoplay", false);
 | 
				
			||||||
 | 
					        this.showComments = !this.getPreferenceBoolean("minimizeComments", false);
 | 
				
			||||||
        this.showDesc = !this.getPreferenceBoolean("minimizeDescription", false);
 | 
					        this.showDesc = !this.getPreferenceBoolean("minimizeDescription", false);
 | 
				
			||||||
        this.showRecs = !this.getPreferenceBoolean("minimizeRecommendations", false);
 | 
					        this.showRecs = !this.getPreferenceBoolean("minimizeRecommendations", false);
 | 
				
			||||||
        if (this.video.duration) {
 | 
					        if (this.video.duration) {
 | 
				
			||||||
| 
						 | 
					@ -350,6 +356,12 @@ export default {
 | 
				
			||||||
                    '"]',
 | 
					                    '"]',
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        toggleComments() {
 | 
				
			||||||
 | 
					            this.showComments = !this.showComments;
 | 
				
			||||||
 | 
					            if (this.showComments && this.comments === null) {
 | 
				
			||||||
 | 
					                this.fetchComments();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        fetchComments() {
 | 
					        fetchComments() {
 | 
				
			||||||
            return this.fetchJson(this.apiUrl() + "/comments/" + this.getVideoId());
 | 
					            return this.fetchJson(this.apiUrl() + "/comments/" + this.getVideoId());
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
| 
						 | 
					@ -462,7 +474,7 @@ export default {
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        handleScroll() {
 | 
					        handleScroll() {
 | 
				
			||||||
            if (this.loading || !this.comments || !this.comments.nextpage) return;
 | 
					            if (this.loading || !this.comments || !this.comments.nextpage) return;
 | 
				
			||||||
            if (window.innerHeight + window.scrollY >= this.$refs.comments.offsetHeight - window.innerHeight) {
 | 
					            if (window.innerHeight + window.scrollY >= this.$refs.comments?.offsetHeight - window.innerHeight) {
 | 
				
			||||||
                this.loading = true;
 | 
					                this.loading = true;
 | 
				
			||||||
                this.fetchJson(this.apiUrl() + "/nextpage/comments/" + this.getVideoId(), {
 | 
					                this.fetchJson(this.apiUrl() + "/nextpage/comments/" + this.getVideoId(), {
 | 
				
			||||||
                    nextpage: this.comments.nextpage,
 | 
					                    nextpage: this.comments.nextpage,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,7 +111,10 @@
 | 
				
			||||||
        "status_page": "الحالة",
 | 
					        "status_page": "الحالة",
 | 
				
			||||||
        "source_code": "شفرة المصدر",
 | 
					        "source_code": "شفرة المصدر",
 | 
				
			||||||
        "instance_donations": "تبرعات المثيل",
 | 
					        "instance_donations": "تبرعات المثيل",
 | 
				
			||||||
        "hide_watched": "إخفاء مقاطع الفيديو التي تمت مشاهدتها من الخلاصة"
 | 
					        "hide_watched": "إخفاء مقاطع الفيديو التي تمت مشاهدتها من الخلاصة",
 | 
				
			||||||
 | 
					        "reply_count": "{count} الردود",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "تصغير التعليقات بشكل افتراضي",
 | 
				
			||||||
 | 
					        "minimize_comments": "تصغير التعليقات"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "video": {
 | 
					    "video": {
 | 
				
			||||||
        "sponsor_segments": "المقاطع الإعلانية",
 | 
					        "sponsor_segments": "المقاطع الإعلانية",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,7 +111,10 @@
 | 
				
			||||||
        "follow_link": "Linki izləyin",
 | 
					        "follow_link": "Linki izləyin",
 | 
				
			||||||
        "piped_link": "Piped linki",
 | 
					        "piped_link": "Piped linki",
 | 
				
			||||||
        "copy_link": "Linki kopyalayın",
 | 
					        "copy_link": "Linki kopyalayın",
 | 
				
			||||||
        "back_to_home": "Evə qayıt"
 | 
					        "back_to_home": "Evə qayıt",
 | 
				
			||||||
 | 
					        "reply_count": "{count} cavab",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Şərhləri standart olaraq kiçilt",
 | 
				
			||||||
 | 
					        "minimize_comments": "Şərhləri Kiçilt"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "comment": {
 | 
					    "comment": {
 | 
				
			||||||
        "pinned_by": "Tərəfindən Sabitləndi {author}",
 | 
					        "pinned_by": "Tərəfindən Sabitləndi {author}",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -108,7 +108,10 @@
 | 
				
			||||||
        "source_code": "Zdrojový kód",
 | 
					        "source_code": "Zdrojový kód",
 | 
				
			||||||
        "instance_donations": "Dary na instanci",
 | 
					        "instance_donations": "Dary na instanci",
 | 
				
			||||||
        "documentation": "Dokumentace",
 | 
					        "documentation": "Dokumentace",
 | 
				
			||||||
        "status_page": "Stav"
 | 
					        "status_page": "Stav",
 | 
				
			||||||
 | 
					        "reply_count": "{count} odpovědí",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Ve výchozím nastavení skrýt komentáře",
 | 
				
			||||||
 | 
					        "minimize_comments": "Skrýt komentáře"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "Sledovat na {0}"
 | 
					        "watch_on": "Sledovat na {0}"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,9 @@
 | 
				
			||||||
        "playlists": "Playlists",
 | 
					        "playlists": "Playlists",
 | 
				
			||||||
        "account": "Account",
 | 
					        "account": "Account",
 | 
				
			||||||
        "instance": "Instance",
 | 
					        "instance": "Instance",
 | 
				
			||||||
        "player": "Player"
 | 
					        "player": "Player",
 | 
				
			||||||
 | 
					        "livestreams": "Livestreams",
 | 
				
			||||||
 | 
					        "channels": "Channels"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "Watch on {0}"
 | 
					        "watch_on": "Watch on {0}"
 | 
				
			||||||
| 
						 | 
					@ -47,7 +49,7 @@
 | 
				
			||||||
        "buffering_goal": "Buffering Goal (in seconds)",
 | 
					        "buffering_goal": "Buffering Goal (in seconds)",
 | 
				
			||||||
        "country_selection": "Country Selection",
 | 
					        "country_selection": "Country Selection",
 | 
				
			||||||
        "default_homepage": "Default Homepage",
 | 
					        "default_homepage": "Default Homepage",
 | 
				
			||||||
        "show_comments": "Show Comments",
 | 
					        "minimize_comments_default": "Minimize Comments by default",
 | 
				
			||||||
        "minimize_description_default": "Minimize Description by default",
 | 
					        "minimize_description_default": "Minimize Description by default",
 | 
				
			||||||
        "store_watch_history": "Store Watch History",
 | 
					        "store_watch_history": "Store Watch History",
 | 
				
			||||||
        "language_selection": "Language Selection",
 | 
					        "language_selection": "Language Selection",
 | 
				
			||||||
| 
						 | 
					@ -62,6 +64,8 @@
 | 
				
			||||||
        "loop_this_video": "Loop this Video",
 | 
					        "loop_this_video": "Loop this Video",
 | 
				
			||||||
        "auto_play_next_video": "Auto Play next Video",
 | 
					        "auto_play_next_video": "Auto Play next Video",
 | 
				
			||||||
        "donations": "Development donations",
 | 
					        "donations": "Development donations",
 | 
				
			||||||
 | 
					        "minimize_comments": "Minimize Comments",
 | 
				
			||||||
 | 
					        "show_comments": "Show Comments",
 | 
				
			||||||
        "minimize_description": "Minimize Description",
 | 
					        "minimize_description": "Minimize Description",
 | 
				
			||||||
        "show_description": "Description",
 | 
					        "show_description": "Description",
 | 
				
			||||||
        "minimize_recommendations": "Minimize Recommendations",
 | 
					        "minimize_recommendations": "Minimize Recommendations",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,14 +6,18 @@
 | 
				
			||||||
        "feed": "Fluo",
 | 
					        "feed": "Fluo",
 | 
				
			||||||
        "preferences": "Agordoj",
 | 
					        "preferences": "Agordoj",
 | 
				
			||||||
        "history": "Historio",
 | 
					        "history": "Historio",
 | 
				
			||||||
        "subscriptions": "Abonoj"
 | 
					        "subscriptions": "Abonoj",
 | 
				
			||||||
 | 
					        "playlists": "Ludlistoj",
 | 
				
			||||||
 | 
					        "account": "Konto",
 | 
				
			||||||
 | 
					        "player": "Ludilo",
 | 
				
			||||||
 | 
					        "instance": "Nodo"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "Vidi en {0}"
 | 
					        "watch_on": "Vidi en {0}"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "actions": {
 | 
					    "actions": {
 | 
				
			||||||
        "subscribe": "Aboni",
 | 
					        "subscribe": "Aboni - {count}",
 | 
				
			||||||
        "unsubscribe": "Malaboni",
 | 
					        "unsubscribe": "Malaboni - {count}",
 | 
				
			||||||
        "view_subscriptions": "Vidi Abonojn",
 | 
					        "view_subscriptions": "Vidi Abonojn",
 | 
				
			||||||
        "sort_by": "Ordigi laŭ:",
 | 
					        "sort_by": "Ordigi laŭ:",
 | 
				
			||||||
        "most_recent": "Plej Freŝaj",
 | 
					        "most_recent": "Plej Freŝaj",
 | 
				
			||||||
| 
						 | 
					@ -26,7 +30,7 @@
 | 
				
			||||||
        "skip_sponsors": "Preterlasi Sponsorojn",
 | 
					        "skip_sponsors": "Preterlasi Sponsorojn",
 | 
				
			||||||
        "skip_intro": "Preterpasi Interakton/Komencan Animacion",
 | 
					        "skip_intro": "Preterpasi Interakton/Komencan Animacion",
 | 
				
			||||||
        "skip_outro": "Preterpasi Finkartojn/Atribuojn",
 | 
					        "skip_outro": "Preterpasi Finkartojn/Atribuojn",
 | 
				
			||||||
        "skip_preview": "Preterpasi Antaŭvidon/",
 | 
					        "skip_preview": "Preterpasi Antaŭvidon/Resumon",
 | 
				
			||||||
        "theme": "Etoso",
 | 
					        "theme": "Etoso",
 | 
				
			||||||
        "dark": "Malhela",
 | 
					        "dark": "Malhela",
 | 
				
			||||||
        "light": "Hela",
 | 
					        "light": "Hela",
 | 
				
			||||||
| 
						 | 
					@ -36,14 +40,129 @@
 | 
				
			||||||
        "country_selection": "Landa Elekto",
 | 
					        "country_selection": "Landa Elekto",
 | 
				
			||||||
        "default_homepage": "Defaŭlta Ĉefpaĝo",
 | 
					        "default_homepage": "Defaŭlta Ĉefpaĝo",
 | 
				
			||||||
        "show_comments": "Montri Komentojn",
 | 
					        "show_comments": "Montri Komentojn",
 | 
				
			||||||
        "language_selection": "Lingvo Elekto",
 | 
					        "language_selection": "Lingva Elekto",
 | 
				
			||||||
        "donations": "Donacoj",
 | 
					        "donations": "Donacoj por programado",
 | 
				
			||||||
        "show_more": "Montri pli",
 | 
					        "show_more": "Montri Pli",
 | 
				
			||||||
        "yes": "Jes",
 | 
					        "yes": "Jes",
 | 
				
			||||||
        "no": "Ne",
 | 
					        "no": "Ne",
 | 
				
			||||||
        "show_chapters": "Sekcioj"
 | 
					        "show_chapters": "Sekcioj",
 | 
				
			||||||
 | 
					        "filter": "Filtri",
 | 
				
			||||||
 | 
					        "search": "Serĉi",
 | 
				
			||||||
 | 
					        "hide_replies": "Kaŝi Respondojn",
 | 
				
			||||||
 | 
					        "add_to_playlist": "Aldoni al ludlisto",
 | 
				
			||||||
 | 
					        "delete_playlist": "Forigi Ludliston",
 | 
				
			||||||
 | 
					        "rename_playlist": "Renomi ludliston",
 | 
				
			||||||
 | 
					        "download_as_txt": "Elŝuti kiel .txt",
 | 
				
			||||||
 | 
					        "piped_link": "Piped-ligilo",
 | 
				
			||||||
 | 
					        "copy_link": "Kopii ligilon",
 | 
				
			||||||
 | 
					        "source_code": "Fontkodo",
 | 
				
			||||||
 | 
					        "select_playlist": "Elektu Ludliston",
 | 
				
			||||||
 | 
					        "documentation": "Dokumentaro",
 | 
				
			||||||
 | 
					        "clone_playlist": "Kloni Ludliston",
 | 
				
			||||||
 | 
					        "clone_playlist_success": "Sukcese klonita!",
 | 
				
			||||||
 | 
					        "delete_playlist_video_confirm": "Ĉu forigi videon el ludlisto?",
 | 
				
			||||||
 | 
					        "remove_from_playlist": "Forigi el ludlisto",
 | 
				
			||||||
 | 
					        "create_playlist": "Krei Ludliston",
 | 
				
			||||||
 | 
					        "delete_account": "Forigi Konton",
 | 
				
			||||||
 | 
					        "new_playlist_name": "Nomo de nova ludlisto",
 | 
				
			||||||
 | 
					        "reply_count": "{count} respondoj",
 | 
				
			||||||
 | 
					        "load_more_replies": "Ŝargi pli da Respondoj",
 | 
				
			||||||
 | 
					        "share": "Konigi",
 | 
				
			||||||
 | 
					        "minimize_description": "Plejetigi Priskribon",
 | 
				
			||||||
 | 
					        "with_timecode": "Konigi kun tempkodo",
 | 
				
			||||||
 | 
					        "instance_donations": "Donacoj por instanco",
 | 
				
			||||||
 | 
					        "confirm_reset_preferences": "Ĉu vi certe volas restarigi viajn agordojn?",
 | 
				
			||||||
 | 
					        "export_to_json": "Elporti JSON-n",
 | 
				
			||||||
 | 
					        "loop_this_video": "Ripetadi ĉi tiun Videon",
 | 
				
			||||||
 | 
					        "enable_lbry_proxy": "Ebligi Prokurilon por LBRY",
 | 
				
			||||||
 | 
					        "import_from_json": "Importi el JSON/CSV",
 | 
				
			||||||
 | 
					        "show_description": "Montri Priskribon",
 | 
				
			||||||
 | 
					        "instances_list": "Listo de Nodoj",
 | 
				
			||||||
 | 
					        "auto_play_next_video": "Aŭtomate Ludi sekvan Videon",
 | 
				
			||||||
 | 
					        "show_recommendations": "Montri Rekomendojn",
 | 
				
			||||||
 | 
					        "reset_preferences": "Restarigi agordojn",
 | 
				
			||||||
 | 
					        "instance_selection": "Noda Elekto",
 | 
				
			||||||
 | 
					        "view_ssl_score": "Vidu SSL-Poentaron",
 | 
				
			||||||
 | 
					        "backup_preferences": "Savkopii agordojn",
 | 
				
			||||||
 | 
					        "disable_lbry": "Malebligi LBRY-n por Elsendfluo",
 | 
				
			||||||
 | 
					        "delete_playlist_confirm": "Ĉu forigi ĉi tiun ludliston?",
 | 
				
			||||||
 | 
					        "store_search_history": "Konservi Ŝerĉhistorion",
 | 
				
			||||||
 | 
					        "hide_watched": "Kaŝi viditajn videojn en la fluo",
 | 
				
			||||||
 | 
					        "minimize_recommendations": "Plejetigi Rekomendojn",
 | 
				
			||||||
 | 
					        "instance_auth_selection": "Elekto de Aŭtentokontrola Nodo",
 | 
				
			||||||
 | 
					        "restore_preferences": "Restarigi agordojn",
 | 
				
			||||||
 | 
					        "status_page": "Stato",
 | 
				
			||||||
 | 
					        "please_select_playlist": "Bonvolu elekti ludliston",
 | 
				
			||||||
 | 
					        "different_auth_instance": "Uzi alian nodon por aŭtentokontrolo",
 | 
				
			||||||
 | 
					        "back_to_home": "Ree hejmen",
 | 
				
			||||||
 | 
					        "time_code": "Tempkodo (en sekundoj)",
 | 
				
			||||||
 | 
					        "skip_non_music": "Preterpasi Muzikon: Nemuzika Sekcio",
 | 
				
			||||||
 | 
					        "buffering_goal": "Bufra Celo (en sekundoj)",
 | 
				
			||||||
 | 
					        "follow_link": "Sekvi ligilon",
 | 
				
			||||||
 | 
					        "skip_self_promo": "Preterpasi Nepagitan/Memreklamon",
 | 
				
			||||||
 | 
					        "enabled_codecs": "Kodekoj Ebligitaj (Pluraj)",
 | 
				
			||||||
 | 
					        "auto": "Aŭtomate",
 | 
				
			||||||
 | 
					        "show_markers": "Montri Markojn en Ludilo",
 | 
				
			||||||
 | 
					        "loading": "Ŝarĝante...",
 | 
				
			||||||
 | 
					        "clear_history": "Forigi la Historion",
 | 
				
			||||||
 | 
					        "skip_filler_tangent": "Preterpasi Plenigajn Scenojn",
 | 
				
			||||||
 | 
					        "skip_highlight": "Preterpasi Rimarkindan Momenton",
 | 
				
			||||||
 | 
					        "invalidate_session": "Elsaluti ĉiujn aparatojn",
 | 
				
			||||||
 | 
					        "skip_interaction": "Preterpasi Interagan Memorigon (Aboni)",
 | 
				
			||||||
 | 
					        "store_watch_history": "Konservi Vidhistorion",
 | 
				
			||||||
 | 
					        "logout": "Elsaluti el ĉi tiu aparato",
 | 
				
			||||||
 | 
					        "minimize_description_default": "Defaŭlte Plejetigi Priskribon",
 | 
				
			||||||
 | 
					        "minimize_recommendations_default": "Defaŭlte Plejetigi Rekomendojn",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Defaŭlte Plejetigi Komentojn",
 | 
				
			||||||
 | 
					        "minimize_comments": "Plejetigi Komentojn"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "video": {
 | 
					    "video": {
 | 
				
			||||||
        "chapters": "Sekcioj"
 | 
					        "chapters": "Sekcioj",
 | 
				
			||||||
 | 
					        "videos": "Videoj",
 | 
				
			||||||
 | 
					        "live": "{0} Realtempe",
 | 
				
			||||||
 | 
					        "views": "{views} spektoj",
 | 
				
			||||||
 | 
					        "sponsor_segments": "Sponsoraj Segmentoj",
 | 
				
			||||||
 | 
					        "watched": "Viditaj",
 | 
				
			||||||
 | 
					        "ratings_disabled": "Taksadoj Malebligitaj",
 | 
				
			||||||
 | 
					        "shorts": "Mallongaj"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "search": {
 | 
				
			||||||
 | 
					        "music_albums": "YT Music: Albumoj",
 | 
				
			||||||
 | 
					        "music_playlists": "YT Music: Ludlistoj",
 | 
				
			||||||
 | 
					        "videos": "YouTube: Videoj",
 | 
				
			||||||
 | 
					        "playlists": "YouTube: Ludlistoj",
 | 
				
			||||||
 | 
					        "channels": "YouTube: Kanaloj",
 | 
				
			||||||
 | 
					        "music_videos": "YT Music: Videoj",
 | 
				
			||||||
 | 
					        "music_songs": "YT Music: Muzikaĵoj",
 | 
				
			||||||
 | 
					        "all": "YouTube: Ĉio",
 | 
				
			||||||
 | 
					        "did_you_mean": "Ĉu vi volis diri «{0}»?"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "info": {
 | 
				
			||||||
 | 
					        "copied": "Kopiita!",
 | 
				
			||||||
 | 
					        "cannot_copy": "Ne povas kopii!",
 | 
				
			||||||
 | 
					        "preferences_note": "Noto: la agordoj estas konservitaj en la loka memoro de via retumilo. Forigi la datumojn de via retumilo restarigos ilin.",
 | 
				
			||||||
 | 
					        "page_not_found": "Paĝo ne trovita"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "login": {
 | 
				
			||||||
 | 
					        "username": "Uzantnomo",
 | 
				
			||||||
 | 
					        "password": "Pasvorto"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "preferences": {
 | 
				
			||||||
 | 
					        "version": "Versio",
 | 
				
			||||||
 | 
					        "instance_name": "Noda Nomo",
 | 
				
			||||||
 | 
					        "registered_users": "Registritaj Uzantoj",
 | 
				
			||||||
 | 
					        "ssl_score": "SSL-Poentaro",
 | 
				
			||||||
 | 
					        "up_to_date": "Ĉu ĝisdata?",
 | 
				
			||||||
 | 
					        "has_cdn": "Ĉu ĝi havas CDN-n?",
 | 
				
			||||||
 | 
					        "instance_locations": "Nodaj Lokoj"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "comment": {
 | 
				
			||||||
 | 
					        "disabled": "Komentoj estas malebligitaj de la alŝutinto.",
 | 
				
			||||||
 | 
					        "user_disabled": "Komentoj estas malebligitaj en la agordoj.",
 | 
				
			||||||
 | 
					        "pinned_by": "Fiksita de {author}",
 | 
				
			||||||
 | 
					        "loading": "Ŝarĝante komentojn..."
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "subscriptions": {
 | 
				
			||||||
 | 
					        "subscribed_channels_count": "Abonita al: {0}"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,7 +111,7 @@
 | 
				
			||||||
        "time_code": "Código de tiempo (en segundos)",
 | 
					        "time_code": "Código de tiempo (en segundos)",
 | 
				
			||||||
        "reset_preferences": "Restablecer preferencias",
 | 
					        "reset_preferences": "Restablecer preferencias",
 | 
				
			||||||
        "confirm_reset_preferences": "¿Estás seguro de que quieres restablecer tus preferencias?",
 | 
					        "confirm_reset_preferences": "¿Estás seguro de que quieres restablecer tus preferencias?",
 | 
				
			||||||
        "backup_preferences": "Preferencias de copia de seguridad",
 | 
					        "backup_preferences": "Copia de seguridad de preferencias",
 | 
				
			||||||
        "restore_preferences": "Restablecer las preferencias",
 | 
					        "restore_preferences": "Restablecer las preferencias",
 | 
				
			||||||
        "back_to_home": "Volver a la página de inicio",
 | 
					        "back_to_home": "Volver a la página de inicio",
 | 
				
			||||||
        "show_chapters": "Capítulos",
 | 
					        "show_chapters": "Capítulos",
 | 
				
			||||||
| 
						 | 
					@ -120,7 +120,10 @@
 | 
				
			||||||
        "documentation": "Documentación",
 | 
					        "documentation": "Documentación",
 | 
				
			||||||
        "instance_donations": "Donaciones para instancia",
 | 
					        "instance_donations": "Donaciones para instancia",
 | 
				
			||||||
        "status_page": "Estado",
 | 
					        "status_page": "Estado",
 | 
				
			||||||
        "hide_watched": "Ocultar los vídeos vistos en el feed"
 | 
					        "hide_watched": "Ocultar los vídeos vistos en el feed",
 | 
				
			||||||
 | 
					        "reply_count": "{count} respuestas",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Minimizar comentarios por defecto",
 | 
				
			||||||
 | 
					        "minimize_comments": "Minimizar comentarios"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "titles": {
 | 
					    "titles": {
 | 
				
			||||||
        "feed": "Fuente web",
 | 
					        "feed": "Fuente web",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -108,7 +108,10 @@
 | 
				
			||||||
        "status_page": "État",
 | 
					        "status_page": "État",
 | 
				
			||||||
        "source_code": "Code source",
 | 
					        "source_code": "Code source",
 | 
				
			||||||
        "instance_donations": "Dons d'instance",
 | 
					        "instance_donations": "Dons d'instance",
 | 
				
			||||||
        "hide_watched": "Masquer les vidéos regardées dans le flux"
 | 
					        "hide_watched": "Masquer les vidéos regardées dans le flux",
 | 
				
			||||||
 | 
					        "reply_count": "{count} réponses",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Minimiser les commentaires par défaut",
 | 
				
			||||||
 | 
					        "minimize_comments": "Minimiser les commentaires"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "Regarder sur {0}"
 | 
					        "watch_on": "Regarder sur {0}"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,7 +111,10 @@
 | 
				
			||||||
        "status_page": "מצב",
 | 
					        "status_page": "מצב",
 | 
				
			||||||
        "source_code": "קוד מקור",
 | 
					        "source_code": "קוד מקור",
 | 
				
			||||||
        "hide_watched": "הסתרת הסרטונים שנצפו בערוץ העדכונים",
 | 
					        "hide_watched": "הסתרת הסרטונים שנצפו בערוץ העדכונים",
 | 
				
			||||||
        "instance_donations": "תרומות להפעלה"
 | 
					        "instance_donations": "תרומות להפעלה",
 | 
				
			||||||
 | 
					        "reply_count": "{count} תגובות",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "צמצום הערות כברירת מחדל",
 | 
				
			||||||
 | 
					        "minimize_comments": "צמצום הערות"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "comment": {
 | 
					    "comment": {
 | 
				
			||||||
        "pinned_by": "ננעץ על ידי {author}",
 | 
					        "pinned_by": "ננעץ על ידי {author}",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@
 | 
				
			||||||
        "show_description": "Prikaži opis",
 | 
					        "show_description": "Prikaži opis",
 | 
				
			||||||
        "minimize_recommendations": "Sakrij preporuke",
 | 
					        "minimize_recommendations": "Sakrij preporuke",
 | 
				
			||||||
        "show_recommendations": "Prikaži preporuke",
 | 
					        "show_recommendations": "Prikaži preporuke",
 | 
				
			||||||
        "donations": "Donacije",
 | 
					        "donations": "Donacije za razvoj",
 | 
				
			||||||
        "auto_play_next_video": "Automatski reproduciraj idući video",
 | 
					        "auto_play_next_video": "Automatski reproduciraj idući video",
 | 
				
			||||||
        "loop_this_video": "Ponavljaj ovaj video",
 | 
					        "loop_this_video": "Ponavljaj ovaj video",
 | 
				
			||||||
        "import_from_json": "Uvezi iz JSON/CSV formata",
 | 
					        "import_from_json": "Uvezi iz JSON/CSV formata",
 | 
				
			||||||
| 
						 | 
					@ -114,7 +114,14 @@
 | 
				
			||||||
        "rename_playlist": "Preimenuj popis snimaka",
 | 
					        "rename_playlist": "Preimenuj popis snimaka",
 | 
				
			||||||
        "new_playlist_name": "Ime novog popisa snimaka",
 | 
					        "new_playlist_name": "Ime novog popisa snimaka",
 | 
				
			||||||
        "share": "Dijeli",
 | 
					        "share": "Dijeli",
 | 
				
			||||||
        "show_chapters": "Poglavlja"
 | 
					        "show_chapters": "Poglavlja",
 | 
				
			||||||
 | 
					        "documentation": "Dokumentacija",
 | 
				
			||||||
 | 
					        "source_code": "Izvorni kod",
 | 
				
			||||||
 | 
					        "instance_donations": "Donacije instace",
 | 
				
			||||||
 | 
					        "store_search_history": "Spremi povijest pretrage",
 | 
				
			||||||
 | 
					        "hide_watched": "Sakrij gledana videa u novostima",
 | 
				
			||||||
 | 
					        "status_page": "Stanje",
 | 
				
			||||||
 | 
					        "reply_count": "{count} odgovora"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "Gledaj na {0}"
 | 
					        "watch_on": "Gledaj na {0}"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,7 +111,10 @@
 | 
				
			||||||
        "instance_donations": "Donasi instansi",
 | 
					        "instance_donations": "Donasi instansi",
 | 
				
			||||||
        "hide_watched": "Sembunyikan video yang telah ditonton di umpan",
 | 
					        "hide_watched": "Sembunyikan video yang telah ditonton di umpan",
 | 
				
			||||||
        "status_page": "Status",
 | 
					        "status_page": "Status",
 | 
				
			||||||
        "source_code": "Kode sumber"
 | 
					        "source_code": "Kode sumber",
 | 
				
			||||||
 | 
					        "reply_count": "{count} balasan",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Kecilkan Komentar secara bawaan",
 | 
				
			||||||
 | 
					        "minimize_comments": "Kecilkan Komentar"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "comment": {
 | 
					    "comment": {
 | 
				
			||||||
        "pinned_by": "Dipasangi pin oleh {author}",
 | 
					        "pinned_by": "Dipasangi pin oleh {author}",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,13 +8,15 @@
 | 
				
			||||||
        "trending": "Vinsælt",
 | 
					        "trending": "Vinsælt",
 | 
				
			||||||
        "feed": "Straumur",
 | 
					        "feed": "Straumur",
 | 
				
			||||||
        "playlists": "Spilunarlistar",
 | 
					        "playlists": "Spilunarlistar",
 | 
				
			||||||
        "player": "Spilari"
 | 
					        "player": "Spilari",
 | 
				
			||||||
 | 
					        "account": "Reikningur",
 | 
				
			||||||
 | 
					        "instance": "Tilvik"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "actions": {
 | 
					    "actions": {
 | 
				
			||||||
        "sort_by": "Raða eftir:",
 | 
					        "sort_by": "Raða eftir:",
 | 
				
			||||||
        "back": "Til Baka",
 | 
					        "back": "Til Baka",
 | 
				
			||||||
        "dark": "Dimmt",
 | 
					        "dark": "Dökk",
 | 
				
			||||||
        "light": "Ljóst",
 | 
					        "light": "Ljós",
 | 
				
			||||||
        "theme": "Þema",
 | 
					        "theme": "Þema",
 | 
				
			||||||
        "enable_sponsorblock": "Virkja Sponsorblock",
 | 
					        "enable_sponsorblock": "Virkja Sponsorblock",
 | 
				
			||||||
        "subscribe": "Gerast Áskrifandi - {count}",
 | 
					        "subscribe": "Gerast Áskrifandi - {count}",
 | 
				
			||||||
| 
						 | 
					@ -46,14 +48,14 @@
 | 
				
			||||||
        "language_selection": "Tungumálaval",
 | 
					        "language_selection": "Tungumálaval",
 | 
				
			||||||
        "minimize_description_default": "Lágmarka Lýsingu Sjálfgefið",
 | 
					        "minimize_description_default": "Lágmarka Lýsingu Sjálfgefið",
 | 
				
			||||||
        "instances_list": "Tilvikalisti",
 | 
					        "instances_list": "Tilvikalisti",
 | 
				
			||||||
        "donations": "Framlög",
 | 
					        "donations": "Framlög til þróunar",
 | 
				
			||||||
        "minimize_description": "Minnka Lýsingu",
 | 
					        "minimize_description": "Minnka Lýsingu",
 | 
				
			||||||
        "show_description": "Sýna Lýsingu",
 | 
					        "show_description": "Sýna Lýsingu",
 | 
				
			||||||
        "minimize_recommendations": "Minnka Tillögur",
 | 
					        "minimize_recommendations": "Minnka Tillögur",
 | 
				
			||||||
        "show_recommendations": "Sýna Tillögur",
 | 
					        "show_recommendations": "Sýna Tillögur",
 | 
				
			||||||
        "disable_lbry": "Óvirkja LBRY Fyrir Straumspilun",
 | 
					        "disable_lbry": "Óvirkja LBRY Fyrir Straumspilun",
 | 
				
			||||||
        "enable_lbry_proxy": "Virkja Staðgengilsþjón fyrir LBRY",
 | 
					        "enable_lbry_proxy": "Virkja Staðgengilsþjón fyrir LBRY",
 | 
				
			||||||
        "view_ssl_score": "Skoðaðu SSL Einkunn",
 | 
					        "view_ssl_score": "Skoða SSL einkunn",
 | 
				
			||||||
        "enabled_codecs": "Virkjir Afkóðarar (Marghæft)",
 | 
					        "enabled_codecs": "Virkjir Afkóðarar (Marghæft)",
 | 
				
			||||||
        "instance_selection": "Tilviksval",
 | 
					        "instance_selection": "Tilviksval",
 | 
				
			||||||
        "import_from_json": "Flytja inn frá JSON/CSV",
 | 
					        "import_from_json": "Flytja inn frá JSON/CSV",
 | 
				
			||||||
| 
						 | 
					@ -67,13 +69,63 @@
 | 
				
			||||||
        "default_quality": "Sjálfgefin Gæði",
 | 
					        "default_quality": "Sjálfgefin Gæði",
 | 
				
			||||||
        "buffering_goal": "Biðminnismarkmið (í sekúndum)",
 | 
					        "buffering_goal": "Biðminnismarkmið (í sekúndum)",
 | 
				
			||||||
        "export_to_json": "Flytja út í JSON",
 | 
					        "export_to_json": "Flytja út í JSON",
 | 
				
			||||||
        "skip_highlight": "Sleppa Hápunkti"
 | 
					        "skip_highlight": "Sleppa Hápunkti",
 | 
				
			||||||
 | 
					        "create_playlist": "Skapa spilunarlista",
 | 
				
			||||||
 | 
					        "delete_playlist": "Eyða spilunarlista",
 | 
				
			||||||
 | 
					        "time_code": "Tímakóði (sekúndur)",
 | 
				
			||||||
 | 
					        "restore_preferences": "Flytja inn stillingar",
 | 
				
			||||||
 | 
					        "download_as_txt": "Sækja textaskrá",
 | 
				
			||||||
 | 
					        "different_auth_instance": "Nota annað tilvik til auðkenningar",
 | 
				
			||||||
 | 
					        "instance_auth_selection": "Val tilvika fyrir auðkenningu",
 | 
				
			||||||
 | 
					        "add_to_playlist": "Bæta við á spilunarlista",
 | 
				
			||||||
 | 
					        "reset_preferences": "Endurstilla stillingar",
 | 
				
			||||||
 | 
					        "remove_from_playlist": "Fjarlægja af spilunarlista",
 | 
				
			||||||
 | 
					        "select_playlist": "Velja spilunarlista",
 | 
				
			||||||
 | 
					        "invalidate_session": "Útskrá öll tæki",
 | 
				
			||||||
 | 
					        "backup_preferences": "Flytja út stillingar",
 | 
				
			||||||
 | 
					        "documentation": "Hjálparskjöl",
 | 
				
			||||||
 | 
					        "skip_filler_tangent": "Sleppa því óviðkomandi",
 | 
				
			||||||
 | 
					        "show_markers": "Sýna merki á spilara",
 | 
				
			||||||
 | 
					        "delete_account": "Eyða reikningi",
 | 
				
			||||||
 | 
					        "follow_link": "Fylgja hlekki",
 | 
				
			||||||
 | 
					        "copy_link": "Afrita hlekk",
 | 
				
			||||||
 | 
					        "instance_donations": "Framlög til netþjóns",
 | 
				
			||||||
 | 
					        "status_page": "Staða",
 | 
				
			||||||
 | 
					        "source_code": "Frumkóði",
 | 
				
			||||||
 | 
					        "rename_playlist": "Endurnefna spilunarlista",
 | 
				
			||||||
 | 
					        "new_playlist_name": "Nýtt heiti spilunarlista",
 | 
				
			||||||
 | 
					        "share": "Deila",
 | 
				
			||||||
 | 
					        "with_timecode": "Deilа með tímakóða",
 | 
				
			||||||
 | 
					        "piped_link": "Hlekkur Piped",
 | 
				
			||||||
 | 
					        "please_select_playlist": "Vinsamlegast veldu spilunarlista",
 | 
				
			||||||
 | 
					        "clone_playlist": "Afrita spilunarlista",
 | 
				
			||||||
 | 
					        "clone_playlist_success": "Tókst að afrita spilunarlista!",
 | 
				
			||||||
 | 
					        "confirm_reset_preferences": "Ertu viss um að þú viljir endurstilla stillingarnar?",
 | 
				
			||||||
 | 
					        "back_to_home": "Aftur heim",
 | 
				
			||||||
 | 
					        "delete_playlist_video_confirm": "Fjarlægja myndband af spilunarlista?",
 | 
				
			||||||
 | 
					        "logout": "Útskrá þetta tæki",
 | 
				
			||||||
 | 
					        "delete_playlist_confirm": "Eyða þessum spilunarlista?",
 | 
				
			||||||
 | 
					        "minimize_recommendations_default": "Lágmarka ráðleggingar sjálfkrafa",
 | 
				
			||||||
 | 
					        "store_search_history": "Geyma leitarferil",
 | 
				
			||||||
 | 
					        "hide_watched": "Fela myndbönd sem þú hefur horft á",
 | 
				
			||||||
 | 
					        "show_chapters": "Kaflar",
 | 
				
			||||||
 | 
					        "reply_count": "{count} svör",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Fela ummæli sjálfgefið",
 | 
				
			||||||
 | 
					        "minimize_comments": "Fela ummæli"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "Horfa á {0}"
 | 
					        "watch_on": "Horfa á {0}"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "search": {
 | 
					    "search": {
 | 
				
			||||||
        "did_you_mean": "Áttirðu við: {0}?"
 | 
					        "did_you_mean": "Áttirðu við: {0}?",
 | 
				
			||||||
 | 
					        "music_songs": "YT Tónlist: Lög",
 | 
				
			||||||
 | 
					        "playlists": "YouTube: Spilunarlistar",
 | 
				
			||||||
 | 
					        "music_videos": "YT Tónlist: Myndbönd",
 | 
				
			||||||
 | 
					        "music_albums": "YT Tónlist: Plötur",
 | 
				
			||||||
 | 
					        "music_playlists": "YT Tónlist: Lagalistar",
 | 
				
			||||||
 | 
					        "all": "YouTube: Allt",
 | 
				
			||||||
 | 
					        "videos": "YouTube: Myndbönd",
 | 
				
			||||||
 | 
					        "channels": "YouTube: Rásir"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "video": {
 | 
					    "video": {
 | 
				
			||||||
        "ratings_disabled": "Einkunnir Óvirkar",
 | 
					        "ratings_disabled": "Einkunnir Óvirkar",
 | 
				
			||||||
| 
						 | 
					@ -82,19 +134,35 @@
 | 
				
			||||||
        "watched": "Áhorft",
 | 
					        "watched": "Áhorft",
 | 
				
			||||||
        "sponsor_segments": "Styrkjarahlutar",
 | 
					        "sponsor_segments": "Styrkjarahlutar",
 | 
				
			||||||
        "chapters": "Kaflar",
 | 
					        "chapters": "Kaflar",
 | 
				
			||||||
        "live": "{0} Í beinni"
 | 
					        "live": "{0} Í beinni",
 | 
				
			||||||
 | 
					        "shorts": "Stutt"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "comment": {
 | 
					    "comment": {
 | 
				
			||||||
        "pinned_by": "Fest af {author}"
 | 
					        "pinned_by": "Fest af {author}",
 | 
				
			||||||
 | 
					        "disabled": "Höfundur lokaði fyrir ummælum.",
 | 
				
			||||||
 | 
					        "user_disabled": "Slökkt er á ummælum í stillingunum.",
 | 
				
			||||||
 | 
					        "loading": "Hleður ummæli…"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "preferences": {
 | 
					    "preferences": {
 | 
				
			||||||
        "instance_name": "Tilviksheiti",
 | 
					        "instance_name": "Tilviksheiti",
 | 
				
			||||||
        "instance_locations": "Tilviksstaðsetning",
 | 
					        "instance_locations": "Tilviksstaðsetning",
 | 
				
			||||||
        "has_cdn": "Hefur Efnisflutningarnet (CDN)?",
 | 
					        "has_cdn": "Hefur efnisflutningarnet (CDN)?",
 | 
				
			||||||
        "ssl_score": "SSL Einkunn"
 | 
					        "ssl_score": "SSL einkunn",
 | 
				
			||||||
 | 
					        "version": "Útgáfa",
 | 
				
			||||||
 | 
					        "registered_users": "Skráðir notendur",
 | 
				
			||||||
 | 
					        "up_to_date": "Nýjasta útgáfa?"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "login": {
 | 
					    "login": {
 | 
				
			||||||
        "password": "Aðgangsorð",
 | 
					        "password": "Aðgangsorð",
 | 
				
			||||||
        "username": "Notandanafn"
 | 
					        "username": "Notandanafn"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "info": {
 | 
				
			||||||
 | 
					        "page_not_found": "Síða fannst ekki",
 | 
				
			||||||
 | 
					        "cannot_copy": "Get ekki afritað!",
 | 
				
			||||||
 | 
					        "preferences_note": "Athugaðu: stillingar eru geymdar í staðbundinni geymslu vafrans þíns. Ef vafragögnum þínum eru eytt verða þau endurstillt.",
 | 
				
			||||||
 | 
					        "copied": "Afritað!"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "subscriptions": {
 | 
				
			||||||
 | 
					        "subscribed_channels_count": "Áskrifandi hjá: {0}"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,7 +93,8 @@
 | 
				
			||||||
        "store_search_history": "Memorizza la cronologia delle ricerche",
 | 
					        "store_search_history": "Memorizza la cronologia delle ricerche",
 | 
				
			||||||
        "status_page": "Stato",
 | 
					        "status_page": "Stato",
 | 
				
			||||||
        "documentation": "Documentazione",
 | 
					        "documentation": "Documentazione",
 | 
				
			||||||
        "source_code": "Codice sorgente"
 | 
					        "source_code": "Codice sorgente",
 | 
				
			||||||
 | 
					        "reply_count": "{count} risposte"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "Guarda su {0}"
 | 
					        "watch_on": "Guarda su {0}"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,7 +38,7 @@
 | 
				
			||||||
        "disable_lbry": "Išjungti LBRY srautiniam siuntimui",
 | 
					        "disable_lbry": "Išjungti LBRY srautiniam siuntimui",
 | 
				
			||||||
        "instance_selection": "Perdavimo šaltinio pasirinkimas",
 | 
					        "instance_selection": "Perdavimo šaltinio pasirinkimas",
 | 
				
			||||||
        "auto_play_next_video": "Automatiškai paleisti sekantį vaizdo įrašą",
 | 
					        "auto_play_next_video": "Automatiškai paleisti sekantį vaizdo įrašą",
 | 
				
			||||||
        "donations": "Parama",
 | 
					        "donations": "Parama plėtrai",
 | 
				
			||||||
        "loop_this_video": "Sukti ratu šį vaizdo įrašą",
 | 
					        "loop_this_video": "Sukti ratu šį vaizdo įrašą",
 | 
				
			||||||
        "show_description": "Rodyti aprašymą",
 | 
					        "show_description": "Rodyti aprašymą",
 | 
				
			||||||
        "minimize_description": "Suskleisti aprašymą",
 | 
					        "minimize_description": "Suskleisti aprašymą",
 | 
				
			||||||
| 
						 | 
					@ -70,7 +70,35 @@
 | 
				
			||||||
        "download_as_txt": "Atsisiųsti kaip .txt",
 | 
					        "download_as_txt": "Atsisiųsti kaip .txt",
 | 
				
			||||||
        "delete_account": "Ištrinti paskyrą",
 | 
					        "delete_account": "Ištrinti paskyrą",
 | 
				
			||||||
        "logout": "Atsijungti šiame įrenginyje",
 | 
					        "logout": "Atsijungti šiame įrenginyje",
 | 
				
			||||||
        "remove_from_playlist": "Pašalinti iš grojaraščio"
 | 
					        "remove_from_playlist": "Pašalinti iš grojaraščio",
 | 
				
			||||||
 | 
					        "confirm_reset_preferences": "Ar tikrai norite iš naujo nustatyti nuostatas?",
 | 
				
			||||||
 | 
					        "reset_preferences": "Iš naujo nustatyti nuostatas",
 | 
				
			||||||
 | 
					        "backup_preferences": "Atsarginės kopijos nuostatos",
 | 
				
			||||||
 | 
					        "source_code": "Pirminis kodas",
 | 
				
			||||||
 | 
					        "documentation": "Dokumentacija",
 | 
				
			||||||
 | 
					        "with_timecode": "Dalintis su laiko kodu",
 | 
				
			||||||
 | 
					        "reply_count": "{count} atsakymų",
 | 
				
			||||||
 | 
					        "show_chapters": "Skyriai",
 | 
				
			||||||
 | 
					        "piped_link": "Piped nuoroda",
 | 
				
			||||||
 | 
					        "rename_playlist": "Pervardyti grojaraštį",
 | 
				
			||||||
 | 
					        "follow_link": "Sekti nuorodą",
 | 
				
			||||||
 | 
					        "store_search_history": "Išsaugoti paieškos istoriją",
 | 
				
			||||||
 | 
					        "hide_watched": "Slėpti žiūrėtus vaizdo įrašus sklaidos kanale",
 | 
				
			||||||
 | 
					        "restore_preferences": "Atkurti nuostatas",
 | 
				
			||||||
 | 
					        "status_page": "Būsena",
 | 
				
			||||||
 | 
					        "copy_link": "Kopijuoti nuorodą",
 | 
				
			||||||
 | 
					        "share": "Dalintis",
 | 
				
			||||||
 | 
					        "new_playlist_name": "Naujas grojaraščio pavadinimas",
 | 
				
			||||||
 | 
					        "minimize_recommendations_default": "Sumažinti rekomendacijas automatiškai",
 | 
				
			||||||
 | 
					        "instance_donations": "Perdavimo šaltinio parama",
 | 
				
			||||||
 | 
					        "instance_auth_selection": "Autentifikavimo perdavimo šaltinio pasirinkimas",
 | 
				
			||||||
 | 
					        "skip_filler_tangent": "Praleisti užpildymo dalį",
 | 
				
			||||||
 | 
					        "different_auth_instance": "Autentiškumo nustatymui naudoti kitą perdavimo šaltinį",
 | 
				
			||||||
 | 
					        "back_to_home": "Grįžti į pagrindinį",
 | 
				
			||||||
 | 
					        "skip_highlight": "Praleisti išskirtų dalių pakartojimus",
 | 
				
			||||||
 | 
					        "time_code": "Laiko kodas (sekundėmis)",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Suskleisti komentarus automatiškai",
 | 
				
			||||||
 | 
					        "minimize_comments": "Suskleisti komentarus"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "Žiūrėti per {0}"
 | 
					        "watch_on": "Žiūrėti per {0}"
 | 
				
			||||||
| 
						 | 
					@ -85,29 +113,56 @@
 | 
				
			||||||
        "subscriptions": "Prenumeratos",
 | 
					        "subscriptions": "Prenumeratos",
 | 
				
			||||||
        "playlists": "Grojaraščiai",
 | 
					        "playlists": "Grojaraščiai",
 | 
				
			||||||
        "account": "Paskyra",
 | 
					        "account": "Paskyra",
 | 
				
			||||||
        "player": "Grotuvas"
 | 
					        "player": "Grotuvas",
 | 
				
			||||||
 | 
					        "instance": "Perdavimo šaltinis"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "preferences": {
 | 
					    "preferences": {
 | 
				
			||||||
        "instance_locations": "Perdavimo šaltinio vietovė",
 | 
					        "instance_locations": "Perdavimo šaltinio vietovė",
 | 
				
			||||||
        "instance_name": "Perdavimo šaltinio pavadinimas",
 | 
					        "instance_name": "Perdavimo šaltinio pavadinimas",
 | 
				
			||||||
        "ssl_score": "SSL balas",
 | 
					        "ssl_score": "SSL balas",
 | 
				
			||||||
        "has_cdn": "Turi CDN?"
 | 
					        "has_cdn": "Turi CDN?",
 | 
				
			||||||
 | 
					        "version": "Versija",
 | 
				
			||||||
 | 
					        "registered_users": "Registruoti naudotojai",
 | 
				
			||||||
 | 
					        "up_to_date": "Atnaujinta?"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "comment": {
 | 
					    "comment": {
 | 
				
			||||||
        "pinned_by": "Prisegė {author}"
 | 
					        "pinned_by": "Prisegė {author}",
 | 
				
			||||||
 | 
					        "loading": "Įkeliami komentarai...",
 | 
				
			||||||
 | 
					        "disabled": "Komentarai yra išjungti įkėlėjo.",
 | 
				
			||||||
 | 
					        "user_disabled": "Komentarai yra išjungti nustatymuose."
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "video": {
 | 
					    "video": {
 | 
				
			||||||
        "views": "{views} peržiūros",
 | 
					        "views": "{views} peržiūros",
 | 
				
			||||||
        "videos": "Vaizdo įrašai",
 | 
					        "videos": "Vaizdo įrašai",
 | 
				
			||||||
        "sponsor_segments": "Rėmėjų segmentai",
 | 
					        "sponsor_segments": "Rėmėjų segmentai",
 | 
				
			||||||
        "watched": "Žiūrėta",
 | 
					        "watched": "Žiūrėta",
 | 
				
			||||||
        "ratings_disabled": "Įvertinimai išjungti"
 | 
					        "ratings_disabled": "Įvertinimai išjungti",
 | 
				
			||||||
 | 
					        "chapters": "Skyriai",
 | 
				
			||||||
 | 
					        "live": "{0} tiesiogiai",
 | 
				
			||||||
 | 
					        "shorts": "Trumpi filmukai"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "login": {
 | 
					    "login": {
 | 
				
			||||||
        "password": "Slaptažodis",
 | 
					        "password": "Slaptažodis",
 | 
				
			||||||
        "username": "Vartotojo vardas"
 | 
					        "username": "Vartotojo vardas"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "search": {
 | 
					    "search": {
 | 
				
			||||||
        "did_you_mean": "Ar turėjote omenyje: {0}?"
 | 
					        "did_you_mean": "Ar turėjote omenyje: {0}?",
 | 
				
			||||||
 | 
					        "playlists": "YouTube: grojaraščiai",
 | 
				
			||||||
 | 
					        "music_playlists": "YT Music: grojaraščiai",
 | 
				
			||||||
 | 
					        "all": "YouTube: visi",
 | 
				
			||||||
 | 
					        "channels": "YouTube: kanalai",
 | 
				
			||||||
 | 
					        "videos": "YouTube: vaizdo įrašai",
 | 
				
			||||||
 | 
					        "music_videos": "YT Music: vaizdo įrašai",
 | 
				
			||||||
 | 
					        "music_songs": "YT Music: dainos",
 | 
				
			||||||
 | 
					        "music_albums": "YT Music: albumai"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "info": {
 | 
				
			||||||
 | 
					        "copied": "Nukopijuota!",
 | 
				
			||||||
 | 
					        "cannot_copy": "Negalima kopijuoti!",
 | 
				
			||||||
 | 
					        "page_not_found": "Puslapis nerastas",
 | 
				
			||||||
 | 
					        "preferences_note": "Pastaba: nuostatos išsaugomos vietinėje naršyklės atmintyje. Ištrynus naršyklės duomenis, jie bus nustatyti iš naujo."
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "subscriptions": {
 | 
				
			||||||
 | 
					        "subscribed_channels_count": "Prenumeruojama: {0}"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,7 +38,7 @@
 | 
				
			||||||
        "yes": "Sim",
 | 
					        "yes": "Sim",
 | 
				
			||||||
        "show_more": "Mostrar mais",
 | 
					        "show_more": "Mostrar mais",
 | 
				
			||||||
        "export_to_json": "Exportar para JSON",
 | 
					        "export_to_json": "Exportar para JSON",
 | 
				
			||||||
        "donations": "Doações",
 | 
					        "donations": "Doações de desenvolvimento",
 | 
				
			||||||
        "minimize_recommendations": "Recolher recomendações",
 | 
					        "minimize_recommendations": "Recolher recomendações",
 | 
				
			||||||
        "loading": "Carregando...",
 | 
					        "loading": "Carregando...",
 | 
				
			||||||
        "hide_replies": "Esconder respostas",
 | 
					        "hide_replies": "Esconder respostas",
 | 
				
			||||||
| 
						 | 
					@ -48,8 +48,8 @@
 | 
				
			||||||
        "delete_playlist": "Excluir Playlist",
 | 
					        "delete_playlist": "Excluir Playlist",
 | 
				
			||||||
        "select_playlist": "Selecionar uma Playlist",
 | 
					        "select_playlist": "Selecionar uma Playlist",
 | 
				
			||||||
        "add_to_playlist": "Adicionar à playlist",
 | 
					        "add_to_playlist": "Adicionar à playlist",
 | 
				
			||||||
        "delete_playlist_confirm": "Tem certeza que deseja excluir esta playlist?",
 | 
					        "delete_playlist_confirm": "Excluir esta playlist?",
 | 
				
			||||||
        "delete_playlist_video_confirm": "Tem certeza que gostaria de remover este vídeo desta playlist?",
 | 
					        "delete_playlist_video_confirm": "Remover vídeo da playlist?",
 | 
				
			||||||
        "please_select_playlist": "Por favor, selecione uma playlist",
 | 
					        "please_select_playlist": "Por favor, selecione uma playlist",
 | 
				
			||||||
        "remove_from_playlist": "Remover da playlist",
 | 
					        "remove_from_playlist": "Remover da playlist",
 | 
				
			||||||
        "view_ssl_score": "Ver Pontuação SSL",
 | 
					        "view_ssl_score": "Ver Pontuação SSL",
 | 
				
			||||||
| 
						 | 
					@ -66,7 +66,39 @@
 | 
				
			||||||
        "auto_play_next_video": "Autoreproduzir vídeo seguinte",
 | 
					        "auto_play_next_video": "Autoreproduzir vídeo seguinte",
 | 
				
			||||||
        "filter": "Filtro",
 | 
					        "filter": "Filtro",
 | 
				
			||||||
        "store_watch_history": "Salvar Histórico de Exibição",
 | 
					        "store_watch_history": "Salvar Histórico de Exibição",
 | 
				
			||||||
        "show_recommendations": "Mostrar recomendações"
 | 
					        "show_recommendations": "Mostrar recomendações",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Minimizar Comentários por padrão",
 | 
				
			||||||
 | 
					        "minimize_comments": "Minimizar Comentários",
 | 
				
			||||||
 | 
					        "different_auth_instance": "Use uma instância diferente para autenticação",
 | 
				
			||||||
 | 
					        "delete_account": "Deletar Conta",
 | 
				
			||||||
 | 
					        "invalidate_session": "Sair de todos os dispositivos",
 | 
				
			||||||
 | 
					        "clone_playlist": "Clonar Playlist",
 | 
				
			||||||
 | 
					        "backup_preferences": "Fazer backup das preferências",
 | 
				
			||||||
 | 
					        "logout": "Sair deste dispositivo",
 | 
				
			||||||
 | 
					        "copy_link": "Copiar link",
 | 
				
			||||||
 | 
					        "store_search_history": "Armazenar Histórico de Pesquisa",
 | 
				
			||||||
 | 
					        "hide_watched": "Ocultar vídeos assistidos no feed",
 | 
				
			||||||
 | 
					        "status_page": "Estado",
 | 
				
			||||||
 | 
					        "source_code": "Código fonte",
 | 
				
			||||||
 | 
					        "instance_donations": "Doações de instâncias",
 | 
				
			||||||
 | 
					        "instance_auth_selection": "Seleção de iIstância de Autenticação",
 | 
				
			||||||
 | 
					        "clone_playlist_success": "Clonada com sucesso!",
 | 
				
			||||||
 | 
					        "download_as_txt": "Baixar como .txt",
 | 
				
			||||||
 | 
					        "restore_preferences": "Restaurar preferências",
 | 
				
			||||||
 | 
					        "back_to_home": "Voltar ao início",
 | 
				
			||||||
 | 
					        "share": "Compartilhar",
 | 
				
			||||||
 | 
					        "rename_playlist": "Renomear playlist",
 | 
				
			||||||
 | 
					        "new_playlist_name": "Novo nome da playlist",
 | 
				
			||||||
 | 
					        "with_timecode": "Compartilhar com código de tempo",
 | 
				
			||||||
 | 
					        "piped_link": "Link do Piped",
 | 
				
			||||||
 | 
					        "follow_link": "Siguir link",
 | 
				
			||||||
 | 
					        "time_code": "Código de tempo (em segundos)",
 | 
				
			||||||
 | 
					        "show_chapters": "Capítulos",
 | 
				
			||||||
 | 
					        "confirm_reset_preferences": "Tem certeza de que deseja redefinir suas preferências?",
 | 
				
			||||||
 | 
					        "reset_preferences": "Redefinir preferências",
 | 
				
			||||||
 | 
					        "documentation": "Documentação",
 | 
				
			||||||
 | 
					        "reply_count": "{count} respostas",
 | 
				
			||||||
 | 
					        "minimize_recommendations_default": "Minimizar Recomendações por padrão"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "titles": {
 | 
					    "titles": {
 | 
				
			||||||
        "history": "Histórico",
 | 
					        "history": "Histórico",
 | 
				
			||||||
| 
						 | 
					@ -76,13 +108,19 @@
 | 
				
			||||||
        "login": "Entrar",
 | 
					        "login": "Entrar",
 | 
				
			||||||
        "playlists": "Playlists",
 | 
					        "playlists": "Playlists",
 | 
				
			||||||
        "feed": "Feed",
 | 
					        "feed": "Feed",
 | 
				
			||||||
        "subscriptions": "Inscrições"
 | 
					        "subscriptions": "Inscrições",
 | 
				
			||||||
 | 
					        "instance": "Instância",
 | 
				
			||||||
 | 
					        "player": "Player",
 | 
				
			||||||
 | 
					        "account": "Conta"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "Assistir no"
 | 
					        "watch_on": "Assistir no"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "comment": {
 | 
					    "comment": {
 | 
				
			||||||
        "pinned_by": "Fixado por {author}"
 | 
					        "pinned_by": "Fixado por {author}",
 | 
				
			||||||
 | 
					        "user_disabled": "Os comentários estão desativados nas configurações.",
 | 
				
			||||||
 | 
					        "disabled": "Os comentários são desativados pelo remetente.",
 | 
				
			||||||
 | 
					        "loading": "Carregando comentários..."
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "preferences": {
 | 
					    "preferences": {
 | 
				
			||||||
        "registered_users": "Usuários cadastrados",
 | 
					        "registered_users": "Usuários cadastrados",
 | 
				
			||||||
| 
						 | 
					@ -104,7 +142,8 @@
 | 
				
			||||||
        "live": "{0} Ao vivo",
 | 
					        "live": "{0} Ao vivo",
 | 
				
			||||||
        "watched": "Assistido",
 | 
					        "watched": "Assistido",
 | 
				
			||||||
        "ratings_disabled": "Avaliações desabilitadas",
 | 
					        "ratings_disabled": "Avaliações desabilitadas",
 | 
				
			||||||
        "sponsor_segments": "Segmentos de patrocinadores"
 | 
					        "sponsor_segments": "Segmentos de patrocinadores",
 | 
				
			||||||
 | 
					        "shorts": "Shorts"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "search": {
 | 
					    "search": {
 | 
				
			||||||
        "did_you_mean": "Você quis dizer: {0}?",
 | 
					        "did_you_mean": "Você quis dizer: {0}?",
 | 
				
			||||||
| 
						 | 
					@ -116,5 +155,14 @@
 | 
				
			||||||
        "music_albums": "YT Music: Álbuns",
 | 
					        "music_albums": "YT Music: Álbuns",
 | 
				
			||||||
        "music_playlists": "YT Music: Playlists",
 | 
					        "music_playlists": "YT Music: Playlists",
 | 
				
			||||||
        "all": "YouTube: Tudo"
 | 
					        "all": "YouTube: Tudo"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "info": {
 | 
				
			||||||
 | 
					        "copied": "Copiado!",
 | 
				
			||||||
 | 
					        "cannot_copy": "Não foi possível copiar!",
 | 
				
			||||||
 | 
					        "preferences_note": "Nota: as preferências são salvas no armazenamento local do seu navegador. A exclusão dos dados do seu navegador irá redefini-los.",
 | 
				
			||||||
 | 
					        "page_not_found": "página não encontrada"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "subscriptions": {
 | 
				
			||||||
 | 
					        "subscribed_channels_count": "Inscrito em: {0}"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,7 +111,10 @@
 | 
				
			||||||
        "status_page": "Статус",
 | 
					        "status_page": "Статус",
 | 
				
			||||||
        "source_code": "Исходный код",
 | 
					        "source_code": "Исходный код",
 | 
				
			||||||
        "documentation": "Пожертвования сервера",
 | 
					        "documentation": "Пожертвования сервера",
 | 
				
			||||||
        "instance_donations": "Пожертвования сервера"
 | 
					        "instance_donations": "Пожертвования сервера",
 | 
				
			||||||
 | 
					        "reply_count": "{count} ответов",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Сворачивать комментарии по умолчанию",
 | 
				
			||||||
 | 
					        "minimize_comments": "Свернуть комментарии"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "comment": {
 | 
					    "comment": {
 | 
				
			||||||
        "pinned_by": "Прикреплено пользователем {author}",
 | 
					        "pinned_by": "Прикреплено пользователем {author}",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,7 +105,10 @@
 | 
				
			||||||
        "follow_link": "Прати везу",
 | 
					        "follow_link": "Прати везу",
 | 
				
			||||||
        "copy_link": "Копирај везу",
 | 
					        "copy_link": "Копирај везу",
 | 
				
			||||||
        "time_code": "Временски код (у секундама)",
 | 
					        "time_code": "Временски код (у секундама)",
 | 
				
			||||||
        "new_playlist_name": "Ново име плејлисте"
 | 
					        "new_playlist_name": "Ново име плејлисте",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Подразумевано умањи коментаре",
 | 
				
			||||||
 | 
					        "minimize_comments": "Умањи коментаре",
 | 
				
			||||||
 | 
					        "reply_count": "{count} одговора"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "preferences": {
 | 
					    "preferences": {
 | 
				
			||||||
        "instance_locations": "Локација инстанце",
 | 
					        "instance_locations": "Локација инстанце",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -95,7 +95,10 @@
 | 
				
			||||||
        "source_code": "Kaynak kodu",
 | 
					        "source_code": "Kaynak kodu",
 | 
				
			||||||
        "documentation": "Belgelendirme",
 | 
					        "documentation": "Belgelendirme",
 | 
				
			||||||
        "instance_donations": "Örnek bağışları",
 | 
					        "instance_donations": "Örnek bağışları",
 | 
				
			||||||
        "status_page": "Durum"
 | 
					        "status_page": "Durum",
 | 
				
			||||||
 | 
					        "reply_count": "{count} yanıt",
 | 
				
			||||||
 | 
					        "minimize_comments": "Yorumları Küçült",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "Yorumları Öntanımlı Olarak Küçült"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "player": {
 | 
					    "player": {
 | 
				
			||||||
        "watch_on": "{0} üzerinde izle"
 | 
					        "watch_on": "{0} üzerinde izle"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -95,7 +95,10 @@
 | 
				
			||||||
        "status_page": "状态",
 | 
					        "status_page": "状态",
 | 
				
			||||||
        "source_code": "源代码",
 | 
					        "source_code": "源代码",
 | 
				
			||||||
        "instance_donations": "实例捐赠",
 | 
					        "instance_donations": "实例捐赠",
 | 
				
			||||||
        "documentation": "文档"
 | 
					        "documentation": "文档",
 | 
				
			||||||
 | 
					        "reply_count": "{count} 条回复",
 | 
				
			||||||
 | 
					        "minimize_comments": "最小化评论",
 | 
				
			||||||
 | 
					        "minimize_comments_default": "默认最小化评论"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "video": {
 | 
					    "video": {
 | 
				
			||||||
        "sponsor_segments": "赞助商部分",
 | 
					        "sponsor_segments": "赞助商部分",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								src/main.js
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								src/main.js
									
										
									
									
									
								
							| 
						 | 
					@ -94,20 +94,8 @@ const mixin = {
 | 
				
			||||||
            return str;
 | 
					            return str;
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        numberFormat(num) {
 | 
					        numberFormat(num) {
 | 
				
			||||||
            const digits = 2;
 | 
					            const formatter = Intl.NumberFormat(undefined, { notation: "compact" });
 | 
				
			||||||
            const si = [
 | 
					            return formatter.format(num);
 | 
				
			||||||
                { value: 1, symbol: "" },
 | 
					 | 
				
			||||||
                { value: 1e3, symbol: "k" },
 | 
					 | 
				
			||||||
                { value: 1e6, symbol: "M" },
 | 
					 | 
				
			||||||
                { value: 1e9, symbol: "B" },
 | 
					 | 
				
			||||||
            ];
 | 
					 | 
				
			||||||
            const rx = /\.0+$|(\.[0-9]*[1-9])0+$/;
 | 
					 | 
				
			||||||
            for (var i = si.length - 1; i > 0; i--) {
 | 
					 | 
				
			||||||
                if (num >= si[i].value) {
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return (num / si[i].value).toFixed(digits).replace(rx, "$1") + si[i].symbol;
 | 
					 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        addCommas(num) {
 | 
					        addCommas(num) {
 | 
				
			||||||
            num = parseInt(num);
 | 
					            num = parseInt(num);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										456
									
								
								yarn.lock
									
										
									
									
									
								
							
							
						
						
									
										456
									
								
								yarn.lock
									
										
									
									
									
								
							| 
						 | 
					@ -892,10 +892,10 @@
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    regenerator-runtime "^0.13.4"
 | 
					    regenerator-runtime "^0.13.4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@babel/standalone@^7.19.0":
 | 
					"@babel/standalone@^7.19.6":
 | 
				
			||||||
  version "7.19.5"
 | 
					  version "7.19.6"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.19.5.tgz#9326980f3f0b13cfb6303906716a4a1ea2d670a2"
 | 
					  resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.19.6.tgz#88674a287d3875a635b62afb066ebf162cedf13c"
 | 
				
			||||||
  integrity sha512-H2eXpo1ZfTZhBwsCbfSKHrjTb934laSas14hdjULLSKmLxU4B7kazQKm3mjpDuH/HyPmRq1cbrGL7223M7EDFw==
 | 
					  integrity sha512-SUOBMtHlxGpXf14X85c1vtHyxYgIODBUdclntETSEGkgI274MNPBUkOVWpvFmRhMuLokK3CL07qJoK2e5CIToA==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@babel/template@^7.16.7":
 | 
					"@babel/template@^7.16.7":
 | 
				
			||||||
  version "7.16.7"
 | 
					  version "7.16.7"
 | 
				
			||||||
| 
						 | 
					@ -986,10 +986,10 @@
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.1.tgz#ced35cefc52b364f7db973f2fe9f50c3dd160715"
 | 
					  resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.1.tgz#ced35cefc52b364f7db973f2fe9f50c3dd160715"
 | 
				
			||||||
  integrity sha512-CdXZJoCS+aEPec26ZP7hWWU3SaJlQPZSCGdgpQ2qGl2HUmtUUNrI3zC4XWdn1JUmh3t5OuDeRG1qB4eGRNSD4A==
 | 
					  integrity sha512-CdXZJoCS+aEPec26ZP7hWWU3SaJlQPZSCGdgpQ2qGl2HUmtUUNrI3zC4XWdn1JUmh3t5OuDeRG1qB4eGRNSD4A==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@humanwhocodes/config-array@^0.10.5":
 | 
					"@humanwhocodes/config-array@^0.11.6":
 | 
				
			||||||
  version "0.10.7"
 | 
					  version "0.11.6"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc"
 | 
					  resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.6.tgz#6a51d603a3aaf8d4cf45b42b3f2ac9318a4adc4b"
 | 
				
			||||||
  integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==
 | 
					  integrity sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@humanwhocodes/object-schema" "^1.2.1"
 | 
					    "@humanwhocodes/object-schema" "^1.2.1"
 | 
				
			||||||
    debug "^4.1.1"
 | 
					    debug "^4.1.1"
 | 
				
			||||||
| 
						 | 
					@ -1005,10 +1005,10 @@
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
 | 
					  resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
 | 
				
			||||||
  integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
 | 
					  integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@iconify/json@2.1.124":
 | 
					"@iconify/json@2.1.132":
 | 
				
			||||||
  version "2.1.124"
 | 
					  version "2.1.132"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@iconify/json/-/json-2.1.124.tgz#41b863ffd0c791217cbe29f43daadcef35a825aa"
 | 
					  resolved "https://registry.yarnpkg.com/@iconify/json/-/json-2.1.132.tgz#a78f23fb871164580a48cb99930babe6b90977d7"
 | 
				
			||||||
  integrity sha512-b8oQpGFiPOli65TB1deM5Pv4OGYIsN4T3+QBek85h9t+Ckae5lBg0aUVYm6lpC6FJ3iVlKU7DuPWXsqYVZdHyQ==
 | 
					  integrity sha512-b2ddD44ufErLm18Aku0WNxKzFz1Rvtcb4rOoBtzOyQcttZUawQvE8e/wBHMLhaMRlEn0p4YlVOl6jjj0xmDYJg==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@iconify/types" "*"
 | 
					    "@iconify/types" "*"
 | 
				
			||||||
    pathe "^0.3.0"
 | 
					    pathe "^0.3.0"
 | 
				
			||||||
| 
						 | 
					@ -1173,7 +1173,7 @@
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
 | 
					  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
 | 
				
			||||||
  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
 | 
					  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@nodelib/fs.walk@^1.2.3":
 | 
					"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
 | 
				
			||||||
  version "1.2.8"
 | 
					  version "1.2.8"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
 | 
					  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
 | 
				
			||||||
  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
 | 
					  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
 | 
				
			||||||
| 
						 | 
					@ -1295,25 +1295,25 @@
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756"
 | 
					  resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756"
 | 
				
			||||||
  integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==
 | 
					  integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/astro@0.45.30":
 | 
					"@unocss/astro@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/astro/-/astro-0.45.30.tgz#051155fef3980c06439c5a180979b3af08d988f1"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/astro/-/astro-0.46.3.tgz#94626e4afb53e581da9414df78afa33e67f45316"
 | 
				
			||||||
  integrity sha512-eF5FxSasaKveOAIFVJlHD0dlvKDmL7oBCFQihr6XR8RhbkkMI8mO0lJB0i6QK3PtJY7F6ceCSMe+bAht6Q067w==
 | 
					  integrity sha512-3Of0VLh5TVWc5MXzAF+Ik/9XBDkaaUcbxKquAI6hMSehtcnGOpmmNLZNjOaBdLuFDFP4RJGZ9Kkp/MuSLPuHDQ==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    "@unocss/reset" "0.45.30"
 | 
					    "@unocss/reset" "0.46.3"
 | 
				
			||||||
    "@unocss/vite" "0.45.30"
 | 
					    "@unocss/vite" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/cli@0.45.30":
 | 
					"@unocss/cli@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/cli/-/cli-0.45.30.tgz#5beaed0e7fe509af0eb6aaa7faaa8f2a1521be5e"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/cli/-/cli-0.46.3.tgz#69f29f4c2a666e77d16cba1d447a19fa42883673"
 | 
				
			||||||
  integrity sha512-QmaMx7w5Nc4R7Nm/oB7hb9xwQeZqjNaUpFejqLP0b8gKSdBxecAOw2aknOV+NH8YvKwsqLvTOoRzmpVmbI1Xqg==
 | 
					  integrity sha512-sZju0nWDRMX4mNA5fryFj3EyC1vUruEsin6rpqKoW7khRCADV1edqsr7azIQRsDDfOAUld22BrJr1cBssKWn3Q==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@ampproject/remapping" "^2.2.0"
 | 
					    "@ampproject/remapping" "^2.2.0"
 | 
				
			||||||
    "@rollup/pluginutils" "^5.0.1"
 | 
					    "@rollup/pluginutils" "^5.0.1"
 | 
				
			||||||
    "@unocss/config" "0.45.30"
 | 
					    "@unocss/config" "0.46.3"
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-uno" "0.45.30"
 | 
					    "@unocss/preset-uno" "0.46.3"
 | 
				
			||||||
    cac "^6.7.14"
 | 
					    cac "^6.7.14"
 | 
				
			||||||
    chokidar "^3.5.3"
 | 
					    chokidar "^3.5.3"
 | 
				
			||||||
    colorette "^2.0.19"
 | 
					    colorette "^2.0.19"
 | 
				
			||||||
| 
						 | 
					@ -1323,157 +1323,157 @@
 | 
				
			||||||
    pathe "^0.3.9"
 | 
					    pathe "^0.3.9"
 | 
				
			||||||
    perfect-debounce "^0.1.3"
 | 
					    perfect-debounce "^0.1.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/config@0.45.30":
 | 
					"@unocss/config@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/config/-/config-0.45.30.tgz#2ce1280bb95b2fe957ee2779003b80958bf86713"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/config/-/config-0.46.3.tgz#64f5b528b0ca1af530a0ac33660f68e68786dbd7"
 | 
				
			||||||
  integrity sha512-3wtQ9s94ljv0EhEgAwAQGU4p2Bkxq+A27HyTUv+QIzenDCATF70NEDIaw4lRGmWanjTjahKoQzbaRAPMgu/gVQ==
 | 
					  integrity sha512-eecCWGeKMGVa2by0Q8xDugQLWwpA1BYP3ZORx/LYJHUDhh3aGHgf5GA6EHc97ITg3p5dK3RZSZMZnxjy5aunpg==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    unconfig "^0.3.7"
 | 
					    unconfig "^0.3.7"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/core@0.45.30":
 | 
					"@unocss/core@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/core/-/core-0.45.30.tgz#e83f2d06b550ca9d2e5713e6eba887476d02ca75"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/core/-/core-0.46.3.tgz#4ddae823bbd9f7f1bc8b7f62c92b7fb157254263"
 | 
				
			||||||
  integrity sha512-KjEdE8F5AZ+rJ4M07CttZd79h8FMqiCy6ldNS8xyd3qX8wy+BrE9n5tSV8KmbuORkNBWYG5yrkQvo7RQmASDzA==
 | 
					  integrity sha512-Wcyuw9KlFgxKz/QDJ+bNnQyI0h+LAWOpZWTkRQiDh1OxzLzYrBR3ljhtZe0tymKQRzQqUSpV5iBWOxJ8raJW1w==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/inspector@0.45.30":
 | 
					"@unocss/inspector@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/inspector/-/inspector-0.45.30.tgz#5c6d28f91c4a66aea81cc010bfdbe5932516baa0"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/inspector/-/inspector-0.46.3.tgz#9e6f36cb67d314bca4e4fb29722b4b5101f29ab2"
 | 
				
			||||||
  integrity sha512-kcI+jN2h6xRBzQUdc3HfOCAbvi0gFVjPONJBDU+NeDnDXAp/TshK/Z3K/2JzWqSR9HWcYA/Bswk8bMRBa7lkmQ==
 | 
					  integrity sha512-WVcDTzORo7dZO7clEwzC19ENr7aLM2CsGsh75ofYiyZs2iYHvgnuZRspKv7SeXSjf4b49O0Xa9sDov7neTlMfA==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    gzip-size "^6.0.0"
 | 
					    gzip-size "^6.0.0"
 | 
				
			||||||
    sirv "^2.0.2"
 | 
					    sirv "^2.0.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/preset-attributify@0.45.30":
 | 
					"@unocss/preset-attributify@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/preset-attributify/-/preset-attributify-0.45.30.tgz#e521468b27562f75a6ed02ab9fb3588bdc0e1c36"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/preset-attributify/-/preset-attributify-0.46.3.tgz#6bbc23867264a3aadf58496b8fc539e7a1e32992"
 | 
				
			||||||
  integrity sha512-ISRBrdWLUJ1T+1QaQj9E9aybhY0VgteA4T1ezJNIDGK86o1K+9pAoejpINYTeXI+f6nbqVVKv7qh2z7vRxaMzw==
 | 
					  integrity sha512-vOXHFQlSZU5QLchiGKKdwz/dDS7zH6xZlxEcwdWHxzpl+kd1RfryRFa0N7MiS/6i++ko6Whr53pUyb0etafKgw==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/preset-icons@0.45.30":
 | 
					"@unocss/preset-icons@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/preset-icons/-/preset-icons-0.45.30.tgz#1ae71cc141a61319e6a3ee5e6b7c34da524bbb92"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/preset-icons/-/preset-icons-0.46.3.tgz#01827b8c30e6df58f8a50b4bc8658ec7175751b7"
 | 
				
			||||||
  integrity sha512-yPyel0k/gchuJyuVPzELuH4UZDpZ6VG34fIdH3QDpjVnIXZCeubUX2kdNpk+2Ojjy10DcU4TAnDrXqVYz3s+MA==
 | 
					  integrity sha512-n0i4LQzj7nKZ/2MF1OH5srjDbqMec3EJZdAKIFKLohuBCpEzddRlC2rZzMdP6KCYyuxg4eJ0EIEuXgX7tWHu+Q==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@iconify/utils" "^2.0.1"
 | 
					    "@iconify/utils" "^2.0.1"
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    ohmyfetch "^0.4.20"
 | 
					    ohmyfetch "^0.4.20"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/preset-mini@0.45.30":
 | 
					"@unocss/preset-mini@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/preset-mini/-/preset-mini-0.45.30.tgz#09f6b431b78f3b46bd400750761531515309edb6"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/preset-mini/-/preset-mini-0.46.3.tgz#5cf8e724bac0c08d459a868337166b2fa89657c9"
 | 
				
			||||||
  integrity sha512-gWwmNiahPDu3zFDauFLgdpAS+MEjuDXlL4wGi9YgSiZGqzDLl+QnvYagktNb0myIlamwt//kUtxlUF/MXKe6MQ==
 | 
					  integrity sha512-Z9pQWYi12M+Pu/3F9OYTefcJpcZkdLAtQ7ibg1PAkL06Ua24qH8KRBhTALQr9enn4yTqpCt4OsK3KtMGp84dhw==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/preset-tagify@0.45.30":
 | 
					"@unocss/preset-tagify@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/preset-tagify/-/preset-tagify-0.45.30.tgz#aa7a89e061e10ba8b47221a9f9c32c88a4aa15c0"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/preset-tagify/-/preset-tagify-0.46.3.tgz#7f022759361dde59125b959fbdd5634ae1e50d5b"
 | 
				
			||||||
  integrity sha512-CxENmffmb24PHiZIVtK6aDzfKcJiF9ydZIgjGWxfNZlgxDwEmT4Stkq9ncDLo67XR5dljS0HOmNWB7BON1Uu/g==
 | 
					  integrity sha512-u8YJEPHM0Mxd8kWaM2+IfRKBRk3KxCghOVzYo2+/1ez+c+A1LZIduLwjmN/Tb7BxR/awNfOmC59kxxx0fIT1PQ==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/preset-typography@0.45.30":
 | 
					"@unocss/preset-typography@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/preset-typography/-/preset-typography-0.45.30.tgz#377c87e847eb00d51675a3d7dd365dc731eaebc6"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/preset-typography/-/preset-typography-0.46.3.tgz#09b55fc155f87a6d3e36e976525432b2bebcae38"
 | 
				
			||||||
  integrity sha512-UF5DPlnIrXZBW5d2Or6b25iV1MB9gWv1M5SFkW7iUMf7jwewhSejdVuD/tnWfpYXyX9owUFAxQfIODavgJln3Q==
 | 
					  integrity sha512-o9a1QMRlCL7/9wR2FwL+ncb4ITh8nCQUCQk+yhvP8/89afn+jmpLajccDX03THcR9s3rByp1/TnuyRrJoUer+A==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/preset-uno@0.45.30":
 | 
					"@unocss/preset-uno@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/preset-uno/-/preset-uno-0.45.30.tgz#33d947c9d3747cc2601908698bf861641face736"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/preset-uno/-/preset-uno-0.46.3.tgz#43a9072e2820aa9e38f34e13df7f4a2af02a8a14"
 | 
				
			||||||
  integrity sha512-dQ//s9VJo7Oj3gy6kkbfXUYVOSr4tAGmhcPzKNO6KyBNH75tMUf20N41bVReuLUpHp3W7j60XxV16kip6pmlZQ==
 | 
					  integrity sha512-MxRDodapsIV31z5/M7yhd/rxjtj7k8Z3kZROTSfTuRma9oD4e3Z6Q3GGUcn+dkgJmYDLTW61fbQf+ntOMlVcjg==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-mini" "0.45.30"
 | 
					    "@unocss/preset-mini" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-wind" "0.45.30"
 | 
					    "@unocss/preset-wind" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/preset-web-fonts@0.45.30":
 | 
					"@unocss/preset-web-fonts@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/preset-web-fonts/-/preset-web-fonts-0.45.30.tgz#e59bdaa5bba367a9b112116482a56a9654fadc39"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/preset-web-fonts/-/preset-web-fonts-0.46.3.tgz#02d218eeb82af29c1e100ed562fcf217ec486565"
 | 
				
			||||||
  integrity sha512-1biz2YDEkTbAmtaUZUCcA95PILXpCAyWoCXDNBMVp7fgeDr/AoiKgeDbgBb4wLKSPGwWAWUQWTT3HdAXoOjMcA==
 | 
					  integrity sha512-sY3pGJ4CUVOiIhX4foq5t5nd7NIcSq1Xa6jUS4Bf/pt0Nn9fyP5uRUgwXT0EXler2uF+Xq8JS9iNUA/dwmD9kg==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    ohmyfetch "^0.4.20"
 | 
					    ohmyfetch "^0.4.20"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/preset-wind@0.45.30":
 | 
					"@unocss/preset-wind@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/preset-wind/-/preset-wind-0.45.30.tgz#e85607422e029aae023fa631faa7534bf12253f6"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/preset-wind/-/preset-wind-0.46.3.tgz#a9d64e17c905d2ea422d0b657b58e29d245aba21"
 | 
				
			||||||
  integrity sha512-U7SHvUR7i7GygyIS+3H0Rx3UZnlwL1cRKfJojGyddqwuktzFtd69pnaZ5p0q59Z7O9C9yH1SoXjaskTHR5JAEg==
 | 
					  integrity sha512-qI9Ta4NIL2SBJ3UlBJAB72FBAe2czOkX0EvlsY+9DxlB2l1orBJy2n5EksbtAu0dk+RSxlk2E1zfXfV02ngqmA==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-mini" "0.45.30"
 | 
					    "@unocss/preset-mini" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/reset@0.45.30":
 | 
					"@unocss/reset@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/reset/-/reset-0.45.30.tgz#71492bb052e4fbb3815ca6887b96d08313ccd56c"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/reset/-/reset-0.46.3.tgz#71086aed1fac7292f4a8c9043730a4bad9946e76"
 | 
				
			||||||
  integrity sha512-m6+M3E2cTPhX+2aKocRfDqQt7ebEtjJHH8sVYpX8xJoN0vOqjSNmUYc6AIkwUYljx4QbEC3thcQSbqel82RbXQ==
 | 
					  integrity sha512-Jb9zx3h5IPVjSAyW+cLq+/cyeTcExtRaK+Jd7Zjcw6LhgeY5uFeEAQPoFVLCX8az7BXO6FQD3cAmWvl/yogAOA==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/scope@0.45.30":
 | 
					"@unocss/scope@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/scope/-/scope-0.45.30.tgz#1b7123946b6935072c85a3b527bdc133604a713f"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/scope/-/scope-0.46.3.tgz#ad0490565712fff8a009b21482e97cff882d4b15"
 | 
				
			||||||
  integrity sha512-SBxjMNLGHiZA32hGTGZL1wpPfzegCd3WB8LdrZwAgo85EbMYCq8UEL6YhScjL3+FIwhcZQutenasLoRNcbFHqw==
 | 
					  integrity sha512-oL8dC7vuy3Z76JTmrrJGMdNaojTPSwNnspaNQrGXydqLj/jwKAsLN2GeJi0FHvsnC1vicHjXhBRJ1uNQvwm/bQ==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/transformer-attributify-jsx@0.45.30":
 | 
					"@unocss/transformer-attributify-jsx@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.45.30.tgz#c142d290ce820844b0ffb3edcc392a90633eb6a3"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.46.3.tgz#f0c76e9572db10057d2eb83020449c10be89fa00"
 | 
				
			||||||
  integrity sha512-G14YMvA72NZ6eQslyVnflPoAJHvi5IHu9cVoa6n1SwNUj7h0u+DGBmQJvry3XHLx/5zbAgiuJc6flijHUx/ZNA==
 | 
					  integrity sha512-VW0gNAtSGkWz4LpviFVnOuGHJkhzPdj05OFVwYBBtPDI52rnx0pg0Nfu6epYwK9EfcdHLsmtJ3Bz3Jr1ldWAfg==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/transformer-compile-class@0.45.30":
 | 
					"@unocss/transformer-compile-class@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/transformer-compile-class/-/transformer-compile-class-0.45.30.tgz#1cb91db577a5952e076c17443151fc892813cfc5"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/transformer-compile-class/-/transformer-compile-class-0.46.3.tgz#65d5eca6bdadd1f3cf91bfd84fc1432c32c6872a"
 | 
				
			||||||
  integrity sha512-8GGTYsWlXDZo7fpWqdxP9uFHS83/2RW6R2A+weXY0jC7z4ECUrfyLEYlfxRN9SkGImFIoHMH4Y7BILmeeVPdEg==
 | 
					  integrity sha512-TFtfSAxjX5x1mbQT3EqbmW2X9lDgKUEp134sdX44SO09VA5UZDpg/i+iI5adMr8h44c76S5HOqoLGEKgirT51w==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/transformer-directives@0.45.30":
 | 
					"@unocss/transformer-directives@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/transformer-directives/-/transformer-directives-0.45.30.tgz#baad92aa212ecee70ef1d8a5627131659338da23"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/transformer-directives/-/transformer-directives-0.46.3.tgz#857e9bf6d98ad7191db65ca66d1a7a45dc2bd931"
 | 
				
			||||||
  integrity sha512-4WTmKsa9sELHwMNc6l2X203asx7xldEX4PhAdEc13yKQk25Sqp/7dwcW9DwXwK82vHqvr5iPxOE/2Z8dHkL8xQ==
 | 
					  integrity sha512-9h5HZ7JJco6Hk6M6Gp3e+n5+s9reMRv6zPWeoTG7Y3gzHDbYDjQgaoCi7+6fPQ9642zN2WsAIsIm7r1gVpYveQ==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    css-tree "^2.2.1"
 | 
					    css-tree "^2.2.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/transformer-variant-group@0.45.30":
 | 
					"@unocss/transformer-variant-group@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/transformer-variant-group/-/transformer-variant-group-0.45.30.tgz#bad7ca23ffebc87cda922de2045ee25521484e85"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/transformer-variant-group/-/transformer-variant-group-0.46.3.tgz#cc0ffd5c5b41e3c02102e7c8a68883ebbc4fdfaf"
 | 
				
			||||||
  integrity sha512-c2t7Qy9KFgjTYIysMTkvFwH/sYpV6OJYZsaMUfSFT2rA92Jr3Wdoy8Z+oAE2TgurMB/I7OJm18cSYC8roIzWxA==
 | 
					  integrity sha512-OdOREPMEo0D2tKaJa53CYoriKUIhjNCaBwr/0XGOamDwfYclt3+YyZ92AhpQIfqrdNbzlaBArjWGXMLjGLI1OA==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@unocss/vite@0.45.30":
 | 
					"@unocss/vite@0.46.3":
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@unocss/vite/-/vite-0.45.30.tgz#e767f8471b49cf71eec87c82897d71630e32d1b4"
 | 
					  resolved "https://registry.yarnpkg.com/@unocss/vite/-/vite-0.46.3.tgz#b66af4305f2dda3bb2f2dcfc0c88636a1bb0cfb0"
 | 
				
			||||||
  integrity sha512-4yx3W/SicS1ovpYdwbRQEGSdLZKxM76T5R0bGR9VRp6WcMoExY3Ph50LRCq1PIHT2L/GARSpJ/gGOW4hJ9lMYg==
 | 
					  integrity sha512-LCq3olCaRTheit6s5oE6x9/BlODpdG5K5CJ44GP7UZei3SuHOAKkbHNq7tanmMXc1jvIUre8HOeIKhARcA5Bwg==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@ampproject/remapping" "^2.2.0"
 | 
					    "@ampproject/remapping" "^2.2.0"
 | 
				
			||||||
    "@rollup/pluginutils" "^5.0.1"
 | 
					    "@rollup/pluginutils" "^5.0.1"
 | 
				
			||||||
    "@unocss/config" "0.45.30"
 | 
					    "@unocss/config" "0.46.3"
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    "@unocss/inspector" "0.45.30"
 | 
					    "@unocss/inspector" "0.46.3"
 | 
				
			||||||
    "@unocss/scope" "0.45.30"
 | 
					    "@unocss/scope" "0.46.3"
 | 
				
			||||||
    "@unocss/transformer-directives" "0.45.30"
 | 
					    "@unocss/transformer-directives" "0.46.3"
 | 
				
			||||||
    magic-string "^0.26.7"
 | 
					    magic-string "^0.26.7"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@vitejs/plugin-legacy@2.2.0":
 | 
					"@vitejs/plugin-legacy@2.3.0":
 | 
				
			||||||
  version "2.2.0"
 | 
					  version "2.3.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-2.2.0.tgz#eb76f43f51c1894cd7ae55ee2cc014b8acc00db0"
 | 
					  resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-2.3.0.tgz#43565bcaf0dba53c70b26a1f67797b7c09f9d04e"
 | 
				
			||||||
  integrity sha512-xkSXZl2LNk0KKyo5CJknNW84mSlmHIClFzsBuFXkX3yBt+Lr8UO/n4QOg2X7+jvurgBRies9FRn3ZvMem+TmIg==
 | 
					  integrity sha512-Bh62i0gzQvvT8AeAAb78nOnqSYXypkRmQmOTImdPZ39meHR9e2une3AIFmVo4s1SDmcmJ6qj18Sa/lRc/14KaA==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@babel/standalone" "^7.19.0"
 | 
					    "@babel/standalone" "^7.19.6"
 | 
				
			||||||
    core-js "^3.25.1"
 | 
					    core-js "^3.26.0"
 | 
				
			||||||
    magic-string "^0.26.3"
 | 
					    magic-string "^0.26.7"
 | 
				
			||||||
    regenerator-runtime "^0.13.9"
 | 
					    regenerator-runtime "^0.13.10"
 | 
				
			||||||
    systemjs "^6.12.6"
 | 
					    systemjs "^6.13.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@vitejs/plugin-vue@3.1.2":
 | 
					"@vitejs/plugin-vue@3.2.0":
 | 
				
			||||||
  version "3.1.2"
 | 
					  version "3.2.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.1.2.tgz#3cd52114e8871a0b5e7bd7d837469c032e503036"
 | 
					  resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz#a1484089dd85d6528f435743f84cdd0d215bbb54"
 | 
				
			||||||
  integrity sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==
 | 
					  integrity sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@vue/compiler-core@3.2.41":
 | 
					"@vue/compiler-core@3.2.41":
 | 
				
			||||||
  version "3.2.41"
 | 
					  version "3.2.41"
 | 
				
			||||||
| 
						 | 
					@ -1517,11 +1517,16 @@
 | 
				
			||||||
    "@vue/compiler-dom" "3.2.41"
 | 
					    "@vue/compiler-dom" "3.2.41"
 | 
				
			||||||
    "@vue/shared" "3.2.41"
 | 
					    "@vue/shared" "3.2.41"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@vue/devtools-api@^6.1.4", "@vue/devtools-api@^6.2.1":
 | 
					"@vue/devtools-api@^6.2.1":
 | 
				
			||||||
  version "6.2.1"
 | 
					  version "6.2.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz#6f2948ff002ec46df01420dfeff91de16c5b4092"
 | 
					  resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz#6f2948ff002ec46df01420dfeff91de16c5b4092"
 | 
				
			||||||
  integrity sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==
 | 
					  integrity sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@vue/devtools-api@^6.4.5":
 | 
				
			||||||
 | 
					  version "6.4.5"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.4.5.tgz#d54e844c1adbb1e677c81c665ecef1a2b4bb8380"
 | 
				
			||||||
 | 
					  integrity sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@vue/reactivity-transform@3.2.41":
 | 
					"@vue/reactivity-transform@3.2.41":
 | 
				
			||||||
  version "3.2.41"
 | 
					  version "3.2.41"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz#9ff938877600c97f646e09ac1959b5150fb11a0c"
 | 
					  resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz#9ff938877600c97f646e09ac1959b5150fb11a0c"
 | 
				
			||||||
| 
						 | 
					@ -1642,11 +1647,6 @@ argparse@^2.0.1:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
 | 
					  resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
 | 
				
			||||||
  integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
 | 
					  integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
array-union@^2.1.0:
 | 
					 | 
				
			||||||
  version "2.1.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
 | 
					 | 
				
			||||||
  integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
async@^3.2.3:
 | 
					async@^3.2.3:
 | 
				
			||||||
  version "3.2.3"
 | 
					  version "3.2.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
 | 
					  resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
 | 
				
			||||||
| 
						 | 
					@ -1885,10 +1885,10 @@ core-js-compat@^3.20.2, core-js-compat@^3.21.0:
 | 
				
			||||||
    browserslist "^4.19.1"
 | 
					    browserslist "^4.19.1"
 | 
				
			||||||
    semver "7.0.0"
 | 
					    semver "7.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
core-js@^3.25.1:
 | 
					core-js@^3.26.0:
 | 
				
			||||||
  version "3.25.5"
 | 
					  version "3.26.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.5.tgz#e86f651a2ca8a0237a5f064c2fe56cef89646e27"
 | 
					  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.0.tgz#a516db0ed0811be10eac5d94f3b8463d03faccfe"
 | 
				
			||||||
  integrity sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==
 | 
					  integrity sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cross-spawn@^7.0.2, cross-spawn@^7.0.3:
 | 
					cross-spawn@^7.0.2, cross-spawn@^7.0.3:
 | 
				
			||||||
  version "7.0.3"
 | 
					  version "7.0.3"
 | 
				
			||||||
| 
						 | 
					@ -1956,13 +1956,6 @@ destr@^1.1.1:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/destr/-/destr-1.1.1.tgz#910457d10a2f2f247add4ca4fdb4a03adcc49079"
 | 
					  resolved "https://registry.yarnpkg.com/destr/-/destr-1.1.1.tgz#910457d10a2f2f247add4ca4fdb4a03adcc49079"
 | 
				
			||||||
  integrity sha512-QqkneF8LrYmwATMdnuD2MLI3GHQIcBnG6qFC2q9bSH430VTCDAVjcspPmUaKhPGtAtPAftIUFqY1obQYQuwmbg==
 | 
					  integrity sha512-QqkneF8LrYmwATMdnuD2MLI3GHQIcBnG6qFC2q9bSH430VTCDAVjcspPmUaKhPGtAtPAftIUFqY1obQYQuwmbg==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dir-glob@^3.0.1:
 | 
					 | 
				
			||||||
  version "3.0.1"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
 | 
					 | 
				
			||||||
  integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    path-type "^4.0.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
doctrine@^3.0.0:
 | 
					doctrine@^3.0.0:
 | 
				
			||||||
  version "3.0.0"
 | 
					  version "3.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
 | 
					  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
 | 
				
			||||||
| 
						 | 
					@ -2192,10 +2185,10 @@ eslint-plugin-prettier@4.2.1:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    prettier-linter-helpers "^1.0.0"
 | 
					    prettier-linter-helpers "^1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eslint-plugin-vue@9.6.0:
 | 
					eslint-plugin-vue@9.7.0:
 | 
				
			||||||
  version "9.6.0"
 | 
					  version "9.7.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.6.0.tgz#5d1825b93d54595b1ba97106843e1d28cf3bb291"
 | 
					  resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.7.0.tgz#d391b9864f128ea2d1ee4dabeafb5f7c0cea981f"
 | 
				
			||||||
  integrity sha512-zzySkJgVbFCylnG2+9MDF7N+2Rjze2y0bF8GyUNpFOnT8mCMfqqtLDJkHBuYu9N/psW1A6DVbQhPkP92E+qakA==
 | 
					  integrity sha512-DrOO3WZCZEwcLsnd3ohFwqCoipGRSTKTBTnLwdhqAbYZtzWl0o7D+D8ZhlmiZvABKTEl8AFsqH1GHGdybyoQmw==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    eslint-utils "^3.0.0"
 | 
					    eslint-utils "^3.0.0"
 | 
				
			||||||
    natural-compare "^1.4.0"
 | 
					    natural-compare "^1.4.0"
 | 
				
			||||||
| 
						 | 
					@ -2242,14 +2235,15 @@ eslint-visitor-keys@^3.3.0:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
 | 
					  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
 | 
				
			||||||
  integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
 | 
					  integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eslint@8.25.0:
 | 
					eslint@8.26.0:
 | 
				
			||||||
  version "8.25.0"
 | 
					  version "8.26.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.25.0.tgz#00eb962f50962165d0c4ee3327708315eaa8058b"
 | 
					  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.26.0.tgz#2bcc8836e6c424c4ac26a5674a70d44d84f2181d"
 | 
				
			||||||
  integrity sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==
 | 
					  integrity sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@eslint/eslintrc" "^1.3.3"
 | 
					    "@eslint/eslintrc" "^1.3.3"
 | 
				
			||||||
    "@humanwhocodes/config-array" "^0.10.5"
 | 
					    "@humanwhocodes/config-array" "^0.11.6"
 | 
				
			||||||
    "@humanwhocodes/module-importer" "^1.0.1"
 | 
					    "@humanwhocodes/module-importer" "^1.0.1"
 | 
				
			||||||
 | 
					    "@nodelib/fs.walk" "^1.2.8"
 | 
				
			||||||
    ajv "^6.10.0"
 | 
					    ajv "^6.10.0"
 | 
				
			||||||
    chalk "^4.0.0"
 | 
					    chalk "^4.0.0"
 | 
				
			||||||
    cross-spawn "^7.0.2"
 | 
					    cross-spawn "^7.0.2"
 | 
				
			||||||
| 
						 | 
					@ -2265,14 +2259,14 @@ eslint@8.25.0:
 | 
				
			||||||
    fast-deep-equal "^3.1.3"
 | 
					    fast-deep-equal "^3.1.3"
 | 
				
			||||||
    file-entry-cache "^6.0.1"
 | 
					    file-entry-cache "^6.0.1"
 | 
				
			||||||
    find-up "^5.0.0"
 | 
					    find-up "^5.0.0"
 | 
				
			||||||
    glob-parent "^6.0.1"
 | 
					    glob-parent "^6.0.2"
 | 
				
			||||||
    globals "^13.15.0"
 | 
					    globals "^13.15.0"
 | 
				
			||||||
    globby "^11.1.0"
 | 
					 | 
				
			||||||
    grapheme-splitter "^1.0.4"
 | 
					    grapheme-splitter "^1.0.4"
 | 
				
			||||||
    ignore "^5.2.0"
 | 
					    ignore "^5.2.0"
 | 
				
			||||||
    import-fresh "^3.0.0"
 | 
					    import-fresh "^3.0.0"
 | 
				
			||||||
    imurmurhash "^0.1.4"
 | 
					    imurmurhash "^0.1.4"
 | 
				
			||||||
    is-glob "^4.0.0"
 | 
					    is-glob "^4.0.0"
 | 
				
			||||||
 | 
					    is-path-inside "^3.0.3"
 | 
				
			||||||
    js-sdsl "^4.1.4"
 | 
					    js-sdsl "^4.1.4"
 | 
				
			||||||
    js-yaml "^4.1.0"
 | 
					    js-yaml "^4.1.0"
 | 
				
			||||||
    json-stable-stringify-without-jsonify "^1.0.1"
 | 
					    json-stable-stringify-without-jsonify "^1.0.1"
 | 
				
			||||||
| 
						 | 
					@ -2372,7 +2366,7 @@ fast-diff@^1.1.2:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
 | 
					  resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
 | 
				
			||||||
  integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
 | 
					  integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9:
 | 
					fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.5:
 | 
				
			||||||
  version "3.2.12"
 | 
					  version "3.2.12"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
 | 
					  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
 | 
				
			||||||
  integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
 | 
					  integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
 | 
				
			||||||
| 
						 | 
					@ -2506,7 +2500,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    is-glob "^4.0.1"
 | 
					    is-glob "^4.0.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
glob-parent@^6.0.1:
 | 
					glob-parent@^6.0.2:
 | 
				
			||||||
  version "6.0.2"
 | 
					  version "6.0.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
 | 
					  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
 | 
				
			||||||
  integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
 | 
					  integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
 | 
				
			||||||
| 
						 | 
					@ -2545,18 +2539,6 @@ globals@^13.15.0:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    type-fest "^0.20.2"
 | 
					    type-fest "^0.20.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
globby@^11.1.0:
 | 
					 | 
				
			||||||
  version "11.1.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
 | 
					 | 
				
			||||||
  integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    array-union "^2.1.0"
 | 
					 | 
				
			||||||
    dir-glob "^3.0.1"
 | 
					 | 
				
			||||||
    fast-glob "^3.2.9"
 | 
					 | 
				
			||||||
    ignore "^5.2.0"
 | 
					 | 
				
			||||||
    merge2 "^1.4.1"
 | 
					 | 
				
			||||||
    slash "^3.0.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
 | 
					graceful-fs@^4.1.6, graceful-fs@^4.2.0:
 | 
				
			||||||
  version "4.2.9"
 | 
					  version "4.2.9"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
 | 
					  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
 | 
				
			||||||
| 
						 | 
					@ -2755,6 +2737,11 @@ is-obj@^1.0.1:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
 | 
					  resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
 | 
				
			||||||
  integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
 | 
					  integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					is-path-inside@^3.0.3:
 | 
				
			||||||
 | 
					  version "3.0.3"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
 | 
				
			||||||
 | 
					  integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
is-regex@^1.1.4:
 | 
					is-regex@^1.1.4:
 | 
				
			||||||
  version "1.1.4"
 | 
					  version "1.1.4"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
 | 
					  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
 | 
				
			||||||
| 
						 | 
					@ -2814,12 +2801,12 @@ jake@^10.8.5:
 | 
				
			||||||
    filelist "^1.0.1"
 | 
					    filelist "^1.0.1"
 | 
				
			||||||
    minimatch "^3.0.4"
 | 
					    minimatch "^3.0.4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
javascript-time-ago@2.5.7:
 | 
					javascript-time-ago@2.5.9:
 | 
				
			||||||
  version "2.5.7"
 | 
					  version "2.5.9"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/javascript-time-ago/-/javascript-time-ago-2.5.7.tgz#a99a77c23e2e59810da4b41b935801928e209c87"
 | 
					  resolved "https://registry.yarnpkg.com/javascript-time-ago/-/javascript-time-ago-2.5.9.tgz#3c5d8012cd493d764c6b26a0ffe6e8b20afcf1fe"
 | 
				
			||||||
  integrity sha512-EGvh6K4hpJz0S0aZinbW2EfXDqT/JBB84HfMOFDTzGg7yjpjql9feSgtlG1JQ6b6/NkIxl+PoKSUTEMsatTuTg==
 | 
					  integrity sha512-pQ8mNco/9g9TqWXWWjP0EWl6i/lAQScOyEeXy5AB+f7MfLSdgyV9BJhiOD1zrIac/lrxPYOWNbyl/IW8CW5n0A==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    relative-time-format "^1.1.4"
 | 
					    relative-time-format "^1.1.6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jest-worker@^26.2.1:
 | 
					jest-worker@^26.2.1:
 | 
				
			||||||
  version "26.6.2"
 | 
					  version "26.6.2"
 | 
				
			||||||
| 
						 | 
					@ -2976,7 +2963,7 @@ magic-string@^0.25.0, magic-string@^0.25.7:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    sourcemap-codec "^1.4.8"
 | 
					    sourcemap-codec "^1.4.8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
magic-string@^0.26.3, magic-string@^0.26.7:
 | 
					magic-string@^0.26.7:
 | 
				
			||||||
  version "0.26.7"
 | 
					  version "0.26.7"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f"
 | 
					  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f"
 | 
				
			||||||
  integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==
 | 
					  integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==
 | 
				
			||||||
| 
						 | 
					@ -2993,7 +2980,7 @@ merge-stream@^2.0.0:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
 | 
					  resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
 | 
				
			||||||
  integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
 | 
					  integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
merge2@^1.3.0, merge2@^1.4.1:
 | 
					merge2@^1.3.0:
 | 
				
			||||||
  version "1.4.1"
 | 
					  version "1.4.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
 | 
					  resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
 | 
				
			||||||
  integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
 | 
					  integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
 | 
				
			||||||
| 
						 | 
					@ -3191,11 +3178,6 @@ path-parse@^1.0.7:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
 | 
					  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
 | 
				
			||||||
  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
 | 
					  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
path-type@^4.0.0:
 | 
					 | 
				
			||||||
  version "4.0.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
 | 
					 | 
				
			||||||
  integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pathe@^0.3.0, pathe@^0.3.9:
 | 
					pathe@^0.3.0, pathe@^0.3.9:
 | 
				
			||||||
  version "0.3.9"
 | 
					  version "0.3.9"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.9.tgz#4baff768f37f03e3d9341502865fb93116f65191"
 | 
					  resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.9.tgz#4baff768f37f03e3d9341502865fb93116f65191"
 | 
				
			||||||
| 
						 | 
					@ -3233,7 +3215,7 @@ postcss@^8.1.10:
 | 
				
			||||||
    picocolors "^1.0.0"
 | 
					    picocolors "^1.0.0"
 | 
				
			||||||
    source-map-js "^1.0.2"
 | 
					    source-map-js "^1.0.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
postcss@^8.4.16:
 | 
					postcss@^8.4.18:
 | 
				
			||||||
  version "8.4.18"
 | 
					  version "8.4.18"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2"
 | 
					  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2"
 | 
				
			||||||
  integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==
 | 
					  integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==
 | 
				
			||||||
| 
						 | 
					@ -3319,7 +3301,12 @@ regenerate@^1.4.2:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
 | 
					  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
 | 
				
			||||||
  integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
 | 
					  integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9:
 | 
					regenerator-runtime@^0.13.10:
 | 
				
			||||||
 | 
					  version "0.13.10"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee"
 | 
				
			||||||
 | 
					  integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					regenerator-runtime@^0.13.4:
 | 
				
			||||||
  version "0.13.9"
 | 
					  version "0.13.9"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
 | 
					  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
 | 
				
			||||||
  integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
 | 
					  integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
 | 
				
			||||||
| 
						 | 
					@ -3368,10 +3355,10 @@ regjsparser@^0.8.2:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    jsesc "~0.5.0"
 | 
					    jsesc "~0.5.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
relative-time-format@^1.1.4:
 | 
					relative-time-format@^1.1.6:
 | 
				
			||||||
  version "1.1.4"
 | 
					  version "1.1.6"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/relative-time-format/-/relative-time-format-1.1.4.tgz#50c308a482985333a13df119b1ff2763e3eb0685"
 | 
					  resolved "https://registry.yarnpkg.com/relative-time-format/-/relative-time-format-1.1.6.tgz#724a5fbc3794b8e0471b6b61419af2ce699eb9f1"
 | 
				
			||||||
  integrity sha512-WRWEDEZFTD/95oYMd58kzlYHI6QzexMpPkxvi4/P+NLdzli/tteNonmAa5jYLm8ehJVTGiM2siNg7i1Dkn/gDw==
 | 
					  integrity sha512-aCv3juQw4hT1/P/OrVltKWLlp15eW1GRcwP1XdxHrPdZE9MtgqFpegjnTjLhi2m2WI9MT/hQQtE+tjEWG1hgkQ==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require-from-string@^2.0.2:
 | 
					require-from-string@^2.0.2:
 | 
				
			||||||
  version "2.0.2"
 | 
					  version "2.0.2"
 | 
				
			||||||
| 
						 | 
					@ -3423,14 +3410,14 @@ rollup-plugin-terser@^7.0.0:
 | 
				
			||||||
    serialize-javascript "^4.0.0"
 | 
					    serialize-javascript "^4.0.0"
 | 
				
			||||||
    terser "^5.0.0"
 | 
					    terser "^5.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rollup@^2.43.1, rollup@^2.77.2, rollup@~2.78.0:
 | 
					rollup@^2.43.1, rollup@^2.77.2:
 | 
				
			||||||
  version "2.78.1"
 | 
					  version "2.78.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f"
 | 
					  resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f"
 | 
				
			||||||
  integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==
 | 
					  integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==
 | 
				
			||||||
  optionalDependencies:
 | 
					  optionalDependencies:
 | 
				
			||||||
    fsevents "~2.3.2"
 | 
					    fsevents "~2.3.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rollup@^2.79.0:
 | 
					rollup@^2.79.0, rollup@^2.79.1:
 | 
				
			||||||
  version "2.79.1"
 | 
					  version "2.79.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
 | 
					  resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
 | 
				
			||||||
  integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
 | 
					  integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
 | 
				
			||||||
| 
						 | 
					@ -3483,10 +3470,10 @@ serialize-javascript@^4.0.0:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    randombytes "^2.1.0"
 | 
					    randombytes "^2.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
shaka-player@4.2.2:
 | 
					shaka-player@4.2.3:
 | 
				
			||||||
  version "4.2.2"
 | 
					  version "4.2.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-4.2.2.tgz#7ed042e02166344f0ec2261cb4827484a98acc69"
 | 
					  resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-4.2.3.tgz#696eddb7e25b082b3a75d2452956bc4d8eaa9f76"
 | 
				
			||||||
  integrity sha512-PM3K4r1FGWZjZrEpH59MFIYyNDInwtdEDOxHJaoPjZ9RPq/NMe39AgefPmmt+mela132WnXQHLbWBXr20mlROA==
 | 
					  integrity sha512-R6JGpYfn/0yuYoFvqE+INFx9z4fgDaGJWQdHc6yDQ6GryCnkw6PmaIFHnInYqTgoufGgXuB392Xl9frB/s2f8w==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    eme-encryption-scheme-polyfill "^2.1.1"
 | 
					    eme-encryption-scheme-polyfill "^2.1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3525,11 +3512,6 @@ sirv@^2.0.2:
 | 
				
			||||||
    mrmime "^1.0.0"
 | 
					    mrmime "^1.0.0"
 | 
				
			||||||
    totalist "^3.0.0"
 | 
					    totalist "^3.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
slash@^3.0.0:
 | 
					 | 
				
			||||||
  version "3.0.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
 | 
					 | 
				
			||||||
  integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
source-map-js@^1.0.1, source-map-js@^1.0.2:
 | 
					source-map-js@^1.0.1, source-map-js@^1.0.2:
 | 
				
			||||||
  version "1.0.2"
 | 
					  version "1.0.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
 | 
					  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
 | 
				
			||||||
| 
						 | 
					@ -3665,7 +3647,7 @@ supports-preserve-symlinks-flag@^1.0.0:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
 | 
					  resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
 | 
				
			||||||
  integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
 | 
					  integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
systemjs@^6.12.6:
 | 
					systemjs@^6.13.0:
 | 
				
			||||||
  version "6.13.0"
 | 
					  version "6.13.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.13.0.tgz#7b28e74b44352e1650e8652499f42de724c3fc7f"
 | 
					  resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.13.0.tgz#7b28e74b44352e1650e8652499f42de724c3fc7f"
 | 
				
			||||||
  integrity sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==
 | 
					  integrity sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==
 | 
				
			||||||
| 
						 | 
					@ -3807,28 +3789,28 @@ universalify@^2.0.0:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
 | 
					  resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
 | 
				
			||||||
  integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
 | 
					  integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unocss@0.45.30:
 | 
					unocss@0.46.3:
 | 
				
			||||||
  version "0.45.30"
 | 
					  version "0.46.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/unocss/-/unocss-0.45.30.tgz#af72c1388b032c421741a4fbfebba7d26eaa3a82"
 | 
					  resolved "https://registry.yarnpkg.com/unocss/-/unocss-0.46.3.tgz#28a13638b5def55dfce3dd86d21c9eb16018d936"
 | 
				
			||||||
  integrity sha512-6ODOL358gIS7IYdGmVc+DfsW881VZQPXACz5WySdSYcVgQnJvuvEVmvuXn670zN2K8TIEIP/22julybHtwDZ4Q==
 | 
					  integrity sha512-9ICDcmCkNH2jp6NVR7kMYe4rvfIc4INv7u5g4G2yQx00YYfGc8PCY7VqWlJsHoD7eUuqUOSwBbd9gsg3cvNn4A==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@unocss/astro" "0.45.30"
 | 
					    "@unocss/astro" "0.46.3"
 | 
				
			||||||
    "@unocss/cli" "0.45.30"
 | 
					    "@unocss/cli" "0.46.3"
 | 
				
			||||||
    "@unocss/core" "0.45.30"
 | 
					    "@unocss/core" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-attributify" "0.45.30"
 | 
					    "@unocss/preset-attributify" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-icons" "0.45.30"
 | 
					    "@unocss/preset-icons" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-mini" "0.45.30"
 | 
					    "@unocss/preset-mini" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-tagify" "0.45.30"
 | 
					    "@unocss/preset-tagify" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-typography" "0.45.30"
 | 
					    "@unocss/preset-typography" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-uno" "0.45.30"
 | 
					    "@unocss/preset-uno" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-web-fonts" "0.45.30"
 | 
					    "@unocss/preset-web-fonts" "0.46.3"
 | 
				
			||||||
    "@unocss/preset-wind" "0.45.30"
 | 
					    "@unocss/preset-wind" "0.46.3"
 | 
				
			||||||
    "@unocss/reset" "0.45.30"
 | 
					    "@unocss/reset" "0.46.3"
 | 
				
			||||||
    "@unocss/transformer-attributify-jsx" "0.45.30"
 | 
					    "@unocss/transformer-attributify-jsx" "0.46.3"
 | 
				
			||||||
    "@unocss/transformer-compile-class" "0.45.30"
 | 
					    "@unocss/transformer-compile-class" "0.46.3"
 | 
				
			||||||
    "@unocss/transformer-directives" "0.45.30"
 | 
					    "@unocss/transformer-directives" "0.46.3"
 | 
				
			||||||
    "@unocss/transformer-variant-group" "0.45.30"
 | 
					    "@unocss/transformer-variant-group" "0.46.3"
 | 
				
			||||||
    "@unocss/vite" "0.45.30"
 | 
					    "@unocss/vite" "0.46.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
upath@^1.2.0:
 | 
					upath@^1.2.0:
 | 
				
			||||||
  version "1.2.0"
 | 
					  version "1.2.0"
 | 
				
			||||||
| 
						 | 
					@ -3868,15 +3850,15 @@ vite-plugin-pwa@0.13.1:
 | 
				
			||||||
    workbox-build "^6.5.4"
 | 
					    workbox-build "^6.5.4"
 | 
				
			||||||
    workbox-window "^6.5.4"
 | 
					    workbox-window "^6.5.4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
vite@3.1.8:
 | 
					vite@3.2.2:
 | 
				
			||||||
  version "3.1.8"
 | 
					  version "3.2.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/vite/-/vite-3.1.8.tgz#fa29144167d19b773baffd65b3972ea4c12359c9"
 | 
					  resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.2.tgz#280762bfaf47bcea1d12698427331c0009ac7c1f"
 | 
				
			||||||
  integrity sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==
 | 
					  integrity sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    esbuild "^0.15.9"
 | 
					    esbuild "^0.15.9"
 | 
				
			||||||
    postcss "^8.4.16"
 | 
					    postcss "^8.4.18"
 | 
				
			||||||
    resolve "^1.22.1"
 | 
					    resolve "^1.22.1"
 | 
				
			||||||
    rollup "~2.78.0"
 | 
					    rollup "^2.79.1"
 | 
				
			||||||
  optionalDependencies:
 | 
					  optionalDependencies:
 | 
				
			||||||
    fsevents "~2.3.2"
 | 
					    fsevents "~2.3.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3903,12 +3885,12 @@ vue-i18n@9.2.2:
 | 
				
			||||||
    "@intlify/vue-devtools" "9.2.2"
 | 
					    "@intlify/vue-devtools" "9.2.2"
 | 
				
			||||||
    "@vue/devtools-api" "^6.2.1"
 | 
					    "@vue/devtools-api" "^6.2.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
vue-router@4.1.5:
 | 
					vue-router@4.1.6:
 | 
				
			||||||
  version "4.1.5"
 | 
					  version "4.1.6"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.1.5.tgz#256f597e3f5a281a23352a6193aa6e342c8d9f9a"
 | 
					  resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.1.6.tgz#b70303737e12b4814578d21d68d21618469375a1"
 | 
				
			||||||
  integrity sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==
 | 
					  integrity sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@vue/devtools-api" "^6.1.4"
 | 
					    "@vue/devtools-api" "^6.4.5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
vue@3.2.41:
 | 
					vue@3.2.41:
 | 
				
			||||||
  version "3.2.41"
 | 
					  version "3.2.41"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue