From d195406fdc82dc7075aa6bc601c5a93b59ca74ad Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Fri, 3 Feb 2023 15:14:02 +0900
Subject: [PATCH 1/2] New Crowdin updates (#9760)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Spanish)
---
 locales/es-ES.yml | 320 +++++++++++++++++++++++++++++++++++++++++++++-
 locales/uk-UA.yml |  12 +-
 locales/zh-CN.yml |  12 +-
 3 files changed, 339 insertions(+), 5 deletions(-)

diff --git a/locales/es-ES.yml b/locales/es-ES.yml
index 47799a0917..7323494d61 100644
--- a/locales/es-ES.yml
+++ b/locales/es-ES.yml
@@ -509,7 +509,7 @@ objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir "
 serverLogs: "Registros del servidor"
 deleteAll: "Eliminar todos"
 showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo"
-newNoteRecived: "Tienes una nota nuevo"
+newNoteRecived: "Tienes una nota nueva"
 sounds: "Sonidos"
 sound: "Sonidos"
 listen: "Escuchar"
@@ -918,14 +918,320 @@ tools: "Utilidades"
 cannotLoad: "No se puede cargar."
 numberOfProfileView: "Número de vistas de perfil"
 like: "¡Muy bien!"
+unlike: "Quitar 'me gusta'"
+numberOfLikes: "Cantidad de 'Me gusta'"
 show: "Apariencia"
+neverShow: "No mostrar de nuevo"
+remindMeLater: "Recordar después"
+didYouLikeMisskey: "¿Te gusta Misskey?"
+pleaseDonate: "Misskey es software libre, y es usado por {host} . Por favor, ¡considera donar al proyecto principal para que podamos continuar!"
+roles: "Roles"
+role: "Roles"
+normalUser: "Usuario normal"
+undefined: "Indefinido"
+assign: "Asignar"
+unassign: "Quitar"
 color: "Color"
+manageCustomEmojis: "Administrar emojis personalizados"
+youCannotCreateAnymore: "Se alcanzó el límite de creación"
+cannotPerformTemporary: "Indisponible temporalmente"
+cannotPerformTemporaryDescription: "Esta acción no se puede realizar porque se excedió el límite de ejecución. Espera un poco y prueba de nuevo."
+preset: "Predefinido"
+selectFromPresets: "Escoger desde predefinidos"
+achievements: "Logros"
+_achievements:
+  earnedAt: "Desbloqueado el"
+  _types:
+    _notes1:
+      title: "Configurando mis espacio"
+      description: "Publicar tu primera nota"
+      flavor: "¡Pasándola bien con Misskey!"
+    _notes10:
+      title: "Algunas notas"
+      description: "10 notas publicadas"
+    _notes100:
+      title: "¡Muchas notas!"
+      description: "100 notas publicadas"
+    _notes500:
+      title: "¡Cubierto de notas!"
+      description: "500 notas publicadas"
+    _notes1000:
+      title: "¡Una montaña de notas!"
+      description: "1000 notas publicadas"
+    _notes5000:
+      title: "¡Exceso de notas!"
+      description: "5000 notas publicadas"
+    _notes10000:
+      title: "¡Súpernota!"
+      description: "10000 notas publicadas"
+    _notes20000:
+      title: "Necesito... Más... ¡Notas!"
+      description: "20000 notas publicadas"
+    _notes30000:
+      title: "¡Notas! ¡Notas! ¡Notas!"
+      description: "30000 notas publicadas"
+    _notes40000:
+      title: "Fábrica de notas"
+      description: "40000 notas publicadas"
+    _notes50000:
+      title: "¡Un planeta de notas!"
+      description: "50000 notas publicadas"
+    _notes60000:
+      title: "¡Un cuásar de notas!"
+      description: "60000 notas publicadas"
+    _notes70000:
+      title: "¡Un hoyo negro de notas!"
+      description: "70000 notas publicadas"
+    _notes80000:
+      title: "¡Una galaxia de notas!"
+      description: "80000 notas publicadas"
+    _notes90000:
+      title: "¡Todo un universo de notas!"
+      description: "90000 notas publicadas"
+    _notes100000:
+      title: "ALL YOUR NOTE ARE BELONG TO US"
+      description: "100000 notas publicadas"
+      flavor: "¿Tienes tanto para publicar?"
+    _login3:
+      title: "Principiante I"
+      description: "Días desde el inicio de sesión: 3"
+      flavor: "Desde hoy, soy Misskero"
+    _login7:
+      title: "Principiante II"
+      description: "Días desde el inicio de sesión: 7"
+      flavor: "¿Ya te acostumbraste?"
+    _login15:
+      title: "Principiante III"
+      description: "Días desde el inicio de sesión: 15"
+    _login30:
+      title: "Misskero I"
+      description: "Días desde el inicio de sesión: 30"
+    _login60:
+      title: "Misskero II"
+      description: "Días desde el inicio de sesión: 60"
+    _login100:
+      title: "Misskero III"
+      description: "Días desde el inicio de sesión: 100"
+      flavor: "Para este usuario, Misskaína"
+    _login200:
+      title: "Regular I"
+      description: "Días desde el inicio de sesión: 200"
+    _login300:
+      title: "Regular II"
+      description: "Días desde el inicio de sesión: 300"
+    _login400:
+      title: "Regular III"
+      description: "Días desde el inicio de sesión: 400"
+    _login500:
+      title: "Veterano I"
+      description: "Días desde el inicio de sesión: 500"
+      flavor: "Chicos, me encantan las libretas..."
+    _login600:
+      title: "Veterano II"
+      description: "Días desde el inicio de sesión: 600"
+    _login700:
+      title: "Veterano III"
+      description: "Días desde el inicio de sesión: 700"
+    _login800:
+      title: "Maestro I"
+      description: "Días desde el inicio de sesión: 800"
+    _login900:
+      title: "Maestro II"
+      description: "Días desde el inicio de sesión: 900"
+    _login1000:
+      title: "Maestro III"
+      description: "Días desde el inicio de sesión: 1000"
+      flavor: "¡Gracias por usar Misskey!"
+    _noteClipped1:
+      title: "No puedo evitar clipearte..."
+      description: "Hacer un clip por primera vez"
+    _noteFavorited1:
+      title: "Contemplando las estrellas"
+      description: "Poner una nota como favorito por primera vez"
+    _myNoteFavorited1:
+      title: "¡Quiero una estrella!"
+      description: "Tu nota ha sido marcada como favorito por primera vez"
+    _profileFilled:
+      title: "¡Listo!"
+      description: "Perfil completado"
+    _markedAsCat:
+      title: "Soy un gato"
+      description: "Configurar la cuenta como cuenta de un gato"
+      flavor: "Aún no tengo nombre"
+    _following1:
+      title: "Primera vez siguiendo a alguien"
+      description: "Seguir a un usuario"
+    _following10:
+      title: "Ahí la llevas, ahí la llevas..."
+      description: "10 usuarios seguidos"
+    _following50:
+      title: "¡Un puñado de amigos!"
+      description: "50 cuentas seguidas"
+    _following100:
+      title: "100 amigos"
+      description: "100 cuentas seguidas"
+    _following300:
+      title: "¡Sobrecarga de amigos!"
+      description: "300 cuentas seguidas"
+    _followers1:
+      title: "¡Tu primer seguidor!"
+      description: "1 seguidor ganado"
+    _followers10:
+      title: "¡Sígueme!"
+      description: "10 seguidores ganados"
+    _followers50:
+      title: "Viniendo en manada"
+      description: "50 seguidores ganados"
+    _followers100:
+      title: "Popular"
+      description: "100 cuentas seguidas"
+    _followers300:
+      title: "Por favor, hagan una fila"
+      description: "300 seguidores ganados"
+    _followers500:
+      title: "¡Toda una torre de radio!"
+      description: "500 seguidores ganados"
+    _followers1000:
+      title: "\"Influyente\""
+      description: "1000 seguidores gandos"
+    _collectAchievements30:
+      title: "Coleccionista"
+      description: "30 logros ganados"
+    _viewAchievements3min:
+      title: "¡Te gustan los logros!"
+      description: "Mirando tus logros por 3 minutos"
+    _iLoveMisskey:
+      title: "¡AMO Misskey!"
+      description: "\"I ❤ #Misskey\" Publicado"
+      flavor: "El equipo de desarrollo de Misskey, en verdad, ¡aprecia tu apoyo!"
+    _foundTreasure:
+      title: "Búsqueda del tesoro"
+      description: "Encontraste un tesoro"
+    _client30min:
+      title: "Un descansito"
+      description: "30 minutos dedicados a Misskey"
+    _noteDeletedWithin1min:
+      title: "Ah... Mejor no..."
+      description: "Borrar una nota antes que de pase 1 minuto"
+    _postedAtLateNight:
+      title: "Nocturno"
+      description: "Una nota publicada por la noche"
+      flavor: "¡Ya casi es hora de dormir!"
+    _postedAt0min0sec:
+      title: "Reloj parlante"
+      description: "Publicar una nota a las 00:00 de la madrugada"
+      flavor: "Tic, tic, tic ¡TUUUUUN!"
+    _selfQuote:
+      title: "Autoreferencia"
+      description: "Citar tu propia nota"
+    _htl20npm:
+      title: "Línea de tiempo fluyendo"
+      description: "La velocidad de tu línea de tiempo excede las 20 npm (notas por minuto)"
+    _viewInstanceChart:
+      title: "Analista"
+      description: "Gráficas de la instancia mostradas"
+    _outputHelloWorldOnScratchpad:
+      title: "¡Hola mundo!"
+      description: "Escribir \"hello world\" en el compositor"
+    _open3windows:
+      title: "Multiventana"
+      description: "Tener más de 3 ventanas al mismo tiempo"
+    _driveFolderCircularReference:
+      title: "Referencia circular"
+      description: "Intento de crear carpetas recursivamente"
+    _reactWithoutRead:
+      title: "¡Sí lo leíste bien?"
+      description: "Reaccionar a los 3 segundos de publicación de una nota con más de 100 caracteres"
+    _clickedClickHere:
+      title: "Pícale aquí"
+      description: "Le picó ahí"
+    _justPlainLucky:
+      title: "Pura suerte"
+      description: "Obtenido con una probabilidad del 0.01% cada 10 segundos"
+    _setNameToSyuilo:
+      title: "Complejo de superioridad"
+      description: "Configurar el nombre como 'Syuilo'"
+    _passedSinceAccountCreated1:
+      title: "Primer aniversario"
+      description: "Pasó un año desde la creación de la cuenta"
+    _passedSinceAccountCreated2:
+      title: "Segundo aniversario"
+      description: "Pasaron dos años desde la creación de la cuenta"
+    _passedSinceAccountCreated3:
+      title: "Tercer aniversario"
+      description: "Pasaron tres años desde la creación de la cuenta"
+    _loggedInOnBirthday:
+      title: "¡Feliz cumpleaños!"
+      description: "En linea el día de tu cumpleaños"
+    _loggedInOnNewYearsDay:
+      title: "¡Feliz Año Nuevo!"
+      description: "En linea en año nuevo"
+      flavor: "¡Gracias por tu apoyo a la instancia durante todo este año!"
+    _cookieClicked:
+      title: "Un juego para picarle a una galleta"
+      description: "Picaste una galleta"
+      flavor: "¿Está mal este juego?"
+    _brainDiver:
+      title: "Brain Diver"
+      description: "Publicaste un vínculo a \"Brain Diver\""
+      flavor: "Misskey-Misskey La-Tu-Ma"
 _role:
+  new: "Crear rol"
+  edit: "Editar rol"
+  name: "Nombre del rol"
+  description: "Descripción del rol"
+  permission: "Permisos del rol"
+  descriptionOfPermission: "<b>Moderador</b> Te permite ejecutar acciones básicas de moderación.\n<b>Administradores</b> puede cambiar todas las configuraciones de la instancia."
+  assignTarget: "Asignar objetivo"
+  descriptionOfAssignTarget: "<b>Manual</b> Para cambiar manualmente lo que se incluye en este rol.\n<b>Condicional</b> configura una condición, y los usuarios que cumplan la condición serán incluídos automáticamente."
+  manual: "manual"
+  conditional: "condicional"
+  condition: "condición"
+  isConditionalRole: "Esto es un rol condicional"
+  isPublic: "Publicar rol"
+  descriptionOfIsPublic: "Cualquiera puede ver los usuarios asignados a este rol. También, el perfil del usuario mostrará este rol."
+  options: "Opción"
+  policies: "Política"
+  baseRole: "Rol base"
+  useBaseValue: "Usar los valores del rol base"
+  chooseRoleToAssign: "Selecciona el rol para asignar"
+  canEditMembersByModerator: "Permitir a los moderadores editar los miembros"
+  descriptionOfCanEditMembersByModerator: "Si se activa, los moderadores, al igual que los administradores, serán capaces de asignar/quitar usuarios a éste rol. Si se desactiva, sólo los administradores podrán hacerlo."
   priority: "Prioridad"
   _priority:
     low: "Baja"
     middle: "Mediano"
     high: "Alta"
+  _options:
+    gtlAvailable: "Explorar la línea de tiempo global"
+    ltlAvailable: "Explorar la línea de tiempo local"
+    canPublicNote: "Permitir la publicación"
+    canInvite: "Puede crear códigos de invitación"
+    canManageCustomEmojis: "Administrar emojis personalizados"
+    driveCapacity: "Capacidad de almacenamiento"
+    pinMax: "Máximo de notas fijadas"
+    antennaMax: "Máximo de antenas"
+    wordMuteMax: "Máximo de caracteres en palabras silenciadas"
+    webhookMax: "Máximo de Webhooks"
+    clipMax: "Máximo de clips"
+    noteEachClipsMax: "Máximo de notas con clip"
+    userListMax: "Máximo de listas de usuarios"
+    userEachUserListsMax: "Máximo de usuarios en una lista"
+    rateLimitFactor: "Limitador"
+    descriptionOfRateLimitFactor: "Límites más bajos son menos restrictivos, más altos menos restrictivos"
+    canHideAds: "Puede ocultar anuncios"
+  _condition:
+    isLocal: "Usuario local"
+    isRemote: "Usuario remoto"
+    createdLessThan: "Menos de X han pasado desde la creación de la cuenta"
+    createdMoreThan: "Más de X han pasado desde la creación de la cuenta"
+    followersLessThanOrEq: "Tiene X o menos seguidores"
+    followersMoreThanOrEq: "Tiene X o más seguidores"
+    followingLessThanOrEq: "Sigue X o menos cuentas"
+    followingMoreThanOrEq: "Sigue X o más cuentas"
+    and: "Condicional AND"
+    or: "Condicional OR"
+    not: "Condicional NOT"
 _sensitiveMediaDetection:
   description: "Reduce el esfuerzo de la moderación el el servidor a través del reconocimiento automático de contenido NSFW usando 'Machine Learning'. Esto puede incrementar ligeramente la carga en el servidor."
   sensitivity: "Sensibilidad de detección"
@@ -1328,10 +1634,12 @@ _widgets:
   jobQueue: "Cola de trabajos"
   serverMetric: "Estadísticas del servidor"
   aiscript: "Consola de AiScript"
+  aiscriptApp: "Aplicación AiScript"
   aichan: "indigo"
   userList: "Lista de usuarios"
   _userList:
     chooseList: "Seleccione una lista"
+  clicker: "Cliqueador"
 _cw:
   hide: "Ocultar"
   show: "Ver más"
@@ -1434,7 +1742,16 @@ _timelines:
   social: "Social"
   global: "Global"
 _play:
+  new: "Crear guión"
+  edit: "Editar guión"
+  created: "Guión creado"
+  updated: "Guión editado"
+  deleted: "Guión eliminado"
+  pageSetting: "Configuración de guión"
+  editThisPage: "Editar este guión"
   viewSource: "Ver la fuente"
+  my: "Mis guiones"
+  liked: "Guiones que te gustaron"
   featured: "Popular"
   title: "Título"
   script: "Script"
@@ -1507,6 +1824,7 @@ _notification:
   pollEnded: "Estan disponibles los resultados de la encuesta"
   unreadAntennaNote: "Antena {name}"
   emptyPushNotificationMessage: "Se han actualizado las notificaciones push"
+  achievementEarned: "Logro desbloqueado"
   _types:
     all: "Todo"
     follow: "Siguiendo"
diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml
index e660635d93..52f3f41fcb 100644
--- a/locales/uk-UA.yml
+++ b/locales/uk-UA.yml
@@ -529,7 +529,7 @@ state: "Стан"
 sort: "Сортування"
 ascendingOrder: "За зростанням"
 descendingOrder: "За спаданням"
-scratchpad: "Чернетка"
+scratchpad: "Scratchpad"
 scratchpadDescription: "Scratchpad надає середовище для експериментів з AiScript. Ви можете писати, виконувати його і тестувати взаємодію з Misskey."
 output: "Вихід"
 script: "Скрипт"
@@ -1084,22 +1084,32 @@ _achievements:
       description: "Перевищити швидкість домашньої стрічки 20npm (нотаток на хвилину)"
     _viewInstanceChart:
       title: "Аналітик"
+    _outputHelloWorldOnScratchpad:
+      title: "Hello, world!"
+      description: "Вивести \"hello world\" у Скретчпаді"
     _clickedClickHere:
       title: "Натисніть тут"
       description: "Натиснуто тут"
+    _justPlainLucky:
+      title: "Просто вдача"
+      description: "Можна отримати з ймовірністю 0,01% кожні 10 секунд"
     _setNameToSyuilo:
       title: "Комплекс бога"
       description: "Встановлено ім'я \"syuilo\""
     _passedSinceAccountCreated1:
       title: "Перша річниця"
+      description: "Минув рік з моменту створення акаунта"
     _passedSinceAccountCreated2:
       title: "Друга річниця"
+      description: "Минуло 2 роки з моменту створення акаунта"
     _passedSinceAccountCreated3:
       title: "Третя річниця"
       description: "Минуло 3 роки з моменту створення акаунта"
     _loggedInOnBirthday:
       title: "З Днем народження!"
+      description: "Увійти у свій день народження"
     _loggedInOnNewYearsDay:
+      title: "З Новим роком!"
       description: "Увійшли в перший день року"
     _brainDiver:
       title: "Brain Diver"
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index 651221fe6c..fba04147d9 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -1083,7 +1083,7 @@ _achievements:
       title: "排列成行"
       description: "关注者超过300人"
     _followers500:
-      title: "风向标"
+      title: "信号塔"
       description: "关注者超过500人"
     _collectAchievements30:
       title: "成就收藏家"
@@ -1104,7 +1104,7 @@ _achievements:
       title: "无话可说"
       description: "发帖后一分钟内就将其删除"
     _postedAtLateNight:
-      title: "夜行者"
+      title: "夜猫子"
       description: "深夜发布帖子"
       flavor: "差不多该去睡了喔。"
     _postedAt0min0sec:
@@ -1114,6 +1114,12 @@ _achievements:
     _selfQuote:
       title: "自我提及"
       description: "引用了自己的帖子"
+    _htl20npm:
+      title: "流动的时间线"
+      description: "在首页时间线的流速超过20npm"
+    _viewInstanceChart:
+      title: "分析师"
+      description: "查看了实例信息中的图表"
     _outputHelloWorldOnScratchpad:
       title: "Hello, world!"
     _open3windows:
@@ -1129,7 +1135,7 @@ _achievements:
       description: "点了这里"
     _justPlainLucky:
       title: "超高校级的幸运"
-      description: "每10秒有0.01的概率获得"
+      description: "每10秒有0.01的概率自动获得"
     _setNameToSyuilo:
       title: "像神一样呐"
       description: "将名称设定为syuilo"

From 4b8b29b862f834ebea0f92f74478bfe26128c3b4 Mon Sep 17 00:00:00 2001
From: Roxy Squires <squires1993@gmail.com>
Date: Fri, 3 Feb 2023 08:15:25 +0000
Subject: [PATCH 2/2] enhance - Added vue-plyr as the standard video player
 (#9766)

* Added Video player

Added vue-plyr as the video play

* Create node.js.yml

* Delete node.js.yml

* Added vue-plyr into pnpm-lock.yaml

* tweak

---------

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
---
 packages/frontend/package.json                |  1 +
 .../frontend/src/components/MkMediaVideo.vue  | 29 ++++++----
 pnpm-lock.yaml                                | 57 +++++++++++++++++++
 3 files changed, 75 insertions(+), 12 deletions(-)

diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 1e0ab6ba26..40183d64ce 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -62,6 +62,7 @@
 		"typescript": "4.9.5",
 		"uuid": "9.0.0",
 		"vanilla-tilt": "1.8.0",
+		"vue-plyr": "7.0.0",
 		"vite": "4.1.1",
 		"vue": "3.2.47",
 		"vue-prism-editor": "2.0.0-alpha.2",
diff --git a/packages/frontend/src/components/MkMediaVideo.vue b/packages/frontend/src/components/MkMediaVideo.vue
index df0bf84116..5a2da050bb 100644
--- a/packages/frontend/src/components/MkMediaVideo.vue
+++ b/packages/frontend/src/components/MkMediaVideo.vue
@@ -6,19 +6,20 @@
 	</div>
 </div>
 <div v-else class="kkjnbbplepmiyuadieoenjgutgcmtsvu">
-	<video
-		:poster="video.thumbnailUrl"
-		:title="video.comment"
-		:alt="video.comment"
-		preload="none"
-		controls
-		@contextmenu.stop
-	>
-		<source 
-			:src="video.url" 
-			:type="video.type"
+	<vue-plyr>
+		<video
+			controls
+			crossorigin
+			playsinline
+			:data-poster="video.thumbnailUrl"
 		>
-	</video>
+			<source
+				size="720"
+				:src="video.url" 
+				:type="video.type"
+			/>
+		</video>
+	</vue-plyr>
 	<i class="ti ti-eye-off" @click="hide = true"></i>
 </div>
 </template>
@@ -26,7 +27,9 @@
 <script lang="ts" setup>
 import { ref } from 'vue';
 import * as misskey from 'misskey-js';
+import VuePlyr from 'vue-plyr';
 import { defaultStore } from '@/store';
+import 'vue-plyr/dist/vue-plyr.css';
 
 const props = defineProps<{
 	video: misskey.entities.DriveFile;
@@ -39,6 +42,8 @@ const hide = ref((defaultStore.state.nsfw === 'force') ? true : props.video.isSe
 .kkjnbbplepmiyuadieoenjgutgcmtsvu {
 	position: relative;
 
+	--plyr-color-main: var(--accent);
+
 	> i {
 		display: block;
 		position: absolute;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a2771fadff..1b4df818a6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -453,6 +453,7 @@ importers:
       vite: 4.1.1
       vue: 3.2.47
       vue-eslint-parser: 9.1.0
+      vue-plyr: 7.0.0
       vue-prism-editor: 2.0.0-alpha.2
       vue-tsc: 1.0.24
       vuedraggable: next
@@ -514,8 +515,10 @@ importers:
       vanilla-tilt: 1.8.0
       vite: 4.1.1_f5vcjb3akvjdur4ffzogu2hewu
       vue: 3.2.47
+      vue-plyr: 7.0.0
       vue-prism-editor: 2.0.0-alpha.2_vue@3.2.47
       vuedraggable: 4.1.0_vue@3.2.47
+			vue-plyr: 7.0.0
     devDependencies:
       '@types/escape-regexp': 0.0.1
       '@types/glob': 8.0.1
@@ -3111,6 +3114,14 @@ packages:
       '@vue/compiler-core': 3.2.47
       '@vue/shared': 3.2.47
 
+  /@vue/compiler-sfc/2.7.14:
+    resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==}
+    dependencies:
+      '@babel/parser': 7.20.7
+      postcss: 8.4.21
+      source-map: 0.6.1
+    dev: false
+
   /@vue/compiler-sfc/3.2.47:
     resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==}
     dependencies:
@@ -4907,6 +4918,14 @@ packages:
     resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
     dev: false
 
+  /csstype/3.1.1:
+    resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==}
+    dev: false
+
+  /custom-event-polyfill/1.0.7:
+    resolution: {integrity: sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==}
+    dev: false
+
   /cwise-compiler/1.1.3:
     resolution: {integrity: sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==}
     dependencies:
@@ -9023,6 +9042,10 @@ packages:
       strip-bom: 2.0.0
     dev: false
 
+  /loadjs/4.2.0:
+    resolution: {integrity: sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA==}
+    dev: false
+
   /locate-path/5.0.0:
     resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
     engines: {node: '>=8'}
@@ -11096,6 +11119,10 @@ packages:
     resolution: {integrity: sha512-9CRCUX/w4+fNMzlYgA8GeJz7BZwBPwaGm3FhAm9Hi50k8wNy2CyiJQa8awygWJay87uVVCV0/FwbLcD6+/A9KQ==}
     dev: false
 
+  /rangetouch/2.0.1:
+    resolution: {integrity: sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==}
+    dev: false
+
   /ratelimiter/3.4.1:
     resolution: {integrity: sha512-5FJbRW/Jkkdk29ksedAfWFkQkhbUrMx3QJGwMKAypeIiQf4yrLW+gtPKZiaWt4zPrtw1uGufOjGO7UGM6VllsQ==}
     dev: false
@@ -12988,6 +13015,10 @@ packages:
       requires-port: 1.0.0
     dev: false
 
+  /url-polyfill/1.1.12:
+    resolution: {integrity: sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==}
+    dev: false
+
   /url/0.10.3:
     resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==}
     dependencies:
@@ -13206,6 +13237,13 @@ packages:
       - supports-color
     dev: true
 
+  /vue-plyr/7.0.0:
+    resolution: {integrity: sha512-NvbO/ZzV1IxlBQQbQlon5Sk8hKuGAj3k4k0XVdi7gM4oSqu8mZMhJ3WM3FfAtNfV790jbLnb8P3dHYqaBqIv6g==}
+    dependencies:
+      plyr: github.com/sampotts/plyr/d434c9af16e641400aaee93188594208d88f2658
+      vue: 2.7.14
+    dev: false
+
   /vue-prism-editor/2.0.0-alpha.2_vue@3.2.47:
     resolution: {integrity: sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==}
     engines: {node: '>=10'}
@@ -13233,6 +13271,13 @@ packages:
       typescript: 4.9.5
     dev: true
 
+  /vue/2.7.14:
+    resolution: {integrity: sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==}
+    dependencies:
+      '@vue/compiler-sfc': 2.7.14
+      csstype: 3.1.1
+    dev: false
+
   /vue/3.2.47:
     resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==}
     dependencies:
@@ -13655,3 +13700,15 @@ packages:
     name: browser-image-resizer
     version: 2.2.1-misskey.3
     dev: false
+
+  github.com/sampotts/plyr/d434c9af16e641400aaee93188594208d88f2658:
+    resolution: {tarball: https://codeload.github.com/sampotts/plyr/tar.gz/d434c9af16e641400aaee93188594208d88f2658}
+    name: plyr
+    version: 3.7.0
+    dependencies:
+      core-js: 3.27.1
+      custom-event-polyfill: 1.0.7
+      loadjs: 4.2.0
+      rangetouch: 2.0.1
+      url-polyfill: 1.1.12
+    dev: false